## 3 Method for Proactive Management of Requirement Changes
### Software Prototype  
ProMaRC is implemented in a software prototype using Python. The graphical user interface (GUI) is implemented via Python extension PyQT 6 [73]. The requirement dependency analysis is implemented using the Python extension huggingface/transformers for functionality regarding BERT models [53] and Scikit-learn for preprocessing requirements for classification [74]. The underlying database is the PyQT implementation of SQLite [73]. The workflow within the prototype consists of seven steps (cf. Figure 14). Figure 13: Overview of proactive measures for requirement change risk management. Workflow: First, a development project has to be created (Step 1). A project is used as a container for a requirement list and extends it with metadata (project name and description) and project characteristics (cf. Appendix E). Using the GUI, users can switch between different views to display specific information: requirements table, dependency table, project database, impact analysis view and risk portfolio. Second, the requirements list has to be imported for the respective project (Step 2). Entries in the requirements list initially have the attributes ID, description and type (heading or requirement--headings are frequently used in industrial practice to group requirements). Requirements and their attributes are displayed within the requirements table. To perform the dependency analysis (cf. Section 3.2.1), a BERT model must be selected (Step 3). After the dependencies have been classified, they can be viewed in the dependency table. Dependencies consist of the attributes' ID and descriptions of the considered requirements as well as the dependency type. In the dependency table the user has the possibility to edit detected dependency types. In addition, the dependencies can be exported to use them as ground truth data for fine-tuning BERT models. Using requirement dependen  
Figure 14: Workflow within the ProMaRC tool. cies, the Active Rank of the requirements is calculated and is assigned as an attribute to respective requirements. As a precondition for determining the impact and likelihood of requirement changes, dependencies must be known. The order of performing change impact or change likelihood assessment is interchangeable. In the impact analysis view (cf. Section 3.2.2), the user is shown the requirements sorted by Active Rank (Step 4) to enable prioritization for manual assessment. For manual assessment of change impact, the expert guideline and the dependent requirements of the requirement under consideration are illustrated. The dependent requirements are illustrated as a tree structure for handling complexity. By expanding the requirement, the respective dependent requirements are displayed. After assessment of impact dimensions, the change impact is calculated and assigned as an attribute. The user is able to adjust the proposed change impact using a slider. To calculate the change likelihood (cf. Section 3.2.3), reference projects must be defined first (Step 5). These are selected in the project database view. Then, the user has to select exogenous change initiators for the requirements that potentially lead to a change of a certain requirement. To reduce application effort, the user has the possibility to define the initiators per requirement or per heading (selection is inherited to all requirements assigned). Then, change likelihood is calculated. Endogenous and exogenous change likelihood as well as the expected number of changes of each requirement are assigned. In the risk portfolio, the requirements are displayed to the user in a graph (Step 6). The Active Rank of the requirements is plotted on the abscissa and the expected number of changes per requirement on the ordinate. If collective impact analysis has been performed for a requirement represented by a circle in the graph, the diameter of the circle is scaled proportionally to the value of impact assessment. Requirements that are interconnected with many requirements have a high likelihood of change.