• Auteur: Redactie /
  • Geplaatst: 23.04.07

Naar assemblagelijn voor software

naar een assenblagelijn.jpg

Nog altijd beginnen veel softwareontwikkelaars aan applicaties alsof het de eerste in zijn soort is. Vaak hebben projecten echter veel gemeen in aanpak en echnische opbouw. Er is dus alle reden voor hergebruik. In de praktijk zijn grote delen van het ontwikkelproces te formaliseren en te automatiseren. (door Jeroen Wyseur)


De automobielindustrie is een vaak gebruikte metafoor in de IT-industrie. Zo wordt moderne softwareontwikkeling vaak vergeleken met een assemblagelijn. Die vergelijking slaat niet op de massaproductie aan de lopende band, maar vooral op het hergebruik van componenten. Zo'n algemeen ontwikkelproces voor software heet een ontwikkelstraat.

Zo'n ontwikkelstraat is mogelijk als verschillende softwareprojecten gelijksoortige technische eisen hebben. Te denken valt aan beveiliging, foutafhandeling, databasetoegang, lay-out en stijl van de schermen, opdeling in lagen of modules, enzovoort. Het is dan ook mogelijk om eenzelfde architectuur te hanteren bij diverse projecten.

Het heeft een aantal voordelen om het gemeenschappelijke deel van nieuwe applicaties te ontwikkelen als componenten, en het variabele deel op basis van templates en ontwerpdocumenten, Zo is het makkelijker om tijd, kwaliteit en kostprijs te voorspellen vanwege een minder specifieke ontwikkeling en meer ervaring binnen het proces. Hergebruik is ook ingebakken in het proces, en komt in de plaats van unieke, ad-hoc implementaties. Een bijkomend voordeel is dat de applicaties gemakkelijker onderhouden kunnen worden, omdat ze allemaal op dezelfde manier zijn opgebouwd.

Een dergelijke ontwikkelingsstrategie bepaalt ook het proces waarin een teamlid een bepaalde rol opneemt en modellen, code en documenten aanmaakt. De verantwoordelijkheden en de producten van elk teamlid zijn dus vastgelegd. De meeste bedrijven volgen al een bepaald proces, maar dit is niet altijd als zodanig gedocumenteerd. Door een proces te documenteren ontstaat meer inzicht, en is het eenvoudiger te optimaliseren en te automatiseren.

Automatiseren is automatiseren
Het automatiseren van softwareontwikkeling is op dezelfde manier aan te pakken als het automatiseren van welk bedrijfsproces dan ook. Begin met het documenteren van het proces en bekijk vervolgens welke stappen in aanmerking komen voor automatisering, en met welke tools.

Het soort project, de cultuur van het bedrijf en de beschikbare mensen beïnvloeden de keuze van het proces. Zo kan uitgegaan worden van een bestaand proces (het traditionele watervalmodel), of gekozen worden voor een meer iteratieve aanpak (rational unified process) of één van de ‘agile methods', die men steeds aanpast aan de noden van het team. Een andere mogelijkheid is om de bestaande processen van vroegere projecten te evalueren en te combineren, om zo bijvoorbeeld tussentijdse producten te elimineren als hun toegevoegde waarde klein is.

Vervolgens kan worden bepaald welke stappen het meest in aanmerking komen voor automatisering. Productiviteits- en kwaliteitsverhoging zijn hierbij doorslaggevend. Hier kunnen ontwikkeltools helpen. Bij de eventuele toolkeuze is het belangrijk te kijken hoe het staat met de configureerbaarheid en uitbreidbaarheid. Op die manier is te verhinderen dat het proces te veel moet worden bijgestuurd op basis van de tools. Het proces aanpassen aan de tool is weliswaar goedkoper dan omgekeerd, maar leidt waarschijnlijk tot een niet optimale situatie. Als toch hiervoor gekozen wordt, is het belangrijk dat het team verandering aanvaardt. Want het betekent vaak (tijdelijk) meer werk.

Zo is het mogelijk dat voor het automatiseren van bepaalde stappen, producten uit voorgaande stappen meer detail moeten bevatten. Denk aan codegeneratie, waarvoor de analysedocumenten voldoende detail en structuur moeten bevatten. Elk softwareproject heeft zijn eigen kenmerken. In plaats van te proberen alle mogelijkheden en behoeftes te voorzien, is het beter het proces iteratief te implementeren. Effectief gebruik leert of de genomen keuzes correct zijn; na iedere iteratie is vervolgens bij te sturen. Zo komt men stap voor stap en efficiënter tot de beste oplossing.

De Tools markt
Slechts enkele leveranciers hebben een toolsportfolio die het volledige softwareontwikkelingstraject beslaat: projectmanagement en -rapportage, eisenbeheer, analyse en ontwerp, versiebeheer, veranderingsverzoeken- en defectenbeheer, test-tools en natuurlijk een geïntegreerde ontwikkelomgeving. Die integratie heeft grote voordelen, maar er staat tegenover dat men een ingebakken integratieproces moet volgen om de meerwaarde te realiseren. Daarbij moet wel vermeld worden dat sommige tools maatwerktemplates toelaten om beter aan te sluiten bij het bestaande proces.

Aan het andere uiteinde van het spectrum staat de doe-het-zelf-strategie. Daarbij stelt men een ontwikkelstraat samen uit verschillende losse tools. Het integreren daarvan is een grote uitdaging, maar dan heb je wel een maatwerkoplossing.

In de praktijk
Voor elk onderdeel in de softwareontwikkeling bestaan tools. Om de ontwikkelstraat zo soepel mogelijk te laten verlopen is het belangrijk deze goed op elkaar af te stemmen. Op die manier kan de output van een voorgaande stap als input dienen voor de volgende stap. Als voorbeeld de automatisering van enkele stappen:

In de analysefase maakt men op basis van de algemene eisen modellen die na verfijning voldoende duidelijk moeten zijn om te implementeren. Tot nu toe worden analyses vaak in documenten beschreven. Door de analyse in een formeel model te gieten, zijn richtlijnen rond het opstellen van de analyse automatisch te controleren. Een model kan dan ook als basis dienen om code automatisch te genereren.

De ontwikkelingsfase is in de meeste gevallen al de meest geautomatiseerde fase, omdat die zich er het best toe leent. Ontwikkelaars beschikken over geavanceerde ide's die een snelle ontwikkeling toelaten. In een verder gevorderd proces is gedefinieerd hoe de verschillende elementen van de analyse passen in de gekozen technische architectuur. Het omzetten van deze definities naar code kan geautomatiseerd of handmatig plaatsvinden, met ondersteuning van richtlijnen en templates. Door code te genereren is sneller in te spelen op een veranderende analyse of wijzigingen in de architectuur. Het eerste heeft enkel het opnieuw genereren van de code als gevolg, het tweede een aanpassing in de transformatie, waardoor men ook de al gegenereerde code up to date maakt.

Het automatiseren van testen zorgt ervoor dat tests vaker zijn uit te voeren, wat resulteert in een vroegere foutdetectie en een betere kwaliteit. Integratie van de tools maakt het tijdens de testfase mogelijk om bij het rapporteren van een bug lijn voor software terug te verwijzen naar de desbetreffende functionaliteit. Bij het oplossen van de bug linkt men de codewijzigingen aan het bug-rapport.

Door code te bewaren in een versiebeheer-tool, en continu te integreren en te testen op een build server, houdt men de kwaliteit onder controle. Elke aanpassing van een ontwikkelaar wordt automatisch getest, niet enkel op functionaliteit maar ook op het volgen van de richtlijnen. Hierdoor zijn fouten snel te detecteren. Indien een versie voor alle automatische testen slaagt, gebruikt men die voor verdere handmatige testen en de uiteindelijke productieversie. Versiebeheer maakt het mogelijk te achterhalen welke versie van de applicatie productief is en met welke code en analyse deze overeenstemt.

Om softwareontwikkeling op een efficiënte manier ten dienste te stellen van de business dient men het proces dus continu te verbeteren en te automatiseren. Op deze manier kan de business snel inspelen op de veranderende markt.


  • Share |


vacatures



shop tip


advertenties