Avoiding technical bankruptcy in system development: a process to reduce the risk of accumulating technical debt
The decisions made early in system development can have profound impacts on later capabilities of the system. In iterative systems development, decisions made in each iteration produce impacts on every future iteration. Decisions that have benefits in the short-term may damage the long-term health of the system. This phenomenon is known as technical debt. If not carefully managed, the buildup of technical debt within a system can lead to technical bankruptcy: the state where the system development can no longer proceed with its lifecycle without first paying back some of the technical debt. Within the schedule constrained development paradigm of iteratively and incrementally developed systems, it is especially important to proactively manage technical debt and to understand the potential long-term implications of decisions made to achieve short-term delivery goals. To enable proactive management of technical debt within systems engineering, it is first necessary to understand the state of the art with respect to the application of technical debt methods and terminology within the field. While the technical debt metaphor is well-known within the software engineering community, it is not as well known within the systems engineering community. Therefore, this research first characterizes the state of technical debt research within systems engineering through a literature review. Next, the prevalence of the technical debt metaphor among practicing systems engineers is established through an empirical survey. Finally, a common ontology for technical debt within systems engineering is proposed to enable clear and concise communication about the common problems faced in different systems engineering development programs. Using the research on technical debt in systems engineering and the ontology, this research develops a proactive approach to managing technical debt in iterative systems development by creating a decision support system called List, Evaluate, Achieve, Procure (LEAP). The LEAP process, when used in conjunction with release planning methods, can identify the potential for technical debt accumulation and eventually technical bankruptcy. The LEAP process is developed in two phases: a qualitative approach to provide initial assessments of the state of the system and a quantitative approach that models the effects of technical debt on system development schedules and the potential for technical bankruptcy based on release planning schedules. Example applications of the LEAP process are provided, consisting of the development of a conceptual problem and real applications of the process at the Space Development Agency. The LEAP process provides a novel and mathematical linkage of the temporal and functional dependencies of system development with the stakeholder needs, enabling proactive assessments of the ability of the system to satisfy those stakeholder needs. These assessments enable early identification of potential technical debt, reducing the risk of negative long-term impacts on the system health.
Includes bibliographical references.
enterprise systems engineering