Beste antwoord
Software-engineering is een enorme speeltuin met veel verschillende soorten en subtypen, maar de belangrijkste soorten software-engineering zijn twee: systeemsoftware en toepassingssoftware.
Systeemsoftware: Voorbeelden omvatten, maar zijn niet beperkt tot, de programmas die zijn bedoeld voor het beheer van de computer of een apparaat dat is bedoeld voor een specifieke taak, zoals: Windows-besturingssysteem (Microsoft Windows 10), IOS-besturingssysteem (OS X 10.10 Yosemite., 4.13 OS X 10.11 El Capitan, 4.16 macOS 10.14 Mojave ……), Android-besturingssysteem (Android OS), Linux (Ubuntu…)
Applicatiesoftware: Eindgebruikerprogrammas waarmee de gebruiker taken kan uitvoeren zoals het maken van documenten (Microsoft Word, Pages …), het verzenden van e-mail (Gmail-applicatie), het ontwerpen van afbeeldingen (Photoshop) enz.
En al het bovenstaande kan worden verbroken tot kleinere subcomponenten / categorieën die subbomen van toepassingssoftware en subbomen van systeemsoftware vormen.
Een voorbeeld van een subcategorie van toepassingssoftware: Photoshop is een toepassing die behoort tot een reeks softwaretoepassingen in Adobe Creative Software Suite die bestaat uit Photoshop, InDesign en andere.
In Software Engineering, wanneer een software-engineer een website, een mobiele app of game ontwikkelt: al deze applicaties vallen onder de categorie applicatiesoftware. engineer ontwikkelt software die draait op misschien een fysiek black box-apparaat dat specifiek is ontworpen voor één specifiek vliegtuig: deze specifieke ontwikkeling kan zowel onder applicatiesoftware als systeemsoftware vallen omdat het is ontworpen om specifiek één apparaat te laten werken en dit apparaat is specifiek afhankelijk van dat specifieke software om op te starten en een andere component uit te voeren die de blackbox omvat of laat werken: laten we nu aannemen dat dezelfde softwareontwikkelaar een extra component heeft ontwikkeld voor die zwarte doos om de gebruikers in staat te stellen toegang te krijgen tot de zwarte doos en de huidige locatie van het vliegtuig te bekijken: dat onderdeel, of het nu in de zwarte doos of op een mobiel apparaat draait, valt onder applicatiesoftware.
Antwoord
Er zijn vreselijke software-ingenieurs. Er zijn alleen maar slechte software-engineers. Er zijn middelmatige software-engineers. Er zijn behoorlijk goede software-ingenieurs. Er zijn goede software-engineers. Er zijn geweldige software-ingenieurs.
En er zijn software-ingenieurs die software op tijd en binnen het budget leveren. God sta je bij als je die software moet onderhouden, maar het was op tijd en binnen het budget.
Maar serieus …
Deze lijst is niet allesomvattend. Ook kan dezelfde SWE verschillende rollen vervullen, misschien op verschillende tijdstippen en misschien op verschillende tijdstippen. Dit zijn trouwens geen best practices.
Er zijn SWEs die requirementsdocumenten schrijven. Ze weten misschien niet eens hoe ze moeten programmeren, maar ze begrijpen de zakelijke vereisten en ze vertalen de zakelijke vereisten in programmavereisten.
Er zijn ontwerpers die de vereisten opnemen en een softwareontwerp bedenken. Gewoonlijk is hun output zoiets als een UML-diagram of een stroomschema (verschrikkingen!) Of een gegevensstroomdiagram of een soort pseudocode. Ze doen ook regelmatig een analyse van verschillende concurrerende ontwerpen om te zien welke “optimaal” is. Ze stellen ook een testplan op.
Dan zijn er de software development engineers (SDEs) die de requirements daadwerkelijk omzetten in code. Vroeger noemden we deze mensen programmeurs omdat ze programmas schreven, maar dat woord is in onbruik geraakt (tegenwoordig is iedereen een ingenieur of een wetenschapper. Bibliothecarissen zijn nu bibliotheekwetenschappers. Ouders die thuisblijven zijn huishoudingenieurs. Conciërges zijn dat wel. bouwt nu ingenieurs. Vrachtwagenchauffeurs zijn nu operationele ingenieurs voor transport, enzovoort).
De code gaat naar softwareontwikkelingsingenieurs die worden getest. Ze testen de software volgens het testplan. Gewoonlijk zijn er twee testfasen: het testen van eenheden en het testen van het systeem.
Ten slotte gaat de software naar de release-ingenieurs. Ik ben niet precies wat ze doen, want ik was er al een tijdje een.
Er zijn ook technische schrijvers die klantdocumentatie schrijven en ondersteuningsingenieurs die klanten helpen als er iets misgaat.
Er zijn verkoopondersteunende ingenieurs en het is hun taak om ze te verblinden met genialiteit of ze te verbijsteren met onzin. Mij is verteld dat ik daar goed in zou zijn. Dat baart me zorgen.