Bits&Chips

Wendbaar in de waterval

Auteur: Reinier Kuipers
16 april 2018 

Reinier Kuipers is consultant bij Alten. Hij werkt momenteel als lead-engineer bij BDR Thermea Group aan bedieningsinterfaces voor high-end ketelsystemen. Na tien jaar ervaring met embedded systemen vindt hij de uitdaging hier niet alleen op het technisch-inhoudelijke vlak, maar vooral in het ontwikkelproces.

BDR Thermea Group is een marktleider op het gebied van smart climate en sanitaire warmwatervoorziening en in Nederland vooral bekend van de r in BDR: Remeha. Vanuit r&d-centra verspreid over Europa ontwikkelt het bedrijf diverse modulaire ketelsystemen: Nederlandse gasketels, Franse olieketels en warmtepompen, en Duitse warmtekrachtkoppeling en brandstofcellen. Hierbij is het communicatieplatform letterlijk een verbindende factor. Binnen een ketel wisselen generieke modules via groepsbreed vastgelegde interfaces gegevens uit over een Can-bus. Een in Apeldoorn ontwikkelde gasketelbesturing kan met een Franse vloerverwarmingsmodule en een Duitse buffertank in een behuizing worden gezet en met een minimum aan systeemspecifieke configuratie functioneren als één geheel.

Het ontwikkelproces van een ketel verloopt volgens het watervalmodel. Gezien de aard van het product is dit zo gek nog niet: het gaat vaak om verbrandingsinstallaties die decennialang ongemerkt hun werk moeten doen. Het is een prettig idee dat de combiketel op zolder pas na grondig design en grondige validatie up-front geschikt is bevonden. Van een servicemonteur die elke maand op de stoep staat om de laatste veiligheidsfeatures te installeren, worden de meeste mensen waarschijnlijk wat zenuwachtig.

De human-machine-interface (hmi), de bedieningsmodule van de ketel, is daarentegen een evoluerend bouwblok. Deze moet off-the-shelf in elke bestaande of nieuwe ketel naadloos samenwerken met alle modules in het systeem. Dit houdt ook in dat de hmi met één softwarevariant alle systemen moet aansturen. Meerdere parallelle systeemprojecten bedienen, elk in hun eigen waterval, is een flinke uitdaging. Wij gaan die uitdaging aan door in te zetten op agile ontwikkeling.

Foto: Bart van Overbeeke

Maandag

In onze kantoortuin zie ik Ramses al in volle concentratie achter zijn bureau zitten. Van ons vierkoppige ontwikkelteam is hij onze C++- en Qt-expert. Ikzelf ben lead-engineer voor de MK3, onze high-end ketel-hmi. In deze rol ben ik verantwoordelijk voor de complete cyclus van requirementsverzameling tot oplevering. Ik neem plaats achter mijn bureau en voordat ik mijn mail open, kijk ik wat de buildserver van onze nightly builds heeft gemaakt. Ai, alle Windows-builds sinds vrijdag staan op rood. Met ingehouden adem scrol ik door naar de Linux-productiebuild en ... gelukkig, alles op groen. De release van morgen is niet in gevaar. De Windows-build moeten we herstellen, maar dat kan wachten.

Inmiddels is Lester, onze tester, ook binnen. Dit geeft ons de gelegenheid om door de laatste regressietests te lopen. Ondanks groepsbreed gehanteerde interfacedefinities zien we subtiele functionele verschillen tussen systemen van verschillende competentiecentra. Compatibiliteit met alle systemen is essentieel, maar het aantal systeemconfiguraties maakt uitputtend testen onmogelijk. Gedurende een sprint bepalen Lester en ik continu welke features we op welke systemen testen om een zo hoog mogelijke testdekking te behalen.

Hierna staat de backlog grooming-sessie op de agenda. Deze is voor ons als ontwikkelteam van essentieel belang als voorbereiding op komende sprints. Samen met de productowner verkennen we de context en scope van de features op de backlog.

Centraal thema tijdens deze meeting is de afstemming van de klantwens op de technische mogelijkheden. De hmi moet zich voegen naar de interfaces geboden door het ketelsysteem. Een high-level klantwens geformuleerd door een marketingafdeling of productmanager is daar niet altijd goed op te mappen. Interfaces zijn ook niet eenvoudig aan te passen of uit te breiden omdat we compatibiliteit met de bestaande installaties en reserveonderdelen moeten garanderen. Ook is het een uitdaging om specifieke wensen te balanceren met de belangen van de totale groep. Een complexe visualisatie toevoegen voor een nichesysteem moet geen obstakel zijn voor stakeholders die een eenvoudig huishoudelijk systeem willen aanbieden. Vaak werken we toe naar een concept-implementatie die we over de loop van een aantal sprints verfijnen totdat deze technisch en vanuit gebruikerservaring acceptabel is voor alle betrokkenen.

Dinsdag

Elke twee weken staat dinsdag in het teken van de sprintoplevering. De regressietests zijn afgerond en de release is gereed. Samen met Lester bereid ik de sprintdemo voor. Na de lunch beginnen we aan de demo. Volle bak: in Apeldoorn schuiven naast het ontwikkelteam drie projectleiders, de productowner en de softwareprocesmanager aan, vanuit Frankrijk bellen een vijftal projectleiders en een productmanager in. Ik ben er niet helemaal gerust op hoe ze onze demo gaan ontvangen. Hoewel we een aantal belangrijke features en bugfixes releasen, leveren we één systeemspecifieke feature niet op. De implementatie introduceerde een vervelende bug en onder het motto ‘de remedie is erger dan de kwaal’ hebben we besloten deze feature niet vrij te geven.

Met gepaste vaart presenteer ik de demo. Na beantwoording van een aantal onschuldige vragen kom ik toch echt aan bij het slechte nieuws. Terwijl ik onze beslissing onderbouw, probeer ik het humeur van de getroffen projectleider te peilen. De reactie valt mee. De eerste productierun wordt nog niet uitgeleverd met de specifieke functionaliteit die werd geraakt door de bug. De tijd die we winnen door de feature naar de volgende run door te schuiven, kunnen we goed gebruiken om een kritiek issue, dat afgelopen week is opgedoken, naar voren te trekken. Ik ben blij om te zien dat er tijdens deze demo’s een open discussie ontstaat over wanneer een oplevering ‘goed genoeg’ is. In plaats van te focussen op een letterlijke implementatie van requirements lijken de stakeholders de flexibiliteit en wendbaarheid van korte iteraties te gaan waarderen.

Woensdag

Als ontwikkelteam willen we ons niet te veel bemoeien met de prioritering van de backlog. Het is aan de productowner om samen met stakeholders van de projectteams de volgorde te bepalen. Deze stakeholders, de leiders van de systeemprojecten, zijn vanuit het watervalmodel gewend om te sturen op vragen als ‘Wanneer is álles af?’ en ‘Is het gegarandeerd bugvrij?’. Met meerdere parallelle projecten moeten we qua planning genoeg buffer opbouwen om kritieke bugs of lastminutewijzigingen op te kunnen vangen zonder de tijdslijn van de andere projecten in gevaar te brengen.

Terwijl de productowner en projectleiders hierover aan het steggelen zijn, schuif ik aan bij Hasan. Enkele weken geleden hebben we het design opgesteld van de navigatiestructuur voor de nieuwe generatie systeem-hmi’s. Waar mogelijk hou ik een vinger aan de pols bij de implementatie door samen een codereview te doen.

Donderdag

Deze ochtend is het tijd om de gefaalde Windows-build onder handen te nemen. Na wat speurwerk vind ik de schuldige code die we gelukkig snel kunnen herstellen. De werkende Windows-versie stuur ik meteen door naar de afdeling documentatie. Zij zijn verantwoordelijk voor de vertaling van menuteksten in de MK3.

Geen gemakkelijke opgave: elke sprint moeten we opleveren voor 25 talen. Met onze Windows-versie kunnen vertalers en reviewers teksten direct valideren binnen de context van het product. Maar geen enkele tool gaat ervoor zorgen dat de honderden teksten in elke taal first-time-right zijn. Hier helpen een korte oplevercyclus en feedback van een zo groot mogelijke groep domeinexperts, productmanagers en testers ons de vertalingen snel naar een acceptabel niveau te krijgen.

Vrijdag

Boven aan de backlog prijkt een wijzigingsverzoek voor verbetering van de leesbaarheid van de hmi. De ux-designer heeft nieuwe kleurenschema’s opgesteld die het contrast flink oppompen. Omdat we weten dat de kleurechtheid en kijkhoeken van het MK3-scherm beperkt zijn, gaan we kijken hoe de voorstellen zich staande houden in de echte wereld. Als ontwikkelteam worden we er steeds scherper op dat risicovol voorbereidend werk afgerond moet zijn voordat voor een feature terechtkomt in een sprint. Alleen dan kunnen we als team ons commitment geven aan een oplevering. Met consequente inlossing van dit commitment, en transparantie als dit niet lukt, versterken we de vertrouwensband met onze stakeholders.

Door geleidelijk en lokaal een aantal Agile-principes toe te passen, naderen we langzaam ons einddoel: de stakeholders meer inzicht, voorspelbaarheid en grip geven zodat we gezamenlijk een product ontwikkelen waar zij tevreden mee zijn.

Reinier Kuipers werkt vanuit Alten als lead-engineer bij BDR Thermea.

Redactie Nieke Roos

Abonneer direct op onze nieuwsbrief

abonneren

Embedded Linux

14 mei - 18 mei

Eindhoven

Embedded Linux

14 mei - 18 mei

Eindhoven