Automatisierung der Entwicklung reaktiver Systeme durch Einsatz eines Produktmodells

Automatisierung der Entwicklung reaktiver Systeme durch Einsatz eines Produktmodells Andreas Metzger Fachbereich Informatik Universität Kaiserslauter...
2 downloads 2 Views 213KB Size
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

Suggest Documents