University of Groningen
Preserving and reusing architectural design decisions van der Ven, Jan
IMPORTANT NOTE: You are advised to consult the publisher's version (publisher's PDF) if you wish to cite from it. Please check the document version below.
Document Version
Publisher's PDF, also known as Version of record
Publication date: 2019
Link to publication in University of Groningen/UMCG research database
Citation for published version (APA):
van der Ven, J. (2019). Preserving and reusing architectural design decisions. University of Groningen.
Copyright
Other than for strictly personal use, it is not permitted to download or to forward/distribute the text or part of it without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license (like Creative Commons).
Take-down policy
If you believe that this document breaches copyright please contact us providing details, and we will remove access to the work immediately and investigate your claim.
Downloaded from the University of Groningen/UMCG research database (Pure): http://www.rug.nl/research/portal. For technical reasons the number of authors shown on this cover page is limited to 10 maximum.
195
Abstract
The software architecture is one of the most influential factors for the success or failure of a software system. The decisions made when managing the software architecture form the basis of a software system. Forgetting these architectural decisions, and the reasons behind these decisions, results in knowledge vapori-sation. This architectural knowledge vaporisation has severe consequences. The evolution of a system is more expensive and it is hard to reuse parts of the system if architectural knowledge is missing.
Software architecture research emphasizes the importance of explicitly man-aging architectural decisions to cope with architectural knowledge vaporisation. Models, methods and tools have been proposed to address this issue. Despite these efforts, industry seems to still struggle with managing architectural decisions in real world projects. We address this topic from three directions: artifacts, pro-cess and reuse. First, we show that architectural decisions can be connected with architectural artifacts, making the maintenance of these decisions easier. Second, we investigate the decision process used in industry to look for success factors for decision making. Last, we show that decisions can be reconstructed and reused from the history of systems.
As a start, we investigate the needs from industry concerning architectural knowledge. This investigation shows that the architectural decisions need to be taken into account in combination with existing artifacts like architectural docu-mentation or system impledocu-mentation. We show how explicit decisions can form the bridge between the tacit knowledge of architects and the artifacts that are used in software architecture. For example, one of the developed research tools de-scribed in this thesis enables annotation and management of tacit knowledge as meta-data when writing or reviewing architecture documentation. In this way, ar-chitectural decisions are connected with the documentation of the system, making it easier to access and maintain them.
Next, we investigate how the decision process takes place in practice. We look at the characteristics of the decision, like the person making the decision or the way in which the decision is preserved. We investigate the correlation between decision characteristics and the success of these decisions. We conclude that there are small indicators for success: development experience helps to make better decisions, while large documentation slows projects down.
It is not easy to get experienced architects on all projects. That is why we fur-ther investigate the possibility to reuse previously made architectural decisions. We show how architecture decision data can be made accessible from the history of the source code of open source software systems. We show that this data contains statistics on the occurrence of decisions, as well as tacit rationale of the decisions. The data was not documented explicitly during system development, but was ex-tracted when the systems were finished. In this way, knowledge vaporization can
196 Abstract
be tackled from a different angle by basing new decisions on relevant knowledge from existing systems.