week41 - GenAI for TDD, Collaboration in Pair Programming and refactoring opportunities by software antipattern detection
by Possessed Photography https://unsplash.com/photos/robot-playing-piano-U3sOwViXhkY

week41 - GenAI for TDD, Collaboration in Pair Programming and refactoring opportunities by software antipattern detection

Generative AI for Test Driven Development: Preliminary Results

Test Driven Development (TDD) is one of the major practices of Extreme Programming for which incremental testing and refactoring trigger the code development. TDD has limited adoption in the industry, as it requires more code to be developed and experienced developers. Generative AI (GenAI) may reduce the extra effort imposed by TDD. In this work, we introduce an approach to automatize TDD by embracing GenAI either in a collaborative interaction pattern in which developers create tests and supervise the AI generation during each iteration or a fully-automated pattern in which developers only supervise the AI generation at the end of the iterations. We run an exploratory experiment with ChatGPT in which the interaction patterns are compared with the non-AI TDD regarding test and code quality and development speed. Overall, we found that, for our experiment and settings, GenAI can be efficiently used in TDD, but it requires supervision of the quality of the produced code. In some cases, it can even mislead non-expert developers and propose solutions just for the sake of the query.


More on TDD:

Previous edition related with TDD:


Equitable Student Collaboration in Pair Programming

Pair programming is considered a very beneficial method for software development and is gaining increased attention in computer science education. Both partners in a programming pair should be equal and active participants, alternating on the roles of driver and navigator, but how pairs are formed in educational settings and how the resulting level of equity influences the outcomes of pair programming in classrooms remain open questions. To answer these questions, we conducted a survey involving 250 students and 100 teachers with prior pair programming experience, along with 147 students and teachers lacking such experience. We identify the currently common and preferred pair formation processes by teachers and students. We evaluate the outcomes of pair programming, as indicated by attitudes and perceived learnings, while we assess equity through behavioural patterns such as dominance, role compliance, and acknowledgment. Consequently, we investigate the relationship between outcomes and equity. Our results reveal a misalignment in pairing practices between teachers, who pair students based on diverse digital skills, and students, who express a preference for pairings aligned with similar skills. Despite this disparity, all participants think of pair programming as a method supporting equity. High acknowledgment between partners emerges as a significant factor of equity for positive attitudes and learnings, while role violations are identified as a common problem and a sign for lack of equity. These findings confirm that educators should take equity into account in pair programming classes.


A systematic review of refactoring opportunities by software antipattern detection

The violation of the semantic and structural software principles, such as low connection, high coherence, high understanding, and others, are called anti-patterns, which is one of the concerns of the software development process. They are caused due to bad design or programming that must be detected and removed to improve the application’s source code. Refactoring operators efficiently eliminate antipatterns, but they must first be identified. Therefore, antipattern detection is a critical issue in software engineering, and to do this, various approaches have been proposed. So far, review articles have been published to classify and compare these approaches. However, a comprehensive study using evaluation parameters has not compared different anti-pattern detection methods at all software abstraction levels. In this article, all the methods presented so far are classified, then their advantages and disadvantages are highlighted. Finally, a complete comparison of each category by evaluation metrics is provided. Our proposed classification considers three aspects, levels of abstraction, degree of dependence on developers’ skills, and techniques used. Then, the evaluation metrics reported on this subject are analyzed, and the qualitative values of these metrics for each category are presented. This information can help researchers compare and understand existing methods and improve them.


More on software design:

要查看或添加评论,请登录