1 research outputs found
Understanding and Supporting Software Architectural Decisions
Samenvatting De architectuur van software systemen wordt bepaald door de architectuur beslissingen. Hierin worden onderwerpen als frameworks, patterns, programmeer talen behandeld, of manieren om het systeem op te delen. Deze beslissingen en hun rationale zijn een belangrijk onderdeel van de architectuur kennis van een software systeem. Architectuur kennis van software systemen kan verloren gaan. Een architect kan de redenen van een beslissing vergeten, een andere baan krijgen, of de documentatie van beslissingen uitstellen. Het verdwijnen van architectuur kennis heeft enorme consequenties. Het kan zijn dat de initieel beoogde architectuur ideeën niet meer kunnen worden nageleefd waardoor uitbreidingen duur worden en het moeilijk is om de consistentie tussen beslissingen te bewaren. Het hoofddoel van dit onderzoek is het verminderen van het verlies van deze architectuur kennis. Dit word gedaan door deze beslissingen en hun rationale beter te documenteren. De bijdrage van dit onderzoek bestaat uit drie fasen: het begrijpen van het huidige onderzoek en de praktijk, exploreren van nieuwe ideeën en het aandragen van een concrete aanpak om het verlies van achitectuurkennis tegen te gaan. Abstract The architecture of a software system is the result of architectural decisions on various topics, such as frameworks, patterns, programming languages, or ways to decompose the software system. Such decisions and their rationales are a significant part of the architectural knowledge about a software system. Architectural knowledge about a software system tends to vaporize. For example, architects might forget the rationales of decisions, change jobs, or postpone indefinitely documenting decisions to avoid disrupting their design flow. Architectural knowledge vaporization has major practical consequences, such as drifting away from the initially intended architecture, and expensive evolution, due to the substantial needed effort to understand previous decisions and to avoid conflicts with them. The overall research problem addressed in this thesis is how to reduce architectural knowledge vaporization. The overall solution is to reduce architectural knowledge vaporization by documenting architectural decisions and their rationales. The contributions of this thesis at solving this problem can be grouped in three phases: understanding the state of practice and research, exploring new ideas, and proposing concrete approaches to reduce architectural knowledge vaporization. In the first phase (understanding), we investigated the state of practice in which architectural knowledge vaporization occurs, and the state of research that can help reduce architectural knowledge vaporization. To understand the state of practice, we conducted two surveys with practitioners. The first survey helps researchers understand the challenges for managing architectural knowledge in practice, and potential solutions to these challenges. The results of the first survey indicate that architectural knowledge vaporization is a major challenge in the industry, and that tool support is a potential solution. The second survey describes real-world architectural decisions, such as their characteristics, difficulties, and differences between good and bad architectural decisions. For example, we found out that most architectural decisions are group decisions. To understand the state of research, we conducted a systematic mapping study on the last decade of research on architectural decisions. This study helped us understand existing work on reducing architectural knowledge vaporization and future promising research directions. For example, we identified a lack of research on group architectural decisions, despite the fact that most architectural decisions are group decisions. Furthermore, we identified very few open-source tools for architectural decisions. In the second phase (exploring), we investigated using established approaches from the knowledge engineering field for reducing architectural knowledge vaporization. In particular, we conducted two surveys with students on using the Repertory Grid technique for documenting architectural decisions, to identify advantages and disadvantages of the technique. We found out that the main advantages are reducing architectural knowledge vaporization and reasoning support. The main disadvantages are the needed effort and lack of user-friendly tool support. In the third phase (proposing), we made three contributions. First, we contributed an approach based on the Repertory Grid technique for making and documenting individual architectural decisions. We did a survey with practitioners to identify advantages, disadvantages, and improvement opportunities of the approach. Advantages include reduction of architectural knowledge vaporization, and decision making support. Disadvantages include effort and insufficient tool support. Improvement opportunities include support for prioritizing concerns and for group decision making. To improve the approach, we did a controlled experiment with students to compare two concerns prioritization methods, and then we added the most suitable method to the approach. Second, we contributed an extension of the approach for making and documenting group architectural decisions. We did a case study to identify benefits and potential improvements of the approach. Benefits include reduction of architectural knowledge vaporization, and increased consensus of the group. Furthermore, we did a controlled experiment with students to compare the approach against ad-hoc group decision making. Experiment results indicate that the proposed approach reduces architectural knowledge vaporization and increases consensus. vii Third, we contributed with user friendly, open-source tool support for the two approaches for making and documenting individual and group architectural decisions. Overall, the contributions of this thesis help practitioners reduce architectural knowledge vaporization. Furthermore, the contributions of this thesis help researchers understand various aspects of architectural decisions and architectural knowledge, so that researchers can propose approaches that satisfy the needs of practitioners. i