Skip to main content
Erschienen in:
Buchtitelbild

Open Access 2022 | OriginalPaper | Buchkapitel

2. Grundlagen

Aktivieren Sie unsere intelligente Suche, um passende Fachinhalte oder Patente zu finden.

search-config
loading …

Zusammenfassung

Im folgenden Kapitel werden die zum Verständnis dieser Arbeit benötigten Grundlagen aus den Bereichen der SoC-Entwicklung und der Modellierung behandelt.
Im folgenden Kapitel werden die zum Verständnis dieser Arbeit benötigten Grundlagen aus den Bereichen der SoC-Entwicklung und der Modellierung behandelt. Als Teil dessen, erfolgt darüber hinaus eine Definition der in dieser Arbeit verwendeten Begriffe. Zu Beginn wird in Abschnitt 2.1 auf die Besonderheiten der Automobilindustrie sowie auf die Auswirkungen, die diese auf die SoC-Entwicklung haben, eingegangen. In dem darauffolgenden Abschnitt 2.2 werden Grundlagen und Begrifflichkeiten Eingebetteter Systeme sowie SoCs behandelt, um anschließend in Abschnitt 2.3 auf die Phasen der SoC-Entwicklung näher einzugehen. Abschnitt 2.4 behandelt auf Grundlage einer Mehrfachfallstudie aktuelle Defizite im Bereich des Anforderungsmanagements und der Kommunikation in der Automobilbranche. Grundlagen und Modellierungssprachen der modellbasierten Systementwicklung werden in Abschnitt 2.5 beschrieben, bevor Abschnitt 2.6 auf relevante Themen der SoC-Entwicklungsmethodik eingeht. Zum Ende des Kapitels folgt in Abschnitt 2.6.8 eine Beschreibung des Ansatzes des modellgetriebenen Systementwurfs.

2.1 Automobilindustrie im Wandel

In den Anfängen der Automobilindustrie fertigten die Automobilhersteller, genannt „Original Equipment Manufacturer“ (OEM, synonym zu Fahrzeughersteller), ihre Automobile zu großen Teilen noch selbst. Doch durch die stetig steigende Komplexität waren die Automobilhersteller gezwungen, Kooperationen mit sogenannten Zulieferern einzugehen und Technologieführerschaften abzugeben. Hierdurch wurden aus den Automobilherstellern über die Jahre Koordinatoren einer Vielzahl an Zulieferern. Dennoch behielten die OEMs eine hohe Marktmacht und so prägt besonders die Automobilindustrie heute die Pyramidenstruktur der Zulieferkette, wie in Abbildung 2.1 dargestellt [3].
An der Spitze der Pyramide stehen die OEMs. Diese entwickeln, produzieren und vermarkten das Auto als Gesamtsystem. Dabei liegt ein Schwerpunkt der heutigen Produktion durch die OEMs in der Kombination selbst produzierter oder von Zulieferern bezogener Teilsysteme und Komponenten. An zweiter Stelle der Zuliefererpyramide stehen die Tier1 (abgeleitet vom Englischen tier, Schicht). Diese entwickeln und liefern komplexe Teilsysteme, wie zum Beispiel Fahrassistenzsysteme, und verfügen in ihrem Bereich meist über eine Technologieführerschaft. Tier1-Zulieferer wiederum fertigen die entwickelten Teilsysteme vollständig selbst oder kombinieren sie aus Komponenten, welche sie wiederum von Tier2-Zulieferern beziehen. Am Sockel der Pyramide steht Tier3, welcher einzelne Komponenten sowie Ersatzteile herstellt. Der Anteil der Wertschöpfung sinkt von der Spitze der Pyramide zum Sockel hin. Jedoch führen aktuelle Trends in der Automobilindustrie zu einer Verschiebung der Wertschöpfungsanteile und damit zur Verschiebung der Marktmacht hin zu den Zulieferern [4].
So entwickelt sich das Automobil immer mehr vom reinen Nutzwert als Beförderungsmittel zum Erlebniswert. Heute beinhalten Fahrzeuge vollvernetzte Entertainment- sowie Infotainmentsysteme und unterstützen zudem den Fahrer im Straßenverkehr mittels einer Vielzahl an Assistenzsystemen. Durch die damit einhergehende Digitalisierung verlagern sich die Innovationskraft, die Gewinnprognosen und damit auch die Marktmacht immer stärker weg von traditionellen Geschäftsbereichen und hin zu Geschäftsbereichen wie digitale Dienstleistungen (Digital services) und Software, wie in Abbildung 2.2 veranschaulicht [5].
Das hier gezeigte Diagramm illustriert den Gewinn und unterteilt diesen dabei in fünf Geschäftsbereiche: Fahrzeugabsatz, Aftermarketing, Zulieferer neuer Technologien und Software, Zulieferer traditioneller Technologien und Hardware, Digital services. Die hier nicht abgebildeten Gewinne verteilen sich vorrangig auf Versicherungen und Finanzierungen. In Hellblau sind die Gewinnzahlen der weltweiten Automobilhersteller im Jahr 2015 dargestellt. Wie zu sehen, liegt der Hauptanteil von 41 % im Geschäftsbereich Fahrzeugabsatz, während der Bereich Aftermarket bei 16 % und der Gewinn der Zulieferer traditioneller Technologien bei 14 % liegt. Die Bereiche Zulieferer neuer Technologien und Digital services lagen im Jahr 2015 noch bei etwa 0 %. Die in Dunkelblau dargestellte Prognose der Firma GP Bullhound für das Jahr 2030 zeigt klar den aktuellen und zukünftigen Trend in der Automobilindustrie. So sinkt die Prognose für den Gewinn durch Fahrzeugabsatz, Aftermarket und Zulieferer traditioneller Technologien um insgesamt 21 % und verschiebt sich hin zum Bereich der Zulieferer neuer Technologien und Digital services. Aufgrund der aktuellen Neukonfiguration der Automobilbranche und der damit gezeigten Verschiebung der Wertschöpfungsanteile wächst der Druck auf allen Ebenen der Zuliefererpyramide, sich an die fortschreitenden Veränderungen anzupassen.
Parallel dazu stellt sich heute in vielen der großen Absatzmärkte der Vergangenheit eine Sättigung des Automobilmarktes ein. Dabei dient die Anzahl der Pkws pro 1.000 Einwohner, genannt Pkw-Dichte, als ein wichtiger Indikator für die Sättigung [7]. Abbildung 2.3 vergleicht die Pkw-Dichte der Eurozone, Japans, Chinas und Indiens im Jahr 2015.
Sowohl in der Eurozone als auch in Japan kommen auf 1.000 Einwohner knapp 500 Pkws. Das bedeutet, jede zweite Person über 18 Jahre besitzt im Schnitt ein Auto. Hierbei spricht man vom Eintreten einer Sättigung. Vergleicht man hierzu die Dichte von China mit 73 Pkws und Indien mit lediglich 22 Pkws pro 1.000 Einwohner, wird schnell das Potenzial solcher Märkte deutlich. Dementgegen steigt in den gesättigten Ländern die Wettbewerbsintensität, da Marktanteile im Wesentlichen nur noch durch Verdrängung anderer Konkurrenten gewonnen werden können [7].
Um sich in diesem Wettbewerb dennoch behaupten zu können und den steigenden Kundenanforderungen gerecht zu werden, setzen viele Hersteller auf die Erweiterung des Modell- und Variantenangebots. Ein Beispiel hierfür ist die Modellportfolioerweiterung von Mercedes-Benz zwischen den Jahren 1990 und 2009 von 5 auf 16 verschiedene Klassen bzw. Baureihen, von denen es jeweils mehrere Varianten gibt [9]. Hinzu kommen – im Zeitraum zwischen der Entwicklung neuer Generationen – regelmäßige „Faceliftings“ (Modellpflege) der Pkw-Modelle. Um diese hohe Angebotsvielzahl zu ermöglichen und weiterhin wettbewerbsfähig zu bleiben, müssen die Entwicklungszeiten der Modelle reduziert werden. Dies hat wiederum zwei Effekte auf die Zuliefererpyramide: Zum einen sind die OEMs gezwungen, die Entwicklung der Teilsysteme und Komponenten verstärkt auf die Zulieferer zu verlagern, um so Kosten und Zeitaufwand reduzieren zu können, und zum anderen verlagert sich der Zeitdruck durch eine strenge terminliche Zielsetzung der OEMs gleichermaßen auf die Zulieferer [10]. Somit sehen sich auch die SoC-Entwickler der Herausforderung gegenüber, die Entwicklungszeiten trotz steigender Komplexität der SoCs weiter zu verringern, um auch in Zukunft konkurrenzfähig zu bleiben [9].

2.2 Eingebettete Systeme

Spätestens seit der Digitalisierung und Vernetzung unseres urbanen Lebensraums sind Eingebettete Systeme nicht immer sichtbarer, jedoch oftmals funktionsrelevanter Bestandteil unseres Alltags. Unter Eingebetteten Systemen versteht man elektronische Rechensysteme, welche als integraler Bestandteil eines übergeordneten Systems eine vordefinierte Aufgabe erfüllen. Dabei erfüllen Eingebettete Systeme eine große Bandbreite von Funktionen und werden in nahezu jedem Wirtschaftszweig und Bereich unseres Lebens eingesetzt. Beispiele für Einsatzmöglichkeiten aus dem Automobilbereich sind:
  • Temperatur- und Klimaregelung
  • Fahrassistenzsysteme (z. B. Einparkhilfe, Verkehrszeichenerkennung)
  • Fahrsicherheitssysteme (z. B. Antiblockiersystem, Notbremssystem)
  • Multimediasysteme
  • Navigationssysteme
  • Automatisiertes Fahren
Eingebettete Systeme lassen sich nach Schaltkreistechnologie und der damit verbundenen Konfigurierbarkeit unterteilen. Dabei gibt es die Oberkategorien der herstellerkonfigurierten und der anwenderkonfigurierbaren Schaltkreise. Es gibt pro Oberkategorie je zwei Arten von Schaltkreisen:
  • Wiederprogrammierbare Schaltkreise, wie beispielsweise Field Programmable Gate Arrays (FPGAs), lassen sich beliebig oft neu programmieren bzw. rekonfigurieren und somit an die jeweilige Anwendung anpassen.
  • Einmalprogrammierbare Schaltkreise lassen sich einmal zu Beginn durch den Kunden konfigurieren. Dazu werden je nach Verfahren durch Programmierspannung/-strom die vorhandenen Isolationen bzw. Verbindungen zwischen den Logikgattern irreversibel manipuliert.
  • Teilweise kundenspezifische Schaltkreise werden mittels vorgefertigter Masken durch den Hersteller konfiguriert. Die Zusammensetzung der Blöcke in der Makrozelle geschieht dabei nach Wunsch des Kunden; die Blöcke selbst sind durch den Hersteller definiert.
  • Vollkundenspezifische Schaltkreise werden genau nach den Anforderungen des Kunden und in der Regel anwendungsspezifisch konfiguriert.
Die verschiedenen Schaltkreistechnologien haben einen direkten Einfluss auf die technischen Eigenschaften des Eingebetteten Systems und damit auf die benötigten Zeit- und Kostenaufwände in der Entwicklung. Da der Fokus dieser Arbeit auf der Entwicklung von SoCs liegt, soll in der nachfolgenden Tabelle 2.1 die Auswirkung der Schaltkreistechnologie anhand des Vergleichs zwischen SoC als Beispiel eines vollkundenspezifischen Schaltkreises und FPGA als Beispiel eines wiederprogrammierbaren Schaltkreises dargestellt werden. Hierbei handelt es sich um einen ungefähr qualitativen Vergleich [11].
Tabelle 2.1
Vergleich SoC FPGA [11, p. 25]
 
Kundenspezifischer
SoC
FPGA
Chip-Fläche
sehr klein
sehr groß
Anzahl Transistoren
sehr hoch
hoch bis sehr hoch
Taktrate
sehr hoch
mittel bis hoch
Entwicklungszeit
sehr lang
kurz
Kosten für Prototypen
sehr hoch
sehr niedrig
Stückkosten bei hoher Stückzahl
sehr niedrig
sehr hoch
Wie in der Tabelle 2.1 dargestellt, sind die Eigenschaften von kundenspezifischem SoC und FPGA über die Konfigurierbarkeit hinaus sehr verschieden. Während bei FPGAs die Konfigurierbarkeit durch den Kunden im Vordergrund steht, wird bei der Entwicklung von kundenspezifischen SoCs versucht, das Optimum für eine spezifische Anwendung und meist einen einzelnen Kunden zu erreichen. FPGAs bieten mittlere bis hohe Taktraten und verfügen über eine vergleichbare Anzahl an Transistoren, jedoch werden durch die Inkaufnahme großer Chipflächen deutlich schnellere Entwicklungszeiten und geringere Kosten in der Entwicklung ermöglicht.
Dagegen kann in der SoC-Entwicklung – trotz einer sehr hohen Anzahl an Transistoren von bis zu 109 – eine sehr kleine Chipfläche erreicht werden. Um dies zu ermöglichen, wird jeder kundenspezifische SoC bis runter zur Transistor-Ebene in seinem Platzbedarf optimiert. Die Transistor-Ebene steht für die unterste Abstraktionsebene des SoCs und wird in Abschnitt 2.6.2 näher beschrieben. Dies ist neben der hohen Komplexität und den hohen Anforderungen an die Performance (Leistungsfähigkeit) von SoCs ein Grund für die langen Entwicklungszeiten von im Schnitt fünf bis zehn Jahren. Die Entwicklung von kundenspezifischen SoCs lohnt sich daher erst ab einer Stückzahl von etwa 106, da sich hierbei die kleine Chipfläche positiv auf den Preis pro Stück auswirkt. Bei Stückzahlen über 106 sind die Stückkosten damit sehr gering, bei den FPGAs dementgegen sehr hoch [11] [12, pp. 659–665].
Neben der Chipgröße werden weitere nichtfunktionale Anforderungen an den SoC gestellt, welche seitens SoC-Entwicklung erfüllt werden müssen. Wichtige Beispiele hierbei sind:
  • Die Zuverlässigkeit des SoCs ist besonders in der Anwendung in Kraftfahrzeugen entscheidend, da hier der Schutz von Menschenleben von der korrekten Funktionalität des SoCs abhängt.
  • Die hohe Anzahl an SoCs in tragbaren Systemen und in Kraftfahrzeugen erfordert einen möglichst minimalen Energiebedarf.
  • Das Echtzeitverhalten von SoCs im Automobilbereich ist in vielen Fällen – vergleichbar der Zuverlässigkeit – entscheidend für den Schutz von Menschenleben. Als Beispiel lässt sich hier das Antiblockiersystem (ABS) nennen. Die Reaktion des Systems in Echtzeit kann hierbei oftmals Schlimmeres verhindern.
  • Die Manipulationssicherheit ist wie in allen Systemen, welche eine Interaktion mit der Anwenderin oder dem Anwender bieten, entscheidend. Ein Beispiel aus dem Bereich der Kraftfahrzeuge ist die Sicherheit gegen Manipulationen von Funkschlüsseln und Funkschlössern.
Die hier genannten Anforderungen sind lediglich ein exemplarischer Ausschnitt und variieren je nach Anwendungsfall in ihrer Priorisierung. Neben der Erfüllung der nichtfunktionalen Anforderungen müssen Automotive-SoC-Projekte in der Regel die Sicherheitsanforderungen nach der ASIL-Klassifikation erfüllen. Bei ASIL (Automotive Safety Integrity Level) handelt es sich um ein Risikoklassifizierungssystem, das durch die Norm ISO 26262 für die funktionale Sicherheit von Straßenfahrzeugen definiert ist [13]. Dabei wird eine Einstufung nach bestimmten Parametern in die Stufen ASIL-A bis ASIL-D vorgenommen. Durch die steigende Interaktion der Teilsysteme und Funktionen im Automobil werden immer mehr elektronische Systeme als sicherheitsrelevant eingestuft und müssen somit nach dem Sicherheitsstandard ISO 26262 entwickelt werden. Die Einstufung stellt dabei auch die Automotive-SoC-Entwicklung vor weitere Herausforderungen [14, pp. 28–31].
Aufgrund des Fokus dieser Arbeit auf den Bereich der SoCs soll im nachfolgenden Abschnitt näher auf die typischen Teilsysteme und die Architektur eines SoCs eingegangen werden.
SoC-Architektur
Bei SoCs ist das gesamte System auf einem Chip realisiert. Daher beinhaltet der SoC in der Regel, zusätzlich zu den funktionalen Baugruppen, einen oder mehrere Mikroprozessoren. Die zu den Mikroprozessoren gehörenden Programme werden dazu auf einem Read-only-Memory (ROM) gespeichert. Abbildung 2.4 stellt eine typische Architektur eines SoCs als abstrahiertes Blockschaltbild dar.
Die in der Abbildung 2.4 blau dargestellten Komponenten stellen das Mikrocontrollersubsystem des SoCs dar. In der Regel besteht dies aus dem General Purpose Prozessor (GPP), einem RAM und einem ROM. Diese sind über den CoreBus miteinander verbunden. Die Komponenten zur Signalverarbeitung stellen ein weiteres Teilsystem dar und sind hier vereinfacht als Signal Path in Orange dargestellt. Auch hier werden die einzelnen Elemente später über den SignalBus verbunden. Die Schnittstellen nach außen werden in der Abbildung 2.4 abstrahiert als Interfaces in Gelb abgebildet. Sie stehen für die externen Schnittstellen des SoCs, wie zum Beispiel das Serial Peripheral Interface (SPI) oder das Controller Area Network (CAN). Die externen Schnittstellen werden über einen weiteren Bus, hier als PeripheralBus bezeichnet, verbunden. Die jeweiligen Teilsysteme werden über Busbrücken angeschlossen; diese übernehmen die Übersetzung der jeweils verwendeten Busprotokolle zueinander. Die Gesamtzahl der einzelnen Komponenten eines SoCs hängt dabei von den zu erfüllenden Aufgaben ab und ist in Art und Umfang sehr variabel [15].

2.3 SoC-Entwicklungs-Flow

Im folgenden Abschnitt wird der gesamte Zyklus von der Auftragserstellung bis hin zur Auslieferung des Produktes grundlegend behandelt. Dabei lassen sich übergeordnet in der Regel zwei Parteien definieren: der Auftraggeber, welcher den Entwicklungsprozess eines Produktes anstößt und seine Vorstellungen und Anforderungen an das Produkt im Lastenheft definiert, sowie der Auftragnehmer, welcher die Entwicklung eines Systems nach den gestellten Anforderungen zusichert. Der Auftragnehmer definiert meist in enger Abstimmung mit dem Auftraggeber das Pflichtenheft, in dem er beschreibt, wie er die Anforderungen des Kunden umsetzen wird. Dabei definiert er wiederum Anforderungen an das zu entwickelnde System, welche im Folgenden als Systemanforderungen bezeichnet werden. Da das Pflichtenheft in der Regel lediglich eine sehr abstrakte Beschreibung des zu entwickelten Systems enthält und damit nicht zur Realisierung des Systems ausreicht, kommen im Laufe der Entwicklung weitere detailliertere, spezifizierende Dokumente zum Einsatz. Diese Dokumente werden gemeinsam mit dem Lasten- und Pflichtenheft in dieser Arbeit als Spezifikationsdokumente bezeichnet. Die Definition der jeweiligen Spezifikationsdokumente und ihre Verwendung in den verschiedenen Phasen der SoC-Entwicklung wird im Nachfolgenden näher betrachtet. Angelehnt an das Modell nach Pahl/Beitz, welches vier Phasen für die Produktentwicklung definiert, sollen im Folgenden Phasen für die SoC-Entwicklung beschrieben werden [16] [14, pp. 34–35].

2.3.1 Planungsphase

Wie bereits erwähnt, beginnt die Entwicklung mit der Auftragserstellung durch den Auftraggeber, im Folgenden als Kunde bezeichnet. Dabei wird nach Lehrbuch das Lastenheft vom Kunden an den Auftragnehmer, im Folgenden als Entwickler bezeichnet, übergeben. Darin definiert der Kunde seine Vorstellungen über das zu entwickelnde System, definiert Anwendungsfälle, legt den technischen Kontext des Systems fest und definiert gegebenenfalls Soll- oder Grenzwerte. Die Analyse und adäquate Beschreibung dieser Informationen setzt jedoch ein gewisses Maß an Verständnis für die Technologie des zu entwickelnden Systems voraus. Daher findet bei der Entwicklung solch komplexer Systeme wie im Bereich der SoCs die Definition der Kundenanforderungen im Lastenheft oftmals bereits in Zusammenarbeit zwischen Kunde und Entwickler statt. Die genauen Inhalte des Lastenhefts sind in der DIN 69905 standardisiert. So sollte das Lastenheft neben den technischen Anforderungen auch qualitative und terminliche Anforderungen sowie auch Kostenanforderungen enthalten [14, p. 33] [16].
Auf Grundlage des Lastenheftes entwickelt der Auftragsnehmer bzw. Entwickler des Zielsystems das Pflichtenheft. Das Pflichtenheft dient zur Spezifikation des Systems, welches der Entwickler zu entwickeln gedenkt, um damit die Kundenanforderungen zu erfüllen. So können beispielsweise Performance-Eigenschaften, Toleranzbereiche und Grenzwerte zugesichert werden. Man spricht hierbei von Systemanforderungen. Nach allgemeiner Definition, wie in der DIN 69905, beschreibt das Pflichtenheft zudem, wie das System umgesetzt werden soll. Dies ist jedoch durch die hohe Komplexität in der SoC-Entwicklung zum Zeitpunkt der Pflichtenhefterstellung nur auf einer sehr abstrakten Ebene möglich. So werden die Funktionalitäten des Systems lediglich aus der Sicht des Kunden beschrieben. Zusätzlich zur Spezifikation des Systems dient das Pflichtenheft als Angebot an den Auftraggeber und bei Zustandekommen als Vertragsgrundlage für das Entwicklungsvorhaben. Dazu wird das Pflichtenheft zum Stand des Vertragsabschlusses in der Regel gemeinsam final geprüft und anschließend eingefroren [14, p. 33] [16].

2.3.2 Konzeptphase

Um Systemeigenschaften im Pflichtenheft zusichern zu können, erstellen die SoC-Architeken/-innentin parallel dazu ein erstes Konzept des Systems, nachfolgend als Systemkonzept bezeichnet. Das Systemkonzept besteht dabei meist aus einer formlosen Sammlung verschiedener Anforderungen, Tabellen, Notizen und Zeichnungen, die den SoC auf System-Ebene beschreibt. Aufgrund der formlosen Art des Systemkonzepts kann das Systemkonzept im aktuell bestehenden Entwicklungs-Flow nicht als offizielles Spezifikationsdokument gesehen werden. Die Entwicklung des Systemkonzeptes geht weit über die Definition des Pflichtenhefts hinaus und ist entscheidend für eine erfolgreiche Systementwicklung. So wird bereits hier eine Vielzahl an Entwurfsentscheidungen, oftmals auf Grundlage von Annahmen über das spätere System, getroffen. Dabei werden einzelne Module definiert und in die entsprechenden Domänen unterteilt. Die gesamte Entwicklung findet hierbei jedoch rein konzeptuell statt; es wird in der Regel nicht implementiert. Der Begriff des Moduls wird in dieser Arbeit für eine funktionale Einheit im SoC verwendet, die Komponente dagegen entspricht einem bestimmten Hardwarebauteil, wie beispielsweise einem bestimmten Typ eines Mikrocontrollers, welcher im SoC verbaut werden soll.
Da bei der Entwicklung des Systemkonzeptes weitere Systemanforderungen entstehen, welche über das bereits eingefrorene Pflichtenheft hinausgehen, werden diese in dem darauf aufbauenden Spezifikationsdokument, hier als Konzeptspezifikation bezeichnet, dokumentiert. Die zusätzliche Spezifikation des Systemkonzepts ist entscheidend für die spätere Entwurfsphase und die darauffolgende Verifikation des Systems.
Erreicht das Systemkonzept und damit die Konzeptspezifikation einen gewissen Reifegrad, wird dieser Stand eingefroren; die Konzeptphase endet und die Entwurfsphase beginnt [16].

2.3.3 Übergang Konzeptphase – Entwurfsphase

Der Übergang zwischen Konzeptphase und Entwurfsphase führt zu einem Wechsel der Arbeitsweise. In der Konzeptphase findet die Entwicklung des SoCs rein konzeptuell auf Basis des Systemkonzeptes statt und wird meist von einem kleinen Team aus SoC-Architekt/-innen entwickelt; es wird nichts implementiert. Die Entwicklung endet in dieser Phase normalerweise auf Systemebene des SoCs.
In der Entwurfsphase steht die Implementierung des SoCs und seiner Module im Fokus. Dabei werden die maßgeblich in der Konzeptphase entwickelten Modulanforderungen an die Modulentwickler/-innen übergeben. Diese arbeiten meist alleine oder in kleinen Teams an einem Modul. Eine Projektleiterin oder ein Projektleiter, im Bereich der SoC-Entwicklung in der Regel als SoC-Architekt/-in bezeichnet, übernimmt die Koordination der einzelnen Entwicklerteams.

2.3.4 Entwurfsphase

Die Konzeptspezifikation beinhaltet die Anforderungen an die Module, welche an die Modulentwickler/-innen zu Beginn der Entwurfsphase übergeben werden. Diese beginnen mit der Entwicklung und Implementierung der jeweiligen Module. Dabei findet erneut eine Dekomposition des Moduls in Submodule, Gatter und schließlich in Transistoren statt. Während dieses Prozesses treffen die Modulentwickler/-innen Entwurfsentscheidungen, woraus neue Systemanforderungen entstehen. Die Dokumentation der Systemanforderungen erfolgt während der Entwurfsphase in der Entwurfsspezifikation, welche auf der Konzeptspezifikation aufbaut. Die Entwurfsspezifikation sollte daher zu jedem Zeitpunkt der Entwurfsphase ein möglichst genaues Abbild des implementierten Entwurfs darstellen.
In dieser Phase arbeiten bis zu 60 Entwickler/-innen parallel an der Implementierung der einzelnen Module. Da diese Module jedoch am Ende erfolgreich als Gesamtsystem interagieren müssen, ist es entscheidend, dass jeder Modulentwickler und jede Modulentwicklerin über den Systemkontext seines Moduls Bescheid weiß. Dazu dient in erster Linie das Systemkonzept. Da sich dieses jedoch in der Entwurfsphase ebenfalls weiterentwickelt, ist die Entwurfsspezifikation wichtigste Grundlage für einen Wissenstransfer zwischen den einzelnen Modulentwicklern/-innen. Die Koordination der einzelnen Entwicklungsarbeiten übernehmen die SoC-Architekten/-innen [16].
Da sich die Entwicklungszeit eines SoCs zwischen fünf und zehn Jahren bewegt und ein Großteil dieser Zeit der Entwurfsphase entspricht, ist es entscheidend, die Vollständigkeit und Richtigkeit der Entwurfsspezifikation neben dem Entwurf zu prüfen. Die dazu verwendeten Methoden werden in Abschnitt 2.3.5 beschrieben.

2.3.5 Simulation, Validation, Verifikation

Die Sicherstellung der Korrektheit und Vollständigkeit sowohl von Spezifikation als auch von Entwurf ist integraler Bestandteil der Entwicklung. Um dies zu ermöglichen, stehen unterschiedliche methodische Ansätze zur Verfügung, welche im Folgenden dargelegt werden.
Simulation
In der Simulation wird in der Regel durch das Simulieren definierter Szenarien die Abwesenheit von Fehlern überprüft. So lassen sich die wichtigsten Funktionalitäten eines Systems weitestgehend auf Fehlerfreiheit prüfen. Die Korrektheit des implementierten Entwurfs lässt sich hingegen durch die Simulation nicht garantieren, da lediglich eine begrenzte Zahl an Eingabefällen überprüft werden kann [17, pp. 295–296].
Validation
Die Validation ist in weiten Teilen Bestandteil des beschriebenen Reviews zwischen den Entwicklungsphasen. Sie dient zur Überprüfung der Spezifikation auf Vollständigkeit, Fehlerfreiheit, Konsistenz und Eindeutigkeit und prüft dabei, ob das Spezifikationsdokument der jeweiligen Phase den Kundenanforderungen entspricht. Bei der Validation können somit Spezifikationsfehler aufgedeckt werden. Dies ist entscheidend für die Verifikation [18].
Verifikation
Die Verifikation prüft, ob das Verhalten des Entwurfs der Spezifikation entspricht. Ist die Spezifikation nicht vollständig, können diese Bereiche nicht geprüft werden. Dadurch sind Fehler möglich, die meist erst in der Produktion oder beim Kunden entdeckt werden. Formale Verifikation meint die vollständige Verifikation des Systems, was sehr aufwendig und bei komplexen Systemen wie SoCs nur schwer umsetzbar ist [18].
Aufgrund der hohen Relevanz der Verifikation und Validierung für die vorliegende Arbeit und für die SoC-Entwicklung selbst werden die Verifikation und die Validierung in Abschnitt 2.6.8 ausführlich behandelt.

2.3.6 Abschluss SoC-Entwurf

Am Ende des Entwicklungs-Flows wird das System bzw. in diesem Fall der SoC erst an die Produktion und anschließend an den Kunden übergeben. Um das Produkt einsetzen zu können, benötigt der Kunde eine ausführliche Dokumentation, hier als technische Kundendokumentation bezeichnet. Diese stellt eine Teilmenge der Entwurfsspezifikation dar. Darin sollten dem Kunden alle Informationen, die später die Applikationsingenieure/-innen beispielsweise zur Interaktion mit dem System benötigen, zu Verfügung gestellt werden, ohne dabei jedoch zu viel Wissen über das System preiszugeben. Darüber hinaus enthält die technische Kundendokumentation oftmals Empfehlungen und Einschränkungen, wie das System zu benutzen ist, um kein unerwartetes Verhalten zu provozieren. Damit kann die falsche Verwendung seitens des Kunden vermieden werden und der Entwickler bzw. Zulieferer sichert sich im Falle einer nicht vorhergesehenen Verwendung rechtlich ab.

2.3.7 Übersicht SoC-Entwicklungs-Flow

Bei den jeweiligen Spezifikationsdokumenten handelt es sich nicht um unabhängige Dokumente, sondern meist um eine Weiterentwicklung des Spezifikationsdokuments der vorangegangenen Phase, wie in Abbildung 2.5 veranschaulicht. Die namentliche Trennung der Spezifikationsdokumente dient in dieser Arbeit der Zuordnung der Spezifikationsdokumente zur jeweiligen Phase.
Die blau dargestellten Blöcke entsprechen den Spezifikationsdokumenten sowie der technischen Kundendokumentation. Die grauen Blöcke auf der rechten Seite des Entwicklungs-Flows den daraus entstehenden bzw. verlinkten Anteilen, welche jedoch nicht Teil der Spezifikation selbst sind. Die weißen Pfeile stehen für die weitestgehend manuellen Übergänge zwischen den Spezifikationsdokumenten selbst sowie zwischen jeweiligem Spezifikationsdokument und dem Systemkonzept bzw. Systementwurf. Die Validierung der Spezifikationsdokumente findet in der Regel bei den Übergängen zwischen diesen statt.

2.4 Fallstudie Anforderungsmanagement

Aus den in Abschnitt 2.1 gezeigten Trends und Besonderheiten der Automobilindustrie resultieren Herausforderungen für das Anforderungsmanagement. Diese Herausforderungen sollen anhand der Ergebnisse behandelt werden, die in einer Mehrfachstudie [19] erzielt wurden. Hierbei wurden sowohl Mitarbeiter/-innen eines großen OEM als auch Mitarbeiter/-innen von Zuliefererbetrieben befragt, um Defizite in Hinblick auf Kommunikation und Anforderungsmanagement zu ermitteln. Dazu wurden drei Applikationsingenieure/-innen, drei Systemingenieure/-innen sowie acht Ingenieure/-innen aus dem Bereich der Eingebetteten Systeme befragt.
Produkt- und Systemkontextverständnis
Um Systemanforderungen adäquat analysieren und beschreiben zu können, benötigt man ein umfassendes Wissen aller beteiligten Domänen sowie des Systemkontextes. Aufgrund der hohen Komplexität der Systeme und dem hohen Zeitdruck in der Entwicklung ist dieses Wissen oftmals nicht vorhanden. Hinzu kommt die Besonderheit der Automobilbranche, dass OEMs bei ihren Zulieferern Systeme beauftragen, über deren Systemkontext und Verwendung zu diesem Zeitpunkt ein hohes Maß an Unklarheit besteht. So ergab die in [19] durchgeführte Befragung die in Abbildung 2.6 veranschaulichte Zustimmungsrate in Bezug auf mangelnde Kenntnisse über das Produkt in frühen Phasen.
In den Abbildungen 2.6, 2.7, 2.8, 2.9 und 2.10 wird die Zustimmungsrate der jeweiligen Berufsgruppen prozentual gegenübergestellt. Dabei werden die Ingenieure/-innen aus dem Bereich Eingebettete Systeme links im Diagramm in Blau, die Systemingenieure/-innen im mittleren Graphen in Orange und die Applikationsingenieure/-innen im rechten Graphen in Grau dargestellt.
Bei der Befragung gaben 75 % der Ingenieure/-innen im Bereich der Eingebetteten Systeme, 66,75 % der Systemingenieure/-innen und 33,3 % der Applikationsingenieure/-innen an, Schwierigkeiten bei der Spezifizierung von Anforderungen in frühen Phasen zu sehen, welche aus einem fehlenden Wissen über das Produkt resultieren. Es lässt sich somit im Mittel ein hohes Maß an Zustimmung über alle drei Berufsgruppen hinweg erkennen. Anders verhält es sich bei der Frage über ein fehlendes Wissen des Systemkontextes.
Hierbei sehen lediglich 37,5 % der befragten Ingenieure/-innen aus dem Bereich der Eingebetteten Systeme ein Fehlen von Wissen. Ein Grund für das fehlende Wissen über Systemkontext und Produkt seitens der Ingenieure/-innen aus dem Bereich der Eingebetteten Systeme liegt in der Pyramidenstruktur in der Automobilbranche und der resultierenden Marktmacht der OEMs gegenüber den Zulieferern. Über alle Hierarchieebenen hinweg besteht der Trend, Entwicklungsarbeiten an Zulieferer abzugeben, ohne dabei jedoch zu viel Informationen über das eigene Produkt preisgeben zu wollen. So schadet der Schutz der eigenen Innovationen dem Informationsfluss über die Zuliefererpyramide hinweg und somit oftmals der Qualität der Zusammenarbeit.
Umgekehrt fehlt dem Kunden als Anforderungssteller häufig Wissen über die Technologien der Zulieferer, um die Anforderungen eindeutig und adäquat beschreiben bzw. die Qualität der eigenen Anforderungen validieren zu können. Der lückenhafte Fluss der Informationen und das daraus resultierend fehlende Systemverständnis der beteiligten Geschäftsbereiche führt immer wieder zu Hindernissen bei der Kommunikation und der Zusammenarbeit.
Domänenübergreifende Zusammenarbeit
Nicht nur zwischen Kunden und Zulieferern kann es zu Fehlkommunikationen aufgrund unzureichender Spezifikation kommen. So arbeiten bei der Entwicklung heutiger Automotive SoCs in der Regel Entwickler/-innen aller Domänen eng zusammen. Um dies zu ermöglichen, ist ein hohes Maß an interdisziplinärem Verständnis gefragt. Abbildung 2.8 zeigt die in [19] erhaltene Zustimmungsrate zur Frage, ob die Ingenieure/-innen ein Fehlen dieses interdisziplinären Verständnisses sehen.
Dabei ist die Zustimmungsrate bei den Systemingenieuren/-innen besonders hoch. Aufgrund der hohen Komplexität der Systeme werden diese in Submodule und Domänen unterteilt und die Modulanforderungen an die jeweiligen Modulentwickler/-innen übergeben. Dabei fehlen oftmals ein interdisziplinäres Verständnis sowie Wissen über die Sprachen, Tools und Methoden der anderen Domänen und anderer Submodule, wodurch die Zusammenarbeit und die Kommunikation erschwert werden. Jedoch betreffen viele Modulanforderungen mehrere Domänen und Submodule gleichermaßen und so kann es durch ein fehlendes interdisziplinäres Verständnis zu Fehlinterpretationen der Anforderungen kommen.
Dokumentation der Anforderungen
Als drittes Thema sollen die in [19] identifizierten Defizite in der Dokumentation und Verwaltung von Anforderungen diskutiert werden. Dabei veranschaulicht Abbildung 2.9 sehr allgemein die Zustimmungsrate zur Frage, ob in den jeweiligen Bereichen unzureichende Ressourcen für das Verstehen und die Pflege von Anforderungen bestehen.
Dabei antworteten die Ingenieure/-innen des jeweiligen Bereichs einheitlich mit einer Zustimmungsrate von knapp unter einem Drittel mit „Ja“. Das Ergebnis der Befragung fällt somit geringer aus, als in Anbetracht der bestehenden Defizite im Anforderungsmanagement zu erwarten war. Es lässt sich somit der Schluss ziehen, dass die Defizite nicht etwa aufgrund von fehlenden Ressourcen entstehen, sondern auf Schwachstellen in den aktuell verwendeten Methoden und Werkzeugen zurückzuführen sind. Diese These wird durch die ermittelte Zustimmungsrate zur „Traceability“ (Nachverfolgbarkeit), wie in Abbildung 2.10 veranschaulicht, unterstützt. Bei dieser Befragung ging es um die Ermittlung, inwieweit Defizite in der Nachverfolgbarkeit der Anforderungen über Abstraktionsebenen hinweg bestehen.
Dabei stimmten 75,0 % der Ingenieure/-innen aus dem Bereich der Eingebetteten Systeme und 33,33 % der Systemingenieure/-innen einer unzureichenden „Traceability“ zu. Diese „Traceability“ steht für das In-Beziehung-Setzen der Anforderungen – von den Modul- bis hoch zu den Kundenanforderungen – und ist entscheidend, um den Modulentwicklern/-innen ein Verständnis über den Systemkontext und die übergeordneten Anforderungen zu vermitteln.

2.5 Modellbasierte Systementwicklung

Durch die steigende Komplexität von Hard- und Software heutiger Eingebetteter Systeme wird die Entwicklung solcher Produkte in interdisziplinären Teams zur Herausforderung. Entscheidende Faktoren für das Gelingen eines solchen Projektes sind hierbei die Fehlerfreiheit und Lesbarkeit der Spezifikation. Heutige Spezifikationen bestehen in der Regel aus Anforderungen, beschrieben mittels natürlicher Sprache sowie Schaubildern und Tabellen, welche direkt in die Spezifikation eingefügt werden. Diese Form der Spezifikation weist eine einfache Anwendbarkeit auf, da keine neuen Sprachen oder aufwendige Werkzeuge zur Beschreibung benötigt werden. Darüber hinaus jedoch weist die Spezifikation in natürlicher Sprache eine hohe Fehleranfälligkeit auf. Diese Fehleranfälligkeit resultiert aus der fehlenden Eindeutigkeit der natürlichen Sprache, den Defiziten bei der Überprüfbarkeit auf Vollständigkeit und Korrektheit sowie der unzureichenden oder nicht vorhandenen Formalisierung der Beschreibungsformen.
Ein Lösungsansatz, um diese Defizite in der Spezifikation zu minimieren oder zu beheben, ist die Anwendung der modellbasierten Systementwicklung. Hierbei erfolgen die Entwicklung und die Spezifikation von Systemen nicht mehr ausschließlich auf Basis von natürlicher Sprache, Tabellen und Schaubildern, sondern vorrangig mithilfe von Modellen. Unter einem Modell versteht man dabei eine abstrakte Repräsentation eines Systems oder eines Teils des Systems. Diese Definition soll jedoch im Kontext dieser Arbeit verfeinert werden. So bietet auch die Zeichnung eines Blockschaltbildes in einem Zeichentool eine abstrakte Repräsentation. Daher beinhaltet die Definition eines Modells für die hier vorliegende Arbeit die Verwendung einer standardisierten und maschinenlesbaren Modellierungssprache. Die Verwendung von grafischen Modellen ermöglicht durch die Visualisierung die schnellere Erfassung von Informationen und erlaubt zudem die Darstellung unterschiedlicher Sichtweisen auf das gleiche Modell. Eine Sicht auf einen Teil des Modells wird als Diagramm bezeichnet [20].
Zusätzlich zu den Vorteilen, welche aus der Visualisierung der Modelle entstehen, bieten modellbasierte Spezifikationen durch ihr maschinenlesbares Format die Möglichkeit der Simulation und der anschließenden Wiederverwendung der modellierten Informationen in Electronic Design Automation (EDA) Tools [21]. Für die Modellierung steht dabei eine große Anzahl verschiedener Modellierungssprachen zur Verfügung, wobei sich die hier vorliegende Arbeit aufgrund ihrer hohen Relevanz auf die objektorientierten Modellierungssprachen fokussiert. Nachfolgend werden daher die für diese Arbeit relevanten objektorientierten Modellierungssprachen behandelt.

2.5.1 UML

Die „Unified Modeling Language“ (UML) ist eine grafische objektorientierte Modellierungssprache und wurde ursprünglich für die Modellierung von Software entwickelt. Das Wort „Unified“ im Namen steht für die Verwendbarkeit der Modellierungssprache für die Beschreibung von Softwaresystemen jeglicher Geschäftsbereiche. Die Anpassbarkeit der Sprache wird erreicht, indem die Anwender/-innen eigene Typen, genannt Stereotypen, definieren und an die jeweilige Domäne anpassen können. Stereotypen dienen in der UML dazu, Modellelemente in ihren Eigenschaften und ihrer Semantik anzupassen.
Durch die Erweiterungen in der UML2 wuchsen die Einsatzmöglichkeiten der Modellierungssprache über die Domäne der Softwaresysteme hinaus. Die UML als weltweiter Industriestandard wird durch die Object Management Group (OMG) verwaltet und stetig weiterentwickelt [22, pp. 157–162] [23].
UML-Profil für MARTE
Für die Modellierung von Echtzeitsystemen und Eingebetteten Systemen kann die UML um ein MARTE-Profil erweitert werden. MARTE steht für „Modeling and Analysis of Real-Time and Embedded systems“. Profile sind neben den Stereotypen ein Erweiterungsmechanismus der UML. Ein Profil stellt in seiner Grundfunktion eine Menge aus Stereotypen dar. Durch Hinzufügen eines Profils können die enthaltenen Stereotypen auf die entsprechenden Modellelemente angewendet und dadurch angepasst werden. Darüber hinaus lassen sich beliebige Modellelemente und Diagramme in einem Profil hinterlegen. Das MARTE-Profil stellt eine gemeinsame Methode für die Modellierung der Hardware sowie auch der Software eines Eingebetteten Systems dar [24].

2.5.2 SysML

Die „Systems Modeling Language“ (SysML) entstand ehemals aus der in Abschnitt 2.5.1 beschriebenen UML und ist wie diese ein Industriestandard der OMG. Die SysML wurde entwickelt, um zusätzlich zur Software auch komplette Systeme zu modellieren, und kann damit bei allen System-Engineering-Anwendungen zum Einsatz kommen. Anfangs stellte die SysML lediglich eine Art Dialekt der UML dar, welche in vielen Fällen über vergleichbare Sprachmechanismen verfügt. Spätestens seit der Entwicklung der SysML 2.0 jedoch, wird sie meist als eigenständige Sprache betrachtet [22] [25]. So lässt sich in Abbildung 2.11 die Schnittmenge zwischen UML und SysML erkennen.
Zu erkennen ist der große Anteil der UML-Diagramme, welche identisch oder lediglich modifiziert in die SysML übernommen wurden. Oftmals wurde lediglich eine Verallgemeinerung der Bezeichnungen einzelner Diagramme und Elemente vorgenommen, um sich von dem Fokus der Softwareentwicklung zu lösen. Ein Beispiel ist die Umbenennung vom Klassen- ins Blockdiagramm und der Modellelemente Klassen in Blöcke. Diese verfügen im Grunde über die gleichen Eigenschaften; lediglich die Bezeichnung ermöglicht eine allgemeinere Verwendung. Die SysML stellt somit einen Werkzeugkasten aus Diagrammen und Modellelementen zur Verfügung. Darüber hinaus wurde jedoch keine Methodik standardisiert, wie die Diagramme zu verwenden sind. Diese fehlende Zuordnung von Diagrammen und Modellelementen zu einer spezifischen Bedeutung ermöglicht zum einen ein sehr breites Anwendungsfeld aufgrund der generischen Beschreibung, wird jedoch zum anderen dann zum Hindernis, wenn firmen-, team- und systemübergreifend gearbeitet werden soll. Ein mögliches Szenario wäre ein Modell einer Steuereinheit, welche in das übergeordnete Systemmodell des Fahrzeugs eingebunden werden soll. Hierbei müssen meist Modelle unterschiedlicher Entwicklungsteams zusammengesetzt werden, was sich ohne eine gemeinsame Modellierungsmethode nur mit erheblichem Aufwand realisieren lässt.
Im Nachfolgenden sollen die Diagramme der SysML und ihre übliche Verwendung behandelt werden. Die Abbildung 2.12 zeigt die enthaltenen Diagramme als Baumstruktur und veranschaulicht über die Farbgebung, welche Diagramme aus der UML2 übernommen, welche modifiziert und welche neu entwickelt wurden.
Die Diagramme lassen sich in drei Oberkategorien unterteilen: die Verhaltensdiagramme, die Strukturdiagramme und das Anforderungsdiagramm. Die grün hinterlegten Anteile stehen für die Diagramme, welche neu in der SysML hinzugefügt wurden. Die orangen Blöcke stehen für Diagramme, welche verglichen mit der UML verändert wurden und die blauen Diagramme sind identisch wie in der UML2.
Strukturdiagramme
  • Das Block Definition Diagram (BDD) wird in der Regel verwendet, um eine Dekomposition eines Systems bzw. einer Funktion abzubilden. Das heißt, es wird zum Beispiel dargestellt, aus welchen Komponenten und Unterkomponenten das System Auto, wie in Abbildung 2.13 dargestellt, besteht [22].
  • Das Internal Block Diagram (IBD) ermöglicht die Beschreibung einer Architektur jeder Art mit den enthaltenen Komponenten, Schnittstellen und Verbindungen [22] [25]. Abbildung 2.14 zeigt die Komponenten des Autos aus Abbildung 2.13 als IBD.
  • Das Package Diagram wird anders als die übrigen Diagramme nicht zur Beschreibung des Systems eingesetzt, sondern kommt bei der Strukturierung des Modells zum Einsatz. So kann im Modell eine Art Ordnerstruktur mittels Packages aufgebaut werden, wodurch zusätzlich die Navigation im Diagramm erleichtert werden kann. Neben der Strukturierung des Modells lassen sich Packages im Package Diagram in Beziehung setzen. Somit dient dieses Diagramm dazu, die Bedeutung des jeweiligen Package zu erläutern und den Anwendern/-innen eine Orientierung in komplexen Modellen zu erleichtern [22] [25]. Abbildung 2.15 dient als Beispiel eines Package Diagram.
  • Das Parametric Diagram stellt einen Diagrammtyp dar, welcher im Rahmen der SysML-Spezifikation definiert wurde. Es dient der Darstellung von mathematischen Beschreibungen und wertbedingten Einschränkungen, je nach Systemeigenschaften. Es wird oft zur Darstellung von analysebezogenen Aspekten und Rahmenbedingungen verwendet [22] [25]. Abbildung 2.16 zeigt als Beispiel eines Parametric Diagram den ConstraintBlock (Masse-Beziehung).
Anforderungsdiagramm
  • Das Requirement Diagram ist eine Besonderheit der SysML. Es soll eine Möglichkeit bieten, die bei der Systementwicklung sehr wichtigen Anforderungen in Beziehung zu setzen. Dabei kann es dazu dienen, die Beziehungen zwischen Anforderungen darzustellen oder die Anforderungen mit Modellelementen anderer Diagramme in Beziehung zu setzen, wie in Abbildung 2.17 veranschaulicht [22] [25].
Verhaltensdiagramme
  • Das Activity Diagram dient zur Beschreibung des Systemverhaltens, wobei der Fokus dieses Diagramms auf der Modellierung von Daten- und Kontrollfluss liegt. Es wird in der Systementwicklung meist für die Abbildung des Verhaltens einer einzelnen Komponente oder Funktion benutzt [22] [25]. Abbildung 2.18 zeigt ein Beispiel für ein Activity Diagram.
  • Das State Machine Diagram dient, wie in Abbildung 2.19 dargestellt, zur Modellierung von Zuständen und deren Übergängen eines Systems. Das State Machine Diagram kann zur Modellierung jedes beliebigen Systems genutzt werden, da alle Systeme über Zustände und Zustandsübergänge verfügen [22] [25].
  • Das Sequence Diagram bildet ebenfalls das Verhalten eines Systems als Ablauf ab, konzentriert sich hierbei jedoch sehr stark auf die Kommunikation und den Datenfluss zwischen einzelnen Komponenten im System, wie in Abbildung 2.20 veranschaulicht [22] [25].
  • Das Use Case Diagram ist in der Gruppe der Verhaltensbeschreibung für sich zu sehen. So geht es weniger darum, ein Verhalten zu modellieren, als vielmehr darum, die Funktionen des Systems aus Sicht der Anwender/-innen zu betrachten und die Nutzer des jeweiligen Anwendungsfalls zu definieren [22] [25]. Abbildung 2.21 zeigt ein stark abstrahiertes Beispiel eines Use Case Diagram.

2.5.3 DSML

Zusätzlich zu bestehenden Modellierungssprachen lassen sich sogenannte „Domain-Specific Modeling Languages“ (DSMLs) definieren. Dabei wird eine Modellierungssprache speziell für eine Domäne entwickelt und definiert, um sie ideal an die Anforderungen der Domäne anzupassen. So bieten DSMLs bei der Modellierung eine hohe Anwenderfreundlichkeit, da die Modellelemente bereits mit Fachbegriffen versehen sind und die Anwender/-innen diese daher nicht erst rekonstruieren müssen. Darüber hinaus sollte aufgrund einer sorgfältigen Analyse der Anforderungen bei der Entwicklung der DSML diese keine Modellelemente oder Diagramme enthalten, welche nicht von den Anwendern/-innen benötigt werden. Für eine bessere Verständlichkeit der DSML-Modelle sorgt die grafische Anpassung der Modelle an die Domäne [26].
Neben den Vorteilen einer DSML lassen sich besonders drei Nachteile nennen:
  • Die Wirtschaftlichkeit bei der Analyse und Entwicklung einer DSML
  • Die benötigte Wartung aufgrund sich verändernder Anforderungen an die DSML
  • Eine in der Regel fehlende Tool-Unterstützung bei der Anwendung der Methode [26]

2.5.4 Formalisierung

Die Literatur bietet verschiedene Definitionen für den Vorgang der Formalisierung einer Modellierungssprache. In dieser Arbeit wird die Definition aus dem ISO/IEC/IEEE 31320–2-Standard zugrunde gelegt. Die Formalisierung wird hierbei als Definition einer genauen Semantik und damit einer Zuweisung von Modellelementen bzw. Diagrammen zu einer formalen Bedeutung beschrieben. Sie ermöglicht damit die genau definierte Interpretation aller Bestandteile eines Modells. Darüber hinaus beinhaltet die Formalisierung eine Einschränkung der zu verwendenden Modellelemente und Diagramme einer Modellierungssprache. Dabei dienen Metamodelle zur Beschreibung der zulässigen Diagramme, zur Definition dessen, was ein jeweiliges Diagramm enthalten darf, sowie zur Definition der Bedeutung der jeweiligen Modellelemente. Für das Modellieren der Metamodelle wird dabei meist die zu formalisierende Sprache verwendet, wodurch auch hier die Gefahr von Interpretationsfehlern entsteht. Um dies zu verhindern, eignet sich die Verwendung einer Prädikatenlogik als formale Sprache zur eindeutigen Beschreibung der Zuordnung zwischen Modellelement und formaler Bedeutung. Die Beschreibung mittels Prädikatenlogik erschwert hingegen jedoch den Wissenstransfer der Formalisierungsregeln zu den Anwendern/-innen, wodurch sich eine Kombination der beiden Ansätze empfiehlt: die eindeutige Beschreibung mittels Prädikatenlogik und die zusätzliche Veranschaulichung der Zusammenhänge als Metamodell für die Anwender/-innen.

2.6 Entwicklungsmethodik

Als Ergänzung zu der in Abschnitt 2.3 beschriebenen Entwurfsphase werden nachfolgend Grundlagen für den Entwurf von Automotive SoCs behandelt. Dabei werden zu Beginn die Entwurfsdomänen und Abstraktionsebenen der SoC-Entwicklung definiert sowie die Grundlagen des Top-down-Ansatzes und der Entwicklung von Virtuellen Prototypen. Anschließend wird auf die Grundlagen des Hardware-, des Software- sowie des Hardware/Software-Co-Entwurfs eingegangen. Zum Schluss beschäftigt sich der Abschnitt mit der Verifikation und Validierung in der SoC-Entwicklung.

2.6.1 Domänen

SoCs sind heterogene Systeme, das heißt, sie setzen sich aus Teilsystemen zusammen, deren Datenverarbeitung auf grundsätzlich unterschiedlichen Signalarten beruhen. SoCs lassen sich in die Domänen Analog- und Digitaltechnik unterteilen. In der Analogtechnik basiert die Datenübertragung und -verarbeitung auf Basis von Spannungen und Strömen. In der Digitaltechnik erfolgt die Datenverarbeitung rein digital. Die analogen Anteile des SoCs werden vollständig durch Hardware realisiert. Dementgegen lassen sich die digitalen Anteile des SoCs in einen digitalen, festverdrahteten Hardware-Anteil und einen digitalen, programmierbaren Software-Anteil unterteilen. Aufgrund der damit einhergehenden unterschiedlichen Anforderungen werden für die Entwicklung unterschiedliche Entwurfsmethoden benötigt [14, p. 57]. Es ergeben sich drei Entwurfsdomänen:
  • Analoge Hardware
  • Digitale Hardware
  • Software
Viele Funktionen des SoCs lassen sich sowohl in Hardware als auch in Software realisieren. Somit muss im Laufe des Entwicklungsprozesses diese Partitionierung durch die Entwickler/-innen erfolgen. Dies geschieht in der Regel bereits in der in Abschnitt 2.3.2 beschriebenen Konzeptphase. Dabei unterscheiden sich Hardware und Software maßgeblich in den folgenden Kriterien:
  • Die Realisierung als spezifische Hardware ermöglicht eine schnelle und zuverlässige Ausführung komplexer Funktionen und Algorithmen. Die Entwicklung im Bereich der SoCs ist jedoch meist aufwendig und Anpassungen zu einem späteren Zeitpunkt sind nur schwer möglich.
  • Die Realisierung in Software dagegen ermöglicht eine höhere Flexibilität und bietet daher in der Regel eine kostengünstige und platzsparende Alternative für die Realisierung von Funktionen, für die die Ausführungsgeschwindigkeit eines Standardprozessors ausreicht [14, p. 57].

2.6.2 Abstraktionsebenen

Aufgrund der hohen Komplexität heutiger Hardwaresysteme, besonders im Bereich der SoC-Entwicklung, findet der Entwurf auf mehreren Abstraktionsebenen statt. Dabei beginnen Entwickler/-innen in der Regel auf der höchsten Abstraktionsebene, d. h. auf Grundlage eines stark abstrahierten Systems bzw. SoCs, und verfeinern die Struktur und Verhaltensbeschreibung in mehreren Iterationsstufen bis zur Transistor-Ebene, welche den Abschluss des Entwicklungsprozesses darstellt. Das Y-Diagramm von Gajski und Kuhn definiert dazu fünf Abstraktionsebenen bzw. Entwicklungsstufen [27]. In Anlehnung an das Y-Diagramm werden nachfolgend Abstraktionsebenen aus Sicht der Struktur, bezogen auf die Automotive-SoC-Entwicklung, für diese Arbeit definiert:
  • Die System-Ebene zeigt die Dekomposition des SoCs in einzelne Module und Submodule sowie deren Verbindungsstruktur.
  • Auf der Algorithmen-Ebene werden Einheiten definiert, welche Algorithmen ausführen, wie zum Beispiel der Mikroprozessor des SoCs.
  • Auf der Register-Transfer-Ebene (RT-Ebene) werden Register und RT-Einheiten wie Addierer, Multiplexer und arithmetisch-logische Einheiten (ALU) bestimmt.
  • Die Gatter-Ebene beinhaltet die Beschreibung der Logik-Gatter.
  • Die nachfolgend als Transistor-Ebene bezeichnete Ebene, stellt die tiefste Abstraktionsebene dar. Hier setzen sich die Gatter aus den einzelnen Transistoren zusammen. Eine Optimierung des Platzbedarfs findet auf Transistor-Ebene statt [14, pp. 48–52].
Die in Abschnitt 2.3.2 beschriebene Konzeptentwicklung findet sowohl für die Funktions- als auch für die Struktursicht in erster Linie in der System-Ebene statt. Jedoch werden als Teil des Systemkonzepts in der Regel zudem Teile der Algorithmen- und der RT-Ebene beschrieben, wie beispielsweise die Register des SoCs.

2.6.3 Top-down-Ansatz

Werden die im vorigen Abschnitt beschriebenen Abstraktionsebenen strikt sequenziell bearbeitet, spricht man von einer Entwicklung nach dem Top-down-Ansatz. Ganz allgemein sieht der Top-down-Ansatz eine Bearbeitung eines Problems anfangs auf einer stark abstrahierten Ebene vor. Anschließend soll in mehreren iterativen Schritten das Problem dekomponiert werden, um eine Menge kleinerer und leichter lösbarer Teilprobleme zu erhalten [14, p. 51].
Überträgt man diesen Ansatz auf die SoC-Entwicklung, stehen zu Beginn statt eines Problems die Kundenanforderungen bzw. eine geforderte Funktionalität des SoCs. Diese sind in der Regel sehr abstrakt beschrieben und müssen zu Beginn durch die Entwickler/-innen analysiert und dekomponiert werden. Um Kundenanforderungen zu analysieren, empfiehlt sich zu Beginn eine Anwendungsfallanalyse. Da Nutzer des Systems oftmals andere Systeme oder Komponenten sind, muss parallel eine Analyse des technischen Systemkontextes durchgeführt werden. Das bedeutet, es findet eine technische Betrachtung der umliegenden Komponenten und Systeme statt, mit denen der SoC später interagiert. Die Analysen dienen zudem dazu, ein einheitliches Verständnis über die Nutzung und den Kontext des geforderten Systems zu erlangen. Aus den hierbei gewonnenen Anwendungsfällen lassen sich Funktionen ableiten, welche das System den Nutzern zur Verfügung stellen muss. Um diese Funktionen zu realisieren, bedarf es wiederum einer Menge an Teilfunktionen, die durch eine Dekomposition analysiert werden können. Dieser Schritt soll jedoch losgelöst von der Auswahl möglicher Hardware-Komponenten des SoCs oder anderer Entwurfsentscheidungen erfolgen. Durch dieses Vorgehen wird zum einen die Wahrscheinlichkeit reduziert, Funktionen nicht zu berücksichtigen, zum anderen werden keine Funktionen realisiert, die nicht vom Kunden gefordert wurden.
Hat die Dekomposition der Funktionen eine gewisse Tiefe erreicht, kann im nächsten Schritt ein Systemkonzept entwickelt werden. Dabei werden Funktionen in Module zusammengefasst und erste Entwurfsentscheidungen über die Architektur des SoCs getroffen. Der SoC wird in dieser Phase in der Regel lediglich abstrahiert auf System-Ebene entwickelt. Während der Entwicklung des Systemkonzeptes entstehen Modulanforderungen, welche in mehreren Modulspezifikationen zusammengefasst werden. Diese Modulspezifikationen werden zu Beginn der Entwurfsphase an die jeweiligen Modulentwickler/-innen übergeben, welcher mit der Implementierung der Hardware bzw. Software beginnen.

2.6.4 Virtuelle Prototypen

Ein Werkzeug des Top-down-Ansatzes ist die Entwicklung von Hardware-Prototypen noch vor Fertigstellung der eigentlichen Hardware. Da hierbei die Hardware – meist auf System-Ebene – lediglich abstrahiert als Prototyp realisiert wird, kann so die Simulation von Hard- und Software zu einem früheren Zeitpunkt der Entwicklung erfolgen. Es wird dabei lediglich eine Teilfunktionalität der Hardware im Prototyp nachgebildet, welche für die Interaktion mit der Software benötigt wird.
Eine Möglichkeit der Realisierung von Hardware-Prototypen ist die Implementierung mittels FPGA. FPGA-Prototypen bieten eine sehr zuverlässige Möglichkeit der Simulation. Dementgegen steht die aufwendige Implementierung des FPGA als Prototyp, welche zudem meist erst in einer späten Phase der Hardware-Entwicklung erfolgt. Einen weit flexibleren Ansatz bietet die Implementierung des Prototyps mittels SystemC als sogenannter Virtueller Prototyp (VP) [15]. Bei SystemC handelt es sich um ein Hardware-Beschreibungsframework und eine Bibliothek der Sprache C++, welche die Implementierung von Virtuellen Prototypen ermöglichen. SystemC bietet bei der Simulation von Hardware die Möglichkeit einer Abstrahierung im Vergleich zu anderen Hardware-Beschreibungssprachen und damit eine bessere Performance bei der Simulation. Die Möglichkeit der Abstrahierung ist ein entscheidender Vorteil für die Entwicklung von Virtuellen Prototypen, da so bereits vor Fertigstellung eines vollständigen und finalen Entwurfs der Hardware erste Konzepte der Hardware und Software gemeinsam getestet werden können. Darüber hinaus bedeutet die Abstrahierung zwar in der Regel einen Verlust der Möglichkeit einer Taktzyklen-genauen Simulation, wobei eine solche Taktzyklen-genaue Ausführung der Simulation im Zusammenhang mit Virtuellen Prototypen meist nicht gefordert beziehungsweise nicht benötigt wird [28] [29]. Die Implementierung des Virtuellen Prototyps kann bereits parallel zur Spezifizierung des SoCs begonnen werden, wie in Abbildung 2.22 veranschaulicht.
Die Abbildung 2.22 zeigt abstrahiert den Entwicklungs-Flow eines SoCs. Im ersten Flow wurde kein Virtueller Prototyp eingesetzt und so erfolgt die Entwicklung der Hardware und Software vollständig sequenziell. Im zweiten Flow wird bereits parallel zur Erstellung der Spezifikation mit der Entwicklung des Virtuellen Prototyps begonnen und somit eine parallele Entwicklung von Software und Hardware ermöglicht. Zum Abschluss der Entwicklung erfolgt die Systemintegration und damit die Zusammenführung von Hardware und Software, in der Abbildung 2.22 als kurzer hellblauer Pfeil am Ende des Flows dargestellt. Durch den Einsatz der Virtuellen Prototypen kann im Idealfall eine Reduktion der Time-to-Market (TTM, Zeit bis zur Markteinführung), also der Zeit, die das Produkt von Auftragserteilung bis Marktfreigabe benötigt, erreicht werden.
Zusätzlich ermöglicht dieser Ansatz eine Validierung des Hardware/Software-Interfaces und somit die Entwicklung von Hardware und Software in ständigem Austausch über Änderungen am Systemkonzept. Dies ermöglicht, dass Fehler, welche bei einer linearen Entwicklung sonst erst in einer deutlich späteren Phase gefunden werden, früher entdeckt und somit leichter behoben werden können. Hierdurch können somit bei der Entwicklung zusätzlich Aufwand und Kosten reduziert werden.

2.6.5 Softwareentwicklungsmethodik

Aufgrund der steigenden Anforderungen und der daraus resultierenden Komplexität der SoCs gewinnt die On-Chip-Software immer stärker an Bedeutung. So bietet die Realisierung des SoC-Verhaltens als Software eine einfachere und damit kostengünstigere Alternative für die Entwicklung und ermöglicht, verglichen mit der Realisierung mittels spezifischer Hardware, zudem nachträgliche Korrekturen und Erweiterungen bei minimalem Aufwand. Lediglich die Ausführungszeit der Standardprozessoren, welche die Software ausführen, ist in der Regel langsamer, wodurch besonders im Bereich der Automotive SoCs weiterhin Teile als spezifische Hardware realisiert werden müssen.
Die Realisierung der Software für Eingebettete Systeme erfolgt in einer maschinenlesbaren höheren Programmiersprache wie beispielsweise C. Anschließend übersetzt der Compiler die Software in Maschinencode bzw. Assembler-Code. Da es sich bei SoCs oftmals um Echtzeitsysteme handelt, welche strengen Beschränkungen unterliegen, ergeben sich auch für die Softwareentwicklung in diesem Bereich zusätzliche Anforderungen. So führt die Beschränkung des Platzbedarfs des SoCs zu einer Begrenzung des zulässigen Speichers und die Forderung nach einem minimalen Energiebedarf erfordert eine aufwendige Optimierung der Software-Performance. Hinzu kommt, dass die Entwicklung der Software stark von der Hardware abhängt und so die Softwareentwicklung in vielen Fällen erst in einer späten Phase der Entwicklung starten kann.
Für die Entwicklung komplexer Software haben sich heute meist sogenannte „agile“ Entwicklungsprozesse durchgesetzt. Dabei wird die Software nicht zu Beginn vollständig geplant und erst anschließend realisiert. Vielmehr wird die Software in mehreren iterativen Schritten entwickelt und implementiert. Hierdurch können erste Softwarekonzepte in Verbindung mit der Hardware überprüft und bei Bedarf sehr flexibel angepasst werden.
Seit einigen Jahren geht der Trend in der Entwicklung von Software für Eingebettete Systeme in Richtung der Softwaregenerierung. Dadurch kann die aufwendige und fehlerbehaftete manuelle Programmierung der Software zumindest teilweise entfallen [14, pp. 38–44].

2.6.6 Hardwareentwicklungsmethodik

Die Hardwareentwicklungsmethoden erfuhren in den vergangenen Jahrzehnten mehrere evolutionäre Entwicklungsschritte. Heute werden komplexe Systeme in der Regel nach der „Spezifizieren, Explorieren und Verfeinern (SER)“-Entwicklungsmethode entwickelt. Dabei werden die Anforderungen an das System zu Beginn umfangreich spezifiziert und auf Grundlage des Spezifikationsdokumentes wird in natürlicher Sprache ein Modell auf System-Ebene erstellt. Hierdurch lässt sich bei möglichst vollständiger Modellierung der zu Beginn textuell beschriebenen Funktionen eine simulierbare Spezifikation erreichen. Die erreichte Simulierbarkeit der Spezifikation ermöglicht die Überprüfung und Validierung erster Systemkonzepte bereits in einer sehr frühen Phase der Entwicklung. Dabei lassen sich verschiedene Konzepte mit verschiedenen Systemeigenschaften als Modell erstellen und durch die Simulation vergleichen. Man spricht von einer Exploration. Darauf aufbauend können Entwurfsentscheidungen getroffen werden und so das Konzept bzw. der Entwurf iterativ verfeinert werden [14, pp. 55–57].
Plattformbasierter Entwurf
Die Evolution der Entwurfsmethodik geht einher mit der Evolution der SoC-Hardware. Heutige SoCs setzen sich aus Millionen von Gattern und damit aus mehreren Milliarden Transistoren zusammen. Zur Beherrschung dieser Umfänge in der Entwicklung wird heute, wenn möglich, auf einen plattformbasierten Entwurf zurückgegriffen. Plattformbasiert steht hierbei für die Zusammensetzung eines Systems aus einer Reihe vorgefertigter und zueinander kompatibler Komponenten. Dabei kommen neben Standardkomponenten sogenannte „Intellectual Property“(IP)-Bausteine zum Einsatz. Neben der getrennten Entwicklung verschiedener Komponenten und Einheiten ermöglicht der plattformbasierte Entwurf die Trennung der Funktionsblöcke von der eigentlichen Architektur des zusammengesetzten Systems, wie beispielsweise des SoCs.
Die Beschreibung der Hardwaremodule und Funktionsblöcke findet dabei in der Regel in einer Hardware-Beschreibungssprache wie z. B. VHDL oder Verilog statt. Hierbei werden sogenannte Virtuelle Komponenten erzeugt. Der Entwurf der Hardware in einer Hardware-Beschreibungssprache ermöglicht die Verifikation und das Testen unter realen Bedingungen, noch bevor der erste Wafer produziert wurde. Die Kosten für die Produktion eines solchen Wafers sind sehr hoch. Daher ist es entscheidend, dass bereits der erste Entwurf möglichst frei von Fehlern ist. Der plattformbasierte Entwurf bietet neben der Reduzierung des Aufwandes für Entwicklung und Verifikation die Wiederverwendbarkeit ganzer Subsysteme. Trotz dieser Vorteile werden besonders im Bereich der Automotive-SoC-Entwicklung weiterhin anwendungsspezifische und optimierte ICs zur Erreichung einer höheren Performance benötigt [14, p. 60].

2.6.7 Hardware/Software-Co-Entwurf

Da SoCs in der Regel heterogene Systeme darstellen, welche über einen oder mehrere Prozessoren und damit über Software verfügen, wird ein Hardware/Software-Co-Entwurf benötigt. Dabei werden Software und Hardware von weitestgehend getrennt voneinander arbeitenden Entwicklern/-innen entworfen. Zuvor muss eine Einteilung der funktionalen Module auf System-Ebene in die entsprechende Entwurfsdomäne erfolgen. Wie im vorangegangenen Abschnitt beschrieben, hängt die Softwareentwicklung dabei stark von der Hardware ab und kann meist erst zu einem späteren Zeitpunkt der Entwicklung starten. Für die parallele Entwicklung von Hardware und Software ist ein hohes Maß an Kommunikation zwischen Hardware- und Softwareentwicklern/-innen nötig. Eine gemeinsame Simulation ist in der Regel erst in einer späten Phase der Entwicklung möglich. Um die Software bereits vor der Produktion der Hardware gemeinsam mit dieser simulieren zu können, werden Prototypen noch vor der finalen Fertigstellung der Hardware genutzt. Dabei kann ein Prototyp der Hardware mittels FPGA oder die Hardware als Virtueller Prototyp implementiert werden. Auf Virtuelle Prototypen wird im nachfolgenden Abschnitt näher eingegangen. Ein wichtiger Aspekt des Hardware/Software-Co-Entwurfes und der Simulation mittels Prototypen ist die damit verbundene frühzeitige Validierung der Hardware-Software-Schnittstelle.
Hardware und Software, welche fertig entwickelt wurden, werden zum Zeitpunkt der Systemintegration zusammengeführt und können anschließend als Gesamtsystem getestet und verifiziert werden [14, p. 37].

2.6.8 Verifikation und Validierung von Hardware-/Softwaresystemen

Die Verifikation ist ein unverzichtbarer Bestandteil des Entwurfs von Hardware/Software-Systemen, wie den Automotive SoCs. Daher werden sowohl Verifikation wie auch Validation in jedem Teil des Industriestandards ISO 26262 gefordert und sind essenziell, um für ein Produkt bzw. einen Prozess das höchste Maß an funktionaler Sicherheit und Qualität sicherzustellen [18]. Die Verifikation soll darüber hinaus, vereinfacht ausgedrückt, die Korrektheit eines Systems beweisen. Die Bedeutung der Korrektheit lässt sich dem IEEE-Standard 610.12 [30] nach jedoch unterschiedlich auslegen:
  • Erfüllung der Kundenerwartungen unabhängig von der Spezifikation
  • Fehlerfreiheit des Systems in Bezug auf Spezifikation und Entwurf
  • Erfüllung der Systemanforderungen
Die Erfüllung der Kundenerwartungen, unabhängig von der Spezifikation, spielt bei der SoC-Entwicklung eher eine untergeordnete Rolle. SoCs werden oftmals kundenspezifisch entwickelt, und die Entwicklung des SoCs basiert dabei, wie in Abschnitt 3.​1.​1 beschrieben, auf einer vertraglichen Vereinbarung, welche dem Lasten- und Pflichtenheft zugrunde liegt. Somit wird ein Entwicklungsvorhaben vereinbart, in dem lediglich zugesichert wird, was in Lastenheft und Pflichtenheft spezifiziert wurde [2, p. 4].
Bei der Entwicklung eines SoCs gibt es eine Vielzahl unterschiedlicher Fehlerpotenziale und Fehlerarten über den gesamten Entwicklungs-Flow hinweg. Hierbei lassen sich im Kontext der Verifikation zwei Arten von Fehlern definieren:
  • Ein Spezifikationsfehler ist die falsche, nicht eindeutig oder nicht vollständige Spezifizierung einer Systemanforderung bzw. Information in der Spezifikation.
  • Bei Entwurfsfehlern handelt es sich um eine falsche Implementierung im Sinne einer Abweichung von der Spezifikation [2, p. 5].
Beispielsweise kann eine fehlende Eindeutigkeit bei den zu Beginn der Entwicklung spezifizierten Kundenanforderungen zu einer falschen Interpretation durch die Entwickler/-innen führen, welche darauf aufbauend Entwurfsentscheidungen treffen und Systemanforderungen in den Spezifikationsdokumenten schreiben. Somit wird das System im Sinne der Systemanforderungen falsch spezifiziert. Eine fehlende Eindeutigkeit der Systemanforderungen, welche sich z. B. aus der Beschreibung mittels natürlicher Sprache ergeben kann, führt dagegen dazu, dass die Entwickler/-innen gezwungen sind, zu interpretieren. Somit entsteht ein eigenes Bild des Systems in der Vorstellung der Entwickler/-innen, welches nicht mehr der Spezifikation entspricht und falsch interpretiert sein könnte. Implementieren die Entwickler/-innen basierend auf diesem eigenen Bild des Systems, entstehen Entwurfsfehler, da der Entwurf nicht der Spezifikation entspricht. Um das Risiko einer fehlerhaften Implementierung aufgrund von Interpretationen zu minimieren, ist es wichtig, dass ein nicht am Entwurf beteiligter Entwickler die Verifikation des Systems durchführt.
Eine nicht vollständige Spezifikation birgt besonders schwerwiegende Gefahren, da so Szenarien, welche in der Nutzung des Systems auftreten können, nicht spezifiziert und damit auch nicht verifiziert werden. Es besteht somit die Gefahr eines unvorhersehbaren Zustandes bzw. Verhaltens und damit im schlimmsten Fall einer Gefährdung von Menschenleben, wie am Beispiel der Fahrassistenzsysteme deutlich wird. Spezifikationsfehler müssen daher mittels umfangreicher Validierung der Spezifikation minimiert werden.
Die Verifikation weist nach, dass ein System bezogen auf seine Spezifikation korrekt entworfen wurde. Es kann somit der Nachweis erbracht werden, dass das System sowohl die funktionalen Teile als auch Teile der nichtfunktionalen Anforderungen der Spezifikation erfüllt. Befinden sich jedoch Fehler in der Spezifikation oder ist die Spezifikation nicht vollständig, gilt der Entwurf dennoch als korrekt im Sinne der Verifikation.
Neben der bereits erwähnten Problematik von Interpretationen beim Entwurf eines Systems aufgrund einer nicht eindeutigen Spezifizierung gilt dieselbe Problematik für die Verifikation. Ist die Spezifikation nicht eindeutig, sind die Verifikationsingenieure/-innen gezwungen, die Verifikation aufgrund von Interpretationen zu planen und zu entwickeln. So entsteht auch in diesem Fall ein eigenes Bild des Systems in der Vorstellung der Verifikationsingenieure/-innen [2, pp. 11–12]. Darüber hinaus besteht das Risiko, dass die Verifikationsingenieure/-innen sich die fehlenden Informationen der Spezifikation durch einen Blick in den Systementwurf einholen und so die Verifikation auf Basis des implementierten Entwurfs entsteht. Ein solches Vorgehen würde jedoch die Verifikation im Regelfall entkräften, da so der Entwurf nicht mehr gegen die Spezifikation, sondern gegen sich selbst geprüft wird und damit das Aufdecken von Fehlern im Entwurf mittels Verifikation unwahrscheinlich wird.

2.7 Modellgetriebener Systementwurf

Der in Abschnitt 2.5 vorgestellte Ansatz der modellbasierten Systementwicklung dient in erster Linie zur modellbasierten Konzeptionierung und Spezifikation des Systems. Jedoch müssen auch bei der modellbasierten Systementwicklung die Informationen aus der modellierten Spezifikation – zum Beispiel für den Softwareentwurf – in eine höhere Programmiersprache transformiert werden. Gleiches gilt für die Hardware; auch hier müssen die Informationen in eine Hardware-Beschreibungssprache übersetzt werden. Dies führt zu einem erheblichen Aufwand für die Übertragung bereits beschriebener Informationen und ist zu dem sehr fehleranfällig.
Der modellgetriebene Systementwurf kann als Erweiterung der modellbasierten Systementwicklung gesehen werden. Hierbei wird auf Grundlage der modellierten Spezifikation die Automatisierung der Entwurfsimplementierung ermöglicht und somit der Aufwand für den Systementwurf reduziert. Das bedeutet, es wird der Code von Teilen oder eines ganzen Systems auf Grundlage von Modellen generiert.
Hierzu bedarf es einer maschinenlesbaren Sprache zur Beschreibung des Systems im Modell. Die Verwendung einer universellen und meist formalisierten Modellierungssprache wie der UML bietet die Möglichkeit, auch über Entwicklungsteams hinweg kommunizieren zu können [22]. Reicht diese universelle Sprache nicht aus, kommen DSML zum Einsatz. Um diese maschinenlesbaren Modelle in Code zu transformieren, werden Codegeneratoren benötigt, welche ein Mapping zwischen Modellelementen und Code-Frame beinhalten.
Der Ansatz des modellgetriebenen Systementwurfs führt neben der Reduzierung des Aufwandes zu einer Steigerung der Konsistenz zwischen Implementierung und Spezifikation. In aktuellen Entwicklungsprojekten werden Spezifikation und Implementierung getrennt voneinander gespeichert und gepflegt. Das führt dazu, dass Entwurfsentscheidungen, die während der Implementierung getroffen werden, sowie Anpassungen, die vorgenommen werden, nicht auch in der Entwurfsspezifikation dokumentiert werden. Somit kann es zu Inkonsistenzen und damit beispielsweise zu Problemen bei der Verifikation kommen. Erfolgt der Entwurf jedoch mittels modellgetriebener Synthese und ist das Systemmodell Teil der Spezifikation, sind Implementierung und Spezifikation zu jeder Zeit konsistent [31].
Open Access Dieses Kapitel wird unter der Creative Commons Namensnennung 4.0 International Lizenz (http://​creativecommons.​org/​licenses/​by/​4.​0/​deed.​de) veröffentlicht, welche die Nutzung, Vervielfältigung, Bearbeitung, Verbreitung und Wiedergabe in jeglichem Medium und Format erlaubt, sofern Sie den/die ursprünglichen Autor(en) und die Quelle ordnungsgemäß nennen, einen Link zur Creative Commons Lizenz beifügen und angeben, ob Änderungen vorgenommen wurden.
Die in diesem Kapitel enthaltenen Bilder und sonstiges Drittmaterial unterliegen ebenfalls der genannten Creative Commons Lizenz, sofern sich aus der Abbildungslegende nichts anderes ergibt. Sofern das betreffende Material nicht unter der genannten Creative Commons Lizenz steht und die betreffende Handlung nicht nach gesetzlichen Vorschriften erlaubt ist, ist für die oben aufgeführten Weiterverwendungen des Materials die Einwilligung des jeweiligen Rechteinhabers einzuholen.
Metadaten
Titel
Grundlagen
verfasst von
Aljoscha Kirchner
Copyright-Jahr
2022
DOI
https://doi.org/10.1007/978-3-658-38437-1_2

    Premium Partner