De ultieme gids voor softwareontwikkeling
Leer de essentiële turn-around-strategieën, tips en tactieken van softwareontwikkeling om digitale klantervaringen te innoveren.
De ultieme gids voor softwareontwikkeling
Leer de essentiële turn-around-strategieën, tips en tactieken van softwareontwikkeling om digitale klantervaringen te innoveren.
In deze uitgebreide gids leer je alles over:
Wat is softwareontwikkeling?
Softwareontwikkeling is een reeks processen die het identificeren van de gebruikersvereisten, het plannen, programmeren, testen en onderhouden van software omvat.
In eenvoudiger bewoordingen omvat softwareontwikkeling alles wat komt kijken tussen de conceptie van de gewenste applicatie of software tot de uiteindelijke manifestatie van die applicatie.
Softwareontwikkeling is hoofdzakelijk van drie soorten.
De ontwikkeling van systeemsoftware is het creëren van een echt platform met kernfuncties voor andere software, bijvoorbeeld besturingssystemen zoals Windows, Linux, iOS, Android.
De ontwikkeling van applicatiesoftware is een programma dat specifieker is voor bepaalde zakelijke taken. Fotobewerkingssoftware, videospelers, Microsoft Office zijn enkele voorbeelden. Met de opkomst van PaaS (Platform as a Service) en SaaS (Software as a Service) zijn web- en mobiele applicaties de nieuwe trends. Van films kijken op Netflix, winkelen op amazon of netwerken met LinkedIn.
Embedded software development wordt gebruikt om andere machines dan computers te besturen. Bijvoorbeeld industriële automatisering, telecommunicatienetwerken en machines die IoT (Internet of Things) ondersteunen.
Waarom is softwareontwikkeling belangrijk?
Volgens Gartner: “Tegen 2021 zal 80% van de middelgrote tot grote ondernemingen hun cultuur veranderen als een manier om hun digitale transformatiestrategie te versnellen.”
Softwareontwikkeling is een proces om uw inspanningen op het gebied van digitale transformatie te versnellen. Nu elke branche online gaat, wordt het een prioriteit om een uitzonderlijke software-ervaring te leveren. CIO’s die de verandering tegenhouden of verzetten, lopen het risico een betere klantervaring te verliezen, hun activiteiten te stroomlijnen, de verkoop te verhogen, klanten te behouden en het bereik van hun organisatie uit te breiden.
Stappen in het softwareontwikkelingsproces
Een typisch softwareontwikkelingsproces omvat de volgende stappen:
- Het verzamelen van vereisten is het meest cruciale onderdeel van softwareontwikkeling, waarbij de behoeften van de klant worden begrepen en gedocumenteerd. Enkele vragen die helpen bij het begrijpen van een zakelijke vereiste zijn:
- Wat er wordt gedaan?
- Hoe wordt het gedaan?
- Wat is de frequentie van een taak?
- Wat is het volume van beslissingen of transacties?
- Wat zijn de problemen die worden ondervonden?
- Probleemdefinitie moet ondubbelzinnig aangeven welk probleem of welke problemen moeten worden opgelost na grondig begrip van de klant en andere vereisten van belanghebbenden. Een probleemstelling is nodig om:
- Definieer de projectomvang
- Houd het team gefocust
- Houd het project op koers
- Valideer de uitkomst
- Systeemontwerp is het proces van het kiezen van de architectuur, modules, interfaces en gegevens voor een specifieke klantvereiste.
- Implementatie is het maakgedeelte van softwareontwikkeling waarbij de constructie van code plaatsvindt na het kiezen van de juiste programmeertaal.
- Testen houdt in dat de software wordt gevalideerd zonder bugs en geruststellend als deze onder alle mogelijke scenario’s efficiënt werkt.
- Documentatie van het gehele proces van softwareontwikkelingsstappen voor toekomstige verbetering en onderhoud.
- Implementatie van de ontwikkelde software in de klantomgeving om gebruikersproblemen op te lossen.
- Training en ondersteuning van de software aan alle belanghebbenden en gebruikers totdat iedereen zich begint aan te passen aan de nieuwste technologie.
- Onderhoud van softwarekwaliteit en schaalbaarheid gedurende de gehele applicatielevenscyclus.
Tegenwoordig past het softwareontwikkelingsproces in een veel eenvoudiger model dat in de volksmond SDLC (Software Development Life Cycle) wordt genoemd.
Wat is SDLC?
SDLC of Software Development Life Cycle is de raamwerkmethode om hoogwaardige, effectieve en efficiënte software te ontwikkelen en in de kortst mogelijke tijd te implementeren. SDLC-framework omvat vooraf gedefinieerde processen, fasen en elke fase van de SDLC-fase produceert de deliverables die nodig zijn voor de volgende fase in de levenscyclus.
Een typische levenscyclus van softwareontwikkeling bestaat uit de volgende fasen:
- Vereiste fase:
- Analyse- en planningsfase
- Ontwerpfase
- Ontwikkelings- en implementatiefase
- Testfase:
- Implementatie- en onderhoudsfase
Waarom de levenscyclus van softwareontwikkeling gebruiken?
De levenscyclus van softwareontwikkeling helpt bij het bereiken van deze doorsnee voordelen.
- Levert hoogwaardige software die voldoet aan de gebruikerseisen
- Sterke managementcontrole over het project
- Helpt bij het plannen van een robuuste workflow en het behalen van deadlines
- Productiviteit maximaliseren
- Kosteneffectieve methode
Hoe SDLC werkt?
SDLC werkt door bestaande tekortkomingen van het clientsysteem te evalueren en identificeert de vereisten van het nieuwe systeem door de levenscyclusfasen te volgen. Zelfs na de implementatie van de software in de clientomgeving kunnen gebruikersproblemen en eventuele aanvullende verbeteringen die aan de oppervlakte komen een vereiste worden voor de volgende cyclus.
De levenscyclus van softwareontwikkeling is een continu verbetermodel.
SDLC-fasen en best practices
Een typische levenscyclus van softwareontwikkeling bestaat uit zes fasen.
1. Vereiste fase:
Het verzamelen en analyseren van vereisten is de meest kritieke fase van SDLC.
In de vereistenfase verzamelt de bedrijfsanalist de vereisten van de klant en andere belanghebbenden volgens de bedrijfsbehoeften en documenteert deze in een Business Requirement Specification (BSR) -document.
De meest voorkomende stappen in de vereistenfase van SDLC zijn:
- De eisen van de klant begrijpen
- Processtroomdiagrammen maken
Pro-tip: de documentnaam kan per organisatie verschillen. Bijvoorbeeld Customer Requirement Specification (CRS), Business Specification (BS) en meer.
2. Analyse- en planningsfase
De volgende stap in het SDLC-proces is het definiëren en documenteren van productvereisten en deze goedgekeurd te krijgen door de klant en andere belanghebbenden. Dit document staat bekend als het Software Requirement Specification (SRS)-document.
Software Requirement Specifications (SRS) bestaat uit alle productvereisten die moeten worden ontworpen en ontwikkeld tijdens de levenscyclus van softwareontwikkeling.
De meest voorkomende stappen in de analyse- en planningsfase zijn:
- Opstellen van een projectplan
- Evaluatie en identificatie van middelen
- Haalbaarheidsonderzoek
Pro-tip: De belangrijkste mensen die bij deze fase betrokken zijn, zijn projectmanager, bedrijfsanalist en senior belanghebbenden.
3. Ontwerpfase
De ontwerpfase in de levenscyclus van softwareontwikkeling omvat twee functionele stappen.
- High-Level Design (HLD) levert de architectuur van het softwareproduct. Software architecten en senior developers ontwikkelen dit ontwerp.
- Low-Level Design (LLD) verklaart de werking van elke functie en elk onderdeel in het product en de werking ervan.
Het resultaat van deze fase wordt gedocumenteerd als High-Level & Low-Level documenten.
Pro-tip: HLD- en LLD-documenten bieden alleen het ontwerpelement, niet de code.
4. Ontwikkelings- en implementatiefase
In de ontwikkelings- en implementatiefase beginnen de softwareontwikkelaars met het schrijven van de code voor het product, het operationele team zal de fysieke hardware voor de servers opzetten en de ontwerpers zullen de gebruikersinterface programmeren.
De twee belangrijke stappen in deze fase zijn:
- IT-infrastructuur opzetten
- Codebase bouwen voor de software
Pro-tip: resultaat van deze fase zijn broncodedocument en ontwikkeld product.
5. Testfase:
Terug in de ontwikkelings- en implementatiefase worden servers, databases en applicaties ingesteld. Nu in de testfase wordt de kant-en-klare software doorgegeven aan het testteam.
Het test- en QA-team (Quality Assurance) valideert of aan alle vereisten is voldaan, stelt gerust dat alle functionaliteit werkt zoals verwacht en identificeert alle mogelijke bugs en rapporteert deze aan het bugvolgsysteem. De bugs worden vervolgens toegewezen aan de ontwikkelaars en verholpen. Dit proces wordt ook wel Bug Lifecycle genoemd.
Twee belangrijke activiteiten in deze fase zijn:
- Testgevallen coderen en
- Uitvoeren van testgevallen
De uitkomst van deze fase is het kwaliteitsproduct en de testartefacten.
Pro-tip: het testen van software is cruciaal in de levenscyclus van softwareontwikkeling.
6. Implementatie- en onderhoudsfase
In de implementatiefase zal het operationele team de staging- of ontwikkelomgevingssystemen naderen en gereed maken voor productie.
Het implementatieteam zal nieuwe hardware en servers installeren en alles schaalbaar maken voor productie. Dit omvat het opzetten van de koppelingen, databases voor realtime gebruikers en het synchroniseren met ontwikkelteams en releasemanagers.
Na het opzetten van de productie-eenheid, gaat de applicatie live voor echte gebruikers, en waar de applicatie door miljoenen gebruikers kan worden gedownload.
Dit brengt ons bij de onderhoudsfase, waar het onderhoudsteam de applicatie regelmatig zal onderzoeken, de belasting van de servers zal monitoren en meer. Het onderhoudsteam zal de applicatie onder alle omstandigheden ondersteunen en de software verder updaten en verbeteren zodat deze overeenkomt met de echte klantscenario’s.
Pro-tip: Klant en leverancier van softwareontwikkeling moeten het onderling eens zijn en de Service Level Agreement (SLA) ondertekenen.
Soorten SDLC-modellen
Na het lezen van dit gedeelte en het begrijpen van elk model en de voor- en nadelen ervan, bent u beter in staat om te kiezen welk SDLC-model het beste past bij uw projectcontext.
Laten we eens kijken naar de populaire SDLC-modellen die in de branche bewezen frameworks zijn voor uitzonderlijke softwareontwikkelingservaring.
- Watervalmodel
- V-vormig model
- Prototypemodel
- Iteratief/incrementeel model
- Spiraalmodel
- Agile-model
Watervalmodel
Het watervalmodel is de vroegste benadering van softwareontwikkeling. Het watervalmodel is een lineaire sequentiële benadering van softwareontwikkeling.
In dit model wordt de opeenvolgende voortgang gezien als gestaag naar beneden stromend, als een echte waterval. En daarom het zogenaamde Waterfall-model. Dit model is eenvoudig te begrijpen en te gebruiken. In het watervalmodel moet elke fase volledig zijn voltooid voordat aan de volgende fase kan worden begonnen. In dit model begint het testen nadat de softwareontwikkeling is voltooid.
Pro-tip: het Waterfall-model is het meest geschikt voor kleine projecten met duidelijke vereisten.
V-vormig model
V-vormig model of V-model is een uitbreiding van het watervalmodel. In dit SDLC-model vindt softwareontwikkeling sequentieel plaats in een V-vorm. Het staat ook bekend als verificatie- en validatiemodellen.
Elke fase van het V-model wordt afgerond voordat de volgende fase begint.
In V-Model gebeurt het testen van het product parallel aan de bijbehorende ontwikkelingsfasen. Testactiviteiten zoals planning en testontwerp worden ruim voor de codering gestart. In het V-vormige model wordt elke fase in de ontwikkelingslevenscyclus direct geassocieerd met de verschillende testfasen.
Pro Tip: V-vormig model bespaart veel meer tijd en dus een grotere kans op succes in vergelijking met het Waterfall-model.
Prototypemodel
Het prototypemodel is het werkmodel van software met beperkte functionaliteiten. In dit model bouwen ontwikkelaars een werkend prototype van het eigenlijke product met de meest gunstige functies die door de klant worden geleverd.
Als het prototype gereed is, wordt het ter beoordeling aan de opdrachtgever overhandigd. Na de feedback van de klant worden nieuwe deadlines en mijlpalen gedefinieerd door de ontwikkelaars. Dit vermindert meerdere iteraties in vergelijking met andere modellen.
Pro-tip: het prototypemodel vermindert het algehele risico door het project in kleinere segmenten op te delen en biedt flexibiliteit in het ontwikkelingsproces.
Iteratief/incrementeel model
Het iteratieve of incrementele levenscyclusmodel begint met de eenvoudige implementatie van een kleine set softwarevereisten en verbetert de software stapsgewijs totdat het volledige systeem is geïmplementeerd en klaar is om te worden geïmplementeerd.
Het iteratieve model start niet met de volledige klantspecificaties. In plaats daarvan begint de softwareontwikkeling met een subset van de vereiste en wordt deze stapsgewijs verbeterd met meerdere iteraties voordat het eindproduct wordt ontwikkeld.
Het fundamentele idee achter deze methode is om een softwareproduct te ontwikkelen door middel van herhaalde cycli (Iteratief) en in porties (Incrementeel).
Pro-tip: het iteratieve/incrementele model is geschikt voor grootschalige projecten.
Spiraalmodel
Het spiraalmodel is een combinatie van iteratief model en watervalmodel. Dit model houdt rekening met risico’s, die vaak onopgemerkt blijven door de meeste andere modellen.
Het spiraalmodel begint met het bepalen van de doelstellingen en beperkingen van de software aan het begin van de iteratie. De volgende fase in het spiraalmodel is het prototypen van de software, waarbij veel nadruk wordt gelegd op risicoanalyse. Het spiraalmodel maakt incrementele release en verfijning van het product door elke iteratie mogelijk.
Pro-tip: Spiraalmodel is geschikt voor grote toepassingen en systemen met ingebouwde segmenten.
Agile-model
Agile is een softwareontwikkelingsmethodologie die eigenlijk een filosofie is om een applicatie snel op een veel meer georganiseerde manier te implementeren.
In eenvoudige bewoordingen is agile niets anders dan een keten van snelle ontwikkeling en implementatie.
Het agile-model helpt bij het stapsgewijs bouwen van software met behulp van korte iteraties door de applicatie op te splitsen in kleine stukjes code door het microservices-model te volgen om af te stemmen op de veranderende bedrijfsbehoeften.
In plaats van een single-pass-ontwikkeling van 6 tot 18 maanden waarbij alle vereisten en risico’s vooraf worden voorspeld, past agile zich aan voor frequente feedback door na elke iteratie een werkbaar product te leveren.
In een agile model worden iteraties sprints genoemd. En elke sprint duurt 1 tot 4 weken.
Nadat elke sprint is voltooid, verifieert de productmanager het bijgewerkte product en implementeert het in de klantomgeving. Na de implementatie wordt feedback van klanten verzameld en wordt het product verbeterd in de vervolgsprint.
Pro Tip: Het eindresultaat van het agile model is een product van zeer hoge kwaliteit in de kortst mogelijke tijd.
Agile versus Traditionele modellen
De vier fundamentele waardeprincipes die differentiëren en rechtvaardigen waarom iemand agile-methodologie zou moeten overwegen.
- Mensen boven processen en tools
- Werkende software boven uitgebreide documentatie
- Klantsamenwerking boven starre contracten
- Reageren op verandering in plaats van een plan te volgen
Pro-tip: het agile model past in elk type project, maar vereist meer klantbetrokkenheid.
Hoe implementeer je een agile model?
Het agile SDLC-model heeft meerdere implementatiekaders of filosofieën om software van de beste kwaliteit te leveren. De frameworks lijken min of meer erg op elkaar, maar vanuit het oogpunt van implementatie heeft elk van de frameworks zijn unieke praktijken.
In deze sectie zullen we de top drie van agile implementatiekaders bekijken en hoe uniek hun praktijken zijn
- Scrum
- Kanban
- Extreem programmeren (XP)
Scrum
Het Scrum-implementatieraamwerk is een agile managementmethode om kleine teams te helpen onderling afhankelijk te werken.
Scrum-framework begint met het plannen van een minimale functieset, bouwen wat was gepland, en vervolgens die kleine functieset testen en beoordelen, en klaarmaken voor verzending. Aan het einde van deze cyclus is een bruikbaar stuk van het product klaar. Dit hele proces wordt sprint genoemd en vindt over het algemeen plaats in een periode van 1 tot 3 weken voor het leveren van een werkend deel van het totale product.
Scrum-workflow
Laten we het allemaal samenbrengen en de scrum-workflow eens bekijken.
- In eerste instantie maakt de product owner een lijst met slimme ideeën die in het product zouden kunnen passen en prioriteert de ideeën om een product backlog op te stellen.
- De product owner, scrum master en het team selecteren samen de topprioriteiten uit de product backlog en voegen deze toe aan de sprint backlog voor implementatie.
- Een sprint is een tijdvak van 1 tot 3 weken om de sprintachterstanden af te werken, en gedurende deze periode komt het team elke dag bij elkaar voor een “dagelijkse scrum” om hun voortgang te beoordelen.
- Het resultaat van de sprint is een potentieel verzendbaar product en kan worden ingezet in een klantomgeving als de producteigenaar tevreden is.
- Aan het einde van elke sprint vindt een sprintbeoordeling en sprintretrospectieve bijeenkomst plaats. In de sprintreview wordt het product getoond aan de klant of producteigenaar voor feedback, en een retrospectieve bijeenkomst is een interne teambijeenkomst om het algehele proces te verbeteren.
Pro-tip: verschillende sprints worden herhaald totdat het product volledig is.
Kanban
Kanban is een Japans woord dat ‘uithangbord’ of ‘billboard’ betekent. Het is een eenvoudig maar krachtig flexibel implementatiekader om bedrijfseigenaren en projectmanagers te helpen georganiseerd te blijven.
Een goed gepland Kanbanbord helpt teamleden om samen te werken en geïnformeerd te worden. In veel gevallen kan een digitaal Kanban-systeem, samen met doordachte deelname, de noodzaak voor het gevreesde wekelijkse statusrapport elimineren.
In het Kanban-framework worden, nadat een bord is gemaakt, alle benodigde bijdragers uitgenodigd om deel te nemen aan het bord. Het helpt om een kleine maar dynamische werkgroep te creëren. In de meeste gevallen omvat bestuursdeelname een of meer producteigenaren.
Pro-tip: in een klein bedrijf kan de producteigenaar de bedrijfseigenaar zijn en in een grote organisatie kan dit een projectmanager zijn.
Kanban-workflow
In zijn meest eenvoudige vorm heeft een typisch Kanban-bord slechts een paar kolommen, zoals:
- Achterstand
- Te doen
- In uitvoering, en
- Voltooid
Laten we nu alles samenbrengen en de workflow voor scrum-implementatie begrijpen.
- De productmanager houdt een gezaghebbende lijst bij van werkitems die moeten worden voltooid om een project te voltooien.
- Werkitems worden op het bord weergegeven met taken of kaarten of gebruikersverhalen die de taak beschrijven in opeenvolgende kleine gedachten.
- Kanban-bord bevat een achterstandskolom om de lijst met taken te sorteren en te prioriteren. De achterstand kan zelfs brainstormkaarten bevatten.
- Taken worden toegewezen aan teamleden en de producteigenaar verplaatst de taken van de backlog naar de to-do-kolom. De eerste kaart is de meest cruciale taak en krijgt als eerste prioriteit.
- Teamleden kunnen notities toevoegen, van eigenaar veranderen en zelfs anderen uitnodigen om deel te nemen. Het helpt iedereen in het bestuur de voortgang en de exacte status van het project te kennen.
- Op dezelfde manier wordt een visuele workflow gecreëerd van concept tot implementatie.
Pro-tip: verlaag WIP (Work in Progress) om de cyclustijd te verkorten (Delivery rate)
Leveringssnelheid = werk in uitvoering/doorlooptijd
Extreem programmeren (XP)
Extreme Programming is een lichtgewicht, laag risico, flexibele, voorspelbare, humanistische en leuke manier van softwareontwikkeling.
XP staat bekend als een lichtgewicht, flexibel implementatieraamwerk omdat het de ontwikkelaars niet overbelast met een ingrijpend proces. In plaats daarvan wordt het tot een minimum beperkt. En, humanistisch omdat het sterk gericht is op ontwikkelaars, klanten en andere belanghebbenden.
Het extreme programmeerraamwerk is gebaseerd op creativiteit, leren en verbeteren door middel van vallen en opstaan, en continue iteraties met meerdere feedbackloops.
Pro-tip: XP agile-filosofie richt zich op de vage en veranderende vereisten van kleinere teams.
Extreme programmeerworkflow
Laten we eens kijken hoe we stap voor stap het XP agile implementatieraamwerk kunnen implementeren.
- XP begint met een eenvoudig ontwerp om de beschikbare functies te coderen en is ondertussen flexibel om indien nodig opnieuw te ontwerpen.
- De ontwikkeling gebeurt in paren, met twee programmeurs op één systeem, die om de beurt coderen, terwijl de andere altijd beoordeelt en feedback geeft.
- Integratie en testen worden meerdere keren per dag gedaan.
- Een minimaal werkend product wordt snel in elkaar gezet voor productie en continu geüpgraded.
- De klant wordt gedurende de hele implementatiefase betrokken om te valideren en te itereren op basis van constante feedback.
Pro-tip: XP-framework is het meest geschikt voor projecten met strikte deadlines.
Laatste woord
De keuze van het SDLC-model voor de succesvolle voltooiing van elk project hangt af van het grondige begrip van de eis van de klant.
Elk van de SDLC-modellen heeft zijn eigen voor- en nadelen.
De meest kritische factoren waarop projectmanagers zich moeten concentreren bij het bepalen van het succes van een SDLC-model, zijn:
- Of de vereisten duidelijk of onduidelijk zijn
- De complexiteit van het project
- Grootte en resourcevereisten
Als het project groot is met precieze en statische eisen, dan is het Waterfall-model de beste keuze.
Integendeel, als de projectvereisten dynamisch zijn en een veel grotere betrokkenheid van testers vanaf het begin van het project vereisen, dan zou V-Model geschikt zijn.
En als de vereisten onduidelijk en dynamisch zijn en naar verwachting in een korte periode zullen worden geïmplementeerd, passen Spiral- en Agile-modellen daar feilloos in.
Dat is zo ongeveer alles wat u moet weten voor een succesvolle roadmap voor softwareontwikkeling.
Hulp bij softwareontwikkeling
WILT U DIGITAAL CONTROLEREN?
NEEM CONTACT MET ONS OP