{'fraction_non_alphanumeric': 0.020708082832331328, 'fraction_numerical': 0.008016032064128256, 'mean_word_length': 5.456896551724138, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
A Taxonomy for Design Decisions in Software Architecture Documentation

. A software system is the result of all design decisions that were made during development and maintenance. Documentation, such as software architecture documentation, captures a variety of diﬀerent design decisions. Classifying the kinds of design decisions facilitates various downstream tasks by enabling more targeted analyses. In this paper, we propose a taxonomy for design decisions in software architecture documentation to primarily support consistency checking. Existing taxonomies about design decisions have diﬀerent purposes and do not ﬁt well because they are too coarse. We take an iterative approach, starting with an initial taxonomy based on literature and considerations regarding consistency checking. Then, we mine open-source repositories to extract 17 software architecture documentations that we use to reﬁne the taxonomy. We evaluate the resulting taxonomy with regard to purpose, structure, and application. Additionally, we explore the automatic identiﬁcation and classiﬁcation of design decisions in software architecture documentation according to the taxonomy. We apply diﬀerent machine learning techniques, such as Logistic Regression, Decision Trees, Random Forests, and BERT to the 17 software architecture documentations. The evaluation yields a F 1 -score of up to 92.1% for identifying design decisions and a F 1 -score of up to 55.2% for the classiﬁcation of the kind of design decision.