User Tools

Site Tools


sad

This is an old revision of the document!


SAD

SAD stands for Software Architectural Defects and is our implementation of DETEX, following the DECOR method to specify and identify occurrences of anti-patterns in PADL models. A paper introducing DETEX and DECOR has been published by Moha, Guéhéneuc, Duchien, and Le Meur and can be used as reference.

Anti-patterns Definition

Names Definitions
AntiSingleton
BaseClassKnowsDerivedClass
BaseClassShouldBeAbstract
Blob The Blob (also called God class) corresponds to a large controller class that depends on data stored in surrounding data classes. A large class declares many fields and methods with a low cohesion. A controller class monopolises most of the processing done by a system, takes most of the decisions, and closely directs the processing of other classes. Controller classes can be identified using suspicious names such as Process, Control, Manage, System, and so on. A data class contains only data and performs no processing on these data. It is composed of highly cohesive fields and accessors.
ClassDataShouldBePrivate
ComplexClass
FunctionalDecomposition

object-orientation implement an object-oriented system. Brown describes this antipattern as “a 'main' routine that calls numerous subroutines”. The Functional Decomposition design smell consists of a main class, i.e., a class with a procedural name, such as Compute or Display, in which inheritance and polymorphism are scarcely used, that is associated with small classes, which declare many private fields and implement only a few methods. |

LargeClass
LazyClass
LongMethod
LongParameterList
ManyFieldAttributesButNotComplex
MessageChains
RefusedParentBequest
SpaghettiCode

suggest procedural programming. Spaghetti Code does not exploit and prevents the use of object-orientation mechanisms, polymorphism and inheritance. |

SpeculativeGenerality
SwissArmyKnife

because it exposes a high complexity to address all foreseeable needs of a part of a system, whereas the Blob is a singleton monopolising all processing and data of a system. Thus, several Swiss Army Knives may exist in a system, for example utility classes. |

TraditionBreaker

Anti-patterns Identification

sad.1390375854.txt.gz · Last modified: 2019/10/06 20:37 (external edit)