Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03492.jsonl.gz/643

Kennen Sie die häufigsten Tücken bei der Codegenerierung? Dieser Artikel hilft Ihnen, die 10 häufigsten Fehler bei der Codegenerierung zu vermeiden. Der Artikel wurde erstellt für:
Ein Codegenerator erzeugt den Quellcode einer Programmiersprache aus einer abstrakten Beschreibungssprache (z.B. einem Modell). Die IMT setzt die automatische Codegenerierung bereits seit vielen Jahren ein. Da die IMT zunehmend in der Entwicklung von Medizintechnik tätig ist, müssen viele der Projekte hohe sicherheitskritische Anforderungen erfüllen. Der Prozess zur Erstellung hochintegrierter Systeme mit automatischer Codegenerierung wurde im Laufe der Jahre optimiert und zum Abschluss gebracht. Dennoch sind auch bei der Codegenerierung und Modellierung Fehler nicht ausgeschlossen. Deshalb haben wir für Sie die 10 grössten Fallstricke zusammengefasst, die Sie unbedingt beachten sollten.
Wenn die Beschreibungssprache (oder Modellierungssprache) universell gehalten wird, kann sie dazu verleiten, jedes erdenkliche Problem damit lösen zu wollen. Beispielsweise ist es nicht empfehlenswert, eine zustandsorientierte Logik mit einem flowbasierten Ansatz zu implementieren oder umgekehrt. Daher ist es wichtig, dass die Möglichkeiten und Stärken der Beschreibungssprache für die Softwarearchitektur berücksichtigt werden und die Codegenerierung nur dort eingesetzt wird, wo es wirklich sinnvoll ist.
Gerade bei grossen generierten Applikationen ist es zwingend notwendig, eine geeignete und gut strukturierte Modellarchitektur zu haben, die für zukünftige Änderungen ausgelegt ist. Dies ist keine leichte Aufgabe und wird oft unterschätzt, denn eine umfassende Modellarchitektur mit Tausenden von Elementen erfordert viele Jahre Erfahrung. Das ist die Herausforderung: Ausgebildete Softwarearchitekten müssen mit der Modellierungssprache vertraut sein, oder die Modellierungsexperten sollten die Kunst des Entwurfs einer Softwarearchitektur erlernen.
Es ist zweifelhaft, dass die Modellierung einschliesslich der Software-Code-Generierung keine Kenntnisse im Software-Engineering erfordert. Die Erstellung von Modellen erfordert die Kenntnis und Anwendung bestimmter Grundprinzipien. Prinzipien wie Strenge, Strukturierung, Abstraktion, Lokalität/Privatheit und die Annahme der Notwendigkeit von Änderungen. Die gute Nachricht ist jedoch, dass diese Fähigkeiten erlernt werden können. Aber Vorsicht, eine zu grosse Verliebtheit in das Software-Engineering kann zu einem weiteren Fallstrick führen: exzessives Scripting.
Einige Modellierungssprachen erlauben die Verwendung von Skripten. Simulink ermöglicht beispielsweise die Integration von m-script oder, im Rahmen von Stateflow®, die Verwendung von C-Syntax. Je nach persönlichen Vorlieben kann dies zu einem exzessiven Gebrauch der Skriptsprache führen, auch wenn eine Beschreibung in der Modellierungssprache sinnvoll wäre. Das Problem dabei ist, dass Sie einige Vorteile der Codegenerierung verlieren: Lesbarkeit, Wartbarkeit und inhärente Sicherheit, die durch die Syntax der Modellierungssprache gegeben ist.
Aufgrund der grafischen Darstellung einiger Modellierungssprachen sind hierarchisch tiefe Strukturen und Abhängigkeiten leicht zu handhaben. Daher ist die Belastung durch zyklomatische Komplexität im Vergleich zu handgeschriebenem Code, der zu grossen und komplexen Modellen führen kann, viel geringer. Zu komplexe Modelle haben jedoch Nachteile in Bezug auf Testbarkeit, Wiederverwendbarkeit und Rückverfolgbarkeit. Darüber hinaus führen solche Modelle auch zu einer längeren Simulations-, Codegenerierungs- und Kompilierungszeit des generierten Codes. Unter diesem Gesichtspunkt ist das Denken in „funktionalen Einheiten“ für die Modellierung von entscheidender Bedeutung (so wie es auch für handgeschriebenen Code wichtig ist).
Im besten Fall werden Änderungen innerhalb des Modells und nicht im generierten Code vorgenommen. Wenn der Codegenerator die Rückführung von Änderungen nicht unterstützt, ist das nicht der beste Fall, sondern ein Muss. Sie müssen sicherstellen, dass die Schnittstellen zwischen dem generierten und dem handgeschriebenen Code klar definiert sind, um den generierten Code als separate Einheit oder Abschnitt zu behandeln. Einige der Codegeneratoren enthalten Kommentare wie /*Dieser Abschnitt darf nicht geändert werden*/ im generierten Code. Bitte beachten Sie diese.
Es scheint naheliegend, Richtlinien für handschriftlichen Code zu haben. Jedoch, für einige Personen, die zu einem Code-Generator wechseln, scheint dies wie eine gute Gelegenheit, auf diesen Unsinn zu verzichten. Aber fast jeder weiss, dass Richtlinien nicht da sind, um Ihnen das Leben schwerer zu machen. Meistens machen sie Sinn und helfen, Ihre Modelle lesbarer, wartbarer und in einigen Fällen auch zuverlässiger zu machen. Wenn Ihre Teamkollegen sich gegen Leitlinien sträuben: nennen Sie sie einfach beste Praktiken. Auf jeden Fall ist es am besten, Richtlinien in einem Team als gemeinsame Arbeit zu entwickeln. Und bitte übertreiben Sie es nicht, denn Richtlinien (insbesondere Modellierungsrichtlinien) sollten keine Gesetze sein, die bei Nichtbeachtung zu Konsequenzen führen können. Seien Sie also geduldig und nicht zu verfänglich.
Wenn die Codegenerierung in einem regulierten Umfeld eingesetzt wird, sollten Sie sicherstellen, dass die entsprechenden Anforderungen bereits in einem frühen Stadium und nicht erst nach der Implementierung berücksichtigt werden. Im Bereich der Medizinprodukte fordert die ISO13485, dass ein Codegenerator, der in den Entwicklungsprozess eingebunden ist, validiert werden muss. Besonders bei grossen und komplexen Codegeneratoren klingt das nach viel Arbeit. Wenn jedoch die Qualität des generierten Codes sichergestellt ist (z. B. durch Testen des generierten Codes), ist eine umfangreiche Validierung des Codegenerators nicht unbedingt erforderlich, da die ISO13485-Norm eine risikobasierte Bewertung ermöglicht.
Wenn der generierte Code in einem Medizinprodukt verwendet wird, unterliegt er ausserdem der IEC 62304. Eine erfolgreiche Strategie, um IEC 62304-konform zu sein, besteht darin, den generierten Code fast genauso zu behandeln wie handgeschriebenen Code. Einige der folgenden Massnahmen können jedoch überflüssig sein:
Es gibt Codegeneratoren, die den Benutzer nicht mit der Wahl expliziter Datentypen belästigen wollen. Was gut gemeint ist, entpuppt sich in der Praxis als unangenehme Automatismen, die zum Verlust der Kontrolle über den Code führen können. Daher ist es sinnvoll, dass, wenn die Datentypen im Modell explizit angegeben sind und es sich um unerwünschte, bzw. automatisch gewählte Datentypen handelt, diese im Modell bzw. im generierten Code überprüft werden. Dies vermeidet:
Allerdings ist eine gewisse Kenntnis der Datentypen erforderlich (siehe 3. Missachtung der Grundsätze der Softwaretechnik).
Wenn Codegeneratoren richtig eingesetzt werden, ist das eine wunderbare Sache. Es wäre also der grösste Fehler, aufgrund von Vorurteilen auf den Einsatz von Codegeneratoren zu verzichten. Wenn Sie auf den Einsatz von Codegeneratoren verzichten, entgehen Ihnen möglicherweise viele Vorteile:
Codegeneratoren können Geräte schneller auf den Markt bringen, die Wartung vereinfachen, die Erfüllung gesetzlicher Anforderungen unterstützen und gelten als zukunftssicher. Dennoch gibt es beim Einsatz von Codegeneratoren einige Fallstricke. Eine Einführung muss sorgfältig geplant werden, und die Entwicklungsprozesse sollten möglicherweise verfeinert oder geändert werden.
Hinterlassen Sie hier Ihre E-Mail-Adresse und wir informieren Sie, sobald wir neue Beiträge veröffentlichen.