Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf ·...

20
Modellgetriebene Entwicklung von Webanwendungen: eine erste Analyse 25. Oktober 2012 Taentzer Modellgetriebene Softwareentwicklung 59

Transcript of Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf ·...

Page 1: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Modellgetriebene Entwicklung von Webanwendungen:

eine erste Analyse25. Oktober 2012

Taentzer Modellgetriebene Softwareentwicklung 59

Page 2: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Überblick Anforderungsanalyse auf zwei Ebenen:

Analyse einer konkreten Anwendung Analyse einer Infrastruktur für die modellgetriebene

Entwicklung von Webanwendungen

Analyse einer konkreten Webanwendung: Welche funktionalen Anforderungen? Welche nichtfunktionalen? Ist eine modellgetriebene Entwicklung möglich?

Analyse einer Infrastruktur für Webanwendungen: Welche Anwendungen sollen generiert werden? Welche Aspekte sollen modelliert werden? Codegenerierung: Welche Architektur? Welche Plattformen?

Taentzer Modellgetriebene Softwareentwicklung 60

Page 3: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Eine konkrete Webanwendung Beispiel: ein Vorlesungs-

verzeichnis Funktionale

Anforderungen: Lehrveranstaltungen,

Dozenten und Räume verwalten

Zwei Rollen: Leser und Verwalter

Nichtfunktionale Anforderungen: Quality of Service Verwendete Technologien Entwicklungsprozess

Taentzer Modellgetriebene Softwareentwicklung 61

Page 4: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Taentzer Modellgetriebene Softwareentwicklung 62

Ausschnitte aus Anwendungsfalldiagrammen

Hauptanwendungsfälle für ein Vorlesungs-verzeichnis

Page 5: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Taentzer Modellgetriebene Softwareentwicklung 63

Beispiel: Anwendungsfall Titel: Vorlesung eintragen Kurzbeschreibung: Dozent gibt Raum, Zeit und Titel einer Vorlesung

ein und legt einen Vorlesungseintrag an. Akteur: Dozent Vorbedingungen: Eine Vorlesung mit diesem Titel gibt es noch nicht. Beschreibung des Ablaufs:

Prüfe, ob der Vorlesungstitel schon vergeben ist Prüfe, ob der Raum zur angegebenen Zeit schon vergeben ist Wenn nicht, wird die neue Vorlesung eingetragen und die Daten

der Vorlesung werden angezeigt. Falls vergeben, wird die Vorlesung nicht eingetragen und eine

entsprechende Fehlermeldung wird angezeigt. Auswirkungen: Die Vorlesung wird angezeigt, in diesem Fall hat sie

eine eindeutige Nummer zugeordnet bekommen, oder ein Fehler wird gemeldet.

Anmerkungen:

Page 6: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Quality of Service

Verfügbarkeit der Webanwendung und ihrer Dienste Wie hoch ist die Zeit, um einen ausgefallenen Dienst wieder bereit

zustellen? (Time to repair) Wie skalierbar ist das System?

Integrität: Dienste werden als Transkationen ausgeführt Gute Performanz bedeutet hoher Durchsatz und niedrige Latenz

Roundtrip-Zeit zwischen Senden einer Anfrage und Empfang der Antwort

Sicherheit der Datenhaltung und –übertragung Authentifizierung der Benutzer und definierte Zugriffskontrolle Verschlüsseln von Nachrichten

Taentzer Modellgetriebene Softwareentwicklung 64

Page 7: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Verwendete TechnologienTypische Anforderungen: Regelmäßige Weiterentwicklung

erfordert eine strikte Trennung von Datenhaltung, Anwendungslogik und Darstellung

Einheitliches Look and Feel auf verschiedenen Geräten

Objektorientierte Programmierung Vertrauter Umgang mit Datenstrukturen Automatische Funktionstests

Open-Source-Software

Taentzer Modellgetriebene Softwareentwicklung 65

JSFHTML

Struts

Eclipse RAP

Cocoon

JavaScriptPython

Ajax PHPASP

XML

C#

Ruby

GWT

Java

Viele Fragen, die für jede Webanwendung immer wieder neu beantwortet werden müssen.

Page 8: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Überblick Anforderungsanalyse auf zwei Ebenen:

Analyse einer konkreten Anwendung Analyse einer Infrastruktur für die modellgetriebene

Entwicklung von Webanwendungen

Analyse einer konkreten Webanwendung: Welche funktionalen Anforderungen? Welche nichtfunktionalen? Ist eine modellgetriebene Entwicklung möglich?

Analyse einer Infrastruktur für Webanwendungen: Welche Anwendungen sollen generiert werden? Welche Architektur? Welche Plattformen?

Taentzer Modellgetriebene Softwareentwicklung 66

Page 9: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Beispiele für datenorientierte Webanwendungen

Taentzer Modellgetriebene Softwareentwicklung 67

Page 10: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Taentzer Modellgetriebene Softwareentwicklung 68

Eigenschaften datenorientierte Webanwendungen

Datenorientierte Webanwendungen: verteilte Systeme mit Datenbank

Beispiele für datenorientierte Webanwendungen: Vorlesungsverzeichnis Kinoprogramm Online Versandhandel Online Reisebüro Bibliothekssystem und viele weitere

Eigenschaften von daten-orientierten Webanwendungen: viele Daten meist mehrere verschieden-

artige Benutzer Hauptaktivitäten: Sammeln

und Freigeben von Daten Bereitstellung von Diensten interaktive Anwendungen

Page 11: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Taentzer Modellgetriebene Softwareentwicklung 69

Webanwendungen

Client-seitig Server-seitig

Webserver

http-Anfrage

http-Antwort

Web-anwendung

persistente Daten

Page 12: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Taentzer Modellgetriebene Softwareentwicklung 70

Funktionsablauf

Benutzer startet Webanwendung, gibt die URL des Webservers und die erste Anfrage ein.

Webserver leitet die Anfrage an die Webanwendung weiter. Webanwendung generiert den HTML-Code einer Webseite, die

vom Webserver an den Browser des Benutzers zurückgeschickt wird.

Browser zeigt die erhaltene Webseite an.

Was sind die Vor- und Nachteile von Webanwendungen gegenüber unverteilten Anwendungen?

Page 13: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Taentzer Modellgetriebene Softwareentwicklung 71

Grundlegende Systemstruktur

Benutzerschnittstelle: Entwurf der Interaktion zwischen System und Benutzer/anderen Systemen

Anwendungslogik: Dienste und Controller-Klassen, die die Funktionalität der Anwendungsfälle modellieren

Datenbasis: Datenzugriffs-schicht wie im Domänen-modell beschrieben

Schnittstelle

Typische Systemarchitektur:

Anwendungslogik

Datenbasis

Das System aus der internen (technischen) Sicht:

Page 14: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Welche Aspekte von Webanwendungen müssen modelliert werden?

Taentzer Modellgetriebene Softwareentwicklung 72

Präsentationsschicht: Wie soll die Weboberfläche

aussehen? Welche Daten sollen an der

Oberfläche angezeigt werden? Services: Welche Services haben wir? Wie sind die Services definiert?Datenzugriffsschicht: Welche Datenstrukturen werden

verwendet?Datenbankschicht: Welche Daten soll persistent sein? Wie sollen die Daten in der

Datenbank gespeichert werden?„andromda.org“

Page 15: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Funktionale Anforderungen an den Generator

Eingabe an den Generator: anwendungsspezifische Informationen über die Webanwendung Welche Anwendungsfälle? Welche Rollen? Welche Datenstrukturen? Wie speichern? Welche Services? Welche Darstellung an der Oberfläche?

Ausgabe des Generators: generierter Code Welche Designentscheidungen werden durch den Generator

entschieden und welche nicht? Welche Plattformen werden unterstützt? Welche Anwendungsarchitektur? Wo kann individueller Code eingefügt werden?

Taentzer Modellgetriebene Softwareentwicklung 73

Page 16: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Funktionale Anforderungen an die Modellierungssprache und ihre Editoren

Wie viele Editoren für welche Teilsprachen? Welche Teilsprachen?

Modellelemente mit Attributen Relationen zwischen den Modellelementen

Welche Editieroperationen? CRUD-Funktionalität: Create, Read, Update, Delete Komplexe Operationen wie z.B. Refactorings

Validierung Syntaxchecks und Smells Quick Fixing

Taentzer Modellgetriebene Softwareentwicklung 74

Page 17: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Nichtfunktionale Anforderungen an die Infrastruktur

Technologien: Welche Metawerkzeuge zur Entwicklung von Infrastrukturen:

welche Editor- und Codegenerator-Generatoren?

Qualität der entwickelten Infrastruktur: Qualität der Editoren Qualität des generierten Codes

Entwicklungsprozess: Welche Iterationsstufen? Welche Art der Zertifizierung?

Taentzer Modellgetriebene Softwareentwicklung 75

Page 18: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Testgetriebene Entwicklung Erst Tests erstellen, dann implementieren! Im Kontext von Infrastrukturentwicklung:

Auswahl von Referenzanwendungen: Welche sind die richtigen?

Welche Informationen sollen modelliert werden? Können diese editiert werden? Welche Validierungen? Ist der Code gut genug?

Vollständigkeit der Testsuiten: Diversität der ausgewählten Referenzanwendungen:

Überdeckung der Modellierungssprache

Taentzer Modellgetriebene Softwareentwicklung 76

Page 19: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Taentzer Modellgetriebene Softwareentwicklung 77

Qualitätsmerkmale für Software

Funktionalität: Korrektheit, Angemessenheit, Interoperabilität, Ordnungsmäßigkeit, Sicherheit

Zuverlässigkeit: Reife, Fehlertoleranz, Wiederherstellbarkeit

Benutzbarkeit: Verständlichkeit, Bedienbarkeit, Erlernbarkeit, Robustheit

Effizienz: Wirtschaftlichkeit, Zeitverhalten, Verbrauchsverhalten

Wartungsfreundlichkeit: Analysierbarkeit, Änderbarkeit, Stabilität, Testbarkeit

Übertragbarkeit: Anpassbarkeit, Installierbarkeit, Konformität, Austauschbarkeit

Der generierte Code soll die folgenden Qualitätskriterien erfüllen:

Page 20: Modellgetriebene Entwicklung von Webanwendungen: eine ...swt/ws12/mdd/files/Folien121025.pdf · Cocoon JavaScript Python Ajax PHP ASP XML C# Ruby GWT Java Viele Fragen, die für jede

Taentzer Modellgetriebene Softwareentwicklung 78

Zusammenfassung Analyse von konkreten Webanwendungen

Anwendungsfälle Datenstrukturen Serviceschnittstellen Oberfläche

Analyse der Domäne der datenorientierten Webanwendungen Verschiedenste Fachdomänen Mehrschichtenarchitektur Schematisch wiederkehrende Aspekte von datenorientierten

Webanwendungen, die modelliert werden können: Datenstrukturen, Serviceschnittstellen, Oberfläche

Anforderungen an die Modellierungssprache Generator: ein Anwendungsfall Editor: an die domänenspezifische Modellierungssprache angepasste

Editieroperationen