Informationstransfer von UML nach ASCET

Werbung
Bild 1:
Phasen in der
SoftwareEntwicklung.
Ameos
Architektur des SW-Systems
Architektur/Grobdesign
eines SW-Teils (Subsystems)
Von Marcel
Hachmeister,
Robert Bosch
GmbH
Informationstransfer von UML
nach ASCET
Transformation
des Ergebnisses
des Grobdesigns /
Formulierung der
Transferregeln
Feindesign
eines SW-Teils (Subsystems)
ASCET
Editor
Jede Entwicklungsphase wird
unterstützt: Von der Software-Architektur
Implementierung & Codegenerierung
eines SW-Teils (Subsystems)
bis zur Implementierung
Die Durchgängigkeit von der Software-Architektur bis zur Implementierung ist ein zentrales Element im Software-Entwicklungsprozess der Getriebesteuerung. Der Artikel zeigt,
wie jede Entwicklungsphase durch aufeinander abgestimmte Tools unterstützt und die
Durchgängigkeit des Entwicklungsprozesses gewährleistet wird.
Bild 2:
UML-Klassendiagramm.
«1-Class»
CL_TSiStgo
«1-Class»
CL_TSi_Bas
«1-Class»
CL_TSiStgo_Bas
D
ie immer umfangreicher und
komplexer werdenden SoftwareUmfänge verlangen nach abstrakteren
Beschreibungssprachen. Nach Assembler und C-Programmierung werden
jetzt grafische Beschreibungssprachen
eingesetzt, sagt doch ein Bild mehr als
tausend Worte.
Zur Erreichung eines effizienten Software-Entwicklungsprozesses setzt die
Robert Bosch GmbH bei der SoftwareEntwicklung der Getriebesteuerung
daher eine aufeinander abgestimmte
Kombination aus grafischen Designund Entwicklungstools ein.
Die Spezifikation der Software-Architektur oder des Grobdesigns erfolgt in
UML (Ameos von Aonix), das Feindesign und die Eingabe der Implementierungsinformation erfolgen in ASCET
von ETAS. Dabei werden alle notwendigen Informationen des UML-Modells
automatisch nach ASCET übertragen.
Diese Transformation erfolgt durch das
Tool aquintos.M2M der auf Modelltransformationen spezialisierten Firma
aquintos (siehe Bild 1).
Die Ergebnisse der einzelnen Phasen
stehen in einem festen Bezug zueinander. Dieser Bezug darf nicht verloren
gehen und wird durch geeignete Toolkopplung sichergestellt. Dadurch wird
eine hohe Produktqualität erreicht
und die Anzahl der Rekursionen auf
ein Minimum beschränkt. Das in früheren Entwicklungen entstandene Eigenleben der einzelnen Entwicklungsphasen und die damit einhergehende
Inkonsistenz wird wirkungsvoll ausgeschlossen (z. B. Designdokumentation
passt nicht mehr zum Code etc.).
Dieser Artikel befasst sich mit der
Erstellung des Grobdesigns mittels
UML (Unified Modeling Language),
dem Transfer der statischen Softwarestruktur nach ASCET mit dem anschließenden Feindesign sowie der
Implementierung.
Software-Architektur/Grobdesign
eines Softwareteils
In der Getriebesteuerung der Robert
Bosch GmbH wird die Beschreibungssprache UML eingesetzt. Durch diese
normierte und international anerkannte Beschreibungssprache werden
Missverständnisse vermieden und die
Lesbarkeit sichergestellt. Die grafische
Notation erlaubt es, komplexe Sachverhalte übersichtlich darzustellen. Die
UML ist besonders für objektorientierte Software-Entwicklung ausgelegt.
Aufgrund der notwendigen hohen
Code-Effizienz bei Embedded Realtime-Systemen wird die Software der
Getriebesteuerung in C programmiert.
Daher werden die Möglichkeiten der
Objektorientierung und der UMLBeschreibungselemente nur eingeschränkt benutzt.
Das OMOS-Konzept von der Robert
Bosch GmbH wurde entwickelt, um
wesentliche Elemente der Objektorientierung zu nutzen und in C-Code
abzubilden (OMOS = Objektorientiertes Modellierungskonzept für Steuergerätesoftware).
OMOS ist als Zusatz in Ameos verfügbar.
Hinter dem OMOS-Konzept verbergen
sich dabei zwei wesentliche Strategien:
• Variantenhandling und Konfiguration
• Anbindung vom Grobdesign an das
Feindesign/Implementierung (z. B.
Abbildung von objektorientierten
Methoden auf C durch C-Coderahmengenerierung)
Die Umsetzung dieser Strategien mit
UML wird im Folgenden kurz beschrieben. Auf detaillierte Umfänge
von OMOS kann an dieser Stelle nicht
eingegangen werden.
Zur Beschreibung von Varianten wird
die Vererbung eingesetzt. Ziel ist, die
gemeinsamen Software-Anteile für
verschiedene Projekte in der „Elternklasse“ zu modellieren. Die projektspezifischen Anteile werden in der
„Kindklasse“ modelliert. Dieses Stilmittel wird auch dazu benutzt, um
komplette Funktionen auszublenden
(für unterschiedliche Projektanforderungen), siehe Bild 2.
«1-Class»
CL_TSiCnr
«1-Class»
CL_TSiWu
«1-Class»
CL_TSiDhl
«1-Class»
CL_TSiWtr
«1-Class»
CL_TSiFo
«1-Class»
CL_TSiHil
«1-Class»
CL_TSiHot
«1-Class»
CL_TSiStgo
Teilobjektdiagramm --->
Strukturierung der Software
Die Objekte werden im UML-Klassendiagramm festgelegt. Im vorliegenden Beispiel handelt es sich um eine
Klasse, sodass die Objekte nicht explizit ausgewiesen werden. Klassendiagramme sind das zentrale UMLElement des OMOS-Konzepts.
Die Konfiguration der Software erfolgt
im Konfigurationseditor. Er legt fest,
von welcher Klasse die Objekte instantiiert werden und definiert die Zugehörigkeit der Klassen zu einem (Kunden-) Projekt.
-bActv : bool
-sDet: uint8
-bDwnShft21: bool
-ctDwnShft21: uint8
-swtPlrTab_C: bool
-tTraMax_C: uint8
-rAccPedCst_C: uint8
-drAccPedRngB_C:
sint16
-rAccPedRngA_C: uint8
-rAccPedRngB_C: uint8
-nTosRngA_C: uint16
-nTosRngB_C: uint16
-ctDwnShft21_C: uint8
«1-Class»
CL_TloTra
«1-Class»
CL_TloTcp
«1-Class»
CL_TloPed
«1-Class»
CL_TloW
+CalcSituation()
+Is_bActv() : bool
Vererbungsdiagramm --->
Darstellung von Varianten.
Die Klasse CL_TSiStgo_Bas
kann wegkonfiguriert
werden.
In dieser ersten Phase werden die
Grundlagen für die spätere Erweiterbarkeit und Varianz der Software gelegt. Der Entwickler wird besonders
durch folgende Eigenschaften unterstützt:
• grafische Beschreibung
• Mechanismen für variantenreiche
Software (Reuse, Projektausprägungen)
Direkte Auswirkung auf Feindesign/
Implementierung hat ausschließlich
das Klassendiagramm. Alle übrigen
Diagrammtypen haben lediglich beschreibenden und damit ergänzenden Charakter (z. B. Sequenz-, State-,
Activity-Diagramme).
Transformation des Grobdesigns
zur Implementierung
Für Softwareteile, die sich nur bedingt
für eine grafische Programmierung
eignen (z. B. das Speichermanagement eines Steuergeräts mit seinem
hohen Anteil an Tabellen und Verzeigerungen), steht eine C-Coderahmengenerierung zur Verfügung (siehe
OMOS). Die C-Coderahmen erhalten automatisch alle wesentlichen
UML-Modellinformationen (z. B. Messund Applikationsgrößen aus Attributen, Include-Anweisungen aufgrund
von Kommunikationsbeziehungen, Programmrümpfe für Methoden). Das
Implementieren der Funktionalität in
den Programmrümpfen erfolgt dann
in einem Standard C-Code-Editor (z. B.
CodeWright). Auf die Coderahmengenerierung wird nicht weiter eingegangen.
Bei allen anderen Softwareteilen wird
ein grafisches Entwicklungstool mit
Autocodegenerierung eingesetzt. Die
Effizienz und Qualität der SoftwareEntwicklung wird dadurch noch einmal gesteigert. Die Getriebesteuerung
setzt ASCET ein.
Das Tool aquintos.M2M zur Modelltransformation von UML nach ASCET
bietet die Möglichkeit, Regeln für die
Transformation zu spezifizieren.
Aktuell entwickelt die Getriebesteuerung eine Abbildung der UML-/
OMOS-Modelle nach ASCET V5.1. Die
Abbildung benutzt derzeit nur Module in ASCET, da zum Zeitpunkt der
Pilotphase eine durchgängige Verwendung von Klassen in ASCET nicht möglich war. Ursache war ein internes Tool
zur Verwaltung von Mess- und Applikationsgrößen, auf das hier nicht
weiter eingegangen wird.
Die erste Version ist als Prototyp ausgelegt, um Erfahrungen im Entwicklungsprozess zu sammeln. Zukünftig
werden die Transformationsregeln
auch auf ASCET-Klassen ausgeweitet
werden.
Das Bild 3 zeigt eine Transformation
mit M2M. Die ASCET-Modellierung
erfolgt in Modulen.
Für die Klassen der UML-Modelle
wurden Abbildungsregeln unter Berücksichtigung des OMOS-Konzepts
definiert. Die Aggregationen, die
Kommunikationsbeziehungen und die
Vererbungsbeziehungen werden abgebildet.
➔
■
24
RT 1. 2007
25
2 0 0 7 .1 RT
Bild 3:
Ameos
Transformation
mit M2M
«1-Class»
CL_SIWA
von aquintos.
«1-Class»
CL_FZGG
«1-Class»
CL_FZGG_KOMP
«1-Class»
CL_FSIT
«1-Class»
CL_SIWA_CUST
«RAM_Groesse»
«RAM_Groesse»
«Kennwert»
«Kennwert»
«Kennlinie»
-FWA : uint8
-CMO : uint8
-HDK : uint8
-CMOMIN : uint8
-ECMO : uint16
«1-Class»
CL_FSIT_DEV
«1-Class»
CL_MOT
+IstWarmlauf( uint8 )
+IstWaBew( uint8 )
+ErmittleWarmlauf()
+DetermineWarmUp()
+ExitCondition( uint8 )
«1-Class»
CL_MOT_AHK
«1-Class»
CL_MOT_LL
«1-Class»
CL_MOT_ERW
XMI-Interface
Mehrfachinstanziierungen
mit ASCET
Wie erwähnt, wird die Verwendung
von ASCET-Klassen bei der Transformation noch nicht unterstützt. Damit
die Mehrfachinstanziierung (N-Klassen) in ASCET verwendet werden
kann, wird an der Erweiterung der
Transformationsvorschrift gearbeitet.
Die Erweiterung wird anhand des folgenden Klassendiagramms erläutert
(Bild 4). Das Diagramm beschreibt Zusammenhänge zwischen Klassen und
definiert die Instanznamen sowie die
Anzahl der Instanzen.
COM API
ASCET
Bild 4:
Auszug aus der
Architektur/
Grobdesign des
Softwareteils
Gangauswahl.
Man erkennt die drei Instanzen der
Klasse CL_TDpDynTab und die Kommunikationsbeziehungen zu den
Nachbarklassen. Die Mehrfachinstanziierung muss in ASCET eine Entsprechung finden, um das Feindesign und
die Implementierung vornehmen zu
können, siehe Bild 5.
«1-Class»
CL_TDpDyn
«1-Class»
CL_TDpDyn_Bas
«1-Class»
CL_TloTra
-idRdoAct : uint8
+GetGearReq( xGear:uint8 ) : uint8
TDpDynDUsp
TDpDynUsp
TDpDynDsp
«N-Class»
CL_TDpDynTab
-idAct : uint8
-xCtlTab_C : uint8
+IsActive( idSp:uint8 ) : bool
+Reset()
26
RT 1. 2007
Die Implementierung mit ASCET erfolgt in mehreren sinnvollen Teilumfängen des UML-Modells (Auswahl einzelner Klassen). Die ausgewählten Klassen werden als „Reference Classes“
bezeichnet und im UML-Modell entsprechend markiert.
Da in ASCET keine Vererbung bekannt
ist, gilt bei Vererbungsbeziehungen
z. B. die Regel: „Gehe durch den Vererbungsbaum der „Reference Class“
zur so genannten Elternklasse und
sammle alle Attribute ein, die geerbt
werden.”
Anschließend werden sie nach ASCET
in die „Reference Class“ transferiert.
«1-Class»
CL_TRcAdm
In ASCET wird dafür die Klasse
CL_TDpDynTab angelegt. Die Methoden und Attribute werden von dem
Klassendiagramm übernommen. Die
drei Instanzen der Klasse CL_TDpDynTab werden als lokale Attribute in
der Klasse CL_TDpDyn_Bas angelegt,
siehe Bild 6.
Feindesign, Implementierung und
automatische Codegenerierung
Das Feindesign und die Implementierung wird mit der grafischen Programmierung durchgeführt, eines der Kernelemente von ASCET. Die Blockdiagrammrahmen für die grafische Programmierung werden durch die
Transformation vorgegeben. Bild 5
zeigt ein Beispiel für grafische Programmierung im Blockdiagramm.
Die Implementierungsinformationen
für Mess- und Applikationsgrößen (Attribute) werden in ASCET ergänzt. Damit kann die automatische Codegenerierung gestartet werden.
Bild 5:
Klasse
CL_TDpDynTab
in ASCET mit
Feindesign/
Implementierung.
Für die Codegenerierung wird der
Standard-Codegenerator von ASCET
mit kundenspezifischen Anpassungen
eingesetzt. Der Codegenerator erzeugt wohl definierten C-Code. In
der Getriebesteuerung wird für jede
Klasse ein C-File generiert, Optimierungen für 1-Klassen werden durch
ASCET automatisch berücksichtigt.
Das ausführbare Programm (HEX-File)
wird außerhalb von ASCET mit der
Standard-Entwicklungsumgebung generiert.
3 Instanzen
der Klasse
CL_TDpDynTab
Die Mess- und Applikationsgrößen
(Attribute) müssen über ein Applikationstool messbar sein. ASCET generiert zu den Modulen und Klassen
zugehörige Files nach dem MSRSWStandard. In dem Standard sind auch
Implementierungsinformationen für
C-Code enthalten, die die Generierung von c- und h-files erlauben.
So werden die Mess- und Applikationsgrößen im Anwenderprogramm
zur Verfügung gestellt, siehe Bild 7.
ASCET wird mit Codegenerierung in
mehreren Bereichen der Robert Bosch
GmbH erfolgreich eingesetzt.
Zusammenfassung
Der vorgestellte Entwicklungsprozess
gibt dem Entwickler die Möglichkeit,
seine Software von der Architektur
bis zur Implementierung grafisch zu
beschreiben. Das in der Automobilbranche notwendige Variantenhandling ist in dem Prozess integriert. Jede
Prozessphase besitzt ein optimales
Tooling. Die Informationen der einzelnen Phasen sind fest miteinander verknüpft, ein Auseinanderlaufen bzw.
Eigenleben der einzelnen Entwicklungsphasen ist ausgeschlossen.
Komplexe Sachverhalte werden im
Design durch die grafische Notation
der UML eindeutig beschrieben.
ASCET ermöglicht es, auch die Funktionsentwicklung auf grafischer Ebene durchzuführen. Die grafische
Modellierung der Algorithmen stellt
gleichzeitig eine gute Dokumentation
dar. Durch den Entwicklungsprozess
werden Rekursionen vermieden und
die Entwicklungseffizienz deutlich gesteigert.
CL_TDpDynTab
PAR_idTyp
PAR_idRdo IsActive
Usp
CL_TDpDynTab
PAR_idTyp
PAR_idRdo IsActive
Bild 6:
Lokale Instanzen
in der Klasse
CL_TDpDynTab.
DUsp
CL_TDpDynTab
PAR_idTyp
PAR_idRdo IsActive
Dsp
Bild 7:
Auszug der von
ASCET generierten Files für
den BuildProzess.
C-File
MSRSW-File
27
2 0 0 7 .1 RT
Herunterladen