List Of Software Anti-patterns
   HOME

TheInfoList



OR:

Anti-pattern An anti-pattern in software engineering, project management, and business processes is a common response to a recurring problem that is usually ineffective and risks being highly counterproductive. The term, coined in 1995 by computer programmer An ...
s are commonly used ways of doing software engineering that are not useful or cause more issues than they solve. See
design patterns ''Design Patterns: Elements of Reusable Object-Oriented Software'' (1994) is a software engineering book describing software design patterns. The book was written by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, with a fore ...
for the opposite. There are many diverse types of software anti-patterns. Some relate to
software design Software design is the process of conceptualizing how a software system will work before it is implemented or modified. Software design also refers to the direct result of the design process the concepts of how the software will work which co ...
,
object-oriented programming Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impl ...
,
computer programming Computer programming or coding is the composition of sequences of instructions, called computer program, programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of proc ...
, methodological,
configuration management Configuration management (CM) is a management process for establishing and maintaining consistency of a product's performance, functional, and physical attributes with its requirements, design, and operational information throughout its life. ...
,
DevOps DevOps is the integration and automation of the software development and information technology operations. DevOps encompasses necessary tasks of software development and can lead to shortening development time and improving the development life ...
, and other aspects of
software engineering Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
. Several books have popularized the idea and teaching of anti-patterns. Anti-patterns can be found in anything that has organization, from project management to cultures, but this list focuses solely on software and computer science anti-patterns.


List of generic software design anti-patterns

* Abstraction inversion * Ambiguous viewpoint *
Big ball of mud An anti-pattern in software engineering, project management, and business processes is a common response to a recurring problem that is usually ineffective and risks being highly counterproductive. The term, coined in 1995 by computer programmer An ...
*
Database-as-IPC In computer programming, Database-as-Inter-process communication, IPC may be considered an anti-pattern where a disk persisted table in a database is used as the message queue store for routine inter-process communication (IPC) or subscribed data ...
*
Inner-platform effect The inner-platform effect is the tendency of software architects to create a system so customizable as to become a replica, and often a poor replica, of the software development platform they are using. This is generally inefficient and such syst ...
* Input kludge * Interface bloat * Magic pushbutton * Race hazard *
Stovepipe system In engineering and computing, "stovepipe system" is a pejorative term for a system that has the potential to share data or functionality with other systems but which does not do so. The term evokes the image of stovepipes rising above buildings, ea ...


List of object-oriented anti-patterns

*
Anemic domain model The anemic domain model is described as a programming anti-pattern where the domain objects contain little or no business logic like validations, calculations, rules, and so forth. The business logic is thus baked into the architecture of the prog ...
* Call super * Circle–ellipse problem * Circular dependency * Constant interface * God object * Object cesspool * Object orgy *
Poltergeist In German folklore and ghostlore, a poltergeist ( or ; ; or ) is a type of ghost or spirit that is responsible for physical disturbances, such as loud noises and objects being moved or destroyed. Most claims or fictional descriptions of polter ...
*
Sequential coupling In object-oriented programming, sequential coupling (also known as temporal coupling) is a form of coupling where a class requires its methods to be called in a particular sequence. This may be an anti-pattern, depending on context. Methods wh ...
*
Yo-yo problem In software development, the yo-yo problem is an anti-pattern that occurs when a programmer has to read and understand a program whose inheritance graph is so long and complicated that the programmer has to keep flipping between many different clas ...


List of programming anti-patterns

* Accidental complexity *
Action at a distance Action at a distance is the concept in physics that an object's motion (physics), motion can be affected by another object without the two being in Contact mechanics, physical contact; that is, it is the concept of the non-local interaction of ob ...
* Boat anchor * Busy waiting * Caching failure * Cargo cult programming * Coding by exception * Error hiding * Hard code * Lasagna code *
Lava flow Lava is molten or partially molten rock (magma) that has been expelled from the interior of a terrestrial planet (such as Earth) or a Natural satellite, moon onto its surface. Lava may be erupted at a volcano or through a Fissure vent, fractu ...
* Loop-switch sequence * Magic numbers * Magic strings * Repeating yourself * Shooting the messenger * Shotgun surgery * Soft code * Spaghetti code


List of methodological anti-patterns

* Copy and paste programming * Golden hammer * Invented here * Not invented here or (NIH) syndrome * Premature optimization * Programming by permutation (or "programming by accident", or "programming by coincidence") * Reinventing the square wheel *
Silver bullet Silver Bullet(s) or The Silver Bullet may refer to: * Silver bullet, in folklore, a weapon against supernatural creatures; metaphorically, a simple, effective solution to a problem Film and television * The Silver Bullet (1935 film), ''The Silve ...
* Tester-driven development


List of configuration management anti-patterns

*
Dependency hell Dependency hell is a colloquial term for the frustration of some software users who have installed software packages which have dependencies on specific versions of other software packages. The dependency issue arises when several packages ha ...
* DLL hell * Extension conflict * JAR hell


See also

*
List of software architecture styles and patterns Software Architecture Pattern refers to a reusable, proven solution to a recurring problem at the system level, addressing concerns related to the overall structure, component interactions, and quality attributes of the system. Software architectur ...
*
Software design pattern In software engineering, a software design pattern or design pattern is a general, reusable solution to a commonly occurring problem in many contexts in software design. A design pattern is not a rigid structure to be transplanted directly into s ...
*
Anti-pattern An anti-pattern in software engineering, project management, and business processes is a common response to a recurring problem that is usually ineffective and risks being highly counterproductive. The term, coined in 1995 by computer programmer An ...
* ''
AntiPatterns ''AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis'' is a book about anti-patterns: specific repeated practices in software architecture, software design and software project management that initially appear to be benefic ...
'' (book)


References

{{reflist Anti-patterns Object-oriented programming Software design patterns