arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 2210.07342cs.SE
收藏

认知驱动开发帮助软件团队将代码单元保持在限制范围内!

Cognitive-Driven Development Helps Software Teams to Keep Code Units Under the Limit!

Gustavo Pinto, Alberto de Souza

AI总结:

本文研究了巴西科技公司团队使用认知驱动开发(CDD)从零构建学习管理工具的经验,发现CDD能有效控制代码单元规模并简化测试,但开发者会根据实际复杂性适当放宽限制。

摘要:

软件设计技术在设计优秀软件的过程中无疑是至关重要的。多年来,研究人员和实践者提出了大量的设计技术。遗憾的是,尽管这些技术各具特色,但软件产品做出低于标准的设计决策的情况并不少见,从而导致设计退化挑战。这种行为的一个潜在原因是,开发者对于代码单元可能会增长到何种程度没有清晰的认识;缺乏这种预见性,代码单元可能会无限制地增长,即使开发者配备了大量的设计实践。与其他设计技术不同,认知驱动开发(Cognitive Driven Development,简称 CDD)专注于 1)定义和 2)限制开发者在给定代码单元中可以使用的编码元素的数量。在本文中,我们报告了一个软件开发团队在 Zup Innovation(一家巴西科技公司)使用 CDD 从头构建学习管理工具的经验。通过整理存储库中留下的提交记录,结合开发者的感知,我们总结了一系列发现和教训,这些内容对于有兴趣采用 CDD 的人可能很有用。例如,我们注意到,通过使用 CDD,尽管产品在演进,开发者仍能将代码单元保持在较小的规模(就大小而言)。此外,尽管限制复杂性是 CDD 的核心,我们还发现开发者倾向于放宽这种限制的概念,以便他们能够应对软件的各种复杂性。同时,我们注意到 CDD 还能影响测试实践;限制代码单元的规模使得测试更容易执行。

英文摘要:

Software design techniques are undoubtedly crucial in the process of designing good software. Over the years, a large number of design techniques have been proposed by both researchers and practitioners. Unfortunately, despite their uniqueness, it is not uncommon to find software products that make subpar design decisions, leading to design degradation challenges. One potential reason for this behavior is that developers do not have a clear vision of how much a code unit could grow; without this vision, a code unit can grow endlessly, even when developers are equipped with an arsenal of design practices. Different than other design techniques, Cognitive Driven Development (CDD for short) focuses on 1) defining and 2) limiting the number of coding elements that developers could use at a given code unit. In this paper, we report on the experiences of a software development team in using CDD for building from scratch a learning management tool at Zup Innovation, a Brazilian tech company. By curating commit traces left in the repositories, combined with the developers' perception, we organized a set of findings and lessons that could be useful for those interested in adopting CDD. For instance, we noticed that by using CDD, despite the evolution of the product, developers were able to keep the code units under a small amount of size (in terms of size). Furthermore, although limiting the complexity is at the heart of CDD, we also discovered that developers tend to relax this notion of limit so that they can cope with the different complexities of the software. Still, we noticed that CDD could also influence testing practices; limiting the code units' size makes testing easier to perform.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑