MGSE

Modellgetriebene Softwareentwicklung - HTWG

Modellgetriebene Softwareentwicklung - HTWG


D. S.
Diese Lernkarten decken fortgeschrittene Themen der Informatik auf Universitätsniveau ab. Sie konzentrieren sich auf modellgetriebene Softwareentwicklung (MDSD), domänenspezifische Sprachen (DSL) und deren Implementierung mit Tools wie Xtext. Die Karteikarten behandeln Themen wie Syntax, Codegenerierung, Metamodelle und die Vorteile von MDSD, einschließlich Produktivitätssteigerung und höherer Qualität. Sie richten sich an Entwickler und Studierende, die sich mit der Erstellung und Nutzung von DSLs sowie der Automatisierung von Softwareentwicklung beschäftigen.
Karten
138
Lernende
1
Sprache
Deutsch
Kategorie
Informatik
Stufe
Universität
Erstellt / Aktualisiert
30.01.2018 / 01.02.2018

Lernkarten

Welche Probleme gibt es?

- Dekompositionsproblem

- Abstraktionsprobleme

- Redundanzprobleme

- Abhängigkeitsproblem

- Formalisierungsproblem

Was heißt Dekomposition?

Dekomposition (hierarchische Zerlegung von Systemen in Teilsysteme) ist Gruundlage für arbeitsteilige Entwicklung und gute Wartbarkeit von software.

Welche Aspekte für eine Dekomposition gibt es?

- Struktur der fachlichen Domäne
  jedes fachgebiet hat etablierte Zerlegung in Teilgebierte

- Struktur der technischen Plattform
  z.B. Multitier-Architektur bei Web-Anwendungen

- Struktur der Abläufe und Daten, softwaretechnische Prinzipien

- Organisation der beteiligten Entwcikler

Was ist das Problem bei Dekomposition?

In jeder Dekomposition dominiert ein Aspekt auf Kosten der anderen.

Welche unterschiedlichen Abstraktionsebenen gibt es?

- Höhere Abstraktionsebene                - Konkretisierung ->
- Niedrigere Abstraktionsebene           <- Abstrahierung -

Höhere Abstraktionsebene

- problemorientierter (mehr Was, Modellierung)

- domänenspezifischer

- mehr generalisierend (unwichtige Details weglassen, Spezialfälle zusammenfassend)

 

Beispiel:

ein UML Klassendiagramm ist abstrakter als Quellcode
Quellcode ist abstrakter als das ausführende Programm

Niedrige Abstaktionsebene

- lösungsorientierter (mehr Wie, Programmierung)

- plattformspezifischer

- detaillierter, spezialisierter

- mehr Redundanz

 

Beispiel:

eine Klasse ist konkreter als ein Interface

niedrigste Abstraktionsebene ist das ausführbare Programm

Was ist das Problem bei dem Abstraktionsebenen?

Beschreibungen auf höhreren Abstraktionsebenen veralten, weil in späten Projektphasen nur noch auf niedrigen Abstraktionsebenen geabrietet wird.

Was heißt Redundanz?

Redundanz bezeichnet allgemein das mehrfache Vorhandensein funktions-, inhalts- oder wesengleicher Objekte

Objekte in diesem Sinne bei der SE: z.B. Bezeichner, Klassen, Entwurfsmuster, Codessequenzen, ...

Welche Redundanzen gibt es?

- Vertikale Redundanz

- Horizontale Redundanz

Was heißt vertikale Redundanz?

Informationen aus höheren Abstraktionsebenen sind zwangsläufig explizit oder implizit auch in den niedrigeren Abstraktionsebenen enthalten

Bsp: Klassen aus UML-Diagrammen werden explizit im Quellcoder wiederholt. Anwendungsfälle aus Usecase-Diagrammen sind implizit im Quellcode enthalten.

Was heißt Horizontale Redundanz?

Informationen wiederholen sich innerhalb einer Abstraktionsebene.

Bsp: Klassen müssen programmiert und in Konfigurationsdateien eingetragen werden. Informationssysteme: für jeden Datentyp "Anlegen", "Abfragen", "Ändern", "Löschen", ...

Was ist das Problem bei Redundanz?

Erhhter Entwicklungsaufwand und Inkonsistenzen durch Redundanz.

Welche Abhängigkeiten gibt es?

- Externe Abhängigkeiten

- Interne Abhängigkeiten

- Explizite Abhängigkeiten

- Implizite Abhängigkeiten

Was ist eine externe Abhängigkeiten?

Software enthält Annahmen über den Kontext, in dem sie eingesetzt wird.
(Datenaufkommen, Benutzerzahlen, Benutzerverhalten, ...)

Software benötigt eine Plattform um ablaufen zu können
(Hardware, Betriebssystem, Standardsoftware, ...)

Was ist eine interne Abhängigkeiten?

Innerhalb einer Software bauen Lösungen für Teilprobleme aufeinander auf oder sind vermischt.
Vermischung von fachlichen und technischen Aspekten, ...

Was ist eine explizite Abhängigkeiten?

programmiersprachlich formuliert und zur Compile-/Linkzeit überwacht
(Abhängigkeit zwischen Klassen durch Methodenaufrufe - Überwachung per Compiler)

Was ist eine implizite Abhängigkeiten?

Stillschweigende Annahmen, die nicht automatisch überwacht werden

(Reihenfolge von Elementen in einer Collection, ...)

Was sind Probleme bei Abhängigkeiten?

Verringerte Felxibilität und Wiederverwendbarkeit durch Abhängigkeiten

Was bedeutet Formalisierung?

Formalisierung bedeutet die Beschreibung eines Phänomens oder die Formulierung einer Theoorie in einer formalen Sprache.

In der Softwareentwicklung geht es darum, Anforderungen aus der realen Welt mit einer zu erstellenden Software zu erfüllen:

Anforderungen in natürlichen Sprachen -- Formalisierung --> Software in formaler Sprache

Welche Methoden für eine schrittweise Formalisierung gibt es?

- Strukturierung (z.B. standardisierte Gliederung von Texten)

- reduzierte Sprache (z.B. wohl definiertes Fachvokabular)

- Grafik (Skizzen, Diagramme, ...)

Was ist das Problem bei Formalisierung?

Keine 1:1-Übersetzung von natürlicher in formale Sprache möglich, dadurch Verlust oder Verfälschung von Informationen.

Modellgtriebene SE - Idee? [WICHTIG]

Motto: "Alles ist ein Modell"

Softwareentwickler erstellen Modelle, Metamodelle und Modeltransformationen:

- getrennte Modelle für verschiedene Aspekt
  (Entschärfung des Dekompisitionsproblems)

- Modelle in domänenspezifischen Sprachen
  (Entschärfung des Formalisierungsproblems)

- automatisierte Modelltransformationen für den Übergang zur nächsten Abstraktionsebene
  und das Zusammenführen von Aspekten
  (Entschärfung des Abtraktions-, Redundanz- und Abhängigkeitsproblems)

Erhoffter Nutzen bei MGSE ist....

 

- Produktivität

    - geringere Entwicklungskosten
    - höhere Felxibilität und Wiederverwendbarkeit

- Qualität
 
   - Konsistenz zwischen den abstraktionsebenen
   - bessere Verständlichkeit und Wartbarkeit durch Trennung der Aspekte

Allgmeiner Modellbegrif nach Stachowiak

Was sind die Eigenschaften von Modellen?

- Abbildung

- Verkürzung

- Pragmatismus

Was ist eine Abbildung?

Ein Modell ist immer Abbild eines Originals.
(etwas kann also nicht inhärent Modell sein, sondern nur die Rolle eines Modells in Bezug auf ein Original übernehmen)

Was ist eine Verkürzung?

Ein Modell erfasst nicht alle Merkmale des Originals.

(sondern nur diejenigen, die dem Modellierer relevant erscheinen)

Was ist Pragmatismus?

Die Zuordnung eines Modells zu einem Original wird durch die Frage der Nützlichkeit relativiert. Für wen? Wann? Woozu?

(ein Modell wird interpretiert: es wird von bestimmten Nutzern innerhalb einer bestimmten Zeitspanne zu einem bestimmten Zweck für ein Original eingesetzt)

Welche Abbild-Modelle gibt es?

- Präskriptives Model

- Deskriptives Modell

- Translentes Modell

Was ist eine Präskriptives Modell?

Vorbild für ein noch zu erstellendes Original:  Model ---> Original

(Orignal wird vom Modell abgeleitet, z.B. ein technisches Bauteil (Original) von seiner Kontruktionszeichnung (Modell)

Was ist ein Deskriptives Modell?

Abbild für ein bereits existierendes Original:          Modell <---- Original

(Modell wird vom Original abgleietet, z.B. eine verkleinerte nachbildung (Modell) eines Autos/Flugzeugs/....(Original)

Was ist ein Transientes Model?

Abbild eines existierenden und zugleich
Vorbild eines zu erstellenden Originals

Original --> Modell --> Original'

typisch während der Entwicklung eines Softwaresystems für eine Anwendungsdomäne:

► Modelle sind deskriptiv bezüglich der Anwendungsdomäne (existierendes Original)

► und zugleich präskriptiv bezüglich des Softwaresystems (zu erstellendes Original)

Was für Verkürzungsmodelle gibt es?

- Symbolisierendes Modell

- Klassifizierendes Modell

Was ist eine symbolisierendes Modell?

Verkürzung durch Merkmalsreduktion und Weglassen von Originalentitäten jeder Entität im Modell (= Symbol) entspricht 1:1 eine Entität im Original

Beispiele: Straßenkarte, UML-Objektdiagramm

Was ist ein Klassifizierendes Modell?

Verkürzung durch Zusammenfassen "gleichartiger" Originalentitäten jeder Entität im Modell (= Klasse) können 1:N mehrere Entitäten in einem oder mehreren Originalen zugeordnet sein die Originalentitäten sind hier beispielhafte Ausprägungen (= "Instanzen") der Modellentitäten

Beispiele: Legende einer Straßenkarte, UML-Klassendiagramm

Was für Pragmatismus-Modelle gibt es?

- Beschreibungsmodell
- Prognosemodell

Was ist ein Beschreibungsmodell?

das Modell soll Eigenschaften des Originals dokumentieren bzw. spezifizieren

Beispiele: 3D-Animation eines Gebäudes,
                UML-Diagramme beim Softwareentwurf oder zur Softwaredokumentation,...

Was ist ein Prognosemodell?

am Modell sollen stellvertretend Untersuchungen möglich sein, die Aussagen über Struktur oder Verhalten des Originals liefern

Beispiele: Simulationsmodell, Dummy für Crashtests,...

Welche Modelle in der Softwareentwicklung gibt es?

- Vorgehensmodelle

- Domänenmodelle

Was ist ein Vorgehensmodell?

beschreiben, wie eine Software entwickelt werden soll (erforderliche Arbeitsschritte und deren Organisation) z.B. Wasserfallmodell, RUP, XP, Scrum, ...

Lernen