Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Vorstellung des Drittmittelprojektes PLUGIN.NET Thorsten Busse, Nicolas Denz Oberseminar ASI WS2007/08 - 04.12.2007.

Ähnliche Präsentationen


Präsentation zum Thema: "Vorstellung des Drittmittelprojektes PLUGIN.NET Thorsten Busse, Nicolas Denz Oberseminar ASI WS2007/08 - 04.12.2007."—  Präsentation transkript:

1 Vorstellung des Drittmittelprojektes PLUGIN.NET Thorsten Busse, Nicolas Denz Oberseminar ASI WS2007/

2 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET2 Gliederung 1. Projektumfeld und Ziele 2. Grundlagen.NET und Plugin-Frameworks 3. Vorgehen bei der Entwicklung 4. Vorstellung des entwickelten Plugin-Frameworks ● Gesamtarchitektur ● Persistenz und Fachsprache für Stoffstromanalyse 5. Zusammenfassung und Ausblick

3 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET3 1. Einführung ● Projektumfeld ● Zielsetzung des Projekts ● Quelle – Förderantrag Innovationsstiftung (2006)

4 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET4 Projektumfeld: Eckdaten ● Förderung durch Innovationsstiftung / RIS Hamburg – Bewilligung im Januar 2007 – Laufzeit für Uni-HH: März 2007 bis Juni 2008 ● Kooperationsprojekt – ifu Hamburg GmbH – Universität Hamburg, FB Informatik – technisch aufbauend auf Projekt Emporer (FHTW Berlin) ● Industrieprojekt – angewandte Forschung – vermarktbares Ergebnis

5 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET5 Projektumfeld: Umweltinformatik ● ifu Hamburg GmbH – mittelständisches Software-Unternehmen – Stoffstrommanagement und BUIS ● Randbedingungen und Anforderungen – effiziente Entwicklung umfangreicher Softwareprodukte – Flexibilität ● kontinuierlicher Wandel im Anwendungsbereich ● globale Ausrichtung (Sprachen, Regelungen, Standards) ● kundenindividuelle Lösungen ● Customizing von Standardsoftware, Entfernen von Features – Zielplattform MS Windows

6 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET6 Zielsetzung des Projekts ● Entwicklung eines Plugin-Frameworks – bausteinartige Zusammenstellung neuer Software vereinfacht Entwicklung, Anpassung und Verteilung – Microsoft.NET-Plattform als technische Grundlage – Bereitstellung unter Open-Source-Lizenz ● Arbeitspakete Universität Hamburg – Fachsprache für die Stoffstromanalyse – Datenbankpersistenz ● Exemplarischer Einsatz im BUIS-Bereich – Umberto, e!Sankey, Stoffstromsimulator MILAN,...

7 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET7 Exemplarischer Einsatz in BUIS Quellen der Screenshots: Milan: V. Wohlgemuth: Einführung Simulationsprojekt WS 06/07 e!Sankey: Umberto: MILA N e!Sankey Umberto

8 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET8 Nutzen des Projekts ● Innovative Aspekte – Entwicklung eines allgemeinen Plugin-Frameworks für.NET – Persistenz in dynamischen Plugin-Architekturen – schnittstellenbasierte Fachsprache für Stoffstromanalyse – Granularität von Plugins – Versionierung von Plugins ● Wirtschaftlicher Nutzen – passgenaue Anwendungen – Investitionssicherheit – Drittanbieter-Markt

9 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET9 2. Grundlagen ●.NET-Plattform ● Plugin-Frameworks ● Quellen – Förderantrag Innovationsstiftung (2006) – P. Jahr, S. Simroth (2007): Entwicklung von Teilbereichen eines Software-Frameworks im Einsatzkontext betrieblicher Umweltinformationssysteme – F. Simmendinger (2007): Referenznetze zur Modellierung von wissenschaftlichen Workflows

10 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET10.NET-Plattform basierend auf en.wikipedia.org/wiki/.NET_Framework Common Language Infrastructure (CLI) Common Type System (CTS) Common Language Specification (CLS) Metadata Virtual Execution System (VES) Common Language Runtime (CLR) Common Intermediate Language (CIL) realisiert läuft auf übersetzt in Spezifikation virtuelle Maschine Zwischen- sprache Hochsprachen Base / Framework Class Libraries (BCL, FCL) Bibliotheken Microsoft.NETPortable.NetMONO Implemen- tationen C# C++ VB F#...

11 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET11 Plugin-Frameworks: Begriffe ● Komponente – wiederverwendbarer Softwarebaustein – „eine sinnvoll einsetzbare Funktionalität“ (Harris, nach Wohlgemuth 2005, S. 45) – standardisierte Schnittstelle erlaubt Interoperabilität ● Plugin – spezielle Komponente – erweitert Anwendung um beliebige Funktionalität – jederzeit zu ergänzen / entfernen (ohne Rekompilierung) – plugin-fähige vs. plugin-basierte Anwendungen

12 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET12 Plugin-Frameworks: Praxis ● Beispiele aus dem MS Windows-Umfeld – MS Visual Studio (VS-Add-In, VSPackage), #develop (plugin-fähig) – MILAN Stoffstrom-Simulator (plugin-basiert) ● Eclipse Rich Client Platform – Plugin-Infrastruktur basierend auf Java und OSGi – erweiterbare IDE → Universal Tools Platform – umfangreiche Sub-Projekte und Erweiterungen ● GEF (Grapheneditor), EclipseLink (Persistenzdienste),... ➔ Keine vergleichbare Plattform im.NET-Umfeld !

13 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET13 Plugin-Frameworks: Eclipse Quelle:

14 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET14 Plugin-Frameworks: Evaluation ● Nutzung von Eclipse ? – Zielplattform MS Windows (Know How / Code vorhanden) – seinerzeit attraktivere (Sprach-)konzepte bei.NET – Performanz, GUI-Bibliotheken, OS-Integration überlegen ● Re-Implementation für.NET ? – (zu) mächtiges Framework in ständiger Weiterentwicklung – etwas andere Ausrichtung durch IDE-Bezug – Projekt „Eclipse.NET“ unausgereift und inaktiv seit 2005 ➔ Reflektierte Übernahme, Modifikation und Erweiterung bewährter Konzepte aus Eclipse!

15 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET15 3. Vorgehen bei der Entwicklung ● Vorgehensmodell ● Entwicklungswerkzeuge ● Quellen – Förderantrag Innovationsstiftung (2006) – P. Jahr, S. Simroth (2007): Entwicklung von Teilbereichen eines Software-Frameworks im Einsatzkontext betrieblicher Umweltinformationssysteme

16 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET16 Vorgehen bei der Entwicklung ● Vorgehensmodell: eXtreme Programming – testgetriebene Entwicklung – kontinuierliche Integration ● Verteilte Entwicklung Platform Umberto e!Sankey,... Platform (Persistenz) Umberto (Fachsprache, Netzeditor) Open Source Netzeditor zentraler Buildserver Kollaborationsplattfo rm Subversion Platform (Runtime, Workbench, GraphModel,...) Stoffstromsimulator, Simulationskomponenten

17 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET17 Entwicklungswerkzeuge ● Programmierung – C# 2.0 /.NET-Framework – Microsoft Visual Studio IDE (2005) – Code Generatoren ● Build – NAnt Build Tool – Cruise Control Build Server ● Qualitätssicherung – NUnit – NCover, FxCop

18 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET18 Organisation ● Probleme durch Abhängigkeiten zwischen den Projekten ● Zukünftig Berücksichtigung im Vorgehensmodell – Stabiler Codezweig – Experimenteller Codezweig – Unterstützung durch CI

19 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET19 4. Vorstellung Plugin-Framework ● Gesamtarchitektur ● Persistenz ● Fachsprache für Stoffstromanalyse ● Quelle – P. Jahr, S. Simroth (2007): Entwicklung von Teilbereichen eines Software-Frameworks im Einsatzkontext betrieblicher Umweltinformationssysteme

20 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET20 Plugin-Framework Struktur Platform (Layer 1) (Service-Layer) Platform.Runtime (multiple bundles) WinForms.UIUser-AssistanceScriptingPersistenceWeb.UI (4 st draft, incomplete (project state, Nov 26, 2007) Platform (Layer 2) (Domain-Model-Layer) Graphical Net Editor SupportRule Engine MessageBus Indendent Applications (Layer 3) (Application-Layer) Reference Application Umberto Milan Search DomainModelService Fachsprache Quelle: In Anlehnung an Schnackenbeck, Panic, Wohlgemuth: Eine offene Anwendungsarchitektur als Fundament eines Methodenbaukastens für BUIS, Berlin 2007, Workshop „Simulation in den Umwelt- und Geowissenschaften, Medizin und Biologie“

21 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET21 Platform.Runtime ● Aufgaben der Laufzeitumgebung – starten und registrieren von Plugins – Verwalten von Erweiterungen und Erweiterungspunkten – Bereitstellung grundlegender Dienste ● Inversion of Control Container – Auflösung der Anhängigkeiten zwischen Plugins – lose Kopplung durch Dependency Injection ● Registrierung von Klassen im Container unter Angabe implementierter Schnittstellen (Verträge) – Objekterzeugung: Angabe benötigter Verträge ● Interface-, Setter- oder Constructor-Injection Castle. WindsorContainer Platform IoCContainer Castle. MicroKernel Quelle: Jahr+ 2007, S. 40

22 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET22 Grundkonzepte IService Registry IService Start() Stop() manages * Dienste IExtensionRegistry IExtension Point IExtension * * manages extended by * Erweiterungen Bundles IBundleServiceIBundle IRuntimePart Id: string manages * ICacheService uses IObjectBuilderService Build (): T Build (id: string): T Build (class: Type): T Build (contract: Type, class: Type, id: String) BuildTransient (class: Type): T... Objekterzeugung im IoC-Container Quelle: Jahr+ 2007, S

23 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET23 Weitere Dienste der Runtime ● Fehlerbehandlung – konfigurierbarer IPlatformErrorService – Logging basierend auf log4Net ● Befehlsausführung: ICommandService – Konfiguration & Ausführung parameterisierter Kommandos – Undo-/Redo-Funktionalität in Arbeit ● Konfiguration von Erweiterungen – realisiert als IConfigurationElement – XML-basierte Beschreibung Quelle: Jahr+ 2007, S IConfigurationElement DeclaringExtension: IExtension Configure(declExt: IExtension) Quelle: Jahr+ 2007, S

24 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET24 Platform.UI ● Unterstützung von Benutzerinteraktionen – Actions: grafische Repräsentation von Kommandos – SelectionService: grafische Auswahl von Objekten ● Workbench als grafischer „Arbeitsplatz“ – Parts: Toolbars und Views – Perspektive: aufgabenspezifische Anordnung der Elemente ● Abstrakte Oberflächenelemente – Navigator: baumartig strukturierte Daten – GridView: tabellarische Daten – PropertyEditor: Objekteigenschaften,... Quelle: Jahr+ 2007, S

25 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET25 Beispiel: Umberto 6 Prototyp Navigator Property Editor Anwendungs- spezifische Views Toolbar mit Actions

26 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET26 Konfiguration durch Bundle.xml Beispiel: Bundle Ifu.Umberto.NetEditor.Internal (Auszug)

27 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET27 Anforderungen an Persistenzdienst ● Bereitstellung und Verwaltung von persistenten Objekten für beliebige andere Plugins ● Gemeinsame Nutzung durch alle Plugins ● Erweiterbarkeit durch andere Plugins ● Abstraktion von konkreten Backends ● Kapselung von objektrelationaler Mapper (ORM), z.B. NHibernate

28 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET28 Anforderungen (2) ● Speicherung der Daten verschiedener Plugins in einer Datenbank ● Speicherung von Daten an verschiedenen Speicherorten/Datenbanken ● Dynamisches Hinzufügen von neuen Eigenschaften zu Objekten anderer Plugins ● Undo/Redo ● fortlaufende/gezielte Speicherung

29 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET29 Herausforderungen ● Zu persistierende Daten zunächst unbekannt ● Variable Erweiterbarkeit des Datenmodells ● Versionsabhängigkeit persistenter Daten ● Transaktionen über mehrere Plugins hinweg

30 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET30 Persistenzdienst (1) PersistenceService Repository (DBMS Firebird) Repository (DBMS SQLite) Repository (DBMS XYZ) Plugin DomainObject(s)

31 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET31 Persistenzdienst (2) DomainModelServic e MessageBus PersistenceDomainStore A PersistenceDomainStore B PersistenceDomainStore n Plugin DomainObject(s) Plugin

32 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET32 Nutzung des DMS durch Plugins ● Bereitstellen der Mappings für den ORM für eigene zu persistierende Domänenobjekte ● Angabe der benötigten Domänenobjekte anderer Plugins ● Zugriff auf den DMS durch IoC ● Zugriff auf Domänenobjekte – Anfrage von neuen Instanzen – Anfrage von Factories – Abfrage von Instanzen via (derzeit) HQL, SQL oder Criteria- API ● Explizite Speicherpunkte können über entsprechende Kommandos realisiert werden

33 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET33 MessageBus ● Direkter Nachrichtenaustausch zwischen den Plugins unpraktikabel ● Zentrale Komponente zur Bereitstellung von Ereignissen ● Implementiert das „Publisher-Subscriber“-Muster ● Erlaubt größere Unabhängigkeit der Plugins voneinander ● Performanter Austausch von Nachrichten ● Vielfältige Vorverarbeitung/Filterung der Nachrichten möglich ● Bonus: Erlaubt Realisierung von Undo/Redo mit Verzicht auf das Memento-Entwurfsmuster

34 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET34 Dyn. Objekteigenschaften ● Dynamisches Hinzufügen von neuen Eigenschaften zu Objekten anderer Plugins ● Entwurf eines erweiternden Objekts – Referenz auf erweitertes Objekt – Implementierung von IExtendingProperty – Registrierung am entsprechenden Erweiterungspunkt ● Abfrage der Erweiterungen von Domänenobjekten über den ExtendingPropertyService

35 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET35 Fachsprache für Stoffstrom-Plugins ● Eine schnittstellenbasierte Fachsprache für die anwendungsspezifische Zusammenarbeit von Plugins aus dem Bereich Stoffstromanalyse ● Zwei wichtige Komponenten: – Umsetzung von Begriffen in Schnittstellen – Festlegen von Regeln für korrekte Interaktionen

36 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET36 Beispiele für Schnittstellen

37 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET37 Automatische Codegenerierung ● Generierung verschiedener Artefakte aus zentralen XML- Dateien – Mappings für ORM etc. – Interfaces und Klassen – Beliebige weitere Artefakte ● Dekoratoren ● ExtendingProperties ●...

38 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET38 Beispiel (gekürzt)...

39 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET39 Fachsprache für Stoffstrom-Plugins ● Gültige Interaktionen/Nutzung über Regeln festlegen – Rule Engine zur Durchsetzung von Vor- und Nachbedingungen, Invarianten („programming by contract“) – Entsprechenden Code generieren lassen ● Wirkungsbereiche von Regeln für Domänenobjekte – Einzelne, verschiedene Eigenschaften eines Objekts – Objektübergreifende Regel innerhalb eines Plugins – Objekt- und Pluginübergreifende Regeln ● Durchsetzung proaktiv oder reaktiv

40 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET40 Eine neue DSL? ● Mit Schnittstellen und Regeln werden bereits wichtige Anforderungen an eine „domain-specific programming language“ (DSL) erfüllt – „A DSL is a programming language designed for, and intended to be useful for, a specific kind of task.“ (Quelle: Wikipedia) ● Entwurf einer echten DSL für Stoffstromanwendungen auf Basis der vorhandenen Grundlagen wäre möglich

41 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET41 5. Zusammenfassung und Ausblick ● Entwicklung von Teilaspekten eines offenen Plugin- Frameworks unter.NET – orientiert an Kernkonzepten aus Eclipse – im Kontext betrieblicher Umweltinformationssysteme – Arbeitspakete Stoffstrom-Fachsprache und DB-Persistenz ● Evaluierung an Umberto 6 Prototyp ● erster Release des Plugin-Frameworks (Version 0.1) – geplant für – voraussichtlich unter Apache License

42 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET42 Ausblick Persistenz ● Kontexte für Kommandos und Aktionen, die eine Zusammenfassung von persistenzrelevanten Änderungen zu transaktionsähnlichen Einheiten erlauben. ● Auswahl/Entwurf einer möglichst Backend-neutralen Abfrage von Domänenobjekten vom DMS – LINQ? ● Versionierung/Migration des Backend-Schemas bei Versionsänderung von Plugins ● Implementierung von Undo/Redo mit Hilfe vom MessageBus

43 T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET43 Ausblick Fachsprache ● Entwurf/Implementierung von Regeln bei Verfügbarkeit der Rule Engine oder erweiterte Nutzung von Codegenerierung ● Bereitstellung einer echten DSL? ● Weiterentwicklung eines allgemeinen Rahmenwerks für Graphen-Editoren – exemplarischer Einsatz im Umberto 6 Netzeditor

44 Vielen Dank für die Aufmerksamkeit ! Fragen...?


Herunterladen ppt "Vorstellung des Drittmittelprojektes PLUGIN.NET Thorsten Busse, Nicolas Denz Oberseminar ASI WS2007/08 - 04.12.2007."

Ähnliche Präsentationen


Google-Anzeigen