MGSE
Modellgetriebene Softwareentwicklung - HTWG
Modellgetriebene Softwareentwicklung - HTWG
-
- 1 / 138
-
Flashcards
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, ...