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

10/13/2022
by   Gustavo Pinto, et al.
0

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.

READ FULL TEXT
research
06/21/2022

To What Extent Cognitive-Driven Development Improves Code Readability?

Cognitive-Driven Development (CDD) is a coding design technique that aim...
research
03/09/2023

Supporting the Careers of Developers with Disabilities: Lessons from Zup Innovation

Software developers with disabilities have a hard time to join the softw...
research
10/29/2020

Unveiling process insights from refactoring practices

Context : Software comprehension and maintenance activities, such as ref...
research
05/24/2022

DASP: A Framework for Driving the Adoption of Software Security Practices

Implementing software security practices is a critical concern in modern...
research
10/10/2020

Software Sustainability High Energy Physics

New facilities of the 2020s, such as the High Luminosity Large Hadron Co...
research
09/06/2018

Improving Development Practices through Experimentation: an Industrial TDD Case

Test-Driven Development (TDD), an agile development approach that enforc...

Please sign up or login with your details

Forgot password? Click here to reset