Investigating Design Anti-pattern and Design Pattern Mutations and Their Change- and Fault-proneness

03/31/2021
by   Zeinab, et al.
0

During software evolution, inexperienced developers may introduce design anti-patterns when they modify their software systems to fix bugs or to add new functionalities based on changes in requirements. Developers may also use design patterns to promote software quality or as a possible cure for some design anti-patterns. Thus, design patterns and design anti-patterns are introduced, removed, and mutated from one another by developers. Many studies investigated the evolution of design patterns and design anti-patterns and their impact on software development. However, they investigated design patterns or design anti-patterns in isolation and did not consider their mutations and the impact of these mutations on software quality. Therefore, we report our study of bidirectional mutations between design patterns and design anti-patterns and the impacts of these mutations on software change- and fault-proneness. We analyzed snapshots of seven Java software systems with diverse sizes, evolution histories, and application domains. We built Markov models to capture the probability of occurrences of the different design patterns and design anti-patterns mutations. Results from our study show that (1) design patterns and design anti-patterns mutate into other design patterns and/or design anti-patterns. They also show that (2) some change types primarily trigger mutations of design patterns and design anti-patterns (renaming and changes to comments, declarations, and operators), and (3) some mutations of design anti-patterns and design patterns are more faulty in specific contexts. These results provide important insights into the evolution of design patterns and design anti-patterns and its impact on the change- and fault-proneness of software systems.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
04/21/2020

SQLCheck: Automated Detection and Diagnosis of SQL Anti-Patterns

The emergence of database-as-a-service platforms has made deploying data...
research
04/28/2023

Does Code Smell Frequency Have a Relationship with Fault-proneness?

Fault-proneness is an indication of programming errors that decreases so...
research
10/19/2022

A Study of Obstacles in Plagiarism Software Subscribing by Colleges in Tamil Nadu

This article attempts to comprehend the current issues and hurdles that ...
research
04/13/2022

Characterizing and Mitigating Anti-patterns of Alerts in Industrial Cloud Systems

Alerts are crucial for requesting prompt human intervention upon cloud a...
research
10/17/2019

Deep Learning Anti-patterns from Code Metrics History

Anti-patterns are poor solutions to recurring design problems. Number of...
research
09/01/2017

Visual art inspired by the collective feeding behavior of sand-bubbler crabs

Sand-bubbler crabs of the genera Dotilla and Scopimera are known to prod...
research
08/13/2018

Automated Refactoring: Can They Pass The Turing Test?

Refactoring is a maintenance activity that aims to improve design qualit...

Please sign up or login with your details

Forgot password? Click here to reset