Praxisprojekt [ai] Control WS 2011/2012
Lara Baschour und Anne Heiting
Modellierungstechniken im Softwaredesign
Was ist Modellierung?
• Modell = „Ein Modell ist eine Repräsentation eines Systems von Objekten, Beziehungen
und/oder Abläufen. Ein Modell vereinfacht und abstrahiert dabei im Allgemeinen das
repräsentierte System.“
• System= „[...] einen Teil der Realität oder ein noch nicht bestehendes Gebilde, das noch
erstellt werden muss [...].“
Modellierung = „Der Prozess, bei dem ein Modell eines Systems erstellt wird.“
Folien Modellierung, WS 10/11, S. 28 f.
Wozu Modellierung?
Vor allem beim Entwurf komplexer Systeme nötig: • Umfang oft zu komplex für menschliche Vorstellungskraft • Um Konflikte, wie das System aussehen soll, zu vermeiden
(bei mehreren Entwicklern oft unterschiedliche Vorstellungen)
• Explizite Modellierung um Dokumentation und Pflege zu ermöglichen
Kecher, C. (2006)
• Analysephase der Softwareentwicklung ist notwendig um gewünschte Software zu realisieren
• dient der Visualisierung, Vereinfachung, Simulation von Systemen
• Fehler können vermieden, Kosten minimiert, Qualität verbessert werden
• Vor allem bei Erstellung großer Systeme ist Veranschaulichung durch Modell unbedingt erforderlich
Kecher, C. (2006); Berns, K., Schürmann, B., Trapp, M. (2010)
Vergleich mit Bau eines Hauses
• Softwarearchitekt (Architekt) muss sich zunächst damit auseinandersetzen, was gewünschte Software (Haus) leisten soll und wie bzw. ob sie mit weiteren Systemen interagieren soll (Lage des Hauses)
• Es muss festgelegt werden, welche Erwartungen erfüllt und welche nicht erfüllt werden können
Entstehendes Modell = Bauplan
Kecher, C. (2006)
Idee modellbasierter Entwicklung
• in allen Phasen der Entwicklung kommen Modelle zum
Einsatz
Analyse/Definition Entwurf/Design Implementierung Test Einsatz/Wartung Kecher, C. (2006); Hitz, M., Kappel, G., Kapsammer, E., Retschitzegger, W. (2005)
Modellstruktur
• Alle Modelle haben: Syntax = Grammatik/Symbole, die für Modell genutzt
werden dürfen
Semantik = Bedeutung der Symbole des Modells • Wird im Metamodell definiert dadurch Generieren eines Programmiercodes möglich Berns, K., Schürmann, B., Trapp, M. (2010); Hitz, M., Kappel, G., Kapsammer, E., Retschitzegger, W. (2005)
Modellierungstechniken
• Viele verschiedene Modellierungstechniken, wie etwa Unified Modelling Language (UML), Specification and Description Language (SDL), Petri- Netze, Labview, MatLab...
• Häufig erforderlich, verschiedene Modellierungssprachen miteinander zu verknüpfen (Beispiel: UML vs. MatLab)
Berns, K., Schürmann, B., Trapp, M. (2010)
Unified Modeling Language (UML)
• Standard-Modellierungssprache für Software Engineering • Entwickelt von Grady Booch, James Rumbaugh, Ivar Jacobson (1997) • Liegt objekt-orientierten Konzepten zugrunde (reale Welt besteht aus Objekten
die untereinander in Beziehung stehen) • Große Vielfalt an verschiedenen Modellen • sowohl statische als auch dynamische Aspekte modellierbar:
statische Modelle: beschreiben Zustand des Systems zu bestimmtem Zeitpunkt dynamische Modelle: beschreiben zudem, wie sich das System entwickelt
Forbig, P. (2002); Kecher, C. (2006); Seemann, J., Wolff von Gudenberg, J. (2000)
Vorteile der UML
• Präzise Semantik der Notationselemente
• Plattform- und Sprachunabhängigkeit
• Vielfalt an Modellen ermöglicht verschiedene Sichtweisen auf das zu modellierende System
Kecher, C. (2006); Seemann, J., Wolff von Gudenberg, J. (2000)
Übersicht UML 2.0 – Diagramme Kecher, C. (2006)
Strukturmodelle
• Beschreiben Strukturen eines Systems
• Modellierung statischer, zeitunabhängiger Elemente
• Modellierung einzelner Komponenten, Schnittstellen und deren Verknüpfungen zueinander
• Relationen zwischen einzelnen Komponenten werden rein statisch beschrieben
• Keine Beschreibung von dynamischer Interaktion zwischen Komponenten
Berns, K., Schürmann, B., Trapp, M. (2010); Forbig, P. (2002); Hitz, M., Kappel, G., Kapsammer, E., Retschitzegger, W. (2005)
Diagrammtyp Zentrale Frage Stärken
Kecher, C. (2006); Sophist GmbH (2009)
Aus welchen Komponenten besteht das System? Wie stehen diese untereinander in Beziehung?
Modelliert die statischen Elemente eines Systems
Wie kann ich mein Modell so schneiden, dass ich den Überblick bewahre?
Organisieren und Strukturieren von Elementen in Paketen
Welche innere Struktur besitzt das System zu einem bestimmten Zeitpunkt zur Laufzeit?
Momentaufnahme der Objekte eines Systems, wird nur zur Veranschaulichung verwendet
Wie sieht das Innenleben einer Klasse, einer Komponente, eines Systemteils aus?
Zeigt Aufbau und Abhängigkeit einzelner Systemkomponenten, zudem Modellierung von Schnittstellen möglich
Verhaltensmodelle
• Fokus auf dynamischen Aspekten
• Beschreiben Verhalten von Systemeinheiten innerhalb eines Systems
• Verhalten, das sich nicht aus dem Zusammenspiel verschiedener Komponenten ergibt
Berns, K., Schürmann, B., Trapp, M. (2010); Forbig, P. (2002); Hitz, M., Kappel, G., Kapsammer, E., Retschitzegger, W. (2005)
Diagrammtyp Zentrale Frage Stärken
Kecher, C. (2006); Sophist GmbH (2009)
Was leistet mein System aus der Sicht externer Akteure?
Außensicht auf das System, einfache Notations- Mittel
Wie läuft ein bestimmter Algorithmus ab?
Detaillierte Veranschaulichung von Abläufen mit Bedingungen, Schleifen, Verzweigungen und parallelen Abläufen
Welche Zustände kann ein Objekt bei welchen Ereignissen annehmen?
Schachtelung möglich
Interaktionsmodelle
• Modellieren dynamisches Verhalten zwischen einzelnen Komponenten
• Interaktion und Austausch von Informationen zwischen Objekten
• Oft mit zeitlichem Bezug
Berns, K., Schürmann, B., Trapp, M. (2010); Forbig, P. (2002); Hitz, M., Kappel, G., Kapsammer, E., Retschitzegger, W. (2005)
Diagrammtyp Zentrale Frage Stärken Kecher, C. (2006); Sophist GmbH (2009)
Wer tauscht mit wem welche Informationen in welcher Reihenfolge aus?
Darstellung von Informationsaustausch in zeitlicher Abfolge, keine Beziehung von Objekten
Wann befinden sich die Interaktionspartner in was für einem Zustand?
Modelliert Interaktion mit Bezugnahme der resultierenden Zustandswechsel innerhalb einer Zeitspanne
Wann läuft welche Interaktion ab? Verschafft Überblick über einzelne Interaktionen und deren Reihenfolge
Wer arbeitet im System zusammen? Stellt den Informationsaustausch zwischen Kommunikationspartnern dar, jedoch keine zeitliche Abfolge
Fazit
• Modellierung von zentraler Bedeutung bei der Entwicklung komplexer Systeme • Ansonsten können Fehler unterlaufen wie:
„Es wird das falsche Softwareprodukt entwickelt.“ (Kecher 2006, S.15) In Analysephase werden Architekturfragen nicht hinreichend geklärt. „Das Softwareprodukt wird falsch entwickelt.“ (Kecher 2006, S. 15) wenn kein Modell vorhanden, fehlt Kommunikationsgrundlage von Entwicklern und Programmierern
• Oft ist Verknüpfung verschiedener Modelltypen notwendig auf einheitliche
Benennung und Notation achten ( Konsistenz) • noch viele weitere Modellierungstechniken, wie Petri- Netze, Erweiterungen der UML
(Object Constraint Language), SDL, etc.
Quellen
• Vorlesungsfolien „Modellierung“ WS 2010/11; Prof. Norbert Fuhr • Berns, K., Schürmann, B., Trapp, M. (2010). Eingebettete Systeme-Systemgrundlagen und
Entwicklung eingebetteter Software. Vieweg+Tuebner: Wiesbaden. • Forbig, P. (2002). Objektorientierte Softwareentwicklung mit UML. Carl Hanser Verlag: München.
• Hitz, M., Kappel, G., Kapsammer, E., Retschitzegger, W. (2005). UML@Work. dpunkt.verlag:
Heidelberg • Kecher, C. (2006). UML 2.0-Das umfassende Handbuch. Galileo Press: Bonn.
• Martin, J., Odell, J. (1999). Objektorienterte Modellierung mit UML: Das Fundament. Prentice hall:
München. • Seemann, J., Wolff von Gudenberg, J. (2000). Software- Entwurf mit UML. Springer Verlag:
Würzburg.
• Sophist GmbH (2009). Die Diagramme der UML 2. Nürnberg.