174,908 research outputs found

    An analysis of techniques and methods for technical debt management: a reflection from the architecture perspective

    Full text link
    Technical debt is a metaphor referring to the consequences of weak software development. Managing technical debt is necessary in order to keep it under control, and several techniques have been developed with the goal of accomplishing this. However, available techniques have grown disperse and managers lack guidance. This paper covers this gap by providing a systematic mapping of available techniques and methods for technical debt management, covering architectural debt, and identifying existing gaps that prevent to manage technical debt efficiently

    Challenges in understanding, measuring, and managing technical debt

    Get PDF
    Abstract. Technical debt as a concept is vast and somewhat abstract area. The most basic definition of it is that it is analogous to a bank loan, which must be paid back so you don’t get stated bankrupt. Number of activities required to manage the debt are numerous, as 15 different sources of possible debt are identified. Technical debt management activities, possible sources, and outcomes that unpaid debt might bring are documented in this paper’s background section. Results section contains challenges that technical debt management processes are encountering in understanding, measuring, and managing the debt. Even with existing empirical research on technical debt management, research and industry are having hard time in trying to find the right tools and areas to measure to gain meaningful information on numerous types of technical debt. Without the right metrics, the monitoring tools are not able to provide useful information to aid in communication and decision-making. Currently, the tools focus mainly on code smells (code debt) and are not able to measure the most important aspects of the debt, design, and architectural debt. This research suggests future research topics to improve existing knowledge on certain areas such as the previously mentioned ability to meaningfully measure different kinds of debts

    Managing Technical Debt in Agile Software Development Projects

    Get PDF
    One of the key reasons that agile software development methods have gained popularity in recent years is because they enable organizations to produce software quickly to meet the needs of various stakeholders. However, this focus on delivering software quickly often encourages practitioners to incur technical debt – design or implementation constructs that are expedient in the short term but set up a technical context that can make future changes more costly or impossible. Worldwide, technical debt is estimated to be a trillion-dollar problem. This has prompted significant interest from both researchers and practitioners. In this dissertation, I present two essays that advance our knowledge of the causes of technical debt in agile software development projects and that offer potential solutions to manage the most important of these causes of technical debt. In my first essay, I conduct a ranking-type Delphi study of information technology (IT) project managers and software developers to identify and prioritize the most important causes of technical debt in agile software development projects. The findings from this study provide a verified list of 55 causes of technical debt in agile software development projects and offer 13 potential techniques to manage the causes of technical debt that were most important to the IT project managers and software developers in this study. In my second essay, I conduct a randomized experiment to examine the impact of software developers’ construal level, a cognitive process, on the unintentional accumulation of technical debt in software development projects. The findings from this experiment suggest that software developers at a high construal level are more likely to focus on developing the architecture or design than software developers at a low construal level. Collectively, the findings from these two essays deepen our understanding of the intentional and unintentional causes of technical debt in agile software development projects. Further, the findings offer potential techniques to manage the most important causes of technical debt for IT project managers and software developers

    Managing technical debt: prioritising and quantifying architectural smells

    Get PDF
    Architectural smells zijn een beruchte schadelijke vorm van ATD die verwijst naar schendingen van bekende ontwerpprincipes die resulteren in ongewenste afhankelijkheden, te grote omvang en overmatige koppeling. Architectural smells hebben een negatieve invloed op de onderhoudbaarheid en evolueerbaarheid van een systeem en maken het moeilijker om wijzigingen aan te brengen en nieuwe functionaliteit toe te voegen. Onderzoekers hebben de afgelopen jaren verschillende soorten architectuurgeuren geĂŻdentificeerd, beschreven en gecategoriseerd. Vervolgens werden verschillende onderzoekstools ontwikkeld om dergelijke geuren automatisch te detecteren op basis van de bron artefacten van een systeem. Vanuit het oogpunt van de praktijk is identificatie alleen niet voldoende om de door architectuurgeuren ontstane technische schuld goed te kunnen beheren. Om de bedreiging die architectuurgeuren vormen voor de onderhoudbaarheid van een systeem goed aan te pakken, hebben praktijkmensen ook ondersteuning nodig voor de prioritering, kwantificering, terugbetaling en monitoring. Helaas is de literatuur over dit onderwerp onvolledig, en ontbreekt de instrumentele ondersteuning voor deze specifieke activiteiten

    Artificial Intelligence for Technical Debt Management in Software Development

    Full text link
    Technical debt is a well-known challenge in software development, and its negative impact on software quality, maintainability, and performance is widely recognized. In recent years, artificial intelligence (AI) has proven to be a promising approach to assist in managing technical debt. This paper presents a comprehensive literature review of existing research on the use of AI powered tools for technical debt avoidance in software development. In this literature review we analyzed 15 related research papers which covers various AI-powered techniques, such as code analysis and review, automated testing, code refactoring, predictive maintenance, code generation, and code documentation, and explores their effectiveness in addressing technical debt. The review also discusses the benefits and challenges of using AI for technical debt management, provides insights into the current state of research, and highlights gaps and opportunities for future research. The findings of this review suggest that AI has the potential to significantly improve technical debt management in software development, and that existing research provides valuable insights into how AI can be leveraged to address technical debt effectively and efficiently. However, the review also highlights several challenges and limitations of current approaches, such as the need for high-quality data and ethical considerations and underscores the importance of further research to address these issues. The paper provides a comprehensive overview of the current state of research on AI for technical debt avoidance and offers practical guidance for software development teams seeking to leverage AI in their development processes to mitigate technical debt effectivel

    Managing technical debt through software metrics, refactoring and traceability

    Get PDF
    Technical Debt (TD) is a concept borrowed from the financial domain to express extra maintenancecosts caused by short-term solutions that compromise internal quality in order to meet urgent business demands. TD can occur throughout the life cycle of software development, and it can be relatedto different artifacts. Thus, different TD types exist, among which Code TD, Design TD andDocumentation TD are the most prevalent ones. To efficiently manage TD there are several activitiesthat can be performed, like the identification and prioritisation of TD instances, activities aimingat TD repayment, as well as activities aiming to prevent the further accumulation of TD.The research problem addressed in this thesis concerns the management of TD with respect to thethree aforementioned TD types (i.e., Code, Design and Documentation TD). Specifically, in termsof Code TD it concerns the lack of high accuracy in tooling that supports the identification, prioritisationand resolution of bad smells. In terms of Design TD, it concerns the lack of systematic supportfor identifying incorrectly instantiated design patterns, as well as the lack of guidance on howto refactor the design. In terms of Documentation TD, it concerns the lack of tools for preventingthe occurrence of insufficient, incomplete or outdated requirements documentation. The overallsolution consists of the application of software metrics, as well as refactoring and traceability techniquesto alleviate these shortcomings

    Addressing Software-Based, Platform Interoperability Risks in Defense Systems by Using Distressed Debt Financial Strategies: A Technical Debt Mitigation Concept

    Get PDF
    This concept paper explores an innovative approach to detecting and managing software vulnerabilities in cyber-physical defense systems. Software-based vulnerabilities that hinder or preclude the maintainability and evolvability of combat systems are a pernicious form of technical debt that threaten all cyber-physical systems. The risks associated with technical debt across increasingly interdependent DoD cyber-physical systems will accelerate if left unchecked. Without changes in acquisition and maintenance practices, we can foresee cascading, potentially catastrophic cross-system failures. To illustrate the risk and possible solutions, we focus on the software embedded in combat systems that are subject to ongoing modernization efforts that extend their applicability to evolving operations. Our research revealed that software vulnerabilities in critical combat systems can threaten the reliability and readiness of those systems. These vulnerabilities provide an opportunity for the defense acquisition communities to create a new capability within their organizations, an Acquisition Technical Debt Team (ATDT) to help detect, manage, and mitigate technical debt. We explore risk classification by including interoperability into risk evaluation schemas. We then apply common distressed debt management models to suggest when and how the ATDT might help manage and mitigate technical debt to help rehabilitate an ailing system.Prepared for the Naval Postgraduate School, Monterey, CA 93943.Naval Postgraduate SchoolApproved for public release; distribution is unlimited.Approved for public release; distribution is unlimited

    Reducing Technical Debt Density: Refactoring vs. Writing Clean New Code

    Get PDF
    Technical Debt (TD) is a powerful metaphor that represents shortcuts taken in a software development project, usually to meet business goals such as limited time or budget. TD concerns mostly invisible parts of the system (i.e. no visible features or defects) and has a detrimental effect on the maintainability and evolvability of software. TD manifests in both design and implementation constructs such as sub-optimal design decisions, design and code smells, use of impertinent technologies, lack of documentation etc.Technical Debt cannot realistically be eliminated but it does need to be proactively managed in order to be kept at a sustainable level. Managing Technical Debt is comprised of a number of activities. In this thesis, we focus on two of these activities, which are reported in the literature as the most important: repayment and prevention. As its name suggests, repayment refers to the remediation of TD by reworking the aforementioned design and implementation constructs; consider for example refactoring the source code, optimizing a design decision or documenting architecture knowledge that has remained tacit. Similarly, prevention of TD refers to ensuring the underlying issues will not occur in the first place; consider for example, checking for source code violations, supporting design decision making to avoid future maintenance overhead or simply allocating enough resources to follow the right approach instead of the "quick and dirty" one. In this thesis, we investigate to what extent repayment (through refactoring) and prevention (through writing clean new code) are effective in managing Technical Debt
    • …
    corecore