anchor
Abstraktion löst Komplexität
Software ist heute oft nur ein Teil eines komplexen Systems. Es ist eine Herausforderung, solche Systeme, die aus unterschiedlichsten Software- und Hardware-Komponenten bestehen, zu erfassen, sie zu verstehen und sie zu entwickeln.
Eine gute Möglichkeit mit solchen Komplexitäten umzugehen ist Abstraktion: die wesentlichen Merkmale eines Systems werden hervorgehoben. Dadurch wird es überschaubar und verständlich. Wir erreichen diese Abstraktion durch Modellbildung. Modelle eignen sich, um Software und Systeme aus unterschiedlichen Blickwinkeln und für unterschiedliche Zwecke zu beschreiben.
UML ist nur der Anfang
Eine etablierte Modellierungs-Sprache ist die Unified Modeling Language (UML) der Object Management Group (www.omg.org). Sie ist eine nicht zweckgebundene Sprache zur graphischen Modellierung. Da diese Sprache auch spezielle Konzepte für die Modellierung von Software bietet und viele UML-Tools verfügbar sind, ist sie heute das Kommunikations- und Design-Mittel der Wahl für viele Software-Architekten und Designer.
Obwohl die UML beliebig erweiterbar ist, hat sie, wie jede Sprache, nur eine begrenzte Anzahl von Ausdrucksmitteln. Wo graphische Modellierung, wie in der UML, nicht gewinnbringend eingesetzt werden kann, verwenden wir textuelle Modellierung. Wir erstellen eine Domain Specific Language (DSL), die auf das darzustellende System optimiert ist. Mit einfachen Texten kann ein komplexes System dann abstrahiert dargestellt werden.
Modellierung ist reichhaltig
Mit einem Modell kann man ein umfassendes Informationsmittel schaffen, dass vielseitig nutzbar ist und gewinnbringend eingesetzt werden kann. Neben dem offensichtlichen Nutzen, dass damit Software analysiert und designed werden kann, dient ein Modell auch zur Kommunikation von Ideen und Konzepten zwischen Entwicklern, Auftraggebern und Anwendern.
Modelle können validiert werden. Eine Vielzahl von Überprüfungen kann bereits auf Modell-Ebene erfolgen, wie beispielsweise ob alle Anforderungen in der Architektur umgesetzt wurden oder ob im Design die korrekten Schnittstellen verwendet werden. Ein großes Anwendungsfeld ist auch die Generierung von Artefakten aus Modellen, von Programmcode bis hin zur Dokumentation.