Entwicklung eines rationalen Entscheidungsprozesses für Architekturentscheidungen

AbstractIt is one of the critical tasks to make the right design- and architectural-decisions in huge and complex developing or reengineering projects. Such decisions have different types. On the one hand there are decisions with minimal effects on the architecture and the software system. On the other hand there are more strategic decisions which effect the architecture widely and change the central characteristics of the software system. Particularly the strategic decisions are very complex, risky and include many uncertain facts about hidden dependencies. The complexity and risks rise if such decisions have to be made in huge projects with 50 or more developers. The decisionmaker, mostly the project manager or the client, is confronted with various factors, assumptions and constraints. Typical examples are competing objectives, alternative solutions and incomplete information about external third-party systems. If such complex decisions have to be made in an unsystematic way, they will lead to uncalculatable risks with enormous bad consequences for the software system and the development project. Examples are changed or missed deadlines, risen development costs or monetary losses due to an outage of a business critical system.However, the specific characteristics of architectural decisions are not considered by existing methods and concepts to support decision making. They are too detailed, focussed on source code and require information in a formal quality and completeness. These information can not be gathered within such huge projects because of the high effort, time pressure and lacking resources. Therefore an architectural decision process is missing to structure the various information, assumptions and subjective estimations and so you can make such complex and risky decisions in a systematic and focussed way.The main objective of the following dissertation is to reduce the complexity, uncertainty and risks of architectural decisions in order to avoid additional changes and adjustments as well as to achieve the desired objectives. An architectural decision process with four phases is developed on the basis of the generic proceeding of the decision theory. This process includes methods and concepts in order to establish alternative solutions on the basis of the objectives, conditions and the model of the existing architecture. The various alternative solutions are evaluated through a systematic proceeding in order to identify and select the best solution. The developed process includes the specific characteristics of software architectures:Besides incomplete information and uncertainties, it is possible to observe hidden dependencies through scenario-based analysis methods, establishted by the concepts of the Architecture-Level-Modifiability-Analysis (ALMA).Due to the complexity and risks, huge architectural changes have to be separated into smaller tasks. This is supported by a stepped planning, from abtract analysis to more detailed planning.To achieve a reasonable relation between the analysis effort and the benefis from the analysis in terms of reduced risks, complexity and uncertainty, the depths of the analysis can be adjusted flexibly by clear objectives. Two practical applications show, how to make architectural decisions in a systematic way by using the decision process. Afterwards, the assumptions and expectations, which have been used for the decision making, are evaluated by comparing with the consequences of the real implementation. Due to the results of the comparison it can be described clearly, which advantages and disadvantages the application of the decision process has.

In Softwareentwicklungsprozessen müssen permanent die richtigen Design- und Architekturentscheidungen getroffen werden, damit die mit dem Entwicklungs- oder Reengineeringprojekt verbundenen Ziele in vollem Umfang erfüllt werden können. Diese Entscheidungen können dabei von unterschiedlicher Natur sein. So werden einerseits Entscheidungen getroffen, die nur geringe Auswirkungen auf das Softwaresystem haben. Auf der anderen Seite existieren Entscheidungen mit strategischem Charakter, die sich auf große Teile der Architektur und auf zentrale Systemeigenschaften auswirken. Gerade die strategischen Architekturentscheidungen sind in Großprojekten mit 50 oder mehr Entwicklern von hoher kombinatorischer Komplexität und beinhalten große Unsicherheiten über versteckte Abhängigkeiten. Der Entscheidungsträger, meist der Architekt oder der Projektleiter, ist mit einer Vielzahl unterschiedlicher Faktoren und Bedingungen konfrontiert. Hierzu zählen konkurrierende Ziele oder alternative Lösungsansätze, für die meist nur unvollständige Informationen vorliegen. Unter diesen Voraussetzungen führen unsystematische Entscheidungen zu unkalkulierbaren Risiken mit gravierenden Folgen für das Softwaresystem und das Entwicklungsprojekt, wie z. B. eine deutliche Erhöhung der Entwicklungskosten oder zeitliche Verzögerungen. Die bereits existierenden Methoden zur Entscheidungsunterstützung berücksichtigen die spezifischen Eigenschaften von Softwarearchitekturen zu wenig. Sie sind zu feingranular, codeorientiert und benötigen Informationen in einer formalen Genauigkeit und Vollständigkeit, die bei Architekturentscheidungen in Großprojekten aus Aufwandsgründen nicht erhoben werden können. Somit fehlt eine Unterstützung des Entscheidungsträgers, um die Vielzahl an Einzelinformationen und subjektiven Einschätzungen zu strukturieren sowie die Entscheidungsfindung systematisch und fokussiert durchzuführen. Mit der vorliegenden Dissertation wird das Ziel verfolgt, die Komplexität, Unsicherheiten und Risiken bei Architekturentscheidungen zu reduzieren, um aufwandsintensive Korrekturen zu vermeiden und die Architekturziele in vollem Umfang zu erfüllen. Auf der Grundlage des in der Entscheidungstheorie beschriebenen generischen Vorgehens zur Entscheidungsfindung wird ein Vier-Phasen-Entscheidungsprozess entwickelt. Dieser Prozess beinhaltet Methoden und Konzepte, um ausgehend von den Zielen, Rahmenbedingungen und der existierenden Architektur systematisch alternative Lösungsansätze zu entwickeln. Im Anschluss werden die Lösungsansätze nach rationalen Gesichtspunkten im Hinblick auf die Zielerreichung bewertet, um eine ausgewogene Entscheidung zu treffen. Der entwickelte Entscheidungsprozess berücksichtigt dabei die speziellen Eigenschaften von Softwarearchitekturen: Trotz unvollständiger Informationen und Unsicherheiten können versteckte Abhängigkeiten mit einem szenariobasierten Analyse- und Bewertungsansatz, auf der Grundlage der Architecture-Level-Modifiability-Analysis (ALMA), sichtbar gemacht werden. Die systematische Aufteilung komplexer Entscheidungen in handhabbare Einzelentscheidungen wird durch die Anwendung eines gestuften Verfahrens mit Grob- und Feinplanung erreicht.Um ein ökonomisch sinnvolles Verhältnis zwischen dem Aufwand zur Entscheidungsfindung und dem Nutzen in Form von reduzierten Risiken, Unsicherheiten und einer geringeren Komplexität zu ermöglichen, kann die Detailtiefe der Analysen anhand eindeutiger Kriterien flexibel angepasst werden.Zwei praktische prototypische Anwendungen des Entscheidungsprozesses zeigen auf, wie eine Architekturentscheidung systematisch und nach rationalen Gesichtspunkten durchgeführt werden kann. Die während der Entscheidungsfindung getroffenen Annahmen und Erwartungen werden im Anschluss mit den Ergebnissen der realen Implementierung verglichen. Anhand des Vergleichs wird klar erkennbar, welche versteckten Abhängigkeiten durch den Einsatz des Entscheidungsprozesses bereits frühzeitig erkannt wurden sowie welche Vorteile die richtige Entscheidungsfindung für das Softwaresystem und das Entwicklungsprojekt hat.

Zitieren

Zitierform:
Zitierform konnte nicht geladen werden.