Capgemini heeft voor Equihold een .Net-versie gemaakt van hun sport erp-programma 1-2Focus. Equihold is vanaf het begin niet tevreden over de software en spreekt uiteindelijk over slechte spaghetticode. Dat wordt ten stelligste ontkent door Capgemini. In mijn vorige artikel, ‘Capgemini 1-2Focus: installatietest’, heb ik beschreven dat het installeren van de 1-2Focus software weliswaar mogelijk is, maar het meestal moeizaam gaat en het niet iedereen zal lukken om de software te installeren. Maar als die horde is genomen, hoe stabiel en gebruiksvriendelijk is de software dan verder?
In het contract met Capgemini en bijbehorende documenten zijn voor 1-2Focus onder andere de volgende eisen en uitgangspunten vastgelegd.
– Het programma moet gebruiksvriendelijk zijn (be easy to deploy, be easy to upgrade).
– De software functionaliteit moet modulair in de markt gezet kunnen worden. Een versie waarbij niet alle modules geleverd zijn, moet dus gewoon kunnen werken.
– De software moet van hoge kwaliteit (high quality) zijn.
Bij het testen is bekeken of de software globaal voldoet aan de algemene eisen die aan software gesteld mogen worden.
De applicatie
De applicatie ziet eruit als een typische Microsoft Windows XP applicatie. Dat is te verwachten omdat het om een .Net-applicatie gaat, die met Microsoft tools gemaakt is. Er is een behoorlijke handleiding van 91 pagina’s. Bovendien kun je via de frequently asked questions (faq) een bijbehorend instructiefilmpje starten, zoals bij veel erp-programma’s.
Het hoofdmenu volgt grotendeels de bedoelde modulaire opbouw. De trainer krijgt de modules ‘Management’ voor rapporten en contacten, ‘Sport’ voor onder meer competitie, team(samenstelling), trainingen, agenda, wedstrijden, activiteit spelers en spelersevaluatie, ‘Wedstrijden’ voor onder andere video bibliotheek, actieschema ten behoeve van wedstrijdevaluatie, wedstrijden, presentatie van geselecteerde fragmenten en ‘Admin’ voor bijvoorbeeld het maken/aanpassen van formulieren, de back-up en rapportages.
Irriterende bugs
Je ziet meteen veel slordigheidjes als je door de menu’s heen loopt. Bij het programma was Nederlands als taal ingesteld, maar op veel delen van het programma moet je met de Engelse taal werken zonder dat dit voor de hand ligt. Zo is de submodule ‘Agenda’ grotendeels in de Engelse taal. De submodule ‘Training’ is ook grotendeels in het Engels. Het aanmaken van personeelsgegevens gaat deels in het Engels. Ook zijn er wat typefouten.
Als je eenmaal met de applicatie gaat werken, dan zie veel meer foutjes. Datums kun je niet altijd rechtstreeks intypen, maar moet je geheel of gedeeltelijk aanpassen via het bekende MS de mini agenda. Als je de geboortedatum moet invullen van iemand die decennia oud is; dan ben je even bezig met scrollen.
De submodule ‘Agenda’ laat je niet meteen een team selecteren waarvan je een activiteitenoverzicht wilt hebben. Je moet eerst de optie ‘Training Selectie’ afvinken en weer aanvinken, voordat je één of meerdere teams kunt selecteren.
Bij de submodule ‘Spelersactiviteit’ kun je aangeven dat een speler absent is vanwege ziekte. Maar je moet daarvoor een reden opgeven voordat dit opgeslagen kan worden. Als je niet weet waarom iemand ziek is, verzin dan maar wat.
De ‘Bibliotheek’ met standaard trainingssessies is leeg of niet benaderbaar. Dat was eerder niet zo.
Irritant is ook dat sommige foutmeldingen worden herhaald en sommige foutmeldingen ten onrechte worden getoond. Veel van die fouten staan in clusters. Bijvoorbeeld, het type actie (event) van een speler kan worden gedefinieerd via het ‘Actieschema’ (in de applicatie Event schema). Wijzig je een actietype in het actieschema, dan krijg je vier keer achter elkaar dezelfde foutmelding ‘Opslaan van het event is mislukt’, ook als achteraf blijkt dat de actieomschrijving wel is vastgelegd. De foutmelding moet je vier keer wegklikken. Één keer waarschuwen is voldoende zou je zeggen en uiteraard alleen als het echt nodig is. Bij het wijzigen van de voor- of achtergrondkleur in het actieschema krijg je dezelfde foutmelding en ook vier maal. Dat geldt ook voor het koppelen van een tegenactie (zoals storen) aan een actie. Ook het koppelen van een bepaalde standaardactie aan een hot key geeft ten onrechte weer vier keer de bekende foutmeldingen.
Het opslaan van een mutatie kan de ene keer via een te verschijnen opslaan button en de andere keer alleen via de menubalk. Dat is allemaal niet bepaald bevorderlijk voor de acceptatie van de software, maar het zijn nog geen echte afknappers. Die zijn er helaas wel.
Blocking bugs
De ‘Rapportageontwerper’ (Report Builder in de applicatie) van de managementmodule start niet op; meteen een blocking bug.
Bij jeugdvoetbal zijn er afwijkingen ten opzicht van de normale regels voor volwassenen, bijvoorbeeld qua aantal spelers (maximum en minimum), aantal te wisselen spelers en de speeltijd. Voor een oefenwedstrijd moet je vrijheid krijgen. En dus moet je de tijd zelf kunnen instellen. Maar dat lukt niet.
Als je een oefenpotje wilt agenderen, dan hoef je niet voldoende spelers ter beschikking te hebben, zoals bij een competitiewedstrijd, maar dat lukt niet.
Spelanalyse van wedstrijden en oefeningen is in de topsport van groot belang. Dat betekent dat acties aan videofragmenten gekoppeld worden, bij voetbal van aftrap, doelpunt of een rode kaart van spelers. Die acties worden in het actieschema vastgelegd. Je hebt standaard acties en lege acties die men zelf kan definiëren, de ‘Eigen acties’. Ik heb bijvoorbeeld de ‘Swalbe’ toegevoegd. Dit lukt niet bij elke installatie. Toen ik de volgende eigen actie toevoegde, ging de veldwaarde terug naar de oorspronkelijke staat. Toevallig kwam ik er achter dat als ik eerst de voorgrondkleur aanpaste, ik daarna alsnog een extra ‘Eigen actie’ kon definiëren voor ‘Op de voet trappen’. Ik wilde daarna nog eens op die manier ‘Tijdrekken’ toevoegen, maar dat lukte niet meer. Dus werking van deze bug is niet te voorspellen.
De actie die je aan een spelmoment wilt koppelen kun je aanklikken op een Notatiebord (in de applicatie Notation board) onder het venster voor het afspelen van de video. Dat is handig voor spelanalyse. En je kunt dit uiteraard ook doen met hotkeys die je zelf kunt definiëren. Maar hot keys aanpassen voor een ‘Eigen actie’, kan weer niet, net als nog een aantal andere opties ook niet bij zo’n actie aangepast kunnen worden.
De acties die je koppelt aan een speelmoment kunnen ook aan de plek van het speelveld worden gekoppeld. Ook dat is handig voor spelanalyse. Daarvoor wordt er een schema van het speelveld getoond. In de voetbalversie wordt echter een hockeyveld getoond en die heeft een duidelijk andere indeling dan een voetbalveld.
Voor de liefhebbers, de filmpjes van de genoemde bugs zijn te zien op de website van Capclaim, de juridische entiteit die strijd voert tegen Capgemini.
Voor de gebruikers waren niet alleen de bugs een groot probleem, de leading costumers hebben moeten ervaren dat sommige bugs na een update weer verschenen. Of dit komt door slecht versiebeheer van de source of door de complexiteit van spaghetticode, dat weet ik niet. Het zou niet mogen voorkomen.
Eindconclusie vanuit de gebruiker gezien
Versie 9 is de beste versie die door Capgemini is gemaakt. Toch blijkt het programma in de praktijk niet geschikt te zijn door vele hinderlijke fouten en doordat belangrijke functionaliteit niet beschikbaar is door technische fouten. Die fouten zijn vooral in de submodule ‘Actieschema’ te vinden. Zoveel ernstige fouten bij elkaar kun je als leverancier bij het testen onmogelijk over het hoofd hebben gezien. Capgemini heeft dus niet volgens afspraak de technische tests en functionele tests uitgevoerd. Het had moeten gebeuren en daar is ook voor betaald. De software is slechter dan alle Bèta software die ik in de loop der jaren heb getest. Versie 9 komt over als een Alfa-release, om aan een klant te laten zien wat de software kan gaan worden. Het is gewoon absurd dat Capgemini bij release 9 nog steeds geen stabiele en volledig functionele software heeft weten te bouwen.
Jaap van Belkum, zzp’er
ICT Faalindustrie?
Diverse experts hebben inzake het 1-2Fcousproject zich reeds eerder negatief uitgelaten over de kwaliteit van de code, de toepassing van Rational Unified Processing (RUP) in het ontwikkeltraject en het door Capgemini gevoerde project- en kwaliteitsmanagement en de bijbehorende transparantie van de communicatie. Achteraf is de mislukking goed te verklaren; een contract dat op twee tegenstrijdige gedachten stoelde, slecht projectmanagement, slecht kwaliteitsmanagement, slechte en verhullende communicatie, slechte invulling van de zorg naar de klant. Het eindresultaat is kreupele software waarmee niet gewerkt kan worden. En Capgemini eist nog meer geld voordat zij de bugs oplossen.; in die zin mag 1-2Focus crippleware genoemd worden.
Is dit een voorbeeld van falen, nee het gaat verder dan dat. Zo complex was de opdracht niet voor een bedrijf als Capgemini. Capgemini had meer dan voldoende expertise, capaciteit en ervaring in huis. Natuurlijk, Capgemini had nog heel weinig ervaring met offshoring, maar vanuit projectmanagement hadden die risico’s adequaat gedekt kunnen worden.
Helaas hebben ze de problemen naar het onervaren en kleine Equihold doorgeschoven. Tenslotte, wat wist Equihold van Rup en offshoring en hoeveel mankracht hadden zij om Capgemini te controleren? Dat was te weinig en daar is gebruik van gemaakt. De contractuele afspraken met betrekking tot Rup, softwarearchitectuur, kwaliteit, werkverdeling en dergelijke zijn niet of grotendeels niet nagekomen. Capgemini heeft de klant een lange tijd laten betalen voor producten en diensten die ze maar voor een deel hebben geleverd. Het is een keten van fouten.
Het hoogste management van Capgemini zegt dat de geleverde kwaliteit voldoet aan de norm van gemiddelde software, terwijl er aantoonbaar nog steeds blocking bugs inzitten. Misschien moeten zij zich eens afvragen, What business am I in? Het huidige verdienmodel van Capgemini werkt nog wel, maar hoe lang nog na al die negatieve publiciteit als je kampioen mislukte projecten bent? Om je bedrijf te kunnen continueren, heb je goodwill nodig. Een goede naam kun je niet kopen, maar moet je verdienen en blijven verdienen, zoals generaties van Capgemini Sogeti-medewerkers dat eerder hebben gedaan.
@ martin, Spaghetticode vertoont een ongeremd gebruik van GOTO-statements. Prof. Dijkstra suggereerde het GOTO-statement helemaal niet meer te gebruiken. Jackson beval het aan voor twee situaties: programma-inversie en backtracking; verder niet gebruiken.
Je kunt dus van spaghetticode spreken wanneer er GOTO’s in voorkomen – dan hoor je bij de “preciezen” – of wanneer er GOTO’s worden gebruikt voor andere doeleinden dan programma-inversie en backtracking – dan hoor je bij de “rekkelijken”.
Overigens heb ik GOTO-less programma’s gezien waar geen touw aan vast te knopen was. Geen of weinig GOTO’s zegt nog niet alles over de kwaliteit (juistheid, onderhoudbaarheid) van een programma.
@Rene, ben het met je eens. Een paar aanvullingen van mij.
1 De productie van de eerste 4 releases van 1-2Focus hadden een technische klus moeten zijn, waarbij ook de architectuur vervangen werd door een Three Tier architectuur. Dus wel echt programmeerwerk (en niet alleen de source door een tool halen en gaan debuggen). Toch bleek dat er materiekennis nodig is, die in India onvoldoende aanwezig was. Zo ontstonden er functionele fouten, wat niet werd voorkomen door slecht project management en testen vanuit Capgemini Nederland.
2 De technische upgrade en de functionele aanvulling hadden na elkaar moeten plaatsvinden. In release 5 had de oude functionaliteit compleet moeten zijn verwerkt, plus de eerste nieuwe functionaliteit. Die release had ook op de markt gebracht moeten kunnen worden om de oude VB versie te kunnen gaan vervangen (die release had geld moeten gaan opbrengen). Helaas zaten er nog steeds heel veel cruciale fouten in en was de Three Tier architectuur een zooitje. Capgemini had inzicht in die fouten, zoals te zien is in onder meer het lange tijd achtergehouden Capgemini rapport uit 2006. Capgemini had toen Equihold goed moeten inlichten over de problemen en nader onderzoek moeten doen. Dan had Equihold een beslissing kunnen nemen op basis van de juiste informatie. Dat heeft Capgemini nagelaten.
3 Het klopt dat Capgemini Equihold heeft gemanipuleerd. En als ik kijk naar wat jij zo al gepubliceerd hebt over Capgemini, dat het ieder geval in Nederland een onderdeel van hun modus operandi is geworden.
Waarom reageert de SVB anders dan Kenneth Berkleef? Waarschijnlijk omdat het niet om hun eigen geld gaat en de direct betrokkenen allemaal zo hun redenen hebben om de kostbare grote fouten achter zich te laten (zonder er van te hebben geleerd). En steeds meer mensen worden betrokken door de doofpotconstructie, ook politici. Men wil elkaars handen wassen, maar maakt alleen meer vuile handen. En de politieke meerderheid pikt het, zoals ik al eerder op de Computable heb aangegeven. Daar maken de grote ICT-bedrijven en niet alleen Capgemini, gebruik van.
@Karel
Het GOTO-statement is uit de periode dat BASIC, FORTRAN en COBOL de belangrijkste talen waren. Nu, in het web- / .NET- / J2EE- / Swift-tijdperk, zijn de gebruikte talen een afgeleide van C++, waar GOTO’s misschien wel mogelijk zijn, maar tegelijk zeer ongebruikelijk zijn.
Maar, gelukkig, een slechte programmeur (of een goede die haastwerk af moet leveren) heeft helemaal geen GOTO’s nodig om spaghetticode op te leveren!
Een goed programma kun je onder andere herkennen aan structuur, eenvoud en leesbaarheid, en de code komt overeen met het ontwerp. Dat maakt het onderhoudbaar.
@Kurt, gelijk en gelijk. Wat dan wel? Een goede vraag, al weet ik ook niet precies het antwoord. Maar een juiste vraag is een goed begin. Naast foute opdrachtgevers, heb je ook machtige foute opdrachtnemers, dat zijn vaak 4-5 per sector, meestal in een bijna-monopolypositie.
Misschien zouden de politieke partijen een massaal door ICT’ers ondertekende verklaring (petitie of handvest) moeten krijgen. Dit als aanvulling op hun eigen Eindrapport tijdelijke commissie ICT-projecten. In de verklaring zou (nogmaals) duidelijk gemaakt moeten worden dat er onnodig, heel veel geld verspild wordt via ICT-gerelateerde projecten en waarom dat zo vaak kan gebeuren. M.i. kan hiervoor een goede basis zijn, een samenvatting van wat Rene Veldwijk zoal geschreven heeft over ICT en overheid.
Maar misschien zijn er andere en betere ideeën om door te dringen bij de dames en heren politici.
@Martin, waarom wordt de code van Capgemini spaghetticode genoemd? De code is slecht leesbaar. De SQMI en Ndepend metingen zijn hierin nogal duidelijk.
– Een release waarbij 63 % van de broncode regels meer dan één keer voorkomt (lastig bij het bijwerken).
– Broncode waarbij 26 % van de routines uit eenheden van meer dan 50 regels bestaat (algemeen wordt 30 als maximum gezien voor leesbaarheid).
– Broncode 54,8 % van de regels langer dan 120 posities is, 1,0% zelfs meer dan 160 posities (algemeen wordt 80 als maximum gezien voor leesbaarheid).
– Broncode waarvan 10 % van de datasets untyped zijn (vul maar wat in en zie maar wat er van terecht komt).
– Meer dan de 17% van de regels had een obstakel voor onderhoud (F-rating IfSQ Level-2: tussen 100 en de 200 obstakels voor onderhoud per 1000 regels code). Net als bij voetbal is een F-je nog niet van professioneel niveau.
– Bovendien zijn de software modules gemaakt met een Two Tier architectuur die via een trucje als de afgesproken Three Tier architectuur modules werd aangeboden. Tier één is Tier één plus Tier twee. Daarbij is de tweede laag is alleen doorgeefluik voor laag drie.
Het gevolg was een broncode waarvan diverse deskundigen hebben gezegd dat ze 5% van de routines als zeer complex beschouwden. Kan dergelijke software nog wel goed functioneren laat staan goed onderhouden worden? Het lukt Capgemini duidelijk niet, zoals iedereen op de website van capclaim ook zelf kan zien.
De deskundigen uit de Zembla gingen nog verder. Zo wordt gesteld dat de software niet geschikt is als basis voor verdere ontwikkeling; het verhelpen van de fouten zou meer dan het herschrijven van de software!
Dat Capgemini de kwaliteit van de geleverde software als marktgemiddeld zien, dat zegt meer over hen dan over de markt. Waarom ging het nog goed bij Brunel en niet meer bij Capgemini?
De definitie zoals hier gegeven wordt van onderhoudbaarheid: Structuur, eenvoud en leesbaarheid, is precies wat Software Improvement Group (SIG) blijkbaar toch heeft teruggevonden, want zij classificeren de software als ‘gemiddeld onderhoudbaar’ toen ze namens Cap de software hebben onderzocht. Nu is ‘gemiddeld onderhoudbaar’ niet iets om trots op te zijn als Cap voor nieuwe software waarbij de benchmark van SIG waarschijnlijk uit kreupele software bestaat. Tenslotte, flitsende software zal minder vaak aan SIG worden aangeboden dan ‘moeilijke’ gevallen.
SIG een gerenommeerde organisatie op dit vlak en heeft namens de SVB de CAP software onderzocht. Hun oordeel was toen aanzienlijk negatiever. Hoe komt het dan dat ze in dit geval tot ‘gemiddeld onderhoudbaar’ zijn gekomen en niet tot spaghetti? Ze zullen sig toch niet hebben laten beïnvloeden door de opdrachtgever?
@KurtdeKoning Grappig, ik zat er net naar te zoeken, de SIG. Herinnerde me dat zij de 1-2-Focus applicatie onderzocht hadden. Ik ben toch heel benieuwd hoe dit gaat aflopen voor de rechter, ik denk dat het uiteindelijk zal uitdraaien op gesteggel over contracten, kleine lettertjes en verantwoordelijkheden. En niet of de software werkt of de code eventueel spaghetti is. Want inderdaad, Jaap van Belkum heeft een negatieve oordeel over de kwaliteit van de software, de Software Improvement Group komt tot een heel ander oordeel. De SIG is een bedrijf met een niet kinderachtige bemanning. Wat zou een rechter daarmee moeten?
@ Karel van Zanten, over foutief gebruik van GOTO statements heb ik niks gelezen in de SQMI en Ndepend metingen (zou binnen C# kunnen en die taal is gebruikt). Maar zoals Frank Heikens zegt, “een slechte programmeur (of een goede die haastwerk af moet leveren) heeft helemaal geen GOTO’s nodig om spaghetticode op te leveren”. Jezelf en andere programmeurs het leven moeilijk maken kan ook zonder (al te veel) GOTO’s.
De twee laatste zinnen van Franks commentaar geven het heel goed aan: “Een goed programma kun je onder andere herkennen aan structuur, eenvoud en leesbaarheid, en de code komt overeen met het ontwerp. Dat maakt het onderhoudbaar.“. Bijvoorbeeld 46% van de classes bij 1-2Focus hadden meer dan 500 regels code en dat is behoorlijk complex.
Tja, best link van een software leverancier om bij dergelijke bagger software te zeggen “dit is onze standaard kwaliteit”. Weet je gelijk waar je aan toe bent… Wisten we eigenlijk al als je de pers over de overheids ICT faalprojecten een beetje bijgehouden hebt. Maar blijkt wonderlijk genoeg toch geen belemmering te zijn om gewoon nieuwe projecten binnen te halen.
En wat betreft de non-smart kwalificaties “easy to deploy” en “easy to upgrade”: normaliter is dat niet nauwkeurig genoeg, tenzij je als leverancier op deze aspecten zo miskleunt dat het ineens wel voldoende gespecificeerd is…
Ik ben wel heel benieuwd naar de uitkomst van dit verhaal.
@Kurt, SIG was in een eerdere zaak inderdaad nogal kritisch over Capgemini. Ze zijn nu eigenlijk ook niet erg tevreden over Capgemini, maar dat moet je tussen de regels door lezen. SIG was in wezen het niet oneens met SQMI. Ook SIG stelt bijvoorbeeld dat het 99% zeker is dat er tussen de 96 en 318 obstakels zijn per 1000 regels code. En ook SIG stelt dat 5% van de C#-code erg complex is.
Maar wie betaalt, die bepaalt de opdrachtformulering en gebruikte ijkschaal. SIG heeft het amper over fouten, maar over onderhoudbaarheid (één van de kwaliteitsaspecten). Hierbij is 1-2Focus vergeleken met gemiddelde software (incluis slecht onderhoudbare legacy) en zou dan op een aantal gebieden marktgemiddeld zijn. Maar ja, als ik een gloednieuw huis laat bouwen of koop en het huis heeft in nieuwstaat de kwaliteit van een gemiddeld huis, dan is er toch wel wat aan de hand zou je zeggen.
Zo heeft SIG het ook niet over de fake Three Tier architectuur bij 1-2Focus. De belangrijkste reden voor de keuze van een echte Three Tier architectuur, is een betere onderhoudbaarheid van de applicatie en daarmee een hogere kwaliteit bij lagere onderhoudskosten. En daarover was een overeenkomst gesloten
Capgemini zegt dat je de cijfers ook anders kan bekijken en dat je je mag afvragen waarom juist de experts van Equihold tot bepaalde conclusies zijn gekomen. Theoretisch gezien hoeft de conclusie van SQMI niet te kloppen (en andere FUD).
Ja, theoretisch hoeft niet elke onnodig complexe regel code tot een fout te leiden en hoeft een fout in de code ook niet te leiden tot een fout in de werking. Dat is de reden dat ik ook nog eens gekeken heb of de bugs bij 1-2Focus reproduceerbaar zijn en dat zijn ze, stuk voor stuk en niet alleen theoretisch. En Capgemini had die bugs bij het testen ook moeten opmerken.