Der Baustein Concept ist das Artefakt für den Architekturentwurf, mit dem Autoren produktspezifische Konzepte festhalten. Er gibt einem Konzept einen eindeutigen Namen. Der Überblick im Baustein muss jeden Leser in die Lage versetzen, das Konzept und seine Konsequenzen zu verstehen.
Für welche Themen überhaupt Konzepte notwendig sind, hängt ganz wesentlich vom Architekturstil ab, aber auch das Projektumfeld, die Projektorganisation und die Anwendungsdomäne sind Einflussfaktoren.
Projektmanagement
In praktisch jedem nicht trivialen IT-System gibt es den Bedarf an übergreifenden Betriebskonzepten. Themen wie Logging, Monitoring, Sicherheit, Robustheit, Skalierbarkeit müssen in der Regel übergreifend betrachtet werden. Bei der Sicherheit oder Skalierbarkeit gilt der Satz «Die Kette bricht an der schwächsten Stelle». Ein Team muss viele Qualitätsmerkmale berücksichtigen. Jeder einzelne Dienst muss sicher sein und die gespeicherten Daten angemessen schützen. Kein Dienst darf zum Flaschenhals (engl. bottleneck) für das IT-System werden. Zuverlässiges Monitoring ist eine Voraussetzung für den reibungslosen Betrieb in einer komplexen IT-Landschaft. Mit dem Baustein Concept werden Konzepte dokumentiert und kommuniziert, um solche Qualitätsziele zu erreichen. Mit der Freigabe wird das Konzept zur verbindlichen Vorgabe für das Team. Abweichungen vom Konzept sind weiterhin zulässig. Sie müssen aber begründet werden. Änderungen am Konzept sind natürlich auch möglich. Die Konsequenzen sollten dann aber sehr gründlich untersucht werden.
Anforderungsanalyse
Konzepte für wiederkehrende Muster sind ein sehr wichtiges Einsatzgebiet für den Baustein Concept. Entwickler kennen viele Entwurfsmuster (engl. design patterns), z.B. Singleton, Observer oder Delegate. Es gibt unzählige Bücher dazu, z.B.
- Design Patterns (1997) von Gamma/Helm/Johnson/Vlissides
- Pattern-orientierte Software-Architektur (1998) von Buschmann/Meunier/Rohnert/Sommerlad/Stal
- Refactoring, (1999) von Fowler
- J2EE Best Practices (2002) von Broemmer
- Patterns of Enterprise Application Architecture (2002) von Fowler/Rice/Foemmel
- Server Component Patterns (2002) von Völter/Schmid/Wolff
- Core J2EE Patterns (2003) von Alur/Crupi/Malks
In der Regel werden die Muster auf eine ganz bestimmte Art und Weise für das Produkt angewendet. Im Baustein Concept halten Autoren diese Besonderheiten fest.
Produktentwicklung
Vertreter des Teams nutzen den Baustein Concept, um für das Team wichtige Konzepte beschreiben. Er ist hilfreich bei der Formulierung eines gemeinsamen Verständnisses nicht funktionaler Aspekte, die von «gleichartigen» Diensten berücksichtigt werden. Mit dem Titel der Seite im Wiki bekommt jedes Konzept einen eindeutigen Namen. Der Baustein Concept wird in den Bausteinen des Systemstruktur mit einer kurzen Begründung als Verknüpfung eingetragen. Der Baustein Concept wird auch gewählt, um eine sehr komplexe Lösung zu beschreiben, wenn mehr als ein Dienst betroffen ist.
Moderne Produktentwicklung basiert auf der Wiederverwendung von Software. Open-Source-Software ist mittlerweile ein unverzichtbarer Bestandteil vieler erfolgreicher kommerzieller Produkte. Programmbibliotheken lösen viele alltägliche Probleme der Entwickler: Bildmanipulation, Datenkonvertierung, Datenaustausch, um nur einige Einsatzbereiche zu nennen. Die Umsetzung einer Testpyramide wäre undenkbar ohne JUnit, TestNG, Spock, Fitnesse, Cucumber, Jenkins, Mockito und noch viele weitere mehr. Open-Source-Software ist Teil der Infrastruktur für den skalierbaren, leistungsfähigen und robusten Betrieb eines Produktes. Die Apache Software Foundation hat ein ganzes Universum unverzichtbarer Produkte: Kafka, Storm, Flink, das Hadoop-Ökosystem und viele verschiedene Datenbanken. Auch erfolgreiche Unternehmen wie Google, Netflix oder Microsoft stellen gut funktionierende Produkte zur freien Nutzung zur Verfügung. Eine cloud-basierte Infrastruktur mit Konzepten wie PaaS, IaaS oder SaaS wäre ohne Docker, Kubernetes, Terraform, Packer oder Rancher wohl nicht machbar.
Eine Bedienoberfläche verfolgt immer ein bestimmtes Bedienkonzept. Die Größe des Bildschirmes (z.B. Watch, Smartphone, Tablet, Monitor, UHD-TV) und die Möglichkeiten der Eingabe (z.B. Maus, Tastatur, Stift, Berührung) beeinflussen die Gestaltung der Bedienoberfläche. Ein Bedienkonzept verfolgt auch das Ziel einer Standardisierung der Elemente der Bedienoberfläche durch eine Gestaltungsrichtlinie (engl. style guide). Jedes Bedienkonzept wird mit dem Baustein Concept erfasst und bekommt durch den Titel der Seite im Wiki einen eindeutigen Namen.
Das Wiki.
Ein Erfolgsfaktor.