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

Slides:



Advertisements
Ähnliche Präsentationen
1 Gerardo Navarro Suarez BPM Suite. 2 Quelle: camunda Services GmbH Das Warum hinter Activiti Problem bestehender BPMS: Starker Fokus auf das Business.
Advertisements

Datenbankzugriff im WWW (Kommerzielle Systeme)
Java: Grundlagen der Sprache
ATHOS Benutzertreffen 12. November Auswerteserver Glashütten, 12. November 2008 HighQSoft GmbH, Andreas Hofmann
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
XDoclet ETIS SS05.
Introducing the .NET Framework
.NET – Quo Vadis? Dariusz Parys Developer Group Microsoft GmbH.
Erweiterung von Eclipse als Entwicklungs-Plattform aus Sicht des Eclipse-Boardmitgliedes TogetherSoft Together auf Basis von Eclipse.
Uwe Habermann WPF Avalon Formulare aus VFP verwenden Venelina Jordanova
Aichinger Christian, Strasser Jürgen. Inhalt JSF EJB Praxis - Integration.
Architekturen und Techniken für computergestützte Engineering Workbenches.
Cooperation unlimited © Zühlke Juni 2009 Hansjörg Scherer Folie 1 Cooperation unlimited TFS als BackEnd für Visual Studio und Eclipse.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
VU Semistrukturierte Daten 1
Microsoft.NET InfoPoint 8. Juni 2005 Stefan Bühler.
Datenbanken im Web 1.
Web Services Spezielle Methoden der SWT Liste V – WS 2008/2009 Christian Boryczewski.
Microsoft Silverlight Autor: Christian Pirker. Inhalt Einführung Silverlight Einführung XAML Silverlight 1.0 und 1.1 Silverlight 2.0 Silverlight 3.0 Ausblick.
Objektorientierte (OO) Programmierung
Seminararbeit Release Management von Web-Systemen Minh Tran Lehrstuhl für Software Engineering RWTH Aachen
Einführung. Ziel der Veranstaltung  Vermittlung von Grundkenntnissen in C++  Solide Basis für anschließende Weiterentwicklung  Fähigkeit, kleine Programme.
Forms 9i - New FeaturesSeite 1 Forms 9i New Features Gerd Volberg OPITZ CONSULTING GmbH.
Funktionsweise eines Funambolservers Natascha Graf Aachen, 01. Februar 2010.
JaGo Ja va Framework for G e o graphical Information Systems Prof. Dr. Klaus Greve Dr. Andreas Poth TZ GIS i.G.
Cubido business solutions gmbh Haidfeldstrasse 33 A-4060 Leonding di(fh) Wolfgang Straßer ° Rundumblick.
Operator Overloading, Mehrfachvererbung, Safe Pointer, Observer.
XML-basierte Beschreibungssprachen für grafische Benutzerschnittstellen Seminarvortrag im Studiengang „Scientific Programming“ von Steffen Richter.
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Web Services Dr. Wolfgang Wörndl
WebServices Vortrag zur Diplomarbeit WebServices Analyse und Einsatz von Thomas Graf FH Regensburg
© 2008 TravelTainment The Amadeus Leisure Group Webanwendungen mit Java - HttpServlets 17.Dezember 2010 Sebastian Olscher Erstprüfer: Hon.-Prof. Dr. H.
Seminar Softwareproduktlinien Domänenspezifische Sprachen Sascha Draffehn von.
Seminarvortrag Möglichkeiten zur dreidimensionalen Darstellung von Straßenoberflächen Matthias Baumgarten.
Entwicklung von Produktionssystem-Komponenten zur Stoffstromsimulation auf Basis des Open-Source-Frameworks EMPINIA P. Jahr, L. Schiemann M. Mäusbacher,
2012 Mapbender3 – INTERGEO 2012 Hannover Astrid Emde Mapbender3 Astrid Emde INTERGEO 2012 Hannover.
Source Talk Tage 2008 NetBeans Rich Client Platform NetBeans RCP NetBeans Rich Client Platform Anton Epple Göttingen, Source Talk Tage.
TYPO3 Universität zu Köln IT-Zertifikat der Philosophischen Fakultät Digital Objects Processing Sommersemester 2016 Stefanie Sturm & Corinna Schumann.
Einführung in AspectJ ● Inhalt: 1)Überblick 2)Elemente des crosscuttings in AspectJ 3)„Hello World“ in AspectJ 4)Wie Aspekte in Java verwoben werden 5)Join.
1 Das Dilemma des Architekten Ziel: ein gut designtes System, welches mit zukünftigen Anforderungen umgehen kann, ohne dass es zu Einschränkungen in der.
Verteilte Anwendungen: J2EE
Praktische Informatik 1
9.5 Microsoft .NET Architektur: objektorientiert/Fernaufrufe (8.1.6 )
Wsl schon abgeschaltet Idee dahinter ist interessant und revolutionär
Vor- und Nachteile von RAD-Projekten
Metadaten als Grundlage der MDI-DE
Vorstellung des Drittmittelprojektes PLUGIN.NET
Neue Entwicklungen im GeoPortal.rlp
Jakarta Struts Quasi-Standard für JSP-basierte Entwicklung: Jakarta Struts Key Features von Struts: Implementierung des Action-Command-Pattern („Model.
Entwicklung von produktionsorientierten Simulationskomponenten zur Stoffstromsimulation auf Basis einer Open Source Platform Referenten: Paul Jahr, Lars.
VIVO im Überblick Christian Hauschke FAG Technische Infrastruktur
Excel-Berichte erstellen und verteilen
Gewachsene Architektur Das kann nicht funktionieren!
X-NetMES – MES mit SAP-ERP Migrations- und Einführungsszenarien
1.
Web-Kartografie in der amtlichen Statistik Deutschlands − Regionale Statistik, Bundes- und Europawahlen, zukünftige Aktivitäten − Arbeitsgruppentreffen.
Julian Lebherz Betreuer: Thomas Büchner Christian Neubert
Friederike Kleinfercher Abteilung Forschung und Entwicklung
Geschäftsregeln in XÖV-Standards XÖV-Konferenz 2018
XINFO HORIZONT Überblick zu XINFO Software for Datacenters
eSciDoc als Plattform für die Wissenschaft Anwendungen und Szenarien
PI Infrastruktur in der Max-Planck-Gesellschaft
Methodische Grundlagen des Software-Engineering
Zusatzfeatures für herkömmliche OPACs
Studiengang Informatik FHDW
Da·ten·bank /Dátenbank/ Substantiv, feminin [die]
Devops David Jaroš
OO Analyse und Entwurf für Anwender
Konzeption und Institutionalisierung des FDM — aus der Erfahrung eines Forschungsprojekts in den digitalen Geisteswissenschaften Teil 2: Die Perspektive.
SOFTWARE- UND WEB-LÖSUNGEN
 Präsentation transkript:

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

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

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

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

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

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,...

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

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

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

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#...

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

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 !

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

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!

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

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

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

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

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

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“

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

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

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

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

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

T. Busse, N. Denz: Drittmittelprojekt PLUGIN.NET26 Konfiguration durch Bundle.xml <bundle id="ifu.umberto.netEditor.internal" name="ifu Umberto NetEditor Internal"... <extension id="ifu.umberto.netEditor.toolbars" name="Umberto 6 Net Editor Toolbars" point="platform.ui.workbench.toolbarContributionPoint"> <toolbar id="ifu.umberto.netEditor.toolbars.main" name="Umberto Net Editor Toolbar" ignoreParents="true" type="Toolbar"/> <extension id="ifu.umberto.netEditor.action" name="NetEditor actions" description="Net editor actions" point="platform.ui.actionContributionPoint"> <action id="ifu.umberto.netEditor.actions.showNetEditor" label="Net Editor" parent="workbench.menu.view" iconId="umberto.netEditor.icon" commandId="ifu.umberto.netEditor.commands.showNeteditorView" /> <extension id="ifu.umberto.netEditor.command" name="NetEditor commands" description="Commands of net editor" point="platform.runtime.commandPoint"> <command id="ifu.umberto.netEditor.commands.showNeteditorView" implementingClass="Ifu.Umberto.NetEditor.Internal.Commands.NewNetEditorCommand..." /> Beispiel: Bundle Ifu.Umberto.NetEditor.Internal (Auszug)

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

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

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

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

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

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

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

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

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

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

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 ●...

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

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

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

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

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

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

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