论文标题

认知驱动的开发可以帮助软件团队将代码单元保持在极限之下!

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

论文作者

Pinto, Gustavo, de Souza, Alberto

论文摘要

软件设计技术无疑在设计好软件的过程中至关重要。多年来,研究人员和从业人员都提出了大量的设计技术。不幸的是,尽管它们具有独特性,但找到可以做出低标准设计决策的软件产品并不少见,从而导致设计降级挑战。这种行为的一个潜在原因是,开发人员对代码单元的增长没有清晰的看法。没有这个愿景,即使开发人员配备了设计实践的武器库,代码单元也可以无休止地生长。与其他设计技术不同,认知驱动的开发(简称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.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源