In detail
Software life cycle

Continuous Integration - Continuous Delivery
Ik heb eigenlijk nooit anders gewerkt dan volgens dit principe: continuous integration en continuous delivery. Het is immers veel minder riskant om elke dag een nieuwe versie uit te brengen dan belangrijke wijzigingen te laten opstapelen, waardoor soms moeilijk te overbruggen drempels ontstaan. Elke wijziging aan de code, elke toevoeging van een nieuwe functionaliteit, blijft uiteindelijk altijd beperkt in verhouding tot het volledige product. Deze aanpak zorgt bovendien voor echte tevredenheid bij de gebruikers: nieuwe functionaliteiten zijn snel beschikbaar. En voor het ontwikkelingsteam geeft dit het gevoel zo dicht mogelijk bij de behoeften van de klanten te werken.
Nooit moeten betalen voor een bugfix
Is het niet bijzonder frustrerend om een bug vast te stellen in versie 1 en vervolgens versie 2 te moeten aanschaffen om van de correctie te kunnen profiteren? De vraag stellen is ze beantwoorden. Een bug betekent dat het doel werd gemist. De bug moet zo snel mogelijk worden gecorrigeerd en de gebruiker moet zonder extra kosten of moeilijkheden over die correctie kunnen beschikken.
Hoe organiseer je dan de versionering van functionaliteiten?
Uit het voorgaande blijkt dat er slechts één broncode is. Ongeacht de aangeschafte versie heeft elke klant recht op hetzelfde uitvoerbare bestand: het meest recente. De ontwikkelaar « beschermt » nieuwe functionaliteiten echter met een andere licentiesleutel, die de nieuwe mogelijkheden ontgrendelt.
Van versie veranderen mag nooit een project op zich worden
Het bijwerken van de software moet eenvoudig zijn en binnen het bereik van alle gebruikers liggen. Als de nieuwe versie een aanpassing van de databasestructuur vereist, moet dit mechanisme in het updateproces worden geautomatiseerd. Dat proces beperkt zich tot het uitvoeren van een kleine wizard, waarbij de gebruiker enkel zo vaak als nodig op « Volgende » hoeft te klikken. Datzelfde proces kan ook via een geplande taak worden geautomatiseerd, waardoor uiteindelijk een vorm van « Continuous Deployment » ontstaat. Elke ochtend beschikken de gebruikers die daarvoor hebben gekozen over de meest recente versie van de software.
Deze manier om de levenscyclus van software te benaderen, biedt voordelen voor iedereen: gebruikers beschikken snel over correcties en nieuwe functionaliteiten, terwijl het ontwikkelingsteam voortdurend werkt met één enkele, coherente en altijd actuele codebase.
