Automatisierung der Entwicklung reaktiver Systeme durch Einsatz eines Produktmodells
Andreas Metzger Fachbereich Informatik Universität Kaiserslautern http://wwwagz.informatik.uni-kl.de/staff/metzger
[email protected]
Inhalt des Vortrags
Abstrakte Ebene
Konkrete Ebene
Beispiel
Werkzeuge
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
0
Motivation
0
Probleme
Prototyping
Requirements
Problem Beschreibung
...
Change
Design
Implementation
...
Zielsystem
• Konsistenthaltung: – wichtig für Dokumentation, Wartbarkeit, Wiederverwendung – teuer (aufwändig), da i.d.R. Handarbeit (z.B. Inspektion)
• Prototyping: – wichtig für Validierung der Requirements – frühe Prototyperstellung schwierig Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Motivation Lösungen Konsistenzhaltung: 1. Agile Metoden [Coc01] – „Verzicht auf Dokumentation“ → Wartbarkeit? Skalierbarkeit?
2. unser Ansatz: Automatisierung [MeQ02] – Werkzeugeinsatz → Effizienz frühes Prototyping: 1. Inkrementelle Entwicklung („vertikale Prototypen“) – alle Entwicklungsphasen → aufwändig 2. Generierung (z.B. aus MSC [MaV00]) – allgemeine Dokumente → hoher Spezifikationsaufwand 3. unser Ansatz: domänenspezifische Generierung – domänenspezifische Dokumente → „Wiederverwendung“ → Effizenz – Modellierungs-Templates → transparente Verwendung der Ausgabedokumente Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
0
Inhalt des Vortrags
3
Abstrakte Ebene
Requirements Engineering
Produktmodell Konkrete Ebene
Beispiel
Werkzeuge
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Requirements Engineering
4
Frühe Prototyp-Generierung Problem Beschreibung
Requirements Beschreiben
semi-formal [WiD94] = Semi-formale Requirements-Spezifikation
Spezifikation Transformieren
Requirements Modellieren
Struktur + (domänenspezifische) Semantik
Operationale Requirements-Spezifikation
Prototyp Generieren Ziel System Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
System Prototyp
Requirements Engineering
5
Subaktivitäten der Generierung Problem Beschreibung
Requirements Beschreiben Semi-Formale Dokumente Parsen
Semi-formale Requirements-Spezifikation
Produktmodell
Requirements Modellieren
Operationale Dokumente Generieren
Operationale Requirements-Spezifikation
Prototyp Generieren
System Prototyp
Ziel System Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Einsatz des Produktmodells Klassifikation der Modell-Entitäten A rtefakt
aggregiertesA rtefakt 1..*
Konfiguration
Feature
FeatureView
/aggregiertesArtefakt 1..*
D okum ent
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
6
Einsatz des Produktmodells
7
Sub-Aktivität: Dokument-Parsen A rtefakt
Feature
aggregiertesA rtefakt 1..*
aggregiertesArtefakt
Konfiguration
1..*
Feature Extrahieren
FeatureView
Dokument Zerlegen
/aggregiertesArtefakt 1..*
D okum ent
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Einsatz des Produktmodells Sub-Aktivität: Dokument-Generieren A rtefakt
Feature
aggregiertesA rtefakt 1..*
aggregiertesArtefakt 1..*
FeatureView Generieren
FeatureView
C onfiguration
Dokument Zusammensetzen
/aggregiertesArtefakt 1..*
D okum ent
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
8
Einsatz des Produktmodells
9
Prototyp-Generierung aus semi-formalen Dokumenten
Dokumente Parsen
Features und Konfigurationen
Dokumente Generieren
Semi-Formale Spezifikation Operationale Spezifikation Dokumente
Prototyp Generieren
Produktmodell System Prototyp
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Einsatz des Produktmodells
10
Automatische Konsistenz durch Dokument-Generierung
Dokumente Parsen
Features und Konfigurationen
Semi-Formale Spezifikation Operationale Spezifikation Dokumente
Produktmodell
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Dokumente Generieren
Inhalt des Vortrags
10
Abstrakte Ebene
Requirements Engineering
Produktmodell Konkrete Ebene
PROBAnD-Methode
Produktmodell v. PROBAnD Beispiel
Werkzeuge
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Die PROBAnD-Methode
11
Entwicklungsprozess [Que02] Gebäude Beschreibung
Problem Beschreibung
C. S. Struktur Spezifizieren
ControlSystem Beschreiben
Tasks Beschreiben
ControlSystem Struktur (HTML)
Semi-formale Control ObjectTypes (HTML)
Tasks (HTML)
Modellierungs Templates
Needs
ControlSystem Modellieren
Operationale Control ObjectTypes (SDL)
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Operationale Requirements-Spezifikation
Die PROBAnD-Methode
12
Frühe Prototyp-Generierung Gebäude Beschreibung
Problem Beschreibung
C. S. Struktur Spezifizieren
ControlSystem Beschreiben
Tasks Beschreiben
ControlSystem Struktur (HTML)
Semi-formale Control ObjectTypes (HTML)
Tasks (HTML)
Needs
ControlSystem Modellieren
Modellierungs Templates
Operationale Requirements-Spezifikation
Operationale Control ObjectTypes (SDL)
Spezifikation Transformieren
ControlSystem Prototyp
Prototyp Generieren Produktmodell
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Das Produktmodell der PROBAnD-Methode
13
Typen von Features (Auszug) Instantiation
Requirement
0..* 1..*
realizedBy 0..*
N eed
aggregates
realizedBy
instantiates 1
1
1..*
1
Task 1
1..*
C ontrolO bjectType
implements
1
Strategy
Functional Strategy
0..* 0..*
Attribute 1..*
1..* writes 1..* reads
isOf 1
1..* produces 1..* consumes
Param eter
isOf
0..* 1
has
0..* 0..*
1..*
S ignalType
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
1
D ataType
Das Produktmodell der PROBAnD-Methode
14
Ähnlichkeiten zu UML Metamodell [OMG01] Instantiation
Requirement
1..*
0..* 1..*
realizedBy 0..*
N eed UseC ase
aggregates
realizedBy
instantiates 1
1
1..*
1
Task
AssociationEnd (A ggregation)
C ontrolO bjectType
implements
1
Class
1
S trategy
Functional Strategy
0..* 0..*
A ttribute 1..*
1..* writes 1..* reads
isOf
A ttribute
1
1..* produces 1..* consumes
Param eter
1..*
1
DataType
isOf
0..*
A ttribute
C lassifier
has
1 0..* 0..*
S ignalType Signal
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Das Produktmodell der PROBAnD-Methode Konfiguration für ControlObjectType-Dokumente SystemConfiguration
0..* SignalType
0..*
0..*
DataType
Parameter
topLevelControl ObjectType 1..* 1 ControlObjectTypeConfiguration
1 ControlObjectType
0..* Task
0..* Strategy
0..* Attribute
0..* Instantiation
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
15
Das Produktmodell der PROBAnD-Methode
16
Generierung von SDL-Dokumenten SystemConfiguration
0..* SignalType
0..*
0..*
DataType
Parameter
topLevelControl ObjectType 1..* 1
...
ControlObjectTypeConfiguration
0..*
1 ControlObjectType
0..*
Task
Strategy
0..* Attribute
0..* Instantiation
... SDL Views Generieren
S DL View SD L Views
SDL Dokument Zusammensetzen
1..*
SD L D okum ent
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Das Produktmodell der PROBAnD-Methode
17
Generierung des Verhaltens
• realisiert: statische Aspekte – Definition und Initialisierung von Attributen – Initialisierung und Parametrisierung von ControlObjectTypes
• aktuelle Arbeiten: dynamische Aspekte – Verhaltensbeschreibung mit Zustandsautomaten – Idee: Spezifikation partieller (E)FSMs → Komposition →
A
A a/x
B
B a/y
B
SDL Generierung
A a/x,y
b/z
C
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
B
b/z
C
Das Produktmodell der PROBAnD-Methode
18
Mögliche Beschreibung des Verhaltens im Produktmodell
FunctionalStrategy
isOf
Attribute 1..*
1
1..* reads
realizedBy
DataType 1 1
1..*
1..* 1..*
Transition 1..*
1..*
originatesAt
1
1..*
terminatesAt
1
State
1..*
Action
1
1..*
writes produces
isOf
1
effects
1..* triggers
0..1
SignalType
{ordered} has 1
0..*
1..*
Parameter
• zusätzlich: – Guards – andere (E)FSM-Konstrukte: Schleifen (?), ... Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Inhalt des Vortrags
18
Abstrakte Ebene
Requirements Engineering
Produktmodell Konkrete Ebene
PROBAnD-Methode
Produktmodell v. PROBAnD Beispiel
Instanziierung des Modells Werkzeuge
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Beispiel: „Lichtsteuerung“
19
Gebäude-Beschreibung • 1 floor, 3 rooms • 2 luminaires, 2 push-buttons, 1 motion-detector
ControlSystem-Struktur Building fl1 Floor rm [1-3] R oom
m d1 M otionD etector pb[1-2]
lm [1-2]
P ushB utton
Lum inaire
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Beispiel: „Lichtsteuerung“
20
Gebäude-Beschreibung • 1 floor, 3 rooms • 2 luminaires, 2 push-buttons, 1 motion-detector
Modifizierte ControlSystem-Struktur HTMLObjectStructureDocument
B uilding fl1
Control ObjectType
Floor rm [1-3] Room
lz[1-2]
PushB utton
Number
lm 1 Lum inaire
Instantiated Control ObjectType
Building
fl
1
Floor
Floor
rm
3
Room
Room
lz
2
Lighting Zone
md
1
Motion Detector
pb
1
PushButton
lm
1
Luminaire
m d1
LightingZone pb1
Instance Name
M otionD etector
LightingZone
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Beispiel: „Lichtsteuerung“
21
Needs HTMLNeedsDocument Name
N1
Description
It should be possible to turn on the lights in a room
Tasks HTMLTaskListDocument Name
realized Requirement
Description
Control ObjectType
T1
Turn on luminaire if push-button is pressed N1
LightingZone
T2
Notify of the push-button being pressed
T1
PushButton
T3
Turn luminaire on or off
T1
Luminaire
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Beispiel: „Lichtsteuerung“
22
Control Object Type: LightingZone HTMLControlObjectTypeDocument Tasks Model Name
T1
Description
Turn on luminaire if push-button is pressed
Realized Requirement
StrategyDescription
If the signal newPushbutton is received, send the signal setLuminaire(on) to turn on the luminaire
N1
Signals ModelName
Parameters
newPushButton setLuminaire
boolean
Tasks
Usage
T1
consumed
T1
produced
... Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Beispiel: „Lichtsteuerung“
23
Instanziierung der Features HTML Object Structure Document
T1: Task
HTML Dokumente Parsen
im plem ents
rea lizedB y
HTML Task List Document
agg re gates
lm 1: Instantia tion produ ces
new PushB utton: S igna lType
pb1: In sta ntiatio n instan tiates
instantia te s
setLum inaire: S ign alType
Features
LightingZone: C ontrolO b jectTyp e ag gregates
S1: S trategy c onsu m e s
HTML Control Object Type Documents
Lum inaire: C ontrolO b jectTy pe
PushButton: C on trolO bje ctType
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Beispiel: „Lichtsteuerung“
24
Generierung der SDL Dokumente HTML Object Structure Document
T1: Task
HTML Dokumente Parsen
im plem ents
rea lizedB y
HTML Task List Document
agg re gates
lm 1: Instantia tion produ ces
new PushB utton: S igna lType
pb1: In sta ntiatio n instan tiates
instantia te s
setLum inaire: S ign alType
Lum inaire: C ontrolO b jectTy pe
Modellierungs Templates
Features
LightingZone: C ontrolO b jectTyp e ag gregates
S1: S trategy c onsu m e s
HTML Control Object Type Documents
PushButton: C on trolO bje ctType
pb1 SDL Views Generieren
pb1 : PushButton
SDL Dokument Zusammensetzen
PushButton
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Beispiel: „Lichtsteuerung“
25
Zusammengesetztes SDL Dokument Block Type LightingZone
1(1)
/* Signals to subobjects via a */
/* S ignals from subobjects via b */ S IG NA LLIST bi1 = new PushB utton;
S IG NA LLIST ai2 = setLum inaire;
LightingZoneC trl
pb1 : PushButton
oo
b.i1 (bi1)
a.i2
oi lm 1 : Lum inaire (ai2)
schwarz: Template, braun: FeatureView Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Inhalt des Vortrags
25
Abstrakte Ebene
Requirements Engineering
Produktmodell Konkrete Ebene
PROBAnD-Methode
Produktmodell v. PROBAnD Beispiel
Instanziierung des Modells Werkzeuge
PROTAGOnIST
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Die PROTAGOnIST-Werkzeuge
26
Übersicht Verifier
Clipper
Browser
Features und Konfigurationen
Analyzer
Generator HTML Dokumente
Parser
SDL Dokumente Dokumente
Produktmodell Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Die PROTAGOnIST-Werkzeuge
27
Clipper • Erstellung von Teilsystemen → partielles Prototyping – Generierung von Stubs und Treibern
B uilding fl1 Room Driver
Floor
rm 1
rm [1-3]
R oom
Room
lz[1-2]
m d1
LightingZone pb1 PushButton
M otionDetector
lz[1-2] LightingZoneStub
lm 1 Lum inaire
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
m d1 M otionD etector
Die PROTAGOnIST-Werkzeuge
28
Browser • Navigation durch Instanziierung des Produktmodells – Auflisten aller Instanzen eines Artefakt-Typs ptbrowser> list feature.Requirement Feature(s) 'feature.Requirement' of project LightControl: N1 : feature.Need T3 : feature.Task T2 : feature.Task T1 : feature.Task -------------------------------------------------------------------4 productmodel.feature.Requirement(s) found.
– Anzeige aller Attribute und Relationen einer Instanz ptbrowser> find N1 : feature.Need Feature 'N1:feature.Need' of project LightControl: realizingTask = {T1} description = It should be possible to turn on the lights in a room modelName = N1
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Die PROTAGOnIST-Werkzeuge
29
Analyzer
• Feststellung von „Feature Interactions“ [MeW03] N1
N2 realizedB y T4
T1
T2
T3
• Komplexitätsberechnung – Metrik basierend auf Modellelementen
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Die PROTAGOnIST-Werkzeuge
30
Generative Werkzeugerstellung
CodeErw eiterungen ProduktUM L m odell (UM L)
Java Generator
CodeRahm en
Generator
W erkzeug C ode
• Java Generator: iLogix Rhapsody [iLo03] – Klassenrahmen – Attribute – Realisierung der Relationen
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Die PROTAGOnIST-Werkzeuge Effizienz der Werkzeugerstellung Werkzeug
Lines Of Code
Code-Rahmen
4700
Parser (HTML)
4100
Generator (HTML + SDL)
5300
Verifier
900
Analyzer
1900
Clipper
800
Browser
800 (1 Arbeitstag)
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
31
Zusammenfassung
31
Abstrakte Ebene
Requirements Engineering
Produktmodell Konkrete Ebene
PROBAnD-Methode
Produktmodell v. PROBAnD Beispiel
Instanziierung des Modells Werkzeuge
PROTAGOnIST
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Ausblick • Erweiterung des Produktmodells – Verhalten (Verfolgbarkeit bis auf Transitionsebene) – weitere Domänenspezialisierung (Aktuatoren-, Sensoren-ControlObjectTypes)
• weitere Anwendungen/Werkzeuge – Beispiel: Wiederverwendung von Produkten: Merger
• Untersuchung des Effizienzgewinns durch Einsatz der Werkzeuge – Vergleich mit manuellem Vorgehen
• Beobachtung der Veränderung des Prozesses durch Automatisierung – „unbeliebte“ Aktivitäten werden mit Werkzeugen „bevorzugt“ eingesetzt – verändertes Vorgehen
• Generische Werkzeugerstellung – „Programmierung auf Meta-Ebene“ – Werkzeugprogrammierung ↔ manuelle Durchführung der Entwicklungsaktivität Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
31
Literatur
31
[Coc01]
A. Cockburn. Agile Software Development. Boston, Mass.: Addison-Wesley. 2001
[iLo02]
iLogix. Rhapsody. Web Site. Andover, Mass. 2002 http://www.ilogix.com/products/rhapsody/
[MaV00]
N. Mansurov, D. Vasura. “Approximation of (H)MSC semantics by Event Automata” in Proceedings of the SDL Forum Society International Workshop on SDL and MSC (SAM 2000). Grenoble, France. 2000
[MeQ02] A. Metzger, S. Queins. "Early Prototyping of Reactive Systems Through the Generation of SDL Specifications from Semi-formal Development Documents" in Proceedings of the 3rd SAM (SDL And MSC) Workshop. Aberystwyth, Wales: SDL Forum Society; University of Wales. June, 2002 [MeW03] A. Metzger, C. Webel. “Feature Interaction Detection in Building Control Systems by Means of a Formal Product Model” submitted to Feature Interaction Workshop FIW ‘03. Ottawa, Canada. June, 2003 [OMG01] OMG. “UML Model Interchange” Chapter 5 in Unified Modeling Language v1.4. Object Management Group, Inc. 2001 http://cgi.omg.org/docs/formal/01-09-76.pdf [Que02]
S. Queins. PROBAnD – Eine Requirements-Engineering-Methode zur systematischen, domänenspezifischen Entwicklung reaktiver Systeme. Ph.D. Thesis. Department of Computer Science. University of Kaiserslautern. 2002
[WiD94]
R. Wieringa, E. Dubois. “Integrating Semi-formal and Formal Software Specification Techniques” in Information Systems. 19(4). Elsevier Science Ltd. 1994. pp. 35–54
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
31
— Zusätzliche Folien —
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Die PROTAGOnIST-Werkzeuge
31
Tool Implementation UML Model Types
Base Classes
Tool Specific Classes
Task Strategy realizingS trategy
Task
Strategy getRealizingStrategy()
1 1
Strategy
S trategy
Parser
Task realizedTask Task getRealizedTask()
StrategyView Strategy parse()
S trategyView S trategyView
Generator StrategyView Strategy generate(S trategy)
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Die PROTAGOnIST-Werkzeuge
32
Base Classes • common data repository for all tools • allow interchange of instantiation information between tools – analogous to UML model interchange (XMI) [OMG01] – Marshalling: – Unmarshalling:
instantiation information → file file → instantiation of classes
– file format: SLANG (analogous to XML) lm 1: Instantiation instan tiates Lum inaire: C on trol O bject Type
( productmodel.feature.Instantiation < ( KEY 1133 ) ( modelName 'lm1' ) ( instantiatedControlObjectType < ( KEY 2244 productmodel.feature.ControlObjectType ) > ) ) ...
Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
Die PROTAGOnIST-Werkzeuge Tool Specific Classes • problem: cannot use Java inheritance for extending model classes Base Classes
Tool Specific Classes
Strategy
ParserStrategy
multiple inheritance StrategyView
ParserStrategyView
• solution: separation in model and user files + merging – model files contain code of base classes – user files contain tool specific code extensions (e.g. parse() method) – merged files contain tool specific classes
→ merged files are always of the base type! Andreas Metzger – Kolloquiumsvortrag – Humboldt-Universität zu Berlin – Januar, 2003
33