Technical Debt, considered by many to be the 'silent killer' of software projects, has undeniably become part of the everyday vocabulary of software engineers. We know it compromises the internal quality of a system, either deliberately or inadvertently. We understand Technical Debt is not all derogatory, often serving the purpose of expediency. But, it is associated with a clear risk, especially for large and complex systems with extended service life: if we do not properly manage Technical Debt, it threatens to "bankrupt" those systems. Software engineers and organizations that develop software-intensive systems are facing an increasingly more dire future state of those systems if they do not start incorporating Technical Debt management into their day to day practice. But how? What have the wins and losses of the past decade of research and practice in managing Technical Debt taught us and where should we focus next? In this paper, we examine the state of the art in both industry and research communities in managing Technical Debt; we subsequently distill the gaps in industrial practice and the research shortcomings, and synthesize them to define and articulate a vision for what Technical Debt management looks like five years hence.
翻译:技术债务被许多人视为软件项目的“无声杀手”,无疑已成为软件工程师日常用语的一部分。我们知道它要么有意要么无意地损害系统的内部质量。我们理解技术债务并非全然贬义,常常是为了权宜之计。但它伴随着明显的风险,特别是对于具有较长使用寿命的大型复杂系统:如果我们不妥善管理技术债务,它有可能使这些系统“破产”。开发软件密集型系统的软件工程师和组织正面临日益严峻的未来状况——如果不将技术债务管理纳入日常实践。但如何实施?过去十年技术债务管理的研究与实践所取得的成败教训是什么?下一步我们应聚焦何处?本文考察了工业界和学术界在技术债务管理方面的最新进展;随后我们提炼了工业实践中的差距和研究不足,并将其综合起来,描绘并阐述未来五年技术债务管理的发展愿景。