Zoals je ongetwijfeld weet, verwijst softwareconfiguratiebeheer (SCM) in de software-engineering naar een proces voor het onderhouden van computersystemen, servers en software in een gewenste, consistente staat.
Het wordt soms softwarewijzigingsbeheer of IT-automatisering genoemd. Het idee is om een systeem te hebben waarmee wijzigingen die gedurende het softwareontwikkelingsproces in een systeem zijn aangebracht, kunnen worden bijgehouden en vergeleken, en waarmee ook kan worden vastgesteld wie deze revisies heeft aangebracht.
Het doel is om projectbeheer eenvoudiger te maken, fouten te minimaliseren, de traceerbaarheid te vergroten en de algehele softwarekwaliteit te verbeteren.
De voordelen van een SCM-proces zijn:
- Updates door meerdere gebruikers: Vaak werken veel mensen aan softwareontwikkeling, wat betekent dat er voortdurend updates en wijzigingen zijn. Met SCM kun je alle code en configuraties bijhouden die in productie zijn geïmplementeerd (ook wel een configuratie-audit genoemd) en wordt bovendien traceerbaarheid geïntroduceerd door vast te stellen welke medewerker elke wijziging heeft aangebracht.
- Productiviteit: SCM verhoogt de productiviteit van de software doordat het minimale fouten waarborgt. Je kunt er bijvoorbeeld altijd voor zorgen dat je test- en productieomgevingen overeenkomen.
- Communicatie en samenwerking: Met SCM is communicatie tussen teamleden eenvoudig, waardoor belanghebbenden die bij het project betrokken zijn gemakkelijk kunnen samenwerken en de kwaliteit van het product kunnen verbeteren.
- Platform- en besturingssysteemtests: Zorg ervoor dat de software effectief werkt op meerdere platforms en besturingssystemen.
- Omgaan met wijzigingen: SCM maakt het eenvoudiger om wijzigingen in planning, beleid en gebruikers op te vangen.
- Kostenbeheersing: Door teamleden en de projectworkflow bij te houden, helpt SCM de kosten te beheersen en de efficiëntie te verhogen.
In dit artikel neem ik je mee door de verschillende stappen van een SCM-proces, wie erbij betrokken moet zijn en welke tools beschikbaar zijn om te helpen.
De 5 stappen van een SCM-plan
Het softwareconfiguratiebeheerproces bestaat uit een reeks stappen die zijn ontworpen om alle defecten, resources, code, documenten, hardware en budgetten gedurende een project bij te houden en te beheren.
SCM is een interdisciplinair proces waarbij mensen op elk niveau betrokken zijn, waaronder DevOps, ontwikkelaars, projectmanagers/-eigenaren, systeembeheerders en testers.
1. Planning en identificatie
De eerste stap in het proces is planning en identificatie. In deze stap is het doel om de ontwikkeling van het softwareproject te plannen en de onderdelen binnen de reikwijdte te identificeren. Dit wordt bereikt door vergaderingen en brainstormsessies met je team te houden om de basiscriteria voor de rest van het project vast te stellen.
Een onderdeel van dit proces is bepalen hoe het project zal verlopen en de eindcriteria vaststellen. Zo weet je team wanneer alle doelen van het project zijn bereikt.
Specifieke activiteiten tijdens deze stap zijn:
- Onderdelen identificeren, zoals testgevallen, specificatievereisten en codemodules
- Elk softwareconfiguratie-item binnen het proces identificeren
- De basisgegevens groeperen over waarom, wanneer en welke wijzigingen worden aangebracht en wie verantwoordelijk is voor het uitvoeren ervan
- Een lijst maken van noodzakelijke resources, zoals tools, bestanden, documenten enzovoort
2. Versiebeheer en referentieversie
De stap voor versiebeheer en het vaststellen van een referentieversie waarborgt de voortdurende integriteit van het product door een geaccepteerde versie van de software te identificeren. Deze referentieversie wordt op een specifiek moment in het SCM-proces vastgesteld en kan alleen via een formele procedure worden gewijzigd.
Het doel van deze stap is de wijzigingen die in het product worden aangebracht te beheersen. Naarmate het project vordert, worden nieuwe referentieversies vastgesteld, wat resulteert in meerdere versies van de software.
Deze stap omvat de volgende activiteiten:
- De componenten identificeren en classificeren die door het project worden omvat
- Een manier ontwikkelen om de hiërarchie van verschillende softwareversies bij te houden
- De essentiële relaties tussen verschillende componenten identificeren
- Verschillende referentieversies voor het product vaststellen, waaronder ontwikkelings-, functionele en productreferentieversies
- Een gestandaardiseerd labelschema ontwikkelen voor alle producten, revisies en bestanden, zodat iedereen dezelfde informatie gebruikt.
Het vastleggen van een projectattribuut als referentieversie dwingt formele processen voor configuratiewijzigingsbeheer af wanneer deze attributen worden gewijzigd.
3. Wijzigingsbeheer
Wijzigingsbeheer is de methode die wordt gebruikt om ervoor te zorgen dat alle aangebrachte wijzigingen consistent zijn met de rest van het project. Het instellen van deze controles helpt bij kwaliteitsborging en bij de goedkeuring en uitgifte van nieuwe baseline(s). Wijzigingsbeheer is essentieel voor de succesvolle afronding van het project.
In deze stap worden verzoeken om configuraties te wijzigen bij het team ingediend en goedgekeurd of afgewezen door de softwareconfiguratiemanager. De meest voorkomende soorten verzoeken zijn het toevoegen of bewerken van verschillende configuratie-items of het wijzigen van gebruikersrechten.
Deze procedure omvat:
- Het beheren van ad-hocwijzigingen die door de klant worden aangevraagd
- Het beoordelen van de waarde van het wijzigingsverzoek door de algehele impact ervan op het project te onderzoeken
- Het uitvoeren van goedgekeurde wijzigingen of uitleggen waarom wijzigingsverzoeken zijn afgewezen.
4. Administratie van de configuratiestatus
De volgende stap is ervoor te zorgen dat het project volgens het plan wordt ontwikkeld door te testen en te verifiëren aan de hand van de vooraf vastgestelde baselines. Hierbij worden uitgiftenotities en gerelateerde documenten bekeken om ervoor te zorgen dat de software aan alle functionele vereisten voldoet.
De administratie van de configuratiestatus houdt elke versie bij die tijdens het proces wordt uitgebracht en beoordeelt wat er nieuw is in elke versie en waarom de wijzigingen noodzakelijk waren. Enkele activiteiten in deze stap zijn:
- Het vastleggen en evalueren van wijzigingen die van de ene baseline naar de volgende zijn aangebracht
- Het bewaken van de status en oplossing van alle wijzigingsverzoeken
- Het bijhouden van documentatie van elke wijziging die is aangebracht naar aanleiding van wijzigingsverzoeken en om een andere baseline te bereiken
- Het controleren van eerdere versies voor analyse en testen.
5. Audits en beoordelingen
De laatste stap is een technische beoordeling van elke fase in de levenscyclus van softwareontwikkeling. Bij audits en beoordelingen wordt gekeken naar het proces, de configuraties, de workflow, wijzigingsverzoeken en alles wat tijdens de ontwikkeling van het project in elke baseline is opgenomen.
Het team voert meerdere beoordelingen van de applicatie uit om de integriteit ervan te verifiëren en stelt ook essentiële begeleidende documentatie samen, zoals uitgiftenotities, gebruikershandleidingen en installatiehandleidingen.
Activiteiten in deze stap zijn:
- Ervoor zorgen dat de doelen die in de stap voor planning en identificatie zijn vastgelegd, worden bereikt
- Ervoor zorgen dat de software voldoet aan de vastgestelde normen voor configuratiebeheer
- Ervoor zorgen dat wijzigingen ten opzichte van baselines overeenkomen met de rapporten
- Valideren dat het project consistent en compleet is volgens de doelstellingen van het project.
In tegenstelling tot traditionele bestandssystemen kan gespecialiseerde software voor databasebeheer geavanceerde functies bieden, zoals gegevensintegriteit en beveiliging, die cruciaal zijn voor effectief softwareconfiguratiebeheer.
Wie is betrokken bij het softwareconfiguratieproces?
Het SCM-proces is multidisciplinair en omvat vrijwel elk lid van het softwareontwikkelingsteam.
Configuratiemanager
De configuratiemanager is verantwoordelijk voor het bepalen wie waarvoor verantwoordelijk is gedurende het ontwikkelingsproces. Deze persoon zorgt ervoor dat iedereen het SCM-proces gedurende het hele project volgt en heeft het laatste woord over alle wijzigingsverzoeken.
Projectmanager
De rol van de projectmanager is van essentieel belang voor het SCM-proces. Deze persoon stelt de planning van het project vast om ervoor te zorgen dat de deadlines voor voltooiing worden gehaald en maakt ook rapporten over de voortgang van het team. Een andere belangrijke taak van de projectmanager is ervoor te zorgen dat elk teamlid de vooraf vastgestelde richtlijnen volgt voor het maken van de software, het aanbrengen van wijzigingen en het testen ervan.
Softwareontwikkelaars
Ontwikkelaars zijn verantwoordelijk voor het schrijven van code tijdens de ontwikkeling en voor het verwerken van goedgekeurde wijzigingsverzoeken.
Auditor
Deze persoon is verantwoordelijk voor alle audits en beoordelingen en moet ervoor zorgen dat de definitieve uitgave compleet en consistent is.
Wat zijn de voordelen van het gebruik van configuratiebeheertools?
Er zijn verschillende tools beschikbaar om het proces van softwareconfiguratiebeheer te ondersteunen. Deze tools zijn bedoeld om traditioneel handmatige taken te automatiseren, wat zorgt voor meer nauwkeurigheid, snelheid en controle. Meer specifiek kunnen ze helpen met:
- Waarschuwingen en rapporten: Een goede SCM-tool geeft waarschuwingen en rapporten als er afwijkingen zijn van de overeengekomen basislijn. Deze gegevens worden vrijwel in realtime doorgestuurd, zodat managers snel kunnen handelen als iets van het geplande traject afwijkt.
- Wijzigingen bijhouden: SCM-tools houden wijzigingen aan servers of applicaties automatisch bij en maken het ook mogelijk om dergelijke gegevens handmatig in te voeren. Wijzigingsaudits kunnen ook worden uitgevoerd door de uitvoer van controlescripts te monitoren.
- Configuraties vergelijken: De beste tools voor softwareconfiguratiebeheer bieden een manier om verschillen tussen configuraties te identificeren.
- Sneller problemen oplossen: Fouten, vergissingen en problemen worden snel geïdentificeerd, zodat ontwikkelaars actie kunnen ondernemen voordat het probleem groter wordt.
- Inventaris bijhouden: De meeste SCM-tools bieden een manier om hardware- en softwaremiddelen bij te houden, zodat je geen handmatige lijst hoeft bij te houden.
- Patchbeheer: SCM-tools kunnen je helpen alle details rond patchbeheer bij te houden terwijl je bijgewerkte software distribueert.
Zijn er nadelen aan het gebruik van een tool voor softwareconfiguratiebeheer?
Er zijn enkele zaken waarmee je rekening moet houden voordat je een SCM-tool gaat gebruiken, waaronder:
- Belasting van middelen: Je moet over de middelen beschikken om het proces van begin tot eind te ondersteunen
- Beperkte kennis: Iedereen die betrokken is, moet grondige kennis hebben van de gebruikte tools voor softwarebeheer
- Nadeel voor kleine en middelgrote bedrijven: De omvang van wat nodig is om deze tools effectief te gebruiken, kan voor een klein bedrijf moeilijk te ondersteunen zijn
- Hardwarespecificaties: Voor een soepel verloop van het proces is snelle en uitgebreid geconfigureerde hardware vereist.
Tot slot over softwareconfiguratiebeheer
Hierboven heb ik een algemeen overzicht gegeven van wat je moet weten om een proces voor softwareconfiguratiebeheer op te zetten waarmee je je projecten kunt volgen, beheersen en beheren.
SCM-tools, zoals Ansible of TeamCity, helpen veel aspecten van het SCM-proces te automatiseren en kunnen een geweldig rendement op je investering opleveren. Je vindt onze selectie hiervan in het artikel 10 beste tools voor softwareconfiguratiebeheer.
De wereld van softwareconfiguratiebeheer en kwaliteitsborging ontwikkelt zich snel. Meld je aan voor de nieuwsbrief van The QA Lead voor meer handige tips, trucs en tools, rechtstreeks in je inbox.
Of blijf leren door naar deze podcast te luisteren: DE GENERATIE VAN AUTONOME AUTOMATISERING EN HOE DIE ERUITZIET (MET BERTOLD KOLICS VAN MABL) of deze lijst te lezen: 10 NIEUWSTE TOOLS VOOR SOFTWARETESTEN DIE QA-PROFESSIONALS GEBRUIKEN
