This is an old revision of the document!
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.
Names | Definitions |
---|---|
AntiSingleton | TBD |
BaseClassKnowsDerivedClass | TBD |
BaseClassShouldBeAbstract | TBD |
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 | TBD |
ComplexClass | TBD |
FunctionalDecomposition |
methods. |
LargeClass | TBD |
LazyClass | TBD |
LongMethod | TBD |
LongParameterList | TBD |
ManyFieldAttributesButNotComplex | TBD |
MessageChains | TBD |
RefusedParentBequest | TBD |
SpaghettiCode |
suggest procedural programming. Spaghetti Code does not exploit and prevents the use of object-orientation mechanisms, polymorphism and inheritance. |
SpeculativeGenerality | TBD |
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 | TBD |