Het software ontwikkelproces indelen in uitvoerbare stappen
Software ontwikkelen bestaat uit meerdere stappen en het is belangrijk dat je ze niet overhaast doorloopt. Het is verstandig om als team van te voren tijd en moeite te investeren in het uitwerken van het softwareontwerp, voordat je met de ontwikkelingsfase van je project begint.
Waarschijnlijk heb je al een projectplan voordat je je softwareontwerp uitwerkt, zodat je weet hoeveel budget, middelen, tijd en andere parameters je tot je beschikking hebt. Daarnaast weet je dankzij de planning van je softwarearchitectuur ook wat de functionele en niet-functionele eisen voor je software zijn, welke verwachtingen de stakeholders hebben, en welke besluiten al genomen zijn die gevolgen hebben voor je hele softwarearchitectuur.
Je softwareontwerpproces gaat uit van het voorbereidende werk dat je al gedaan hebt en maakt op basis daarvan een stappenplan voor het programmeren en implementeren van de software. Houd tijdens dit proces in gedachten dat goede softwareontwerpen uitgaan van de volgende basisprincipes:
-
Eenvoud: complexiteit omwille van de complexiteit is niet zinvol; het zorgt er alleen maar voor dat je meer middelen nodig hebt, dat je software meer onderhoud vereist en dat je voor meer uitdagingen komt te staan. Om ervoor te zorgen dat de broncode gebruiksvriendelijk blijft, moet elke taak onafhankelijk van zijn eigen module aangepast en gebruikt worden. En als iets makkelijker kan (als al het andere gelijk is), kies dan de makkelijkste weg.
-
Modulariteit: als je je project opdeelt in stukken wordt het gemakkelijker om je doelen te bereiken. Dit wordt modulariteit genoemd en is ook een veel voorkomend thema in agile-methodes, waardoor je sprints kunt gebruiken om specifieke functies of taken één voor één af te werken.
-
Volledigheid en toereikendheid: je software moet compleet zijn. Het moet zo ontworpen zijn dat het voldoet aan de eisen van je project.
-
Inspelen op verandering: waar en wanneer mogelijk moet je je software zo ontwikkelen dat je voorbereid bent op aanpassingen en inspeelt op de mogelijkheid dat de eisen die vandaag worden gesteld, morgen kunnen veranderen. Hoewel het onmogelijk is om de toekomst volledig te voorspellen, kijken de beste softwareontwerpen vooruit naar wat komen zal en bereiden ze zich daarop voor.
-
Abstractie: een softwareontwerp moet een volledig overzicht van een plan kunnen geven, waarbij het alle relevante informatie bevat, maar zonder informatie die niet direct relevant is. Je plan zal dus waarschijnlijk niet alle nauwkeurige details uit de doeken doen, maar gebruikmaken van abstractie.
-
Coupling: idealiter heeft je softwareontwerp zo weinig mogelijk coupling, zodat je team veranderingen aan een module kan aanbrengen zonder dat dit grote gevolgen heeft voor andere onderdelen van je software.
Op zoek naar voorbeelden voor stapsgewijze software ontwikkeling? Lees de onderstaande blogs voor meer informatie:
Het software ontwikkelproces starten
Vergeet niet dat je pas met het ontwerpen van software kunt beginnen als je je huiswerk hebt gedaan. Voordat je je project verder in stappen kunt uitwerken, moet je eerst vaststellen wat de vereisten zijn, en risico- en domeinanalyses uitvoeren.
-
Vereisten: de behoeften van bedrijven en gebruikers zijn het uitgangspunt van de functionele en niet-functionele verwachtingen en vereisten waar je software aan moet voldoen. Dit zijn functies en eigenschappen die niet in je software mogen ontbreken.
-
Risicoanalyse: voordat je met je ontwerp begint, moet je de mogelijke risico's van dit project bestuderen en er alles aan doen om in te schatten hoe ze van invloed kunnen zijn op je totale softwareontwikkeling. Naast algemene projectmanagementrisico's zoals budgetoverschrijdingen of het niet kunnen vinden van het benodigde personeel, wat zijn de technische risico's?
-
Domeinanalyse: in deze stap moet je meer te weten komen over het domein, zodat je de problemen en uitdagingen wat beter kunt begrijpen en naar overeenkomsten kunt zoeken tussen verwante softwaresystemen.
Een specificatiedocument voor vereisten invullen
Nu is het tijd om de vereisten van je softwareontwerp vast te stellen en ze te bundelen in softwareontwerpdocumenten (SDD in het Engels). Een SDD helpt je om op koers te blijven tijdens het programmeerproces en verkleint de kans dat je broncode moet weggooien of van voren af aan moet beginnen. In een gecentraliseerd document leg je afhankelijkheden, functies en andere waardevolle documentatie vast.
Dit zijn zaken die je normaal gesproken in een SDD tegenkomt:
-
Titel, auteurs en beoordelaars: basisinformatie over het project, waaronder een lijst met stakeholders en de namen van het technische team.
-
Functionele beschrijving: wat de software doet en andere bijzonderheden zoals opstartprocedures, foutafhandeling, gebruikerslimieten enzovoort.
-
Gebruikersinterface: gegevens en diagrammen die gebruikers instrueren over het systeem en hoe ze dat kunnen gebruiken.
-
Mijlpalen en doelstellingen: de belangrijkste mijlpalen voor het technische team en doelstellingen zoals voortgangseisen.
-
Een prioriteitenmatrix: een hiërarchische lijst van functies en user stories op basis van prioriteiten.
-
Sectie met oplossingen: een beschrijving van de user story achter je software.
-
Niet-technische tijdlijn: een tijdlijn voor mensen zonder technische achtergrond die de mijlpalen en het proces van je project wat beter willen begrijpen.