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
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
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
Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg
Vision: Eclipse Requirements Engineering
Eclipse Development – SS 200811.04.23
Seite 4
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
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»
Lehrstuhl für Software EngineeringFriedrich-Alexander-Universität Erlangen-Nürnberg
Feature Modell (Draft)
Eclipse Development – SS 200811.04.23
Seite 7
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
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
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
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
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
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
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
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.
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)
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
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
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
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
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»
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
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
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.
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