Software Engineering in der Praxis: Eclipse Development Design Workshop Eclipse Development – SS 2008
Agenda Anforderungen Reqlipse Architektur und Design 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 Eclipse Development – SS 2008
Vision: Requirements Engineering Framework Volere RUP … Method Extensibility Feature Extensibility RE Metrics Analyzer Language Analyzer … Eclipse Development – SS 2008
Vision: Eclipse Requirements Engineering Eclipse Development – SS 2008
Vision: RE Metamodellierung Modellierungssprache für Requirements Engineering Methoden / Modelle (ReqML). Damit sind beliebige Ansätze modellierbar und im System integrierbar. MOF / ecore M3 ReqML M2 Custom Requirements Model M1 Project Requirements M0 Eclipse Development – SS 2008
Anwendungsfälle Eclipse Development – SS 2008
Feature Modell (Draft) Eclipse Development – SS 2008
Architekturkonzept: A-Architektur Reqlipse Workbench UI Workbench Integration Requirements Navigator Requirements Editor Requirements Model Instances Reqlipse Core Requirements Instance Model Requirements Services EMF Models Reqlipse Model Manager Requirements Model Plugins Model Instance Persister Model Registry ReqML Metamodel Eclipse Development – SS 2008
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“ [1] MEDIQUAL Qualitätsglossar: http://www.mediqual.ch Eclipse Development – SS 2008
Architekturkonzept: T-Architektur Reqlipse Workbench UI Eclipse RCP Requirements Model Instances Reqlipse Core Eclipse Platform Runtime EMF EMF Models Dynamic EMF Reqlipse Model Manager Eclipse Development – SS 2008
Building Block: Reqlipse Model Manager Model Instance Persister Model Registry 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 2008
Building Block: Reqlipse Core Requirements Instance Model Requirements Services 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 2008
Building Block: Reqlipse Workbench UI Workbench Integration Requirements Navigator Requirements Editor 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 2008
ReqML Eclipse Development – SS 2008
ReqML Instanzen Problem: EMF unterstützt direkt keinen 4-stufigen Metamodellierungsansatz (nur 3-stufigen). (Metametamodell, Metamodell, Modell, Modell-Instanz) Lösungsvarianten: 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 Verzicht auf Metamodell und Entwicklung eines Frameworks auf Modellebene (abstrakte Basisklassen). Keine Sprachkonstrukte für Attribute und Referenzen möglich Instanzmodell nicht auf Basis von EMF. aufwändig und unflexibel Zick-zack Modellarchitektur (nächste Folie) ecore + ReqML ecore ecore 1. 2. Req. Model ReqML + Req. Model 3. ReqML Req. Mod. Inst. Req. Mod. Inst. Req. Model Eclipse Development – SS 2008
Zick-zack Modellarchitektur Annotation (per EAnnotation – entspricht UML Tagged Value bzw. Stereotyp) ecore ReqML Runtime Requirements Model Requirements Model Requirements Model Instance Modelltransformation (bei uns: manuell) Eclipse Development – SS 2008
ReqML Instanzen ReqProjectType Eclipse Development – SS 2008
ReqML Instanzen ReqEntityType Eclipse Development – SS 2008
ReqML Instanzen ReqFieldStructure Eclipse Development – SS 2008
ReqML Instanzen ReqFieldType (+ Unterklassen) Eclipse Development – SS 2008
Variabilitätsszenarien 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 Eclipse Development – SS 2008
Teams 1 2 3 3 Reqlipse Workbench UI Reqlipse Core Workbench Integration Requirements Navigator Requirements Editor Requirements Model Instances 2 Reqlipse Core Requirements Instance Model Requirements Services 3 EMF Models 3 Reqlipse Model Manager Requirements Model Plugins Model Instance Persister Model Registry ReqML Metamodel Eclipse Development – SS 2008
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 2008
Ablauf und Betreuung Nächster Meilenstein: 11. Juni Vorstellung 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.
Tipps und Quellen Dynamic EMF: http://www.ibm.com/developerworks/library/os-eclipse-dynamicemf Navigation auf EMF Inhalten http://www.ibm.com/developerworks/library/os-eclipse-emf ecore Dokumentation http://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() XFeature http://www.pnp-software.com/XFeature/Home.html http://www.pnp-software.com/XFeatureUpdateSite (Update Site) Eclipse Development – SS 2008