Als ik onderzoek in software engineering bekijk, ben ik altijd verbaasd over de plaats waar de focus gelegd wordt. Het lijkt precies alleen maar te gaan om het ontwikkelen van betere tools, modeleertalen in elkaar omzetten en patronen te zoeken die het ontwikkelen van software vergemakkelijken.
Oke allemaal goed en wel. Maar software engineering gaat wél over software ontwikkelen. Zouden we ons in plaats van ons op tools te focussen (oplossing), misschien niet beter op de kern van de zaak (het probleem) focussen. Sofware engineering draait om goed, betrouwbaar en efficient software ontwikkelen. Dat is wat we willen bereiken.
Om goed te begrijpen waar de noden zich bevinden, hebben we een goed theoretisch kader nodig. We moeten het fenomeen "software ontwikkelen", gaan bestuderen en beschrijven. Hoe wordt software nu ontwikkeld? Welke methoden worden de dag van vandaag gebruikt? Kunnen we deze methoden opdelen in groepen? Kunnen we aan deze methoden of deelaspecten van methoden een naam geven?
Er zijn nu al opdelingen als "Agile", "Waterfall", "Scrum", ... maar deze zijn veel te vaag en heel high level. Je kan er zodanig veel onder verstaan, dat ik niet zou weten hoe ik die in een wetenschappelijke context zou kunnen gebruiken.
Wat we zouden moeten weten is:
- Hoeveel tijd spenderen bedrijven aan de analyse van het probleem?
- Hoe wordt het probleem ge-analyseerd?
- Kunnen we de manieren waarop de problemen ge-analyseerd worden opdelen in groepen?
- Bestaat er een correlatie tussen de hoeveelheid tijd dat aan de analyse van het probleem werd gespendeerd en kwaliteit van de software?
- Wat is de optimale hoeveelheid tijd die best aan de analyse van het probleem wordt gestoken, onder de voorwaarde dat techniek X wordt gebruikt bij het analyseren van het probleem?
Deze zaken dienen uiteraard statistisch onderzocht te worden in een bedrijfscontext.
Na het theoretisch kader gevestigd te hebben, kan er dan echt doorgezocht worden naar hoe het proces kan geoptimaliseerd worden. Wat als we bepaalde zaken gaan veranderen? Je kan dan vanuit het theoretisch kader een aantal parameters vast nemen, en 1 of enkele parameters variabel. Je kan die dan gaan observeren en zien wat daar van het effect is.
Dus wat ik persoonlijk zou doen is eerst goed observeren hoe het ontwikkelingsproces in zijn werk gaat de dag van vandaag. Daar kunnen we al veel uit leren. Het ge-observeerde gedrag willen we daarna plaatsen in een kader. We willen zien welke stappen typisch na welke stappen komen, en ook hoe elke stap er concreet kan uitzien (dus meer ingezoomd). Welke technieken worden bij die stap gebruikt? Hoeveel tijd wordt er aan alles in die stap gespendeerd? Dan kunnen we bepaalde observaties gaan classificeren. Op basis van die classificaties kunnen we dan in een bepaalde context methode A vergelijken met een methode B. Doormiddel van statistische tests kunnen we dan trachten te bewijzen dat in een gegeven context, de methode A effectiever is dan methode B voor het ontwikkelen van een betrouwbaar systeem bijvoorbeeld.
Ik mis wel wat dat theoretisch kader. Want nu kan je wel tools en methoden maken, maar hoe ga je bewijzen dat ze goed zijn? Je kan heel high level gewoon jou tool in het publiek gooien en vergelijken met een reeds bestaande programmeertaal. Maar waarom zouden we niet eerst die black-box onthullen. Die echte black-box waarin de software gemaakt wordt. Eerst goed observeren en een theoretisch kader vormen lijken mij zeer nuttig en essentieel. Software engineering is meer dan het maken van coole tools en programmeertalen, het gaat om een heel complex ontwikkelingsproces waarbij veel mensen betrokken zijn. De manier waarop die software tot stand komt moet ook bestudeerd worden. Eens we dat complex ontwikkelingsproces hebben kunnen kaderen, kunnen we het proces gaan aanpassen, en bepaalde componenten in het proces gaan vervangen. Maar eerst moet het proces zoals het de dag van vandaag gebeurd grondig in kaart gebracht worden, classificaties moeten worden gemaakt. En dat kunnen we nemen als startkader om verbeteringen door te voeren.
Graag jullie reactie!