Tjeu Naus is technisch directeur van NBG Industrial Automation.

30 September 2008

NBG Industrial Automation ontwikkelt elektronica en software voor industriële en medische toepassingen. De producten worden echter steeds complexer, de doorlooptijden steeds korter en prijserosie een steeds groter probleem door goedkopere handjes in het Verre Oosten. Om deze ontwikkelingen het hoofd te bieden, zet het Nederweertse bedrijf sinds 2006 fors en meer gestructureerd in op hergebruik. In dit artikel vertelt technisch directeur Tjeu Naus over de praktische ervaringen.

Hergebruik in welke vorm dan ook is onontbeerlijk. Het almaar complexer worden van projecten maakt het vrijwel onmogelijk om vanaf nul te beginnen. Daarvoor ontbreekt de tijd en de menskracht.

De voordelen van hergebruik zijn legio. Door het opnieuw toepassen van wat we al eerder hebben bedacht en gemaakt, kunnen we tijd besparen. Hierdoor kunnen we een product of nieuwe ontwikkeling sneller in de markt zetten. Ook zijn de ontwikkelkosten lager, omdat er al het een en ander beschikbaar is. Doordat de hergebruikte objecten en onderdelen al zijn ingezet in de praktijk, zijn bovendien de kinderziektes eruit en hebben ze een hogere kwaliteit. Daardoor vereisen ze nauwelijks aandacht en komt de focus te liggen op de nieuwe delen. Veel hergebruik maakt het projectrisico kleiner en maakt het mogelijk de aandacht te richten op de echte risico‘s.

NBG onderscheidt een aantal niveaus van hergebruik. De meest elementaire vorm is hergebruik op implementatieniveau. Ontwikkelaars hebben een verzameling bouwblokken en componenten tot hun beschikking waarmee ze een deel van het nieuwe product kunnen realiseren. Dit is te vergelijken met lego: je begint met een basisset en die breid je uit tot een nieuw bouwpakket door geavanceerdere of speciale bouwstenen te maken.

Een stap verder is het hergebruik van het ontwerp. In de praktijk ontstaan oplossingen die zich hebben bewezen voor één categorie applicaties, bijvoorbeeld frameworks en ontwerppatronen in de softwarehoek en processorplatforms in de hardwarehoek. Deze lossen vergelijkbare problemen op vergelijkbare wijze op. Detailinvulling kunnen we dan weer geven met bouwstenen (hergebruik), maar ook met afgeleide bouwstenen.

Het derde niveau is hergebruik op specificatieniveau. De meest voor de hand liggende oplossing is hergebruik van specificaties voor één domein. Voorbeelden hiervan zijn domeinchecklists en use-case-templates. Een nog jong vakgebied is het toepassen van specificatiepatronen. Deze geven een nadere beschrijving van specifieke functionaliteit, waardoor de bijbehorende aandachtspunten als een soort checklist de revue passeren. Dit geeft een degelijkere oplossing zonder dat extra inspanning nodig is.

Golfbadsolderen

NBG doet nu een aantal jaren op alle fronten aan hergebruik. De ervaringen blijken erg technologieafhankelijk te zijn. Voor embedded software hebben we bijvoorbeeld een bibliotheek opgezet met bouwblokken in C en C++, toegespitst op een specifiek hardwareplatform. Een bibliotheek opzetten kan op twee manieren: via een ’big bang‘ of incrementeel. Wij hebben gekozen voor de incrementele opbouw om de initiële investeringen te beperken en al doende te leren.

In het verleden hebben we geconstateerd dat volledig hergebruik onmogelijk is, omdat elke applicatie net iets afwijkt. Na verloop van tijd hebben we meer ervaring en gevoel gekregen voor de configureerbaarheid van modules en nu passen we dan ook een driefasemodel toe. De eerste keer schrijven we een nieuwe module op de specifieke applicatie. De tweede keer nemen we deze op in de bibliotheek en maken we hem configureerbaar. Tevens verwerken we de ervaringen met de eerste versie. De derde keer kunnen we de module dan vaak volledig hergebruiken en plukken we de vruchten van de extra inspanning in de tweede stap. Essentieel is een goed versiebeheersysteem. NBG heeft goede ervaringen met Subversion en Trac (beide open source).

Agfa M pressDP2
NBG heeft zijn hergebruikstrategie onder meer toegepast bij de ontwikkeling voor Agfa‘s MPress-billboardprinter.

En dan wil de klant toch een ander platform. Door de gelaagde opzet van de embedded software hoeven we alleen de drivers op het laagste niveau aan te passen op het specifieke target. De ervaring heeft geleerd dat dit via een compiler directive snel gedaan is. Het uitbreiden van de bibliotheek kost nauwelijks meer tijd; we moeten alleen het nieuwe platform leren kennen.

Op ontwerpniveau hebben we de wijze van programmaopzet gestandaardiseerd met hoofdlus- en timerinterruptfaciliteiten. Hiervoor hebben we per target een framework gemaakt waarmee binnen een dag een basisversie van het nieuwe product operationeel is. Uiteraard met debugfaciliteiten.

Voor de elektronica hebben we een bouwblokkensysteem opgezet. Een bouwblok omvat een afgeronde hoeveelheid functionaliteit, zoals een schakelende voeding of een set analoge en digitale in- en uitgangen. Van deze blokken ligt de specificatie, het elektrisch schema, de PCB-lay-out en de onderdelenlijst vast; we hoeven ze alleen nog onderling te verbinden. Dit kost iets meer ruimte, maar in de industrie, waar NBG veel actief is, is dit geen probleem. Is de ruimte beperkt, dan hoeven we alleen de lay-out van de print opnieuw te maken.

In de praktijk blijkt hergebruik lastig doordat we de I/O telkens specifiek op de applicatie moeten afstemmen. Steeds vaker behandelen we de bouwblokken daarom als een framework waarbij we per applicatie een kopie maken en de componenten aanpassen. Door de nog gebrekkige samenvoegfaciliteiten kan ons tekenpakket daar slecht mee overweg. De extra inspanning reduceert de winst van hergebruik. Hier lopen de faciliteiten voor hergebruik bij elektronica achter op die bij software.

Ook op schemaniveau kleven er een aantal nadelen aan hergebruik. Door de hiërarchische topologie omvat het elektrisch schema bijvoorbeeld al snel veel pagina‘s. De netnamen zijn niet meer gelijk te maken in het totale schema. Binnen een bouwblok gelden de lokale namen uit de bibliotheekcomponent. Een ander aandachtspunt is de voeding. De voedingsnamen worden gezien als globale namen over het totale schema en daardoor soms ongewenst gekoppeld.

Voor hergebruik van PCB-lay-outs speelt de toegepaste productietechniek een grote rol. Golfbadsolderen, infrarood solderen en enkel- of dubbelzijdig componenten plaatsen vereisen ieder hun eigen variant en bij het golfbadsolderen is bovendien de richting belangrijk. Dit alles leidt ertoe dat hergebruik zich vooral concentreert op schemaniveau en binnen een specifiek platform op hergebruik van de lay-out van het controllerdeel.

Mentaliteitswijziging

Bij softwareontwikkeling op een pc-platform (C# en Labview) valt op dat de ontwikkelpakketten uitgebreide bibliotheken hebben. Componentonderhoud wordt geregeld via updates vanuit de leverancier. Daarnaast zijn er handige eigen componenten voor bijvoorbeeld communicatie, configuratiemanagement of logging. De praktijk vereist vaak echter een net iets andere uitvoering, waardoor hergebruik snel verwordt tot kopiëren en plakken. Maar ook dan is het zaak om dit te ondersteunen met tools.

Wat meer tijdwinst oplevert, is het toepassen van patronen. In het ontwerptraject passen we architecture en design patterns toe. Dit levert niet alleen betere oplossingen in een korte tijd, maar ook herkenbare structuren die het onderhoud vereenvoudigen.

NBG maakt veelvuldig gebruik van frameworks in .Net en Labview. Dit zijn skeletten die alle basisfunctionaliteit bevatten voor specifieke applicaties. De ontwikkelaar voorziet deze skeletten van modules, ook wel plug-ins genoemd. Een voorbeeld is ons Nexus-raamwerk. Dat is specifiek gericht op motionapplicaties en bevat alle componenten om een gedistribueerde besturing te realiseren voor een mechatronisch systeem. We hebben Nexus meerdere malen met succes toegepast, bijvoorbeeld in Agfa‘s MPress-inkjetprinter voor billboards.

Het gebruik van frameworks werkt uitstekend. Het zorgt ervoor dat er snel een basisapplicatie operationeel is. Dit sluit goed aan bij incrementele ontwikkelmethodieken. De klant krijgt snel zicht op het product en kan feedback geven. Ons advies is dan ook om frameworks breed te ondersteunen, vanaf het specificeren tot en met het testen.

Hergebruik op specificatievlak is bij ons beperkt gebleven tot een paar domeinen. Zo hebben we een basisspecificatie voor verpakkingsapplicaties in de tapijtindustrie, die aansluit op het bijbehorende framework. De optimalisatiealgoritmes zijn specifiek per klant en een invulling van een specificatiehoofdstuk.

In het algemeen valt op dat hergebruik niet populair is bij de ontwikkelaars. Zij worden getraind in het bedenken van nieuwe dingen. Bouwblokken, componenten, modules en frameworks hebben beperkingen of zijn niet state-of-the-art. De technologische ontwikkelingen gaan snel en het kan in hun ogen dus altijd beter. Het vereist een mentaliteitswijziging om te gebruiken wat al eens door anderen is bedacht en gemaakt, en om het wiel niet opnieuw uit te vinden. Dit geldt niet alleen voor ontwikkelaars, maar ook voor projectleiders, verkopers en klanten. Het is veel effectiever mee te liften op een bestaand framework dan een volledig eigen nieuwe oplossing te creëren. NBG blijft uiteraard openstaan voor nieuwe ontwikkelingen. Binnen elk project zoeken we naar de juiste balans tussen hergebruik en inzet van nieuwe technologie en nieuwe ontwikkelmethodes.