Abstract :
Summary form only given. Software evolution is an essential activity that adapts existing software to changes in requirements. It has played a central role in the overall software lifecycle in recent years. It is generally acknowledged that the software employed in real-world environments must continuously evolve and adapt. Many studies, on the other hand, have suggested that software evolution consumes a large part of development costs. Localizing the impact of changes is one of the most efficient strategies for successful evolution. It helps us to correctly estimate the impact of changes on systems and make changes that minimize increases in code complexity. Both of these activities, i.e., impact analysis and change implementation, have been recognized as integral to software evolution. However, it is still difficult to predict the impact of software changes even if the developers are experienced. Therefore, a software development process should help developers correctly analyze the impact of changes. Moreover, having to make continuous changes to a piece of code easily makes it complicated. Therefore, the process should also help developers to change systems while preventing code from becoming too complicated. We exploit requirements descriptions in order to extract loosely coupled components and localize changes for evolution. We define a process of elaboration for the goal model that extracts a set of control loops from the requirements descriptions as components that constitute extensible systems [1]. A control loop is a cyclic activity flow based on the process control model, which is a model for defining system behaviors. A controller in the model forms a (control) loop consisting of four key activities: collect, analyze, decide, and act. This cycle starts with a collection of relevant data that reflects the current state of the system. The system analyzes the collected data and adjusts its behavior to achieve its goals. After that, the system acts in a way- that reflects decisions. We regard such control loops to be independent components that prevent the impact of a change from spreading outside them. When additional requirements appear, new control loops are easy to embed into a system constructed with multiple control loops. Even if the requirements change, the idea of compositional control loops can easily accommodate these changes simply by updating the relevant control loops. We devised a goal model compiler [2] to enable partial design models to be extracted for each evolution and built a programming framework [3] that enables execution of multiple control loops. The goal model compiler identifies multiple control loops from goal-oriented requirements descriptions. We experimentally evaluated our approach in two types of software development and the results demonstrate that our elaboration technique helps us to analyze the impact of changes in the source code and prevent the complexity of the code from increasing.
Keywords :
program compilers; software engineering; code complexity; compositional control loops; cyclic activity flow; extensible systems; goal model compiler; goal model elaboration; goal-oriented requirement descriptions; multiple control loops; partial design models; process control model; software development process; software evolution; software lifecycle; source code; Abstracts; Complexity theory; Computational modeling; Computers; Conferences; Process control; Software;