Softwareontwikkelmethode
Een softwareontwikkelmethode is een methode die gebruikt wordt bij het ontwikkelen van software. Dit wordt ook wel softwarelevenscyclus of softwareproces genoemd.
Inhoud |
Waarom[bewerken]
Veel bedrijven hebben moeite om hun softwareontwikkeltrajecten binnen tijd en budget af te ronden. Er circuleren zelfs schattingen dat 50% van de softwareontwikkeling fout gaat. Een bekende misser is het rekeningrijden. Daarom is men op zoek naar een methode die wel werkt. Al tientallen jaren probeert men voorspelbare processen te vinden voor het verbeteren van productiviteit en kwaliteit. Sommige modellen proberen het softwareontwikkelproces te systematiseren en formaliseren. Anderen passen projectmanagement technieken toe op het schrijven van software.
Verschillende methoden[bewerken]
Watervalmethode[bewerken]
Misschien wel de meest gebruikte (en oudste) methode is de watervalmethode. Deze is gebaseerd op het beeld van de waterval, waarbij je niet terug kunt. De stappen volgen op elkaar en het proces wordt van boven naar beneden doorlopen. Het kent de volgende stappen:
- Informatieanalyse; analyse van de vereisten, requirements analyse
- ontwerp / documentatie.
- programmeren, bouw of ontwikkelen
- testen
- trainen
- conversie
- soms wordt het beheer ook nog als een fase gezien
Niet elke stap hoeft uitgevoerd te worden. Na elke stap wordt er doorgegaan met de volgende stap. Net als bij het bouwen van een huis wordt er na het bouwen van de muren niks meer gedaan aan de fundering. Als er geen iteratie in de planning is opgenomen kan er in principe niet meer teruggegaan worden naar een eerdere stap om fouten te verbeteren. Een van de nadelen van deze methode is dat het lang duurt voor er resultaten zichtbaar zijn, en als ze dan zichtbaar zijn, zijn ze moeilijk te herstellen. Het is een uitstekende methode als de (interne)klant / gebruiker in de analyse goed kan vertellen wat ze wil.
Modellen gebaseerd op de watervalmethode[bewerken]
Iteratieve methoden[bewerken]
Iteratieve ontwikkeling of iterative application development (IAD) omschrijft een methodiek om de stappen van een project herhaaldelijk te doorlopen, om zo te voorkomen dat een project uitloopt in een mislukking door problemen of foute aannames. Iteratieve methoden hebben de voorkeur bij een klant die niet precies kan omschrijven wat hij wil. Als de klant wel precies kan omschrijven wat hij wil, is de watervalmethode geschikt. Een voorbeeld is rapid application development.
Agile[bewerken]
Agile softwareontwikkelingsprocessen zijn gebaseerd op de grondbeginselen van iteratief ontwikkelen. Bovenop deze basis hebben ze een meer op mensen gerichte blik dan traditionele aanpakken. Agile processen gebruiken feedback in plaats van planning als basis. De feedback wordt geleverd door regelmatige tests en het evolueren van de software.
Agile processen lijken efficiënter te zijn dan oudere 'traditionele' aanpakken, ze hebben minder programmeertijd nodig om een product van hogere kwaliteit af te leveren, maar ze hebben als nadeel dat het niet goed mogelijk is een langetermijnplanning te maken met zulke procesmodellen. Het komt erop neer dat ze het meeste waar voor je geld bieden, maar dat je nooit weet wanneer je je waar krijgt…
Extreme Programming (XP) is de bekendste agile-methode. Zie ook Adaptive Software Development met veel prototyping
Projectmanagement methoden[bewerken]
Het ontwikkelen van software gebeurt vaak binnen een project, vandaar dat de gebruikelijke projectmanagement methoden bruikbaar zijn, zoals PRINCE2, SPICE en Six Sigma.
Formele methoden[bewerken]
Formele methoden zijn wiskundige aanpakken om soft- en hardware problemen op te lossen op het niveau van requirements, specificaties en ontwerpen. Voorbeelden van enkele formele methodes zijn petrinetten en VDM.