Konstruktive Software-Architektur von Friedbert Jochum | Konzeptuelle Gestaltung gebrauchstauglicher und änderungsfreundlicher Systeme | ISBN 9783486714166

Konstruktive Software-Architektur

Konzeptuelle Gestaltung gebrauchstauglicher und änderungsfreundlicher Systeme

von Friedbert Jochum
Buchcover Konstruktive Software-Architektur | Friedbert Jochum | EAN 9783486714166 | ISBN 3-486-71416-3 | ISBN 978-3-486-71416-6

Konstruktive Software-Architektur

Konzeptuelle Gestaltung gebrauchstauglicher und änderungsfreundlicher Systeme

von Friedbert Jochum

Schon beim Turmbau zu Babel mussten Menschen der Sage nach die schmerzliche Erfahrung machen, dass Projekte scheitern können, wenn Sprachverwirrung herrscht. Dies gilt erst recht für Softwareprojekte in unserer Zeit. Nicht nur weil Software hochgradig komplex ist, sondern auch und vor allem weil Software untrennbar mit dem Medium Sprache verbunden ist. Handelt es sich doch um ein sprachlogisches Werkzeug oder Instrument zur interaktiven Unterstützung menschlicher Tätigkeiten im Kontext sozialer und technischer Prozesse. Dies setzt voraus, dass die Systemfunktionen inhaltlich hinreichend differenziert auf die Anwendungswelt Bezug nehmen und den fachlichen Geltungskriterien genügen. Da aber Benutzer, Entwickler, Anwendungsexperten und andere Beteiligte in der Regel unterschiedliche Sprachen, Perspektiven und fachliche Hintergründe haben, muss bei Softwareprojekten per se von einer Sprachverwirrung ausgegangen werden. Wie dennoch methodisch zuverlässig brauchbare Resultate möglich sind, davon handelt dieses Buch.

Es werden die Grundzüge einer pragmatisch-semantischen Architekturlehre für Softwaresysteme entworfen. Zwei Fragen stehen dabei im Zentrum. Wie kann Software aus Gründen der Gebrauchstauglichkeit funktional im Sprach-, Handlungs- und Prozesskontext der Nutzungspraxis verankert werden? Und wie lassen sich darauf aufbauend schrittweise und explizit nachvollziehbar änderungsfreundliche Systemstrukturen konstruieren?

Softwarearchitektur wird als konzeptuelles Systemmodell eingeführt, das Nutzungs- und Entwicklungsperspektiven miteinander kreuzt. Und das emergente Strukturen aufweist, so dass sich frühzeitig agile Realisierungsstrategien integrieren lassen. Die pragmatische Grundlegung erfolgt durch eine sprachkritische Rekonstruktion der intendierten Nutzungspraxis, die in ein entsprechendes Basismodell mit einvernehmlich geklärter Begrifflichkeit mündet. Aus diesem lassen sich sukzessive weitere Teilmodelle ableiten, insbesondere für die Funktions-, Daten- und Interaktions-Semantik sowie die Komponenten- und Schnittstellen-Semantik des zu realisierenden Systems. Die Modellbildung folgt zwecks Geltungssicherung einer prinzipiellen Begründungsordnung: Wozu soll das Modell dienen (pragmatische Begründung)? Was ist dann inhaltlich relevant (semantische Begründung)? Wie können diese Inhalte formal dargestellt werden (syntaktische Begründung)? Und – wer kann überhaupt die obigen Fragen jeweils beantworten und sollte in den Diskurs mit einbezogen werden (dialogische Begründung)? Die einzelnen Konstruktionsschritte und Transformationen zwischen den Teilmodellen werden anhand einfacher Beispiele erläutert. Als Modellierungssprache kommt dabei durchgehend UML zum Einsatz. Im Projektalltag lassen sich die Teilmodelle allerdings selten in voller Tiefe und Breite in einem Durchgang erstellen. Daher wird der Architekturentwurf insgesamt als iterativ-inkrementeller Gestaltungsprozess unter Beachtung der obigen Begründungsprinzipien verstanden, ggf. auch unter Einbindung agiler Realisierungszyklen. Ziel ist ein Systemmodell, das alle notwendigen und hinreichenden Fachinhalte repräsentiert, die bei einer technischen Umsetzung berücksichtigt werden müssen, egal auf welcher Plattform, mit welcher Programmiersprache und nach welcher Vorgehensweise. Dies ist eine Grundvoraussetzung für die Portierbarkeit der zu entwickelnden Anwendung, ebenso wie für modellbasiertes Testen bei deren Implementierung. Der Architekturentwurf schafft aber auch einen Bezugsrahmen für das Projektmanagement, die Kommunikation in interdisziplinären Teams und für eine arbeitsteilige Systementwicklung.

Das Buch wendet sich in erster Linie an Studierende und Lehrende der Informatik und verwandter Studiengänge, aber auch an Praktiker in der Anwendungsentwicklung, insbesondere an der Schnittstelle zwischen Usability Engineering, Software Engineering und Requirements Engineering. Die in einem separaten Kapitel diskutierten theoretischen Hintergründe dürften darüber hinaus auch genügend Anreize für eine vertiefende Beschäftigung mit der Thematik bieten.