Software engineering
Software engineering is een technische engineeringsactiviteit voor het ontwerpen, ontwikkelen en onderhouden van software. Software-engineers en computerprogrammeurs ontwikkelen beide softwaretoepassingen die nodig zijn voor werkende computers. Het verschil tussen de twee IT professionals ligt echter in de verantwoordelijkheden en de aanpak van het werk. Software-engineers gebruiken namelijk welomschreven wetenschappelijke principes en procedures om een efficiënt en betrouwbaar softwareproduct te leveren.
Software engineering is geïntroduceerd om de problemen van softwareprojecten van lage kwaliteit aan te pakken. Problemen ontstaan al wanneer een project deadlines, budgetten en kwaliteitsniveaus niet haalt. We moeten er echter voor zorgen dat we de applicatie consistent, correct, op tijd en binnen het budget en binnen de requirements realiseren. De vraag naar software-engineering kwam ook naar voren om tegemoet te komen aan de immense veranderingssnelheid in user requirements en infrastructuur waarop de applicatie zou moeten werken.
IEEE definieert software engineering als: (1) De toepassing van een systematische, gedisciplineerde, kwantificeerbare benadering van de ontwikkeling, exploitatie en het onderhoud van software; dat wil zeggen, de toepassing van engineering op software. (2) De studie van benaderingen zoals in de bovenstaande verklaring. |
Projectmanagement heeft een bredere reikwijdte dan software-engineering, omdat het ook de communicatie en de ondersteuning vóór en na de levering enz. omvat.
De behoefte aan software-engineering ontstaat vanwege de hogere mate van verandering in gebruikersvereisten en de omgeving waarop de software werkt.
Software engineering behandelt het ontwikkelen van software als een formeel proces dat lijkt op een traditionele proces. Software-engineers beginnen, net als in de watervalmethode, met het analyseren van user requirements. Ze ontwerpen software, ontwikkelen het, testen het op kwaliteit en onderhouden het bovendien. Ze instrueren ook de computerprogrammeurs hoe ze de code die ze nodig hebben moeten schrijven. Software engineers kunnen echter ook kiezen of ze de code zelf of niet zelf schrijven. Ze hebben echter sterke programmeervaardigheden nodig om met de programmeurs te communiceren en zijn vaak goed thuis in meerdere programmeertalen.
Ze zijn experts in de theorie van computersoftware en de beperkingen van de hardware waarvoor ze ontwerpen.
Een softwareproduct beoordelen op gebruikersgemak en de functies die het de gebruiker biedt. Een applicatie moet scoren op de volgende gebieden:
Het hele ontwerpproces van de software moeten we formeel managen lang voordat de eerste regel programmacode is geschreven. Software-engineers produceren dikke ontwerpdocumenten met behulp van computer-aided software engineering tools. De software-engineer zet vervolgens de ontwerpdocumenten om in documenten met ontwerpspecificaties die hij gebruikt om code te creëren. Het proces is dan ook georganiseerd en efficiënt.
Een onderscheidend kenmerk van software engineering is de documentatie die het produceert. Ontwerpen worden ondertekend door managers en technische autoriteiten. Terwijl het de rol van kwaliteitsborging is om dit documentenspoor te controleren. Veel software-engineers geven dan ook aan dat hun baan voor 70 procent bestaat uit papierwerk. De andere 30 procent is het schrijven van programmacode. Het is een dure maar verantwoorde manier om software te schrijven. Software engineering passen we meestal toe in hoogwaardige technische omgevingen. Het dan ook de reden is waarom luchtvaartelektronica in moderne vliegtuigen bijvoorbeeld zo duur is.
De Software Engineering Life Cycle (SDLC) is een reeks stadia in software-engineering om voorgestelde softwaretoepassingen te ontwikkelen. Deze stadia lijken veel op de bekende watervalmethodiek:
Software engineering begint over het algemeen met de eerste stap als een gebruikersverzoek voor een specifieke taak of een informatie. Het dient een behoefte binnen de organisatie te zijn. Het softwareontwikkelteam scheidt user requirements, systeem requirements en functionele requirements. De requirements verzamelen we door gebruikers te interviewen en op te nemen in een database. Bovendien kunnen we het bestaande systeem bestuderen.
Na het verzamelen van de requirements volgt direct de volgende stap. Het team analyseert of het mogelijk is om software te maken die aan requirements van de gebruiker kan voldoen. De ontwikkelaar maakt vervolgens een stappenplan. Systeemanalyse omvat ook inzicht in de mogelijke beperkingen van de software.
Na de requirements en de analyse wordt een softwareontwerp gemaakt. De implementatie van softwareontwerp begint met het schrijven van programmacode in een geschikte programmeertaal.
Fabrikanten kunnen geen complexe levens-kritische systemen zoals vliegtuigen, kernreactorbesturingen en medische systemen bouwen zonder professionele Software Engineers. Je kunt niet verwachten dat het werkt als je software aan elkaar plakt. Dit soort producten vereisen dat software engineers het hele proces grondig managen. Het doel is:
Bij veiligheid-kritische sectoren zoals luchtvaart, ruimtevaart, kerncentrales, medicijnen, branddetectiesystemen en achtbaanritten kunnen de kosten van softwarefouten enorm zijn. Omdat de veiligheid van levens meespeelt moeten we er extra effort in steken. Een software engineer moet beschikken over het vermogen om te anticiperen op problemen. Het kunnen elimineren voordat ze plaatsvinden, is van cruciaal belang.
Programmeurs schrijven code volgens de specificaties die software-engineers hen geven. Dit zijn de experts van de belangrijkste computerprogrammeertalen. Meestal zijn programmeurs niet betrokken bij de vroege ontwerp-stadia. Ze zullen echter wel betrokken zijn bij het testen, wijzigen, updaten en repareren van de code. Ze schrijven code in een of meer van de gevraagde programmeertalen, waaronder:
Het belangrijkste verschil tussen software engineering en programmeren is dat software engineering een procesgerichte discipline is, terwijl programmeren een taakgerichte activiteit is.
Software engineering houdt zich bezig met de ontwikkeling van softwareproducten die betrouwbaar, efficiënt en gemakkelijk te onderhouden zijn. Hierbij worden wetenschappelijke en wiskundige principes toegepast op het ontwerp, de analyse en de implementatie van softwaresystemen. Programmeren daarentegen houdt zich voornamelijk bezig met het schrijven van code om specifieke problemen op te lossen.
Hoewel zowel software engineering als programmeren essentieel zijn voor de ontwikkeling van softwaretoepassingen, vereisen zij verschillende vaardigheden en kennis. Software-ingenieurs moeten een goed inzicht hebben in computerwetenschappelijke concepten en ervaring met projectbeheer en softwareontwikkelingsmethodologieën. Zij moeten in staat zijn deze theoretische concepten toe te passen op problemen in de echte wereld. Programmeurs daarentegen moeten goed kunnen coderen en een goed begrip hebben van algoritmen en gegevensstructuren.
De rol van software-ingenieur is over het algemeen belangrijker dan die van programmeur. Software-ingenieurs zijn verantwoordelijk voor het leiden van teams van programmeurs en moeten ervoor zorgen dat het eindproduct aan alle vereiste specificaties voldoet. Zij zijn ook verantwoordelijk voor het ontwikkelen van plannen op hoog niveau voor het softwaresysteem, met inbegrip van de algemene architectuur, en voor het waarborgen dat de software aan alle kwaliteitsnormen voldoet. Programmeurs daarentegen schrijven code om de plannen van de software-ingenieurs uit te voeren.
Mogelijk is dit een vertaling van Google Translate en kan fouten bevatten. Klik hier om mee te helpen met het verbeteren van vertalingen.