De staat van C++

Ondanks een groot aantal opkomende alternatieven is C++ nog steeds een kracht om rekening mee te houden, zeker in de door legacy geplaagde high-tech industrie. In een serie artikelen plaatst High Tech Institute trainer Kris van Rens de taal in een modern perspectief. In onze nieuwe 4-daagse training laat Kris van Rens deelnemers kennismaken met de basisprincipes van de taal en essentiële best practices.

Afgelopen juli werd de programmeertaal Carbon officieel aangekondigd tijdens de CppNorth C++ conferentie in Toronto, Canada. Carbon wordt gepresenteerd als “een experimentele opvolger van C++” en is gestart als een open-source project, nota bene door Google. Wacht… Google gaat een C++-opvolger maken? Tot voor kort was het bedrijf sterk betrokken bij de ontwikkeling van de C++ taal en de ontwikkeling van de Clang C++ front-end voor de LLVM compiler. Met tienduizenden engineers binnen Google die werken aan miljarden regels code, lijkt het kiezen van een compleet nieuwe taal nogal gewaagd.

Waarom zou een enorm bedrijf als Google zich wagen aan zo’n gewaagd project? Nou, het is een symptoom van de staat en ontwikkeling van C++. Voor degenen die nog niet op de hoogte zijn van de evolutie van de taal in de afgelopen jaren: er zijn enkele grote discussies geweest. Natuurlijk is het voeren van discussies het hele doel van de C++ commissievergaderingen, maar één onderwerp duikt steeds weer op zonder dat er een oplossing voor is: of het al dan niet de moeite waard is om het taalontwerp te verbeteren ten koste van achterwaartse compatibiliteit.

Slanker bestuur

C++ bestaat nu ongeveer veertig jaar en wordt over de hele wereld gebruikt om prestatiegerichte software te maken. Na een periode van relatieve rust na de eerste ISO-standaardisatie in 1998, is de commissie er sinds 2011 in geslaagd om elke drie jaar grote verbeteringen door te voeren. Als gevolg daarvan is de taal heel anders geworden dan diegenen onder ons die oud genoeg zijn om er in de jaren negentig en negentig mee te werken. Alleen al de toevoeging van functies zoals concepten, bereiken en modules in C++20 is een krachtige slag.

Tegelijkertijd staat het evolutieproces van de C++ taal echter bekend als extreem uitdagend. Het gewicht van decennia aan technische schuld met behoud van achterwaartse compatibiliteit is aanzienlijk – te veel voor sommigen, lijkt het. Proberen om een belangrijke taalfunctie toe te voegen kan wel tien jaar aan lobbyen, discussies, reviews, testen, meer reviews en nauwgezette formulering kosten. Natuurlijk is het introduceren van aanzienlijke veranderingen in een project met zoveel belanghebbenden geen sinecure, maar tien jaar is in de huidige technische wereld letterlijk een mensenleven. Een andere uitdaging is dat het ISO comité overwegend westers is, met een zware ondervertegenwoordiging van grote Aziatische C++ gebruikers zoals India of China. Deze nadelen zien er niet goed uit, zeker niet in het licht van snelgroeiende, moderne, openlijk bestuurde (en relatief jonge) talen als Rust of Swift.

Sigasi uitbreiding voor Visual Studio Code

Sigasi kondigt de release aan van de VS Code Extension met uitgebreide ondersteuning voor SystemVerilog, Verilog en VHDL. Onze uitbreiding biedt functies en taalondersteuning zoals codenavigatie, projectbeheer, linting, codeopmaak, tooltips, outline, autocomplete, hover en nog veel meer!

''Still, I think right now is a very important time for C++ to consider its position in the systems programming universe; it can’t ignore the signals any longer.''

Is de technische schuld van de C++ taal echt zo gigantisch dat het bijna onmogelijk is om nieuwe krachtige functies toe te voegen? Eenmansleger Sean Baxter van de Circle C++ compiler heeft aangetoond dat dit niet zo is. Alleen al in de afgelopen maanden heeft hij in zijn eentje aangetoond dat het mogelijk is om aanzienlijke functies toe te voegen, zoals een echt somtype en tuples op taalniveau. Toegegeven, een implementatie in een enkele compiler van een C++ dialect zonder een grondig herzien voorstel is verre van een officiële C++ taalfunctie, maar het laat in ieder geval zien hoeveel speelruimte en mogelijkheden er zijn in de syntaxis en de taal als geheel – als we er echt onze zinnen op zetten. Het laat ook zien dat de last van de technische schuld alleen niet de beperkende factor is in de taalontwikkeling.

Het bestuursmodel van C++ zal waarschijnlijk niet snel veranderen, omdat het zo verbonden is met het ISO-proces en de belanghebbenden van de commissie. Toch denk ik dat dit een zeer belangrijk moment is voor de taal om na te denken over haar positie in het universum van systeemprogrammering; ze kan de signalen niet langer negeren. Misschien zal een slankere bestuursstructuur helpen, of het toestaan van brekende veranderingen om de technische schuld in een toekomstige versie weg te werken – wie weet. Helaas zullen dergelijke substantiële wijzigingen in het proces waarschijnlijk ook jaren duren.

Afwachten

Zullen de nadelen ertoe leiden dat C++ binnenkort wordt afgeschaft? Nee, zeker niet. Het momentum van de bestaande code en gebruikers is overweldigend. ‘Gewoon’ overstappen naar een andere taal is niet voor iedereen een optie, zelfs niet voor Google. Daarvoor is echte interoperabiliteit met C++ (niet alleen C) nodig, en daar schieten alternatieven als Rust en Swift nog tekort. Niet voor niets adverteert Google met C++ interoperabiliteit als een belangrijk kenmerk van Carbon, waardoor het mogelijk wordt om de taal stap voor stap over te nemen vanuit een grote bestaande C++ codebase.

Op dit moment is Carbon echter niet veel meer dan een ruwe specificatie en een aankondiging. We zullen moeten afwachten of het aan de verwachtingen kan voldoen. In de tussentijd zal C++ ook evolueren, hopelijk positief geïnspireerd door de mogelijkheden van Circle en andere talen op dit gebied.

 

Systeemarchitectuur voor politici

Systeemarchitect

Daar, onder de parasol, pet, zonnebril, bier, dat moet onze minister-president zijn.
Als ik nog een biertje regel, mag ik er dan bij?

Bier is welkom en als je niet over politiek praat, mag je ook meedoen.
Systeemarchitect in de politiek
Illustratie Rutte met Luud Engels

Afgesproken! Ik ben een politiek analfabeet. Ik geef hier een training en kan alleen een beetje praten over hightech systeemarchitectuur.

Klinkt interessant! Ik ben op heel wat handelsmissies geweest en ik weet dat Nederland daar een leidende rol speelt.

Dat doet het zeker! Ik heb de kans gehad om voor bedrijven te werken die konden voorspellen welk high-tech product ze binnen drie jaar op de markt moesten hebben en die geniale onderzoekers en uiterst bekwame ingenieurs aan het werk zetten om dat doel te bereiken.

Juist omdat er veel verschillende expertises nodig zijn om zo’n hightech product te ontwikkelen, te produceren en te onderhouden, ontstaat er een wirwar van tegenstrijdige eisen uit die veelheid van disciplines. Maar de succesvolle bedrijven onderscheiden zich doordat ze het ondanks deze wirwar eens kunnen worden over een aanpak en zo tijdig de juiste beslissingen kunnen nemen.

Dat moet inderdaad enorm ingewikkeld zijn. Maar gelukkig weten die knappe koppen en handige handen welke berekeningen en modellen ze moeten toepassen. In mijn werk passen we ook modellen toe, maar die zijn meer voer voor discussie dan dat ze leiden tot consensus en juiste beslissingen. Bij ons is het meer mensenwerk.

Er zijn meer overeenkomsten dan je zou denken. Alle experts in hightech zijn heer en meester in hun vakgebied en betreden vaak het podium om precies dat te laten zien: bèta superioriteit.

Aan de ene kant heb je de expertise, modellen en berekeningen hard nodig om ervoor te zorgen dat die professionals blijven innoveren in hun vakgebied en steeds diepere tunnels graven. En aan de andere kant wordt elk nieuw inzicht in een bepaald vakgebied gebruikt als wapen om experts uit andere tunnels de hersens in te slaan.

Er ontstaan eilanden, soms zelfs kampen, en de pest is dat ze allemaal een geldig punt hebben.

Oké, oké, dus het is ook mensenwerk. Maar je zei net dat ze wel tot een overeenkomst komen. Hoe doen ze dat dan?

Het draait allemaal om systeemarchitectuur. Ze maken werkafspraken – je kunt het een aanpak noemen – waarin de verschillende disciplines elkaar inzicht geven in waar zich in essentie de tegenstelling manifesteert en voor welke parameters een evenwichtige oplossing moet worden gevonden. Het gaat dus niet om onderhandelen of consensus proberen te bereiken, maar om het maken van gezamenlijk gewogen keuzes. Zodra ze allemaal het overzicht hebben en het eens zijn over het hele systeem, maken deze knappe koppen hun eigen tunnelwijsheid ondergeschikt aan, zeg maar, het hogere goed.

Leuk dat het zo werkt in de hightech, maar hoe anders is het bij ons. Ongetwijfeld heb je debatten gezien waar mensen te druk zijn met het verkondigen van hun eigen partijwaarheid en niet bereid zijn om naar elkaar te luisteren, laat staan elkaar te begrijpen. Die systeemarchitectuur werkt niet bij ons.

Ik ga advocaat van de duivel spelen; die debatten hebben niet het gemeenschappelijke doel dat wel heerst binnen succesvolle bedrijven. In de debatten schittert het systeemdoel door afwezigheid.

Nee, daar kan het niet aan liggen. We hebben bijvoorbeeld een heel duidelijk doel gesteld voor de vermindering van stikstof: de helft minder in 2030. Hoe concreet wil je dan dat het doel is?

Hier raak je een fundamentele fout. Je ziet dat vermindering geen systeemdoel is. Dit is precies waar constructieve bedrijven verschillen van de politiek. Ik zal het uitleggen.

Het doel van het systeem omvat termen als voedselhoeveelheid, voedselkwaliteit, duurzame bedrijfsvoering en behoud van het milieu. Er is echter nog nooit een systeem ontwikkeld met als doel het verminderen van stikstof, en dat is precies waarom velen protesteren zodra je dat als doel stelt. Begrijp me niet verkeerd, ik ben geen klimaatwimp. Ik zie het teveel aan stikstofdepositie als een negatief effect dat moet worden opgelost.

Ik ben er vrij zeker van dat boeren, burgers en bedrijven het systeemdoel onderschrijven om op een duurzame manier voedsel te produceren in Nederland. Als je ze had uitgenodigd om dat systeemdoel te blijven nastreven terwijl het stikstofoverschot gerepareerd moet worden, dan had je coöperatieve denkers gekregen in plaats van tegendenkers. Het systeemdoel heeft altijd een gewenst effect en daarom willen de meeste mensen eraan meewerken.

Ik begrijp wat je bedoelt. Dus Nederland kan geregeerd worden door systeemarchitecten?

Gouverneur niet, maar zelfs politici zouden baat hebben bij praktijken en methoden zoals die binnen systeemarchitectuur:

''Proclaiming system goals results in solution supporters.''

''Proclaiming solutions results in aimless opponents.''

 

Dus we hebben het verknald?

In deze benadering zeker wel! Er zijn echter ook dingen verknoeid in de hightech, en missers zullen blijven bestaan, maar elke fout is een kans om te verbeteren. Hoe denk je dat systeemarchitectuur anders is ontstaan?

Je zou het trouwens niet over politiek hebben!

Dat deed ik niet, we hadden het alleen over beslissingen nemen.

Een vliegende start in moderne C++

C++ opleiding
Ondanks een groot aantal opkomende alternatieven is C++ nog steeds een kracht om rekening mee te houden, zeker in de door legacy bedreigde high-tech industrie. Op basis van bijna 25 jaar ervaring introduceert computerprogrammeur Kris van Rens beginnende programmeurs in de basis van de taal en essentiële best practices in zijn nieuwe C++ Fundamentals training bij High Tech Institute.

In de loop der jaren is er een lange lijst programmeertalen naar voren geschoven om C++ te vervangen. D, Rust, Apple’s Swift, de recente toevoeging van Google Carbon en minder bekende alternatieven zoals Nim en Vale, om er een paar te noemen – ze hebben allemaal hun verdiensten en hun specifieke toepassingsgebieden. Desalniettemin is C++ nog steeds springlevend, stelt computerprogrammeerenthousiast Kris van Rens.

“Er is een wijdverbreide opvatting dat je C++ niet moet gebruiken omdat het verouderd is,” zegt Van Rens. “Maar het is eigenlijk deze opvatting die verouderd is. Het is gebaseerd op C++ oude stijl. Sinds de geboorte van het moderne C++ in 2011 is de taal met zijn tijd meegegaan. Met de juiste voorzieningen is het niet minder relevant dan opkomende alternatieven zoals Rust.”

In de nieuwe 4-daagse training “C++ fundamentals”, georganiseerd door High Tech Institute in de laatste twee weken van maart, laat Van Rens deelnemers kennismaken met de basisprincipes van de taal en essentiële best practices. “Ik streef ernaar een positieve vibe over C++ over te brengen. Ik wil dat deelnemers het gevoel krijgen dat ze er echt iets mee kunnen en dat ze weten hoe ze het goed kunnen gebruiken.”

Brood en boter

Van Rens is al gefascineerd door de wondere wereld van het programmeren sinds hij voor het eerst de ZX Spectrum thuiscomputer van zijn vader in handen kreeg. “Het was een machine uit 1983, mijn geboortejaar. Toen ik 7 of 8 was, begon ik ermee te knutselen, met behulp van de programmeertaal Basic. Op de middelbare school, in een buitenschoolse activiteit, leerde een medestudent me X86 real-time assembly, gevolgd door C en vervolgens C++. De afgelopen jaren heb ik me ook verdiept in Rust.”

Na een bachelor in mechatronica aan de Niederrhein University of Applied Sciences in Krefeld, Duitsland, deed Van Rens een master in elektrotechniek aan de Technische Universiteit Eindhoven (TUE), met als specialisatie videocodering en architecturen onder begeleiding van professor Peter de With. “De universiteit is de plek waar ik software engineer ben geworden en mijn eerste ervaringen met lesgeven heb opgedaan. Parallel aan mijn afstudeerproject, dat ging over het converteren van MPEG-2 naar H.264 videostromen, maakte ik een tutorial over beeld- en videocodering – voor mijn eigen begrip, maar ook gewoon voor de lol en om die lol op anderen over te brengen. Het verspreiden van mijn enthousiasme is altijd een belangrijke drijfveer voor me geweest.”

C++ training Kris van Rens

In 2009 begon Van Rens zijn professionele carrière bij zijn huidige werkgever, de slimme surveillancespecialist Vinotion. Op dat moment was deze spin-off van de TUE nog een startup, werkend vanuit een kantoorruimte van de onderzoeksgroep van De With. “Van het coderen van beeldanalyse-algoritmen in C++ verschoof mijn focus langzaam naar het ontwikkelplatform als geheel, inclusief de taal zelf, de programmeerinterfaces en de tooling. Dat werd mijn brood en boter: het mogelijk maken van het maken van robuuste, krachtige code van hoge kwaliteit met behulp van een solide softwarearchitectuur.”

Van Rens’ carrière in training kreeg een duwtje in de rug toen hij werd gevraagd om te spreken op een van de informele 040coders bijeenkomsten voor computerprogrammeurs in de regio Eindhoven. “De bijeenkomst werd gehost door Philips Image Guided Therapy en ik deed een sketch over het introduceren van kinderen in C++. Daarna nodigde IGT me uit om een serieuze presentatie te geven voor hun engineers. Dus deed ik een try-out over een diepgaand onderwerp in C++. Ze vonden het zo leuk dat het is uitgegroeid tot een driemaandelijks evenement – tot nu toe allemaal online, dankzij Covid, waarbij ik vanaf mijn zolder presenteer voor groepen van wel 150 mensen.”

Ontmoetingen met het erfgoed

De nieuwe C++ klassikale training bij High Tech Institute is gericht op veel kleinere groepen van maximaal een dozijn software engineers met basis programmeervaardigheden – elke taal is goed genoeg. De training is ook veel praktijkgerichter, met praktische oefeningen die zijn ontleend aan Van Rens’ meer dan 10 jaar industriële ervaring. “Deze oefeningen zijn niet theoretisch en verzonnen zoals ik in zoveel andere cursussen heb gezien. Het zijn echte industriële cases, geïnspireerd door de problemen die ik in mijn dagelijkse werk tegenkom.”

Een belangrijk concept dat Van Rens behandelt is het ambacht van systeemprogrammering. “Wanneer je embedded software schrijft voor een high-tech systeem, zit je veel dichter op de hardware dan wanneer je een webapplicatie maakt,” wijst hij erop. “In Javascript, bijvoorbeeld, hoef je je over het algemeen niet bezig te houden met zaken als geheugenbeheer; de interpreter regelt dat voor je. In een embedded systeem moet je je wel zorgen maken over de vaak beperkte bronnen en hoe je ze verstandig gebruikt. Bij systeemprogrammeren gaat het erom dat je je bewust bent van de fijne kneepjes op alle niveaus en dat je de flexibiliteit hebt om daarnaar te handelen. De training biedt daarvoor de handvatten. Deze kennis geldt voor elke systeemprogrammeertaal.”

''A lot of legacy is written in some older version of C++.''

De alomtegenwoordigheid van legacycode in de hightechindustrie is nog een reden waarom C++ en zijn training zo relevant zijn, merkt Van Rens op. “Veel van die legacy is geschreven in een oudere versie van C++. Vroeg of laat komt u deze code tegen. Herschrijven of ertegen programmeren in Rust of een andere taal is bijna nooit een haalbare optie; je zult ermee moeten omgaan in C++, en mijn training helpt je daarbij.”

Om voorbereid te zijn op legacy code moeten deelnemers natuurlijk wel het een en ander weten over C++ oude stijl, maar de nadruk ligt op de veilige, moderne aspecten. “Na de eerste standaardisatie in 1998 veranderde de taal lange tijd niet veel. Pas in 2011 onderging C++ een ware metamorfose met de introductie van moderne concepten zoals smart pointers voor veiliger geheugengebruik. Sindsdien wordt de taal regelmatig bijgewerkt, net als de best practices,” legt Van Rens uit. “Mijn primaire focus ligt op de laatste stand van de techniek. Later in de training rust ik de deelnemers ook uit voor hun onvermijdelijke ontmoetingen met C++ oude stijl door in te gaan op de evolutie van de taal en oefeningen te geven waarin stukken legacy code herschreven moeten worden met moderne constructen.”

C++ training door Kris van Rens

 

Superleren

De grondbeginselen die Van Rens in de komende training leert, zijn meer dan genoeg voor deelnemers om een vliegende start te maken, maar ze zijn slechts een fractie van wat er over C++ te vertellen valt. “Het is een enorme taal. Ik gebruik het boek “Beginning C++20″ van Ivor Horton en Peter Van Weert als naslagwerk tijdens de cursus. Het is uitgebreid, bijna duizend pagina’s lang, maar zelfs dat is bij lange na niet genoeg om alles te behandelen. In vier dagen wil ik een solide basis leggen, deelnemers de kneepjes van het vak laten zien en laten zien waar ze terecht kunnen als ze dieper willen duiken.”

''Nothing beats learning by doing.''

Met boeken en online tutorials kom je niet verder. Er gaat niets boven leren door te doen, stelt Van Rens, die wijst op de toegevoegde waarde van klassikaal lesgeven. “Door sinds 1998 met C++ te werken, heb ik bijna 25 jaar ervaring opgebouwd die ik ruimschoots deel in de klas. Ik leg niet alleen de taal uit; ik weet waar ik de juiste accenten moet leggen en ondersteun mijn verhaal met relevante best practices, voorbeelden en oefeningen uit de industrie. Het is supergeladen leren.”

Dit artikel is geschreven door Nieke Roos, tech-redacteur van Bits&Chips.

Recommendation by former participants

By the end of the training participants are asked to fill out an evaluation form. To the question: 'Would you recommend this training to others?' they responded with a 9.1 out of 10.

Trend 5: Gereedschappen

Trainer systeemvereisten
High Tech Institute trainer Cees Michielsen belicht een handvol trends op het gebied van system requirements engineering. Hij verzorgt meerdere keren per jaar de 2-daagse training System requirements engineering improvement voor High Tech Institute.

In elke training ter verbetering van de requirements engineering komt de vraag op: wat is de beste tool om onze requirements te beheren? Om deze vraag te beantwoorden zou je alle toeters en bellen van requirements management tools moeten kennen, inclusief de laatste updates. Tegelijkertijd heb je een goed begrip nodig van de omgeving waarin je de tool wilt gebruiken. Kortom: dit is een onmogelijke taak.

Geen stress, er moet nog een eerste onderscheid worden gemaakt. Dat kun je het beste doen op basis van het soort bedrijf waarmee je werkt. Een organisatie als ASML hoeft niet te voldoen aan internationale veiligheidsnormen, informatiebeveiliging of FDA-voorschriften. Zelfs Word of Excel is dan geschikt om alles te beheren – en verrassend genoeg lijkt dit de voorkeur te hebben.

Als het om normen en voorschriften gaat, moet de software audit trails ondersteunen. Dat betekent dat er basisfunctionaliteit moet zijn voor configuratiebeheer, zoals versiebeheer, wijzigingsbeheer en statusbeheer. Het is verbazingwekkend, maar veel requirement management tools bieden deze basisfuncties niet.

Een ander onderscheid dat gemaakt moet worden is de baseline. In zijn meest basale vorm is een baseline een momentopname van de requirements database, die een subset van requirements bevat. Meer geavanceerde tools bieden workflows om specifieke requirements met specifieke kenmerken uit de database te selecteren. Zo’n baseline kan worden beoordeeld, gewijzigd, goedgekeurd en vrijgegeven als een aparte entiteit in de tool. Eenmaal vrijgegeven kan de inhoud van de baseline niet meer worden gewijzigd.

'In its most basic form, a baseline is a snapshot of the requirements database, containing a subset of requirements'

In sommige industrieën, zoals de auto-industrie, is de uitwisseling van baselines tussen OEM en leveranciers een standaardprocedure (beter bekend als de Lastenheft-Pflichtenheft informatie-uitwisseling), maar ook intern is het nuttig. Ze creëren rust en stabiliteit in een omgeving die bekend staat om veranderende eisen door multidisciplinaire productontwikkeling.

Het loskoppelen van verschillende dynamieken van basislijnen kan heel effectief zijn. Dit is ook de basis van mijn eerdere opmerking over Word en Excel. Zij kunnen, met hun relatief trage tempo van verandering, een geschikte hartslag dicteren voor het initiëren van verandering in de ontwikkelorganisatie. Bijvoorbeeld een snel veranderende agile manier van werken met tweewekelijkse sprints en een lange doorlooptijd met kwartaalupdates en jaarlijkse releases.

Een sterk argument ten gunste van het gebruik van RM-tools is de ondersteuning voor traceerbaarheid. De meeste leveranciers van tools adverteren dat hun tool geschikt is om requirements te koppelen aan andere requirements. Zoals ik al schreef in mijn column over traceerbaarheid, lijkt dit in de praktijk niet te gebeuren. Het wordt zelfs ontmoedigd.

Traceerbaarheid draait om het vinden van de bron van requirements. Deze bronnen zijn ofwel een requirements analyse verklaring of een ontwerpbeslissing op een hoger niveau. Daarom is het essentieel dat de tool de mogelijkheid biedt om andere entiteiten dan requirements te creëren en in staat is om specifieke relaties (trace-links) te leggen tussen requirements en ontwerpbeslissingen bijvoorbeeld.

Nogmaals, je zult versteld staan van de hoeveelheid tools die dit niet kunnen ondersteunen.

In mijn vorige column presenteerde ik het W-model als antwoord op de behoefte om eigenschappen (zoals massa en volume) toe te kennen aan systeemelementen. Je zou verwachten dat dit ondersteund zou worden door gereedschapsleveranciers die hun tools Product Lifecycle Management (PLM) noemen, zoals Siemens, IBM, Dassault, Contact Software en PTC. Helaas zien de meeste van deze PLM-tools de eerste CAD-tekeningen als het begin van de levenscyclus van het product. Ik zeg het maar even: dit is bijna aan het einde van het ontwikkelingsproces!

'It is essential that the tool offers the possibility to create other entities than requirements, and is able to make specific relations (trace-links) between requirements and design decisions for example'

Anders gezegd: deze tools slaan de linkerbenen van het W-model (van geboorte tot adolescentie) volledig over. In de afgelopen jaren hebben deze PLM-toolleveranciers geprobeerd het gat op te vullen door aanbieders van modelgebaseerde systems engineering-tools over te nemen of door interfaces aan te bieden (Enterprise Architect, Capella, No Magic) en vervolgens de arme klant te laten opdraaien voor de integratie- en interfaceproblemen, terwijl ze ook nog eens opgescheept zitten met verouderde concepten zoals RFLP, incompatibele terminologie, het volledig ontbreken van het concept producteigenschappen en het ontbreken van de mogelijkheid voor attributen op relaties.

Een aantal populaire requirements management tools breiden hun functionaliteiten uit naar systems engineering, zoals Doors, Polarion, Relatics, TopTeam en Jama. Ze worden geconfronteerd met de randvoorwaarden waaraan moet worden voldaan vanuit een SE-perspectief: goed configuratie-, wijzigings- en releasemanagement, cross-context traceerbaarheid, levenscyclusondersteuning voor systeemelementen, baselining en meer.

Terugkomend op ons oorspronkelijke onderwerp van de dag: Ik moet nog steeds een RM-tool zien die niet alleen de managementaspecten ondersteunt, maar ook de engineeringaspecten. Zoals de kwantificering van requirements met tags en qualifiers volgens Gilb; de relatie van functies en functie-eigenschappen (ook om af te komen van de verouderde opsplitsing van functionele en niet-functionele requirements); hoe schrijf je eigenschap-specifieke requirements; ondersteuning voor het waarborgen van de intrinsieke kwaliteit van requirements (functionaliteit geleverd door tools als QVScribe); eenvoudige vergelijking van het systeem zoals vereist, het systeem zoals ontworpen en het systeem zoals getest. Een eis is meer dan alleen een tekstuele beschrijving.

In de column over traceerbaarheid noemde ik dat requirements-tooling kan helpen bij het beantwoorden van de vraag: waarom bestaat deze requirement en waarom heeft het deze waarde? PLM-tooling kan helpen bij het beantwoorden van vragen als ‘Als dit element in het veld faalt, kan tooling me dan helpen bij het vinden van de systeemfunctie(s) die door dit falende element worden beïnvloed?’