25
Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 26.06.22 Seite 1 Software Engineering in der Praxis: Eclipse Development Design Workshop

Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Embed Size (px)

Citation preview

Page 1: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Eclipse Development – SS 200811.04.23

Seite 1

Software Engineering in der Praxis: Eclipse Development

Design Workshop

Page 2: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Eclipse Development – SS 200811.04.23

Seite 2

Agenda

Anforderungen Reqlipse Vision Anwendungsfälle

Architektur und Design Reqlipse Architekturkonzept Variabilitätsszenarien

Entwicklungsprozess Teams Aktivitäten und Ergebnisse: Nächste Schritte Ablauf und Betreuung Software-Entwicklungsumgebung

Page 3: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Vision: Requirements Engineering Framework

Eclipse Development – SS 200811.04.23

Seite 3

Volere RUP …

LanguageAnalyzer

RE Metrics

Analyzer…

Method Extensibility

Feature Extensibility

Page 4: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Vision: Eclipse Requirements Engineering

Eclipse Development – SS 200811.04.23

Seite 4

Page 5: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Vision: RE Metamodellierung

Modellierungssprache für Requirements Engineering Methoden / Modelle (ReqML). Damit sind beliebige Ansätze modellierbar und im System integrierbar.

Eclipse Development – SS 200811.04.23

Seite 5

ReqML

Custom Requirements Model

Project Requirements

MOF / ecore

M0

M1

M2

M3

Page 6: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Anwendungsfälle

Eclipse Development – SS 200811.04.23

Seite 6

uc Use Case

Reqlipse

Reqlipse 1.0

Reqlipse 0.1

Anforderungen strukturieren

Anforderung erfassen

Anforderung pflegen

Anforderung löschen

Anforderungsmodell wählen

Anforderungsmodell bereitstellen

Abhängigkeiten zwischen

Anforderungen pflegen

Anforderungsmodell definieren

Anforderung v ersionieren

Anforderungsv ersionen betrachten

Anforderung auf Version

zurücksetzen

Verfolgbarkeit auswerten

Projekt anlegen

Requirements Enginee r

Requirements Metamodeller

Abhängigkeit zu Drittmodellen pflege n

Abhängigkeiten pflegen

Software Architect

Anforderungen exportieren

Anforderungen suchen

«include»

«include»

«include»

«include»

«extend»

«include»

«include»

Page 7: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Feature Modell (Draft)

Eclipse Development – SS 200811.04.23

Seite 7

Page 8: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Architekturkonzept: A-Architektur

Eclipse Development – SS 200811.04.23

Seite 8

Reqlipse Workbench UI

Reqlipse Core

Reqlipse Model Manager

uc Use Case (List)

Anforderungen strukturieren

Anforderung erfassen

Anforderung pflegen

Anforderung löschen

Anforderungsmodell wählen

Anforderungsmodell bereitstellen

Projekt anlegen

Model RegistryModel Instance

Persister

Requirements InstanceModel

Requirements Services

WorkbenchIntegration

RequirementsNavigator

RequirementsEditor

Requirements Model Instances

EMF Models

Requirements Model Plugins

ReqML Metamodel

Page 9: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Glossar

Requirement „Formulierung des erwarteten Resultats in Form von Merkmalen, die die

Realisierung und die Überprüfung der Konformität ermöglichen.“ [1]

Requirements Model„Modell davon, in welcher Form Requirements formuliert und strukturiert werden.“Das Modell ist abhängig von der gewählten RE Methodik (z.B. Volere)

Requirements Model Instance„Instanz eines Requirements Model, die nur Requirements enthält, die dem zugeordneten Requirements Model entsprechen“

Eclipse Development – SS 200811.04.23

Seite 9

[1] MEDIQUAL Qualitätsglossar: http://www.mediqual.ch

Page 10: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Architekturkonzept: T-Architektur

Eclipse Development – SS 200811.04.23Seite 10

Reqlipse Workbench UI

Reqlipse Core

Reqlipse Model Manager

Requirements Model Instances

EMF Models

EclipseRCP

EMF

Ec

lips

e Platfo

rm R

un

time

Dynamic EMF

Page 11: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Building Block: Reqlipse Model Manager

Model Registry Zugriff auf die Liste der registrierten Requirements Models Prüfung der Requirements Models auf ihre Konformität zum ReqML

Metamodell hin Laden eines ausgewählten Requirements Models

Model Instance Persister Speicherung einer Requirements Model Instance Laden einer Requirements Model Instance Zugriff auf die Liste der im Workspace verfügbaren Requirements Model

Instances Prämisse: Speicherort sind EMF-Dateien mit der Endung *.reqs im Workspace

Eclipse Development – SS 200811.04.23Seite 11

Reqlipse Model Manager

Model RegistryModel Instance

Persister

Page 12: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Building Block: Reqlipse Core

Requirements Services Elemente des Requirements Models erzeugen (inkl. Id-Vergabe und

hinzufügen zur Requirements Model Instance) Elemente einer Requirements Model Instance abfragen Elemente des Requirements Models abfragen Lifecycle Requirements Model Instance (laden, speichern)

Requirements Instance Model Adaptoren für EMF Repräsentation der Requirements Model Instance

für die einfache Verwendung durch die Workbench UI

Eclipse Development – SS 200811.04.23Seite 12

Reqlipse Core

Requirements InstanceModel

Requirements Services

Page 13: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Building Block: Reqlipse Workbench UI

Workbench Integration Integrationspunkte in die Eclipse Workbench wie z.B. „New“-Wizard,

„Requirements“-Perspektive und Erweiterung des Hilfesystems. Requirements Navigator

Erweiterung des Project Explorers um die Möglichkeit, in Anforderungsdateien die Anforderungsstrukturen direkt anzuzeigen und entsprechende Kontext-Aktionen ausführen zu können.

Eigener Navigator entsprechend dem Project Explorer, der fokussiert ist auf die Anzeige alle Requirements Model Instances im Workspace inkl. Bereitstellung von Kontext-Aktionen.

Requirements Editor Generischer Editor für einzelne Requirements

Eclipse Development – SS 200811.04.23Seite 13

Reqlipse Workbench UI

WorkbenchIntegration

RequirementsNavigator

RequirementsEditor

Page 14: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

ReqML

Eclipse Development – SS 200811.04.23Seite 14

class Metamodel

input control types

«metaclass»ReqTex tField

+ richtext: boolean = false

«metaclass»ReqChoiceField

+ multiple: boolean = false

«metaclass»ReqChoiceEntry

+ identifier: int+ value: string

«metaclass»ReqFieldType

+ name: string+ description: string = ''+ mandatory: boolean = false+ isLabel: boolean = false

«metaclass»ReqFieldStructure

+ name: string

«metaclass»ReqEntityType

+ name: string+ description: string = ''+ isContainer: boolean = false

«metaclass»ReqInputField

«metaclass»ReqProjectType

+ name: string+ description: string = ''

«metaclass»ListOfFields

+ minEntries: int = 0+ maxEntries: int = -1

«metaattribute»ReqFieldV alue

+ name: string = 'value'

defining individual contraints for concrete ReqFieldValue

«metaattribute»ReqEntityContainer cardinality = 1 if

ReqEntityType.isContainer == true

reqFieldValues

0..*

reqContainedFields

1

reqEntities

1.. *

reqContainedEntityTypes

0..*

reqChoiceValues

2..*

reqSubFieldStructures

0..*

reqFields

1.. *

reqFieldStructures

0..*

0..1

Page 15: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

ReqML Instanzen Problem: EMF unterstützt direkt keinen 4-stufigen

Metamodellierungsansatz (nur 3-stufigen). (Metametamodell, Metamodell, Modell, Modell-Instanz)

Lösungsvarianten:1. Erweiterung des ecore Metametamodells um ReqML Konstrukte, um

es so zu einem Metamodell zu machen. Wird nicht richtig unterstützt und es wird davon in den EMF Newsgroups abgeraten

2. Verzicht auf Metamodell und Entwicklung eines Frameworks auf Modellebene (abstrakte Basisklassen). Keine Sprachkonstrukte für Attribute und Referenzen möglich

3. Instanzmodell nicht auf Basis von EMF. aufwändig und unflexibel

4. Zick-zack Modellarchitektur (nächste Folie)

Eclipse Development – SS 200811.04.23Seite 15

ecore + ReqML

Req. Model

Req. Mod. Inst.

ecore

ReqML + Req. Model

Req. Mod. Inst.

1. 2.

ecore

ReqML

Req. Model

3.

Page 16: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Zick-zack Modellarchitektur

Eclipse Development – SS 200811.04.23Seite 16

ReqML

Requirements ModelRequirements Model

Instance

ecore

Runtime Requirements Model

Modelltransformation (bei uns: manuell)

Annotation (per EAnnotation – entspricht UML Tagged Value bzw. Stereotyp)

Page 17: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

ReqML Instanzen

ReqProjectType

Eclipse Development – SS 200811.04.23Seite 17

class Metamodel

input control types

ReqTex tField

+ richtext: boolean = false

ReqChoiceField

+ multiple: boolean = false

ReqChoiceEntry

+ identifier: int+ value: string

ReqFieldType

+ name: string+ description: string = ''+ mandatory: boolean = false+ isLabel: boolean = false

ReqFieldStructure

+ name: string

«metaclass»ReqEntityType

+ name: string+ description: string = ''+ isContainer: boolean = false

ReqInputField

«metaclass»ReqProjectType

+ name: string+ description: string = ''

ListOfFields

+ minEntries: int = 0+ maxEntries: int = -1

ReqFieldValue

+ name: string = 'value'

defining individual contraints for concrete ReqFieldValue

ReqEntityContainer cardinality = 1 if ReqEntityType.isContainer == true

reqFieldValues

0..*

reqContainedFields

1

reqEntities

1.. *

reqContainedEntityTypes

0..*

reqChoiceValues

2..*

reqSubFieldStructures

0..*

reqFields

1.. *

reqFieldStructures

0..*

0..1

Page 18: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

ReqML Instanzen

ReqEntityType

Eclipse Development – SS 200811.04.23Seite 18

class Metamodel

input control types

ReqTex tField

+ richtext: boolean = false

ReqChoiceField

+ multiple: boolean = false

ReqChoiceEntry

+ identifier: int+ value: string

«metaclass»ReqFieldType

+ name: string+ description: string = ''+ mandatory: boolean = false+ isLabel: boolean = false

«metaclass»ReqFieldStructure

+ name: string

«metaclass»ReqEntityType

+ name: string+ description: string = ''+ isContainer: boolean = false

ReqInputField

ReqProjectType

+ name: string+ description: string = ''

ListOfFields

+ minEntries: int = 0+ maxEntries: int = -1

ReqFieldValue

+ name: string = 'value'

defining individual contraints for concrete ReqFieldValue

«metaattribute»ReqEntityContainer cardinality = 1 if

ReqEntityType.isContainer == true

reqFieldValues

0..*

reqContainedFields

1

reqEntities

1.. *

reqContainedEntityTypes

0..*

reqChoiceValues

2..*

reqSubFieldStructures

0..*

reqFields

1.. *

reqFieldStructures

0..*

0..1

Page 19: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

ReqML Instanzen

ReqFieldStructure

Eclipse Development – SS 200811.04.23Seite 19

class Metamodel

input control types

ReqTex tField

+ richtext: boolean = false

ReqChoiceField

+ multiple: boolean = false

ReqChoiceEntry

+ identifier: int+ value: string

«metaclass»ReqFieldType

+ name: string+ description: string = ''+ mandatory: boolean = false+ isLabel: boolean = false

«metaclass»ReqFieldStructure

+ name: string

«metaclass»ReqEntityType

+ name: string+ description: string = ''+ isContainer: boolean = false

ReqInputField

ReqProjectType

+ name: string+ description: string = ''

ListOfFields

+ minEntries: int = 0+ maxEntries: int = -1

ReqFieldValue

+ name: string = 'value'

defining individual contraints for concrete ReqFieldValue

«metaattribute»ReqEntityContainer cardinality = 1 if

ReqEntityType.isContainer == true

reqFieldValues

0..*

reqContainedFields

1

reqEntities

1.. *

reqContainedEntityTypes

0..*

reqChoiceValues

2..*

reqSubFieldStructures

0..*

reqFields

1.. *

reqFieldStructures

0..*

0..1

Page 20: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

ReqML Instanzen

ReqFieldType (+ Unterklassen)

Eclipse Development – SS 200811.04.23Seite 20

class Metamodel

input control types

«metaclass»ReqTex tField

+ richtext: boolean = false

«metaclass»ReqChoiceField

+ multiple: boolean = false

«metaclass»ReqChoiceEntry

+ identifier: int+ value: string

«metaclass»ReqFieldType

+ name: string+ description: string = ''+ mandatory: boolean = false+ isLabel: boolean = false

«metaclass»ReqFieldStructure

+ name: string

«metaclass»ReqEntityType

+ name: string+ description: string = ''+ isContainer: boolean = false

«metaclass»ReqInputField

ReqProjectType

+ name: string+ description: string = ''

«metaclass»ListOfFields

+ minEntries: int = 0+ maxEntries: int = -1

«metaattribute»ReqFieldV alue

+ name: string = 'value'

defining individual contraints for concrete ReqFieldValue

«metaattribute»ReqEntityContainer cardinality = 1 if

ReqEntityType.isContainer == true

reqFieldValues

0..*

reqContainedFields

1

reqEntities

1.. *

reqContainedEntityTypes

0..*

reqChoiceValues

2..*

reqSubFieldStructures

0..*

reqFields

1.. *

reqFieldStructures

0..*

0..1

Page 21: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Variabilitätsszenarien

Eclipse Development – SS 200811.04.23Seite 21

Weitere mögliche Szenarien: RE Metriken ermitteln Linguistische Analysen Workflows RE Modell Editor UML Integration Erweiterung des Metamodells besonders im Bereich ReqFieldTypes Modellspezifische Constraints Anbindung Versionskontrollsystem Umstieg auf neuere Eclipse Version

uc Use Case

Reqlipse 1.0

Abhängigkeiten zwischen

Anforderungen pflegen

Anforderungsmodell definieren

Anforderung v ersionieren

Anforderungsv ersionen betrachten

Anforderung auf Version

zurücksetzen

Verfolgbarkeit auswerten

Abhängigkeit zu Drittmodellen pflege n

Abhängigkeiten pflegen

Anforderungen exportieren

Anforderungen suchen

«include»

«include»

Page 22: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Teams

Eclipse Development – SS 200811.04.23Seite 22

Reqlipse Workbench UI

Reqlipse Core

Reqlipse Model Manager

Model RegistryModel Instance

Persister

Requirements InstanceModel

Requirements Services

WorkbenchIntegration

RequirementsNavigator

RequirementsEditor

Requirements Model Instances

EMF Models

Requirements Model Plugins

ReqML Metamodel

1

2

33

Page 23: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Aktivitäten und Ergebnisse: Nächste Schritte

Anwendungsfälle verfeinern Bildschirmprototypen (wie Beispiel) für alle Dialoge Beschreibung der Anwendungsfälle inkl. der Vor- und Nachbedingungen sowie

alternative Abläufe und Fehlerfälle Features verfeinern (auch Eclipse-spezifische Features)

Komponentenmodell erstellen Schnittstellenspezifikation (Methoden, Datenstrukturen, Ausnahmen)

entwickeln und abstimmen für angebotene und benötige Schnittstellen Erweiterungsmöglichkeiten (Extension Points) untersuchen und definieren

Prototypen erstellen Technische Durchstiche und Erprobung der Schnittstellen in beide Richtungen

(für benötigte Schnittstellen: Implementierung von Mock-Objekten) Paketnamen: org.reqlipse.<layer>.<component>.<structure>

(z.B. org.reqlipse.ui.requirementsnavigator.actions)

Eclipse Development – SS 200811.04.23Seite 23

Page 24: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Ablauf und Betreuung

Nächster Meilenstein: 11. JuniVorstellung der beschriebenen nächsten Schritte

Nächste Woche: Betreuungstermine und am Mittwoch 14 Uhr Vorstellung der Software-Entwicklungsumgebung

Betreuungsmodus: Jedes Team bekommt einen Ansprechpartner genannt. Abstimmung von Betreuungsterminen per E-Mail.

Page 25: Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Eclipse Development – SS 2008 08.02.2014 Seite 1 Software Engineering

Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg

Tipps und Quellen

Dynamic EMF: http://www.ibm.com/developerworks/library/os-eclipse-dynamicemf

Navigation auf EMF Inhaltenhttp://www.ibm.com/developerworks/library/os-eclipse-emf

ecore Dokumentationhttp://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/ecore/package-summary.html

Id Vergabe an EMF Modellelemente

EcoreUtil.getId(), EcoreUtil.setId()

XFeaturehttp://www.pnp-software.com/XFeature/Home.html

http://www.pnp-software.com/XFeatureUpdateSite (Update Site)

Eclipse Development – SS 200811.04.23Seite 25