Der Zustand von C++

Trotz einer Vielzahl aufstrebender Alternativen ist C++ immer noch eine Macht, mit der man rechnen muss, vor allem in der von Altlasten geplagten High-Tech-Branche. In einer Reihe von Artikeln stellt der Trainer des High Tech Institute, Kris van Rens, die Sprache in eine moderne Perspektive. In unserem neuen 4-tägigen Trainingskurs führt Kris van Rens die Teilnehmer in die Grundlagen der Sprache und die wichtigsten Best Practices ein.

Im vergangenen Juli wurde die Programmiersprache Carbon auf der CppNorth C++ Konferenz in Toronto, Kanada, offiziell angekündigt. Carbon wird als „experimenteller Nachfolger von C++“ vorgestellt und wurde als Open-Source-Projekt gestartet, und zwar von Google. Moment mal… Google will einen C++-Nachfolger entwickeln? Bis vor kurzem war das Unternehmen stark an der Entwicklung der Sprache C++ und der Entwicklung des Clang C++ Front-Ends für den LLVM-Compiler beteiligt. Angesichts der Tatsache, dass bei Google Zehntausende von Ingenieuren an Milliarden von Codezeilen arbeiten, erscheint es ziemlich gewagt, den Weg einer völlig neuen Sprache einzuschlagen.

Warum sollte sich ein so großes Unternehmen wie Google an ein solch gewagtes Projekt wagen? Nun, es ist ein Symptom für den Zustand und die Entwicklung von C++. Für diejenigen, die die Entwicklung der Sprache in den letzten Jahren nicht mitverfolgt haben: Es hat einige wichtige Diskussionen gegeben. Natürlich geht es bei den Treffen des C++-Komitees darum, Diskussionen zu führen, aber ein Thema ist immer wieder aufgetaucht, ohne dass eine Einigung erzielt werden konnte: die Frage, ob es sich lohnt, das Sprachdesign auf Kosten der Abwärtskompatibilität zu verbessern oder nicht.

Schlankere Verwaltung

C++ gibt es nun schon seit etwa vierzig Jahren und wird weltweit zur Erstellung leistungsfähiger Software verwendet. Nach einer Periode relativer Ruhe nach der ersten ISO-Standardisierung im Jahr 1998 ist es dem Komitee gelungen, seit 2011 kontinuierlich alle drei Jahre große Verbesserungen einzuführen. Infolgedessen hat sich die Sprache im Vergleich zu dem, womit wir in den Neunzigern und Nullerjahren gearbeitet haben, stark verändert. Allein die Hinzufügung von Funktionen wie Konzepten, Bereichen und Modulen in C++20 hat es in sich.

Gleichzeitig ist jedoch bekannt, dass die Weiterentwicklung der Sprache C++ eine große Herausforderung darstellt. Die Last, jahrzehntelange technische Schulden zu tragen und gleichzeitig die Abwärtskompatibilität aufrechtzuerhalten, ist beträchtlich – zu viel für manche, wie es scheint. Der Versuch, eine wichtige Sprachfunktion hinzuzufügen, kann bis zu zehn Jahre Lobbyarbeit, Diskussionen, Überprüfungen, Tests, weitere Überprüfungen und sorgfältige Formulierung kosten. Natürlich ist die Einführung erheblicher Änderungen in einem Projekt mit so vielen Beteiligten keine Kleinigkeit, aber zehn Jahre sind in der heutigen technischen Welt buchstäblich ein ganzes Leben. Eine weitere Herausforderung besteht darin, dass das ISO-Komitee überwiegend westlich geprägt ist und die großen asiatischen C++-Anwender wie Indien oder China stark unterrepräsentiert sind. Diese Nachteile sehen nicht gut aus, vor allem nicht im Hinblick auf schnell wachsende, moderne, offen regierte (und relativ junge) Sprachen wie Rust oder Swift.

Sigasi Erweiterung für Visual Studio Code

Sigasi kündigt die Veröffentlichung deri VS Code Extension mit umfassender Unterstützung für SystemVerilog, Verilog und VHDL an. Unsere Erweiterung bietet Funktionen und Sprachunterstützung wie Code-Navigation, Projektverwaltung, Linting, Code-Formatierung, Tooltips, Outline, Autovervollständigung, Hover und vieles mehr!

''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.''

Ist die technische Verschuldung der Sprache C++ wirklich so gigantisch, dass es nahezu unmöglich ist, neue, wichtige Funktionen hinzuzufügen? Die Ein-Mann-Armee Sean Baxter vom Circle C++ Compiler hat bewiesen, dass dem nicht so ist. Allein in den letzten Monaten hat er im Alleingang bewiesen, dass es möglich ist, beträchtliche Funktionen wie einen echten Summentyp und Tupel auf Sprachebene hinzuzufügen. Zugegeben, eine Implementierung in einem einzigen Compiler eines C++-Dialekts ohne einen gründlich überprüften Vorschlag ist noch lange kein offizielles C++-Sprachmerkmal, aber es zeigt zumindest, wie viel Spielraum und Möglichkeiten es in der Syntax und der Sprache insgesamt gibt – wenn wir uns wirklich darauf einlassen. Es zeigt auch, dass die Last der technischen Schulden allein nicht der begrenzende Faktor bei der Entwicklung der Sprache ist.

Das Governance-Modell für die C++-Sprache wird sich wahrscheinlich nicht so bald ändern, da es so eng mit dem ISO-Prozess und den Interessengruppen des Komitees verbunden ist. Dennoch denke ich, dass jetzt ein sehr wichtiger Zeitpunkt für die Sprache ist, um ihre Position im Universum der Systemprogrammierung zu überdenken; sie kann die Signale nicht länger ignorieren. Vielleicht hilft eine schlankere Governance-Struktur oder die Möglichkeit, Änderungen vorzunehmen, um die technischen Schulden in einer zukünftigen Version abzubauen – wer weiß. Leider werden solche grundlegenden Änderungen des Prozesses höchstwahrscheinlich ebenfalls Jahre dauern.

Abwarten und Tee trinken

Werden die Nachteile dazu führen, dass C++ in absehbarer Zeit abgeschafft wird? Nein, definitiv nicht. Die schiere Eigendynamik des bestehenden Codes und der Benutzerbasis ist überwältigend. Ein ‚einfacher‘ Wechsel zu einer anderen Sprache ist nicht für jeden eine Option, nicht einmal für Google. Damit das klappt, ist echte Interoperabilität mit C++ (nicht nur C) erforderlich, und da hapert es bei Alternativen wie Rust und Swift noch. Nicht umsonst wirbt Google mit der C++-Interoperabilität als Hauptmerkmal von Carbon, das die schrittweise Übernahme der Sprache aus einer großen bestehenden C++-Codebasis ermöglicht.

Im Moment ist Carbon jedoch nicht viel mehr als eine grobe Spezifikation und eine Ankündigung. Wir müssen abwarten und sehen, ob es die Erwartungen erfüllen kann. In der Zwischenzeit wird sich auch C++ weiterentwickeln, hoffentlich positiv inspiriert durch die Möglichkeiten von Circle und anderen Sprachen in diesem Bereich.

 

Systemarchitektur für Politiker

Systemarchitekt

Da drüben, unter dem Sonnenschirm, Mütze, Sonnenbrille, Bier, das muss unser Premierminister sein.
Wenn ich noch ein Bier arrangiere, kann ich mich dann zu Ihnen setzen?

Bier ist willkommen und wenn Sie nicht über Politik reden, können Sie sich uns anschließen.
Systemarchitekt in der Politik
Illustration Rutte mit Luud Engels

Abgemacht! Ich bin ein politischer Analphabet. Ich gebe hier eine Schulung und kann nur ein wenig über High-Tech-Systemarchitektur sprechen.

Das klingt interessant! Ich habe schon an einigen Handelsmissionen teilgenommen und weiß, dass die Niederlande dort eine führende Rolle spielen.

Das ist wahr! Ich hatte die Gelegenheit, für Unternehmen zu arbeiten, die vorhersagen konnten, welches High-Tech-Produkt sie in drei Jahren auf den Markt bringen mussten, und die geniale Forscher und äußerst fähige Ingenieure einsetzten, um dieses Ziel zu erreichen.

Gerade weil für die Entwicklung, Herstellung und Wartung eines solchen Hightech-Produkts eine beträchtliche Anzahl unterschiedlicher Fachgebiete erforderlich ist, ergibt sich aus dieser Vielzahl von Disziplinen ein Wirrwarr von widersprüchlichen Anforderungen. Aber die erfolgreichen Unternehmen zeichnen sich dadurch aus, dass sie sich trotz dieses Wirrwarrs auf eine Vorgehensweise einigen und so rechtzeitig die richtigen Entscheidungen treffen können.

Das muss in der Tat ungeheuer komplex sein. Aber zum Glück wissen diese klugen Köpfe und geschickten Hände, welche Berechnungen und Modelle sie anwenden müssen. Bei meiner Arbeit wenden wir auch Modelle an, aber sie sind eher Futter für Diskussionen als dass sie zu einem Konsens und richtigen Entscheidungen führen. Bei uns ist es mehr menschliche Arbeit.

Da gibt es vielleicht mehr Gemeinsamkeiten, als Sie denken. Alle Experten in der High-Tech-Branche sind Herren und Meister auf ihrem Gebiet und nutzen die Bühne oft, um genau das zu zeigen: Beta-Überlegenheit.

Auf der einen Seite brauchen Sie dringend das Fachwissen, die Modelle und Berechnungen, damit diese Fachleute in ihren Bereichen innovativ bleiben und immer tiefere Tunnel graben. Und auf der anderen Seite wird jede neue Erkenntnis in einer bestimmten Disziplin als Waffe eingesetzt, um Experten aus anderen Tunneln das Hirn auszuschlagen.

Es entstehen Inseln, manchmal sogar Lager, und die Plage ist, dass sie alle einen gültigen Punkt haben.

Okay, okay, es ist also auch menschliche Arbeit. Aber Sie haben gerade gesagt, dass sie sich einigen. Und wie machen sie das?

Es geht um Systemarchitektur. Sie treffen Arbeitsvereinbarungen – man kann es auch als Ansatz bezeichnen -, in denen sich die verschiedenen Disziplinen gegenseitig darüber aufklären, wo sich der Widerspruch im Wesentlichen manifestiert und für welche Parameter eine ausgewogene Lösung gefunden werden muss. Es geht also nicht darum, zu verhandeln oder zu versuchen, einen Konsens zu erreichen, sondern gemeinsam gewichtete Entscheidungen zu treffen. Sobald sie alle einen Überblick haben und sich über das gesamte System einig sind, ordnen diese klugen Köpfe ihre eigene Tunnelweisheit dem, sagen wir, höheren Wohl unter.

Schön, dass das in der High-Tech-Branche so ist, aber wie anders ist es bei uns. Zweifellos haben Sie schon Debatten gesehen, in denen die Leute zu sehr damit beschäftigt sind, ihre eigene Parteiwahrheit zu verkünden und nicht bereit sind, dem anderen zuzuhören, geschweige denn ihn zu verstehen. Diese Art von Systemarchitektur funktioniert bei uns nicht.

Ich spiele jetzt mal des Teufels Advokat: Diese Debatten haben nicht das gemeinsame Ziel, das in erfolgreichen Unternehmen vorherrscht. In den Debatten fällt das Systemziel durch seine Abwesenheit auf.

Nein, das kann nicht der Grund sein. Wir haben uns zum Beispiel ein sehr klares Ziel für die Stickstoffreduzierung gesetzt: die Hälfte weniger bis 2030. Wie konkret soll das Ziel denn sein?

Hier berühren Sie einen grundlegenden Fehler. Sie sehen, dass Reduktion kein Systemziel ist. Genau hier unterscheiden sich konstruktive Unternehmen von der Politik. Lassen Sie mich das erklären.

Das Systemziel umfasst Begriffe wie Lebensmittelmenge, Lebensmittelqualität, nachhaltiger Betrieb und Erhaltung der Umwelt. Allerdings wurde noch nie ein System mit dem Ziel der Stickstoffreduzierung entwickelt, und genau deshalb protestieren viele, sobald Sie dies als Ziel festlegen. Verstehen Sie mich nicht falsch, ich bin kein Klimaverweigerer. Ich betrachte die übermäßige Stickstoffablagerung als negativen Effekt, der behoben werden muss.

Ich bin mir ziemlich sicher, dass die Landwirte, Bürger und Unternehmen in den Niederlanden das Systemziel einer nachhaltigen Nahrungsmittelproduktion unterstützen. Hätten Sie sie aufgefordert, weiter auf dieses Systemziel zuzusteuern, während der Stickstoffüberschuss repariert werden muss, hätten Sie kooperative Denker statt Gegendenker bekommen. Das Systemziel beinhaltet immer einen erwünschten Effekt, und die meisten Menschen wollen sich daher daran beteiligen.

Ich verstehe, was Sie meinen. Die Niederlande können also von Systemarchitekten regiert werden?

Govern nicht, aber selbst Politiker würden von Praktiken und Methoden wie denen der Systemarchitektur profitieren:

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

''Proclaiming solutions results in aimless opponents.''

 

Wir haben es also vermasselt?

Bei diesem Ansatz sicherlich ja! Allerdings ist auch in der High-Tech-Branche einiges schief gelaufen, und es wird auch weiterhin Fehler geben, aber jeder Fehler ist eine Chance zur Verbesserung. Was meinen Sie, wie die Systemarchitektur sonst noch entstanden ist?

Übrigens, Sie würden nicht über Politik sprechen!

Das habe ich nicht, wir haben nur über die Entscheidungsfindung gesprochen.

Ein fliegender Start in modernes C++

C++ Ausbildung
Trotz einer Vielzahl aufstrebender Alternativen ist C++ immer noch eine Macht, mit der man rechnen muss, vor allem in der von Altlasten geplagten High-Tech-Branche. Kris van Rens, ein Enthusiast der Computerprogrammierung, der auf fast 25 Jahre Erfahrung zurückblicken kann, führt in seinem neuen C++ Fundamentals Training am High Tech Institute Programmieranfänger in die Grundlagen der Sprache und die wichtigsten Best Practices ein.

Im Laufe der Jahre wurde eine lange Liste von Programmiersprachen vorgeschlagen, um C++ zu verdrängen. D, Rust, Apples Swift, die jüngste Google-Ergänzung Carbon und weniger bekannte Alternativen wie Nim und Vale, um nur einige zu nennen – sie alle haben ihre Vorzüge und ihre speziellen Anwendungsbereiche. Nichtsdestotrotz ist C++ immer noch sehr lebendig, meint der Computerprogrammier-Enthusiast Kris van Rens.

„Es gibt die weit verbreitete Ansicht, dass man C++ nicht verwenden sollte, weil es veraltet ist“, sagt Van Rens. „Aber eigentlich ist es diese Ansicht, die veraltet ist. Sie basiert auf C++ im alten Stil. Seit der Geburt des modernen C++ im Jahr 2011 ist die Sprache mit der Zeit gegangen. Mit den richtigen Bestimmungen ist sie nicht weniger relevant als aufstrebende Alternativen wie Rust.“

In der neuen 4-tägigen Schulung „C++-Grundlagen“, die das High Tech Institute in den letzten beiden Märzwochen veranstaltet, führt Van Rens die Teilnehmer in die Grundlagen der Sprache und die wichtigsten Best Practices ein. „Ich möchte eine positive Einstellung zu C++ vermitteln. Ich möchte, dass die Teilnehmer mit dem Gefühl nach Hause gehen, dass sie wirklich etwas damit anfangen können und wissen, wie man es richtig einsetzt.“

Brot und Butter

Van Rens ist von der wunderbaren Welt des Programmierens fasziniert, seit er das erste Mal den ZX Spectrum Heimcomputer seines Vaters in die Hand nahm. „Es war ein Gerät aus dem Jahr 1983, dem Jahr, in dem ich geboren wurde. Als ich 7 oder 8 Jahre alt war, fing ich an, mit der Programmiersprache Basic daran herumzubasteln. In der High School brachte mir ein Mitschüler im Rahmen einer außerschulischen Aktivität X86-Echtzeit-Assembler bei, gefolgt von C und dann C++. In den letzten Jahren habe ich mich auch mit Rust beschäftigt.“

Nach einem Bachelor in Mechatronik an der Hochschule Niederrhein in Krefeld, Deutschland, absolvierte Van Rens einen Master in Elektrotechnik an der Technischen Universität Eindhoven (TUE), wo er sich unter der Leitung von Professor Peter de With auf Videocodierung und Architekturen spezialisierte. „An der Universität wurde ich zum Software-Ingenieur und bekam meine ersten Erfahrungen mit dem Unterrichten. Parallel zu meinem Abschlussprojekt, bei dem es um die Konvertierung von MPEG-2 in H.264-Videoströme ging, habe ich ein Tutorial zur Bild- und Videocodierung erstellt – zu meinem eigenen Verständnis, aber auch nur aus Spaß an der Sache und um diesen Spaß an andere weiterzugeben. Meinen Enthusiasmus zu verbreiten, war für mich schon immer ein wichtiger Antrieb.“

C++ Schulung Kris van Rens

Im Jahr 2009 begann Van Rens seine berufliche Laufbahn bei seinem heutigen Arbeitgeber, dem Spezialisten für intelligente Überwachung Vinotion. Damals war dieses TUE-Spinoff noch ein Startup und arbeitete in einem Büro, das zur Forschungsgruppe von De With gehörte. „Von der Codierung von Bildanalysealgorithmen in C++ verlagerte sich mein Schwerpunkt langsam auf die Entwicklungsplattform als Ganzes, einschließlich der Sprache selbst, der Programmierschnittstellen und der Werkzeuge. Das wurde mein tägliches Brot: die Erstellung von robustem, leistungsstarkem und qualitativ hochwertigem Code unter Verwendung einer soliden Softwarearchitektur.“

Van Rens‘ Karriere in der Ausbildung bekam einen Schub, als er gebeten wurde, bei einem der informellen 040coders-Treffen für Computerprogrammierer in der Region Eindhoven zu sprechen. „Das Treffen wurde von Philips Image Guided Therapy veranstaltet und ich führte einen Sketch auf, in dem es darum ging, Kinder in C++ einzuführen. Danach lud mich IGT ein, eine ernsthafte Präsentation vor ihren Ingenieuren zu halten. Also habe ich ein ausführliches C++-Thema ausprobiert. Es hat ihnen so gut gefallen, dass daraus eine vierteljährliche Veranstaltung geworden ist – bisher alles online, dank Covid, bei der ich von meinem Dachboden aus vor bis zu 150 Zuhörern präsentiere.“

Begegnungen mit dem Erbe

Der neue C++-Kurs am High Tech Institute richtet sich an viel kleinere Gruppen von maximal einem Dutzend Softwareingenieuren mit grundlegenden Programmierkenntnissen – jede Sprache ist geeignet. Es ist auch viel praxisorientierter, mit praktischen Übungen, die aus Van Rens‘ mehr als 10-jähriger Industrieerfahrung stammen. „Diese Übungen sind nicht theoretisch und erfunden, wie ich es in so vielen anderen Kursen gesehen habe. Es sind echte industrielle Fälle, inspiriert von den Problemen, denen ich bei meiner täglichen Arbeit begegne.“

Ein Schlüsselkonzept, das Van Rens anspricht, ist das Handwerk der Systemprogrammierung. „Wenn Sie eingebettete Software für ein High-Tech-System schreiben, sind Sie viel näher an der Hardware dran als bei der Entwicklung einer Webanwendung“, erklärt er. „In Javascript zum Beispiel müssen Sie sich in der Regel nicht um Dinge wie die Speicherverwaltung kümmern; das übernimmt der Interpreter für Sie. In einem eingebetteten System müssen Sie sich um die oft begrenzten Ressourcen kümmern und darum, wie Sie diese sinnvoll nutzen. Bei der Systemprogrammierung geht es darum, sich der Feinheiten auf allen Ebenen bewusst zu sein und die Flexibilität zu haben, entsprechend zu handeln. Die Ausbildung liefert die Handgriffe dafür. Dieses Wissen gilt für jede Systemprogrammiersprache.“

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

Die Allgegenwart von Legacy-Code in der High-Tech-Industrie ist ein weiterer Grund, warum C++ und seine Ausbildung so wichtig sind, bemerkt Van Rens. „Ein Großteil dieser Altlasten ist in einer älteren Version von C++ geschrieben. Früher oder später werden Sie auf diesen Code stoßen. Ihn umzuschreiben oder in Rust oder einer anderen Sprache dagegen zu programmieren, ist fast nie eine praktikable Option; Sie müssen damit in C++ umgehen, und mein Training wird Ihnen dabei helfen.“

Um auf Legacy-Code vorbereitet zu sein, müssen die Teilnehmer natürlich ein oder zwei Dinge über C++ im alten Stil wissen, aber der Schwerpunkt liegt auf den sicheren, modernen Aspekten. „Nach der ersten Standardisierung im Jahr 1998 hat sich die Sprache lange Zeit nicht viel verändert. Erst 2011 erfuhr C++ mit der Einführung moderner Konzepte wie Smart Pointer für eine sicherere Speichernutzung eine echte Metamorphose. Seitdem wird die Sprache regelmäßig aktualisiert, und das gilt auch für die besten Praktiken“, erklärt Van Rens. „Ich konzentriere mich in erster Linie auf den aktuellen Stand der Technik. Im weiteren Verlauf der Schulung bereite ich die Teilnehmer auch auf ihre unvermeidlichen Begegnungen mit dem alten C++ vor, indem ich auf die Entwicklung der Sprache eingehe und Übungen anbiete, bei denen Teile des alten Codes mit modernen Konstrukten neu geschrieben werden müssen.“

C++ Schulung von Kris van Rens

 

Aufgeladenes Lernen

Die Grundlagen, die Van Rens in der kommenden Schulung vermittelt, sind mehr als genug für die Teilnehmer, um einen guten Start hinzulegen, aber sie sind nur ein Bruchteil dessen, was es über C++ zu erzählen gibt. „Es ist eine riesige Sprache. Ich verwende das Buch „Beginning C++20″ von Ivor Horton und Peter Van Weert als Referenz während des Kurses. Es ist sehr umfangreich, fast tausend Seiten lang, aber selbst das reicht bei weitem nicht aus, um alles abzudecken, bei weitem nicht. In vier Tagen möchte ich ein solides Fundament legen und den Teilnehmern zeigen, wo es lang geht und wo sie sich hinwenden können, wenn sie tiefer eintauchen wollen.“

''Nothing beats learning by doing.''

Bücher und Online-Tutorials bringen Sie nur bedingt weiter. Es gibt nichts Besseres als das Lernen durch eigenes Tun, meint Van Rens und verweist auf den Mehrwert des Unterrichts im Klassenzimmer. „Da ich seit 1998 mit C++ arbeite, habe ich fast 25 Jahre Erfahrung gesammelt, die ich im Unterricht ausgiebig weitergeben kann. Ich erkläre nicht einfach nur die Sprache, sondern weiß, wo ich den richtigen Schwerpunkt setzen muss, und unterstütze meine Ausführungen mit relevanten Best Practices, Beispielen und Übungen aus der Industrie. Das ist superschnelles Lernen.“

Dieser Artikel wurde von Nieke Roos geschrieben, dem technischen Redakteur von 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: Werkzeugbau

Trainer System Requirements Engineering
Der Trainer des High Tech Institute , Cees Michielsen, beleuchtet eine Handvoll Trends im Bereich System Requirements Engineering. Er bietet mehrmals im Jahr das 2-tägige Training System Requirements Engineering Improvement für das High Tech Institute an.

Bei jeder Schulung zur Verbesserung des System Requirements Engineering stellt sich die Frage: Welches ist das beste Tool zur Verwaltung unserer Anforderungen? Um diese Frage zu beantworten, müssen Sie alle Funktionen der Anforderungsmanagement-Tools kennen, einschließlich der neuesten Updates. Gleichzeitig brauchen Sie ein gutes Verständnis der Betriebsumgebung, in der Sie das Tool einsetzen wollen. Kurz gesagt: dies ist eine unmögliche Aufgabe.

Machen Sie sich keinen Stress, es gibt immer noch eine erste Unterscheidung zu treffen. Am besten tun Sie das auf der Grundlage der Art des Unternehmens, mit dem Sie arbeiten. Ein Unternehmen wie ASML muss sich nicht an internationale Sicherheitsstandards, Informationssicherheit oder FDA-Vorschriften halten. Auch Word oder Excel sind dann geeignet, um alles zu verwalten – und überraschenderweise scheint dies die bevorzugte Lösung zu sein.

Wenn es um Normen und Vorschriften geht, muss die Software Prüfpfade unterstützen. Das bedeutet, dass sie grundlegende Funktionen für das Konfigurationsmanagement bereitstellen muss, wie Versionsmanagement, Änderungsmanagement und Statusverwaltung. Es ist schon erstaunlich, aber viele Tools für das Anforderungsmanagement bieten diese grundlegenden Funktionen nicht.

Eine weitere Unterscheidung, die Sie treffen müssen, ist die Baseline. In ihrer einfachsten Form ist eine Baseline eine Momentaufnahme der Anforderungsdatenbank, die eine Teilmenge der Anforderungen enthält. Fortschrittlichere Tools bieten Workflows zur Auswahl bestimmter Anforderungen mit bestimmten Merkmalen aus der Datenbank. Eine solche Baseline kann geprüft, geändert, genehmigt und als separate Einheit im Tool freigegeben werden. Sobald sie freigegeben ist, kann der Inhalt der Baseline nicht mehr geändert werden.

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

In einigen Branchen, wie der Automobilindustrie, ist der Austausch von Baselines zwischen OEM und Zulieferern ein Standardverfahren (besser bekannt als Lastenheft-Pflichtenheft-Informationsaustausch ), aber auch intern ist er nützlich. Sie schaffen Ruhe und Stabilität in einem Umfeld, das für wechselnde Anforderungen durch multidisziplinäre Produktentwicklung bekannt ist.

Die Entkopplung der verschiedenen Dynamiken von den Grundlinien kann sehr effektiv sein. Dies ist auch die Grundlage für meine frühere Bemerkung über Word und Excel. Sie können mit ihrem relativ langsamen Veränderungstempo einen angemessenen Herzschlag für die Initiierung von Veränderungen in der Entwicklungsorganisation vorgeben. Zum Beispiel eine sich schnell ändernde agile Arbeitsweise mit zweiwöchentlichen Sprints und einer langen Vorlaufzeit mit vierteljährlichen Updates und jährlichen Releases.

Ein starkes Argument für die Verwendung von RM-Tools ist die Unterstützung der Rückverfolgbarkeit. Die meisten Anbieter von Tools werben damit, dass ihr Tool geeignet ist, Anforderungen mit anderen Anforderungen zu verknüpfen. Wie ich in meiner Kolumne über Rückverfolgbarkeit geschrieben habe, scheint dies in der Praxis nicht der Fall zu sein. Es wird sogar davon abgeraten.

Bei der Rückverfolgbarkeit geht es darum, die Quelle der Anforderungen zu finden. Diese Quellen sind entweder eine Anforderungsanalyse oder eine Designentscheidung auf höherer Ebene. Daher ist es wichtig, dass das Tool die Möglichkeit bietet, andere Entitäten als Anforderungen zu erstellen und in der Lage ist, spezifische Beziehungen (Trace-Links) zwischen Anforderungen und Designentscheidungen herzustellen.

Auch hier werden Sie erstaunt sein, wie viele Tools dies nicht unterstützen.

In meiner letzten Kolumne habe ich das W-Modell als Antwort auf die Notwendigkeit vorgestellt, Systemelementen Eigenschaften (wie Masse und Volumen) zuzuweisen. Sie würden erwarten, dass dies von Tool-Anbietern unterstützt wird, die ihre Tools Product Lifecycle Management (PLM) nennen, wie Siemens, IBM, Dassault, Contact Software und PTC. Leider sehen die meisten dieser PLM-Tools die ersten CAD-Zeichnungen als den Beginn des Lebenszyklus des Produkts an. Ich betone es nur: Das ist fast am Ende des Entwicklungsprozesses!

'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 ausgedrückt: diese Tools lassen die linken Beine des W-Modells (von der Geburt bis zur Pubertät) komplett aus. In den letzten Jahren haben diese PLM-Tool-Anbieter versucht, die Lücke zu füllen, indem sie Anbieter von modellbasierten System-Engineering-Tools übernommen oder Schnittstellen zu diesen angeboten haben (Enterprise Architect, Capella, No Magic) und dann den armen Kunden mit den Integrations- und Schnittstellenproblemen allein gelassen haben, während sie gleichzeitig mit veralteten Konzepten wie RFLP, einer inkompatiblen Terminologie, dem völligen Fehlen des Konzepts der Produkteigenschaften und der fehlenden Möglichkeit von Attributen zu Beziehungen zurückgelassen wurden.

Einige beliebte Anforderungsmanagement-Tools wie Doors, Polarion, Relatics, TopTeam und Jama erweitern ihre Funktionalitäten auf das Systems Engineering. Sie werden mit den Voraussetzungen konfrontiert, die aus einer SE-Perspektive erfüllt sein müssen: ordnungsgemäßes Konfigurations-, Änderungs- und Versionsmanagement, kontextübergreifende Rückverfolgbarkeit, Lebenszyklusunterstützung für Systemelemente, Baselining und mehr.

Um auf das ursprüngliche Thema des Tages zurückzukommen: Ich muss noch ein RM-Tool sehen, das nicht nur die Managementaspekte unterstützt, sondern auch die technischen Aspekte. Wie z.B. die Quantifizierung von Anforderungen mit Tags und Qualifizierern nach Gilb; die Beziehung zwischen Funktionen und Funktionseigenschaften (auch um die veraltete Trennung von funktionalen und nicht-funktionalen Anforderungen aufzuheben); wie man eigenschaftsspezifische Anforderungen schreibt; Unterstützung bei der Sicherstellung der intrinsischen Qualität von Anforderungen (Funktionalität, die von Tools wie QVScribe bereitgestellt wird); einfacher Vergleich des Systems, wie es benötigt wird, des Systems, wie es entworfen wurde und des Systems, wie es getestet wurde. Eine Anforderung ist mehr als nur eine textuelle Beschreibung.

In der Kolumne über Rückverfolgbarkeit habe ich erwähnt, dass Anforderungs-Tools bei der Beantwortung der Frage helfen können: Warum gibt es diese Anforderung und warum hat sie diesen Wert? Das PLM-Tooling kann bei der Beantwortung von Fragen helfen wie: „Wenn dieses Element im Feld ausfällt, kann mir das Tooling helfen, die Systemfunktion(en) zu finden, die von diesem ausgefallenen Element betroffen sind?