1 W3LJ2-Framework Rapid Application Development Framework zur modellgetrieben Entwicklung von kaufmännisch-administrativen Anwendungen W3L AG [email protected] 2013 2 Agenda Einführung MDA Domänen- und Anwendungsengineering Vorgehen Geschäftsanwendungen auf Basis des W3LJ2-Frameworks Bestandteile des W3LJ2-Frameworks Definition des ViewModels Deklaratives Binding Einsatzmöglichkeiten Rollenbezogener Einsatz Fazit zurück 3 Buzz Word oder »heiliger Gral« der Softwareentwicklung? EINFÜHRUNG MODELL DRIVEN ARCHITECTURE 4 Model Driven Architecture 5 Model Driven Architecture Domänen- und Anwendungsengineering Domänenengineering DomänenWissen Domänen-Analyse Domänen-Entwurf Anforderungen Konzepte & ReferenzArchitektur Applikations-Analyse Applikations-Entwurf Produkt-spezifische Anforderungen Anwendungsengineering DomänenImplementierung Komponenten, Frameworks & Generatoren ApplikationsImplementierung 6 Probleme bei der Softwareentwicklung Die zwei Ebenen der Softwareentwicklung Analyse-/Definitionsphase (fachlich, konzeptionell) Entwurfs-/Implementierungsphase (technisch, plattformspezifisch) Lösung des fachlichen Problems Lösung des techn. Problems Das Verstehen des fachlichen Problems ist elementar (Business Analyst) 7 Model Driven Architecture Produktivitätssteigerung durch Automation und Wiederverwendung Manuelle Erstellung durch den Systemanalytiker (1. Ebene) Generierung der Anwendungsumgebung (2. Ebene) (vgl. JANUS / Otris Software AG) 8 Model Driven Architecture Beispiel Kundenverwaltung (fachlich) 9 Model Driven Architecture Beispiel Kundenverwaltung (technisch) Quelle: Lehrbuch der Softwaretechnik, Prof. Dr. Helmut Balzert 10 Model Driven Architecture Beispiel Kundenverwaltung (Einzelplatzanwendung) Quelle: Lehrbuch der Softwaretechnik, Prof. Dr. Helmut Balzert 11 Model Driven Architecture Beispiel Kundenverwaltung (Mehrplatzanwendung) Quelle: Lehrbuch der Softwaretechnik, Prof. Dr. Helmut Balzert 12 Model Driven Architecture Ökonomische Vorteile Quelle: Code Generation 2010 Introduction Model-Drivien Software Delevlopment 13 Model Driven Architecture Generator erzeugt aus einem fachlichem Modell eine Rahmenanwendung Vorteile Trennung von Funktionalität und Technik Entwickler können sich auf domänenspezifische Probleme konzentrieren Wiederholende Komponenten (Persistenzschicht, Benutzerverwaltung, Erfassungsdialoge) müssen nicht ständig neu entwickelt werden Steigerung der Entwicklungsgeschwindigkeit Entwickler müssen keine Experten in mehreren Disziplinen sein Vorgehen Fachliches Modell entwerfen Modell mit Meta-Informationen versehen Anwendung generieren User-Code entwickeln Anwendung ausführen 14 Übersicht – Model Driven Architecture Lösung: Metadaten Standardfunktionen • Alle Stundensätze einsehen • Erfassungsdialoge • Verbindungen herstellen • Benutzer- und Zugriffsrechte • Letzte Änderung/erstellt von • Journalisierung Probleme • Pluralbezeichner für Stundensatz • „Name“ anderes Textfeld als „Beschreibung“ • Stundensatz besitzt eventuell Maximal-/Minimalwert • ... Keine Modellierungsmöglichkeit in UML 15 Übersicht – Model Driven Architecture Metadaten 16 Übersicht – Model Driven Architecture Generator Metadaten Produktgrundgerüst 17 Übersicht – Model Driven Architecture Produktgrundgerüst User-Code Compiler Bibliothek 18 Übersicht – Model Driven Architecture Bibliothek Framework / Laufzeitumgebung Anwendung 19 GESCHÄFTSANWENDUNGEN AUF BASIS DES W3LJ2-FRAMEWORKS 20 Model Driven Architecture Domänen- und Anwendungsengineering Domänenengineering DomänenWissen Domänen-Analyse Domänen-Entwurf Anforderungen Konzepte & ReferenzArchitektur Applikations-Analyse Applikations-Entwurf Produkt-spezifische Anforderungen Anwendungsengineering DomänenImplementierung Komponenten, Frameworks & Generatoren ApplikationsImplementierung 21 Technische Infrastruktur W3LJ2-Framework Dynamische Assoziationen Customizing Anpassbarkeit Standard Enterprise Funktionalität DomänenprojekteServercode Historisierung / Journalisierung Modularisierung UI-Engine DomänenprojektModelle DomänenprojekteGUI-Erweiterungen Sitzungsverwaltung / SSO Generatoren Benutzer- und Rechteverwaltung Metadaten Persistenzschicht MySQL MS SQL Oracle PostgresSQL 22 Erstellung des Anwendungsmodells Neues Projekt anlegen (Class diagramm) Stereotype unter Properties auf <<application>> setzen Gewünschten Sachverhalt mithilfe der UML als Klassendiagramm modellieren Klassen, Attribute, Operationen, Assoziationen modellieren Kardinalitäten und Rollennamen angeben 23 Modellierung von Meta-Informationen W3LJ2-Specifie aufrufen Meta-Daten der verschiedenen Klassen bearbeiten Evtl. ExtensionViews definieren (Klasse wählen Layout ViewExtension) Projekt-Einstellungen im Specifier festlegen (Hauptprojekt Reiter Application Settings) 24 Anwendung generieren Mit lässt sich die gesamte Anwendung im angegebenen Verzeichnis generieren Eigene Implementierungen sollten nur in den User-Code Klassen erzeugt werden Bei erneuter Generierung wird der bereits vorhandene User-Code nicht überschrieben! Durch Annotationen und den Einsatz von Hibernate ist die gesamte Anwendung persistent in einem DB-Schema vorhanden 25 Implementierung von User-Code Partial Class-Konzept zur Verteilung von generiertem und manuell erstelltem Programmcode. Neben jeder erstellten Klasse gibt es zusätzlich jeweils eine User-Code Klasse, welche der Anwender nutzen kann, um eigenständigen Code zu implementieren. Dies ist vor allem bei vorher definierten Operationen notwendig! 26 Ausführen der Anwendung Beim Starten der Anwendung per Bereich aufgerufen werden. oder F5 sollte zunächst der Admin- Hier kann nun das Datenbankschema und das Framework erstellt, sowie das eigene Projekt deployed werden DB-Schema erstellen Framework erstellen Anwendung deployen 27 Anmeldung Mit einem Klick auf Startup RAD-Application lässt sich die Anwendung starten Im folgenden Dialog wird man gebeten, sich anzumelden Benutzername: sysadmin Passwort: sysadmin 28 Motivierendes Beispiel 29 W3LJ2-Framework Komponenten des W3LJ2-Frameworks W3L.Specifier / RAD-Generator MDA-Plugin für den Enterprise Architect RAD-Environment Zuständig für die Realsierung der Erweiterungsarchitektur Plattform für Erweiterungseinheiten / Geschäftsmodule RAD-Foundation Spezielle Klassenbibliothek, welche von Erweiterungseinheiten und von dem RADEnvironment verwendet wird. RAD-Presentation Eine generische und über Metadaten anpassbare sowie webbasierte Benutzerschnittstelle 30 W3LJ2-Framework Landschaft einer W3LJ2-Framework-Anwendung 31 Technische Infrastruktur W3LJ2-Framework Dynamische Assoziationen Customizing Anpassbarkeit Standard Enterprise Funktionalität DomänenprojekteServercode Historisierung / Journalisierung Modularisierung UI-Engine DomänenprojektModelle DomänenprojekteGUI-Erweiterungen Sitzungsverwaltung / SSO Generatoren Benutzer- und Rechteverwaltung Metadaten Persistenzschicht MySQL MS SQL Oracle PostgresSQL 32 Generische Objektverwaltung Es wird zwischen Listenansichten und Detailansichten unterschieden Listenansichten dienen zur Auflistung von Objektmengen Listet alle Objekte einer Klasse und von Unterklassen dieser Klasse auf Vorhandene Funktionen Paging, Filter, Sortieren, Öffnen und Löschen Export der Liste in einer CSV- oder XSL-Datei Aufrufen von statischen parameterlosen Methoden Detailansichten dienen zum Bearbeiten einzelner Objekte Listet alle Attribute eines Objekts auf Vorhandene Funktionen Aufrufen von Member-Methoden Bearbeiten von Assoziationen Öffnen von assoziierten Objekten Validierung von Eingaben (Unique; Required; Contraints; eigene Validierungsregeln) 33 Generische Objektverwaltung Anpassbarkeit der Listenansichten Spalten können ein- und ausgeblendet werden Die Standardsortierung kann festgelegt werden Eine zusammenfassende Übersichtsseite kann eingeblendet werden 34 Generische Objektverwaltung Anpassbarkeit der Detailansichten Layout-Strategien können verändert werden Einspalten- oder Zweispalten-Layout; Flow-Layout Attribute können gruppiert werden (Expander/Tab) Gruppierungen können geschachtelt werden Verschiedene Eingabekomponenten können ausgewählt werden TextBox; RichTextBox; MultilineTextBox; DatePicker; Calendar; TimePicker; DateTimePicker; EnumDropDown; FileUpload; CheckBox; PasswordBox; CurrencyTextBox; MLStringBox Verschiedene Assoziationskomponenten können ausgewählt werden To-Many: Grid; CheckBox; Autocomplete To-One: Box; Dropdown; Autocomplete 35 Generische Objektverwaltung Anpassbarkeit der Detailansichten 36 Technische Infrastruktur W3LJ2-Framework Dynamische Assoziationen Customizing Anpassbarkeit Standard Enterprise Funktionalität DomänenprojekteServercode Historisierung / Journalisierung Modularisierung UI-Engine DomänenprojektModelle DomänenprojekteGUI-Erweiterungen Sitzungsverwaltung / SSO Generatoren Benutzer- und Rechteverwaltung Metadaten Persistenzschicht MySQL MS SQL Oracle PostgresSQL 37 Benutzer- und Rechtesystem Mehrbenutzerfähigkeit Benutzerverwaltung Das RAD-Framework kann Benutzer und Benutzergruppen verwalten Benutzergruppen können geschaltet werden Ein Benutzer kann mehren Benutzergruppe zugeordnet werden Optional kann dieses Mitgliedschaft nur innerhalb eines bestimmten Mandanten gültig sein Mitgliedschaften können generell zeitlich begrenzt werden Für den Import von Benutzerprofilen aus einem „Active Directory“ oder einer anderen LDAP-Quelle existiert ein Import-Werkzeug Verschiedene Authentifizierungsarten Standard-Login über User-Credentials (Benutername und Passwort) Einmalanmeldung über ein Single-Sign-On-Verfahren Unterstützung von Kerberos und NTLM 38 Benutzer- und Rechtesystem Mehrbenutzerfähigkeit Die Anwendung kann von mehreren Benutzern gleichzeitig verwendet werden Zur Synchronisation von kritischen Vorgängen liegen verschieden Sperrmechanismen vor Optimistisch: Gleichzeitige Bearbeitung von Datensätzen ist möglich Im Konfliktfall wird die letzte Speicherung übernommen Pessimistisch: Exklusive Bearbeitung von Datensätzen Ein Datensatz wird exklusiv gesperrt, wenn er bearbeitet wird Ein zweiter Benutzer bekommt nur ein lesendes Recht 39 Benutzer- und Rechtesystem Klassische Enterprise Plattformen (EJB, COM+) besitzen lediglich ein rudimentäres Rechtesystem auf Basis von programmierbaren Erweiterungspunkten (Callbacks) und einfachen rollenbasierten Rechten Nachteil In jeder Anwendung müssen Callback-Funktionen implementiert werden. Im Modell müssen Rollen oder Gruppen definiert werden. Vorteil Leichtgewichtig, erweiterbar und anpassbar. Ein Rechtesystem und die Zugriffsüberprüfung sind Standard-Anforderungen von Unternehmenslösungen Rollenbasiertes Rechtesystem Vergabe von Rechten auf Typ- und Datensatz-Ebene Typ: Zugriff auf alle Elemente eines Typs (Kontrolle, Risiko) Datensatz: Zugriff auf bestimmte einzelne Datensätze Feingranulare Rechte auf Assoziationen, Attribute und Funktionen 40 Benutzer- und Rechtesystem Rollenbasierte Rechtevergabe Wer darf was mit welchem Element? Dies lässt sich über eine Matrix definieren Typ | Rolle Administrator Standard-Benutzer Kontrolle C, D, R, W, E C, D, R, W, E Prozess C, D, R, W, E C, D, R, W, E Risiko C, D, R, W, E C, D, R, W, E Ziel C, D, R, W, E C, D, R, W, E Maßname C, D, R, W, E C, D, R, W, E Test C, D, R, W, E C, D, R, W, E Testanweisung C, D, R, W, E C, D, R, W, E Testplan C, D, R, W, E Ø Benutzer C, D, R, W, E Ø Mandant C, D, R, W, E Ø 41 Benutzer- und Rechtesystem Probleme mit rollenbasierten Rechten auf die einzelnen Typen in einer Anwendung Vergleich Beispiel aus letzter Folie Dem Standard-Benutzer immer das C, D, R, W, E-Recht auf alle Datensätze eines Typs (Kontrolle, Ziel, Risiko) vergeben. Granularität nicht ausreichend! Eine Verfeinerung dieses Rechtesystems erlaubt die Vergabe von Rechte auf einzelne Datensätze Vorteile Anstatt einer Rolle oder einem Benutzer ein Recht auf alle Datensätze zu vergeben, kann das Recht auf einen einzelnen Datensatz bezogen werden! Nachteil Granularität nicht ausreichend! 42 Benutzer- und Rechtesystem Schließlich ist die Vergabe von Lese- und Schreib-Rechten auf der Ebene von Typen oder einzelnen Datensätzen manchmal nicht ausreichend. Beispiel Ein Mitarbeiter hat mehrere Attribute (Alter, Name, Vorname, Position und Gehalt) Während ein Teamleiter auf alle Felder zugriff hat, könnte der Wunsch bestehen, für Projektleiter das Attribut Gehalt auszublenden bzw. das Lese- und Schreib-Recht für die Rolle Projektleiter nicht zu vergeben! Vorteil Fein granulares Rechtekonzept auf Basis von Typen, Datensätzen und Attributen, Assoziationen und Operationen! 43 Benutzer- und Rechtesystem W3LJ2-Rechtesystem Basis für die Rechtevergabe Rechte für Benutzergruppen Individuelle Rechte für einzelne Benutzer Rechtegranularität Erzeugen, Löschen, Lesen, Schreiben, Ausführen, Delegieren Ebenen der Rechtevergabe Klassen, Objekte, Attribute Spezifikation von Rechten Benutzergruppen und Rechte können zur Entwurfszeit mit dem W3L-Specfier modelliert werden 44 Benutzer- und Rechtesystem Mehrbenutzerfähigkeit Rechte auf erreichbare Objekte (Dynamische Rechte) Über Assoziationen können verschiedene Objekte von einem Benutzer aus erreicht werden Beispiel Ein Benutzer hat kein generelles Leserecht auf die Klasse „Beförderung“ Die Benutzerklasse „Mitarbeiter“ ist mit der Klasse „Beförderung“ verbunden und hat ein dynamisches Leserecht auf die Assoziation „Beförderungen“ Ergebnis: In diesem Fall kann der konkrete Benutzer „M1“ auf seine Beförderungen „B1“ und „B2“ lesend zugreifen. Alle anderen Beförderungen sind für ihn nicht sichtbar. 45 Benutzer- und Rechtesystem 46 Technische Infrastruktur W3LJ2-Framework Dynamische Assoziationen Customizing Anpassbarkeit Standard EnterpriseFunktionalität DomänenprojekteServercode Historisierung / Journalisierung Modularisierung UI-Engine DomänenprojektModelle DomänenprojekteGUI-Erweiterungen Sitzungsverwaltung / SSO Generatoren Benutzer- und Rechteverwaltung Metadaten Persistenzschicht MySQL MS SQL Oracle PostgresSQL 47 Standard Enterprise-Funktionalität Mandantenfähigkeit Eine Installation des RAD-Frameworks kann beispielsweise verschiedene Kunden oder Unternehmensbereiche eines Kunden bedienen Mandanten können hierarchisch geschachtelt werden Benutzer können für mehrere Mandanten freigeschaltet werden Unterschieden wird hierbei zwischen globalen und mandantenspezifischen Objektklassen Globale Objektklassen – Diese Objekte werden in allen Mandanten angezeigt Mandantenspezifische Objektklassen – Diese Objekte werden nur im Rahmen des zugehörigen Mandanten angezeigt Ausnahme: Obermandanten einschließen 48 Standard Enterprise-Funktionalität Business-Datentypen Das RAD-Framework verfügt über ein Währungssystem mit Wechselkursen Der Datentyp „CurrencyT“ wird zur Speicherung verwendet Die Speicherung in der Datenbank erfolgt in Millicent (1 Euro entspricht also 100000) Hohe Rechengenauigkeit 128-Bit-Datentyp „Decimal“ Wertebereich: ±7,9 × 1028 Millicent ≙ ±7,9 × 1023 € o ± 790.000.000.000.000.000.000.000 € = siebenhundertneuzig Trilliarden Euro Die Anzahl der Nachkommastellen ist konfigurierbar Unterwährungen Währungen können als Unterwährung mit einem Faktor auf eine Basiswährung angelegt werden 49 Standard Enterprise-Funktionalität Business-Datentypen Eingabefeld für Währungen mit Wechselkurs-Funktion Die Standardvorbelegung kann system- und mandantenweit konfiguriert werden 50 Standard Enterprise-Funktionalität Business-Datentypen Wechselkurse Geben den Kurs zwischen einer Quell- und Ziel-Währung an Verfügen über eine Gültigkeit und eine Herkunftsquelle Das Framework verwendet immer den Wechselkurs mit der jüngsten Gültigkeit 51 Standard Enterprise-Funktionalität Business-Datentypen Eindeutige Referenznummern/Seriennummern/NummernkreiseSerial Konfigurierbares Format Basis, Steuerzeichen, Auffüllende Nullen Beispiel: „2013-AB-000001“, „2013-AB-000002“, usw. Multilingualer Text - MLString Ermöglicht das Erfassen von mehreren Übersetzungen Dokumente - PDEmbeddedMedium Beliebige Dateiformate können gespeichert werden Die Ablage der Dateien erfolgt in Form von Datenbank-Blobs 52 Standard Enterprise-Funktionalität Geplante Aufgaben („Cron-Jobs“) Das RAD-Framework verfügt über einen eigenen Scheduler zur Jobausführung Ausgeführt wird eine beliebige Operation aus dem Domänenmodell Bei nicht statischen Operation ist ein Objektbezug notwendig Konfigurationsmöglichkeiten Wiederholungsmuster Startzeitpunkt und Endzeitpunkt Protokollierung Mailbenachrichtigungen 53 Standard Enterprise-Funktionalität Mehrsprachigkeit Sprachspezifische Formate Währungsformat, z. B.: #.###,## Zeitformat: HH:mm Datumsformat: dd.MM.yyyy Bezeichner und Hinweismeldung Alle Texte sind über ein „ResourceItem“ pro Sprache erfasst 54 Standard Enterprise-Funktionalität 55 Standard Enterprise-Funktionalität Workflows Statische Sicht auf eine Anwendung Software-Architekt entwirft fachliches Modell Generator/Framework erzeugen fertige Anwendung mit Persistenzschicht, Erfassungsmasken, Benutzerverwaltung, Zugriffsschnittstellen etc. Probleme Statische, objektbasierte Erfassungsmasken reichen in bestimmten Situationen nicht aus bzw. sind nicht optimal z.B. Logik von Geschäftsprozessen muss abgebildet werden Verbesserungspotential Generator und erzeugte Anwendung müssen Workflows unterstützen … und die in Workflows hinterlegte Logik in Programmcode umsetzen Trennung zwischen den Rollen Software-Architekt und Prozessanalytiker – jeder sollte möglichst in „seiner Welt“ bleiben können 56 Standard Enterprise-Funktionalität Warum Prozesse nicht direkt mit Usercode realisieren? Entwickler müssen „Standardsituationen“ wie Verzweigungen, Ereignisse, Aktivitäten selber implementieren Keine Änderung zur Laufzeit möglich Hoher Anpassungsaufwand bei Änderungswünschen seitens des Kunden Hohe Fehleranfälligkeit bei komplexen, parallelen Prozessen Prozesse sind schwer „wiederzuerkennen“, da in Code überführt Vorteile einer Workflow-Engine Einmalige Entwicklung einer komplexen, erweiterbaren, soliden Infrastruktur ermöglicht schnelle Entwicklung von Prozessen Prozesse können für Anwender verständlich gemacht werden Prozesse können überwacht werden (Controlling) Prozesse sind wiederverwendbar, da unabhängig vom Code Prozesse können zur Laufzeit hinzugefügt, entfernt und sogar geändert werden 57 Standard Enterprise-Funktionalität Fachabteilung vs. IT-Abteilung Fachabteilung: Prozessanalytiker definieren Prozesse/Workflows Niedrigere formale Anforderungen Höheres Abstraktionsniveau IT-Abteilung: Geschäftsprozesse werden ausführbar Hohe formale Anforderungen Abstraktionen müssen aufgelöst werden Prozessanalytiker Workflow-Diagramme Fachabteilung Software-Entwickler Technische Diagramme IT-Abteilung Implementierun g 58 Standard Enterprise-Funktionalität Software-Architekt Specifier Prozessanalytiker Programm-Spezifikation Generator Modul 59 Standard Enterprise-Funktionalität Beispiel Workflow 60 Standard Enterprise-Funktionalität 61 Specifier 62 Standard Enterprise-Funktionalität Roundtrip BPMN- und UML-Diagramme werden in EA-Projekt angelegt Beide Diagramme können Elemente untereinander referenzieren (z.B. Service Call oder Ein-/Ausgabe-Daten für Aktivitäten) Specifier ermöglicht die Spezifikation der Metadaten für Workflow-Elemente (analog zu Klassendiagrammen) Generator exportiert Worfklow-Diagramme in .NET-Projektmappe als eingebettete Ressource DLL-Modul-Dateien beinhalten die Diagramme Diagramme werden vom Domain-Generator ausgelesen und initial ins Framework überführt Framework kann Instanzen von Geschäftsprozessen starten und Elemente untereinander verlinken BPMN-Diagramme können auch zur Laufzeit verändert werden 63 Standard Enterprise-Funktionalität Aufgaben und Geschäftsprozesse automatisierte Aufgabe interaktive Aufgabe Geschäftsprozess Dialogablauf Interaktive Aufgabe Dialog Komponente Dialog Firewall ESB Anwendungsdomäne Anwendungsdomäne Anwendungsdomäne Anwendungsdomäne 64 Standard Enterprise-Funktionalität Controlling- und Editier-Ansicht 65 Standard Enterprise-Funktionalität 66 Standard Enterprise-Funktionalität Integration in das W3LJ2-Framework +ParticipatedWorkflowInstances PDWorkflow Meta «Property» + Definition :string + + Historizable «Property» 0..* - Active :bool - Finished :DateTime - Started :DateTime 1 CreateInstance() :string Initialize() :string +WorkflowInstance +ParticipatedWorkflowStates 0..* +Followers 0..* +StateExecutors 0..* Workflow Instance 0..* 1 GRCFramework:: 0..* UserBase 1 +WorkflowExecutors 1 0..* 0..* 0..* PDWorkflow StateMeta Historizable GRCFramework:: PDObject Workflow Variable «Property» - CheckIn :DateTime - CheckOut :DateTime 1 + Name :string - Name :string 0..* 0..1 «Property» + /IsHistoric :bool 1 Workflow Participant +Predecessor 0..* 0..* 0..* «Property» - Active :bool 0..* - Locked :bool 0..* 0..* "Darstellung" einer Variable in einem Workflow-Zustand +HiddenAssoziations 0..* +HiddenOperations 0..* PDMemberMeta GRCFramew ork:: PDOperationMeta +HiddenProperties 0..* PDMemberMeta GRCFramew ork:: PDPropertyMeta «Property» + Name :String PDMemberMeta GRCFramew ork::PDAssoziationMeta «Property» + Cardinality :PDAssoziationCardinalityET + EnableJournaling :bool + OrderedList :bool + UniqueObjectList :bool Eine Variable ist in einer gesamten Workflow-Instanz gültig 67 Technische Infrastruktur W3LJ2-Framework Dynamische Assoziationen Customizing Anpassbarkeit Standard Enterprise Funktionalität DomänenprojekteServercode Historisierung / Journalisierung Modularisierung UI-Engine DomänenprojektModelle DomänenprojekteGUI-Erweiterungen Sitzungsverwaltung / SSO Generatoren Benutzer- und Rechteverwaltung Metadaten Persistenzschicht MySQL MS SQL Oracle PostgresSQL 68 Modularisierung von Anwendungen Definition: Modularisierbarkeit Die Gesamtanwendung (Suite) entsteht durch die Installation von einzelnen Modulen Separierung von Funktionalitäten Module können über Submodule erweitert werden (Feature-Lizenzierung) Modulweiser Vertrieb möglich Beispiel W3L-ERP-Core Facility-Management Warenwirtschaft Lizenzverwaltung Vertragsverwaltung 69 Modularisierung von Anwendungen Modularisierbarkeit Verbindung mehrerer Module Mit Hilfe von modulübergreifenden Assoziationen können Module verbunden werden. Beispiel: Eine Beförderung aus der Vertragsverwaltung kann mit einem Mitarbeiter aus dem Core-Modul verbunden werden. Core-Modul Vertragsverwaltung 70 Modularisierung von Anwendungen Modularisierbarkeit Verbindung mehrerer Module mit dynamischen Assoziationen 71 Modularisierung von Anwendungen Das „Ober-Modul“ muss zuerst angelegt werden Es wird wie gewohnt ein Projekt im Enterprise Architect angelegt, im Beispiel „Core_Modul“ Dem neuen Projekt wird über „Add View“ ein neues Package (Class View) hinzugefügt 72 Modularisierung von Anwendungen Eigenschaften des Moduls aufrufen Stereotyp „referable“ angeben 73 Modularisierung von Anwendungen Dem Core-Modul wird ein Klassendiagramm und eine Klasse „CoreClass“ hinzugefügt „Package Control“-Dialog aufrufen „Control Package“ aktivieren, Pfad für „XMI-Filename“ bestimmen 74 Modularisierung von Anwendungen Modul exportieren 75 Modularisierung von Anwendungen Neuen Projekt anlegen, im Beispiel „Sub_Modul“ Neues Paket anlegen (siehe Folie 2) Eigenschaften-Dialog des Pakets aufrufen (siehe Folie 3) Stereotyp „application“ angeben 76 Modularisierung von Anwendungen „Import package from XMI file…“ aufrufen 77 Modularisierung von Anwendungen Pfad zur zuvor abgelegten Export-Datei des Core-Moduls angeben und Modul importieren 78 Modularisierung von Anwendungen Der Project Browser zeigt nun das importierte Paket an Ein Klassendiagramm und eine Testklasse „SubClass“ werden angelegt Herstellen eine Assoziation zwischen „SubClass“ und „CoreClass“ (aus dem Core_Modul): CoreClass aus dem Project Browser in das Klassendiagramm ziehen („as Simple Link“) 79 Modularisierung von Anwendungen Herstellen einer Assoziation immer vom referenzierenden Modul zum referenzierten Modul, im Beispiel also von SubClass zu CoreClass Elemente-Baum im W3LJ2-Specifier 80 Modularisierung von Anwendungen 81 Technische Infrastruktur W3LJ2-Framework Dynamische Assoziationen Customizing Anpassbarkeit Standard Enterprise Funktionalität DomänenprojekteServercode Historisierung / Journalisierung Modularisierung UI-Engine DomänenprojektModelle DomänenprojekteGUI-Erweiterungen Sitzungsverwaltung / SSO Generatoren Benutzer- und Rechteverwaltung Metadaten Persistenzschicht MySQL MS SQL Oracle PostgresSQL 82 Historisierung und Journalisierung Revisionssicherheit Das RAD-Framework bietet verschiede Funktionen zur revisionssicheren Archivierung der Datenbestände Journalisierung Die Journalisierung stellt ein Änderungslogbuch dar Hier werden alle Änderungen protokolliert „Wer hat was wann geändert und auf welchen Wert?“ Historisierung Bei der Historisierung wird der Zustand aller Objekte zu einem Zeitpunkt archiviert Dieses Archiv kann im Nachhinein betrachtet werden Änderungen sind nicht mehr möglich 83 Historisierung und Journalisierung Revisionssicherheit Funktionsweise der Historisierungsfunktion Der Historisierungsfokus bestimmt, welche Objekte historisiert werden Der Fokus kann sich dabei über zwei Dimensionen erstrecken W3L-Mandant Core-Modul Vertrags-Modul 84 Historisierung und Journalisierung Revisionssicherheit Funktionsweise der Historisierungsfunktion 85 Technische Infrastruktur W3LJ2-Framework Dynamische Assoziationen Customizing Anpassbarkeit Standard Enterprise Funktionalität DomänenprojekteServercode Historisierung / Journalisierung Modularisierung UI-Engine DomänenprojektModelle DomänenprojekteGUI-Erweiterungen Sitzungsverwaltung / SSO Generatoren Benutzer- und Rechteverwaltung Metadaten Persistenzschicht MySQL MS SQL Oracle PostgresSQL 86 Technische Infrastruktur Administrationsbereich Domänenmodule verwalten Zusätzliche Module können dem System hinzugefügt werden Backup-Funktion Import und Export der Anwendungsdaten in ein XML-Format Ereignisprotokollierung Webbasierter Logviewer Log4Net Benchmark-Funktion Berechnung einer Punktzahl ähnlich dem Windows-Leistungsindex Lastüberwachung Speicher CPU-Auslastung Offene Sessions Anfragen 87 Technische Infrastruktur 88 Technische Infrastruktur Austauschbare Designs („Theming“) Anpassung des Look & Feel der Anwendung: Schriften, Farbgebung Umsetzung des Corporate Identity: Firmenlogo 89 Technische Infrastruktur Mechanismen für Versionsupdates Konflikterkennung Veränderungen in der Datenbankstruktur werden beim Systemupdate berücksichtigt Konflikte werden erkannt, protokolliert und automatisch behandelt Domänen-Objekte werden übernommen Datentypen werden bei einem gültigen Wertebereich konvertiert Customizing-Informationen werden in festdefiniertem Rahmen übernommen Versionsvergleiche Vergleich zwischen unterschiedlichen Anwendungsversionen Per Weboberfläche oder mit externem Merge-Tool Unterschiede im Domänenmodell werden deutlich Auswirkungen eines Versionsupdates können abgeschätzt werden 90 Technische Infrastruktur Funktionsweise der Konflikterkennung 1. Ein Major-Export der Anwendung erzeugen Export der Objekte Export der Systembeschreibung 2. Installation der neuen Anwendung Update der IIS-Anwendung und des Anwendungsverzeichnisses 3. Einspielen des Major-Exports Nach diesem Vorgang ist das neue System mit den alten Datensätze betriebsbereit Konfigurationen und Customizing-Einstellungen bleiben zum größten Teil erhalten Bei Konflikten hat die Konfiguration der neuen Anwendung Vorrang Import-Protokoll Falls Datensätze von Konflikten betroffen waren, wird eine menschenlesbare Beschreibung des Szenarios ausgegeben 91 Technische Funktionen Software-Lizenzierungsmodelle Lizenz-Dateien werden über den RAD-License-Manager erzeugt Signiertes XML-Format Mögliche Lizenzbegrenzungen Zeitliche Nutzung Anzahl der aktiven Benutzer Objektanzahl Wenn eine Lizenz ungültig oder abgelaufen ist, kann nur noch lesend auf die Anwendung zugegriffen werden 92 Technische Infrastruktur Persistenz Automatische Generierung des Datenbank-Schemas Automatisches OR-Mapping NHibernate Datenbank-unabhängige Import-/Export-Funktion 93 Wie kann ich damit arbeiten? ROLLENBEZOGENER EINSATZ DES W3LJ2-FRAMEWORKS 94 Einsatz des W3LJ2-Frameworks Laufzeitumgebung des W3LJ2-Frameworks ist unabhängig vom Generator Anzahl der generierten Artefakte ist sehr gering Keine GUI Keine komplizierte Infrastruktur Vorteil Entwickler können manuell gegen das W3LJ2-Framework programmieren Keine Kenntnisse von UML notwendig! Plugins für Visual Studio 2010 und 2012 sind denkbar. 95 Einsatz des W3LJ2-Frameworks Rollenbasierter Einsatz des W3LJ2-Frameworks Business Analysten oder Systemanalytiker Arbeiten auf konzeptioneller Ebene unter Enterprise Architect Modellieren das Fachkonzept Überprüfen das generierte Ergebnisse bzw. das Produkt Entwickler Arbeiten auf technischer Ebene unter Enterprise Architect oder direkt mit VS 2010 Entwickeln User-Code oder Domänen-Klassen Vorteil Hemmschwelle UML und EA bei .NET-Entwicklern ist groß Durch das leichtgewichtige Programmiermodell ist der Einsatz von EA und UML aber nicht notwendig und kann vermieden werden! 96 Fazit Vorteile Time-To-Market Kosteneinsparung durch Wiederverwendung Vererbte Qualität durch Automation Rapid Prototyping Kommunikationsmittel zwischen Fach- und Entwicklungsabteilung Nachteile Quelle: Code Generation 2010 Introduction Model-Drivien Software Delevlopment 97 Vielen Dank für Ihre Aufmerksamkeit! Inhouse-Schulungen W3L-Akademie Flexibel online lernen und studieren! Wir bieten Inhouse-Schulungen und Beratung durch unsere IT-Experten und –Berater. In Zusammenarbeit mit der Fachhochschule Dortmund bieten wir Schulungsthemen zwei Online-Studiengänge Softwarearchitektur (OOD) Requirements Engineering (OOA) Nebenläufige & verteilte Programmierung Gerne konzipieren wir auch eine individuelle Schulung zu Ihren Fragestellungen. Sprechen Sie uns an! Tel. 0231/61 804-0, [email protected] B.Sc. Web- und Medieninformatik B.Sc. Wirtschaftsinformatik und 7 Weiterbildungen im IT-Bereich an. Besuchen Sie unsere Akademie! http://Akademie.W3L.de