CodeGym /Java Blog /Willekeurig /Methodieken voor softwareontwikkeling
John Squirrels
Niveau 41
San Francisco

Methodieken voor softwareontwikkeling

Gepubliceerd in de groep Willekeurig
Bij veel interviews wordt u waarschijnlijk gevraagd naar methodologieën. Dit is niet de belangrijkste of moeilijkste vraag, maar een spiekbriefje zou leuk zijn. In dit artikel zullen we proberen over te brengen wat een ontwikkelmethodiek is en deze met elkaar vergelijken. Een softwareontwikkelingsmethodologie is een proces dat wordt gebruikt om een ​​bepaald product te ontwikkelen, dat wil zeggen, het is een manier om de ontwikkeling door een team van ontwikkelaars te organiseren. Er zijn veel verschillende ontwikkelingsmodellen, die elk hun eigen aanpak definiëren. Er kan niet worden gezegd dat een van hen voor elk project moet worden gebruikt. De juiste aanpak is geheel afhankelijk van de situatie. Op drie ervan wil ik nader ingaan.

Waterval

De watervalmethode is een van de oudste en omvat een strikt sequentiële implementatie: elke fase moet worden voltooid voordat de volgende begint. Met andere woorden, een overgang naar de volgende fase betekent dat het werk van de vorige fase 100% voltooid is. De afbeelding laat zien hoe het werkt: eerst analyseren we het probleem (documenteren taken, bespreken uitdagingen), dan ontwerpen we (de structuur van het project krijgt vorm in dit stadium), en dan coderen en testen we. Terugkeren naar vorige fasen is niet toegestaan. Deze aanpak wordt aanbevolen voor kleine projecten waarbij de vereisten van tevoren bekend zijn en waarschijnlijk niet zullen veranderen. Methodieken voor softwareontwikkeling - 2Voordelen:
  • Volledige en consistente documentatie in elke fase
  • Makkelijk te gebruiken
  • Stabiele eisen
  • Budgetten en deadlines zijn vooraf bepaald
Nadelen:
  • Een grote hoeveelheid documentatie
  • Niet erg flexibel
  • De klant kan geen demoversie van het product zien
  • Geen optie om achteruit te gaan

Scrummen

Scrum is een softwareontwikkelingsmethodiek die het hele proces opdeelt in iteraties. Aan het einde van elke interation staat het team klaar om een ​​demoversie van het product te geven. De afbeelding laat zien dat het team alle ontwikkelingsfasen parallel doorloopt, waardoor het mogelijk is om aan het einde van elke iteratie een voltooid deel van het project te hebben. Methodieken voor softwareontwikkeling - 3Ik zal proberen de essentie van de methodiek kort uit te leggen met eenvoudige woorden, maar er is veel terminologie. Ik denk dat het belangrijkste is om de essentie te begrijpen. U zult de terminologie met ervaring onthouden. Alle ontwikkeling is opgedeeld in sprints (vaak 2-3 weken). Er is een achterstand(takenlijst) voor de gehele ontwikkelperiode en voor elke afzonderlijke sprint. Elke taak heeft zijn eigen verhaalpunt (moeilijkheidsgraad). Elke deelnemer aan het proces heeft een rol:
  • Het scrumteam bestaat uit de professionals (developers, testers, designers) die aan een project werken.
  • De scrummaster is de persoon die erop toeziet dat de principes van scrum gerespecteerd worden.
  • De producteigenaar is de klant.
Deze methodologie is afhankelijk van communicatie, dus er zijn een groot aantal vergaderingen:
  • Stand-up – Dit is een korte vergadering die elke dag wordt gehouden en waaraan alle teamleden deelnemen. Elke deelnemer beantwoordt 3 vragen: Wat heb ik gedaan? Wat zal ik doen? En welke blokkades zijn er?
  • Planningsvergadering – Deze vergadering wordt gehouden aan het begin van de sprint. Tijdens deze vergadering worden de taken geïdentificeerd die in de volgende sprint moeten worden uitgevoerd.
  • Retrospectief - Deze bijeenkomst wordt aan het einde van de sprint gehouden en heeft tot doel vast te stellen wat goed is gedaan en wat er verbeterd kan worden.
Voordelen:
  • De klant kan tijdens het ontwikkelproces resultaat zien
  • Dagelijkse monitoring van het ontwikkelproces
  • Mogelijkheid om aanpassingen te maken tijdens de ontwikkeling
  • Communicatie tot stand gebracht met alle teamleden
  • Een kleine hoeveelheid documentatie
Nadelen:
  • Moeilijk te beoordelen arbeids- en andere kosten die nodig zijn voor ontwikkeling
  • Moeilijk om knelpunten te identificeren voordat de ontwikkeling start
  • De noodzaak om iedereen te betrekken bij het werk van andere teamleden.

Kanban

Kanban is een methode die is gebaseerd op het visualiseren van de voortgang die is geboekt bij het voltooien van de taken van het team. Het belangrijkste idee is om het aantal taken te verminderen dat momenteel wordt uitgevoerd (in de kolom "In uitvoering"). Bij scrum is het team gefocust op het succesvol voltooien van sprints. In Kanban neemt de taak de belangrijkste plaats in. Dit is goed voor projecten in de onderhoudsfase, waar de basisfunctionaliteit al is geïmplementeerd en minimale verbeteringen en bugfixes overblijven. In Kanban worden taken individueel toegewezen. Een taak doorloopt alle stadia op het bord, onafhankelijk van andere taken, en als deze voltooid is, kan deze aan de klant worden getoond. Een Kanban-bord bestaat uit kolommen die elk een afzonderlijk ontwikkelproces vertegenwoordigen. Sommige kolommen (bijvoorbeeld "In uitvoering" ) beperk het aantal taken dat ze kunnen uitvoeren. Dit helpt om snel en eenvoudig knelpunten in de taakverdeling te vinden. De afbeelding toont een voorbeeld van zo'n bord. Het aantal kolommen en hun namen kunnen variëren. Ik zal de meest voorkomende presenteren: Methodieken voor softwareontwikkeling - 4
  • To Do - De lijst met taken die moeten worden uitgevoerd
  • In uitvoering – Taken waaraan momenteel wordt gewerkt
  • Code Review - Taken die zijn uitgevoerd en ter beoordeling zijn ingediend
  • In Testing – Taken klaar om getest te worden
  • Gereed – Voltooide taken
Voordelen:
  • Makkelijk te gebruiken
  • Zichtbaarheid (helpt bij het lokaliseren van knelpunten, vereenvoudigt het begrip)
  • Hoge teambetrokkenheid bij het proces zelf
  • Zeer flexibele ontwikkeling
Nadelen:
  • Een onstabiele takenlijst
  • Moeilijk toe te passen op langlopende projecten
  • Gebrek aan harde deadlines

Een laatste woord over methodologieën voor softwareontwikkeling

Mensen die managementposities bekleden of ernaar streven, moeten softwareontwikkelingsmethodologieën grondig begrijpen, maar iedereen moet op zijn minst de basis begrijpen. Methodologieën zijn een integraal onderdeel van het ontwikkelingsproces en worden niet alleen in de IT-sfeer gebruikt. Bedankt dat je de tijd hebt genomen om mijn artikel te lezen. Ik hoop dat het nuttig voor je was. Ik heb geprobeerd alleen de belangrijkste punten zo toegankelijk en beknopt mogelijk te beschrijven. Hierdoor is dit artikel niet uitputtend. Ik hoor graag uw mening hierover en beantwoord uw vragen. Al het beste!
Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION