Wat is een softwareontwikkelingsproces?
Software verwijst naar zowel computerbesturingssystemen zelf, als naar programma's en applicaties ontworpen om op computers te draaien. Softwareontwikkeling is het ontwerpen en schrijven van software, inclusief de ontwikkeling van de programmastructuur en gebruikersinterface en het programmeren van de broncode. Het softwareontwikkelingsproces is de benadering van softwareontwikkeling en er zijn veel goed ontwikkelde modellen voor dit proces. Over het algemeen bevatten ze variaties op de fasen van het uitvoeren van een vereistenanalyse, het specificeren van het product, het maken van de softwarearchitectuur, het implementeren van de code, het testen en documenteren van het product, het bieden van training en ondersteuning en het onderhouden en verbeteren van de release. Welk model ook wordt gebruikt, het softwareontwikkelingsproces kan soms gericht zijn op de ontwikkeling van nieuwe producten, terwijl het op andere momenten is gericht op revisie - bijvoorbeeld wanneer een puntrelease wordt gemaakt om bugs te repareren - en op andere momenten kan het voorbereidingen treffen voor een nieuwe versie van bestaande software, belangrijke functies toevoegen en bugfixes aanbieden.
Het Waterfall-model voor softwareontwikkeling is een vroeg model en ook een met inherente beperkingen. Het schrijft een strikt unidirectionele benadering van ontwikkeling voor, waarbij het een manier doorloopt in de opeenvolging van software-ontwikkelingsfasen, zonder ooit terug te keren naar een vorige fase of de specificatie te veranderen, zodra de ontwikkeling is begonnen. Het spiraalmodel maakt daarentegen gebruik van een iteratief proces, waarbij een reeks vereisten, gevolgd door ontwerp, implementatie en uiteindelijk testen, wordt gevolgd door een tweede cyclus waarin meer functies en componenten worden toegevoegd. In Agile Models van het softwareontwikkelingsproces - waarvan er een aantal zijn - worden ontwikkelingsprojecten verdeeld in subsets van een week tot een maand, timeboxen genaamd, die elk een geminiaturiseerde versie van een volledig softwareontwikkelingsproces doorlopen, inclusief een release op het einde. Andere kenmerken van Agile-ontwikkeling zijn de nabijheid van het samenwerkende team en het gebruik van klanten om gedurende het hele proces op het product te reageren.
Softwareontwikkelingsproces kan radicaal verschillen voor een groot bedrijf en voor een individuele programmeur. Een commerciële software-uitgever, zoals Sibelius Software®, onderdeel van Avid Technology®, kan bijvoorbeeld meerdere jaren aan het softwareontwikkelingsproces voor elke versie besteden en een softwareapplicatie van honderden MB groot en door duizenden mensen gebruiken . Aan de andere kant kan een persoon als Roman Molino Dunn, The Music Transcriber®, een plug-in programmeren als reactie op iemands wens dat hij of zij iets anders zou kunnen doen met een stukje commerciële software, misschien een stuk software van 4 kb maken binnen een uur na het idee, in een extreem geval.