0% found this document useful (0 votes)
55 views4 pages

Software Development AntiPatterns

This document discusses various software development anti-patterns, including the Blob, Continuous Obsolescence, Lava Flow, Ambiguous Viewpoint, Functional Decomposition, and more. It provides brief descriptions of each anti-pattern, focusing on the problem caused. Refactoring is presented as an effective approach to improving software structure and resolving anti-patterns.

Uploaded by

Hema
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
55 views4 pages

Software Development AntiPatterns

This document discusses various software development anti-patterns, including the Blob, Continuous Obsolescence, Lava Flow, Ambiguous Viewpoint, Functional Decomposition, and more. It provides brief descriptions of each anti-pattern, focusing on the problem caused. Refactoring is presented as an effective approach to improving software structure and resolving anti-patterns.

Uploaded by

Hema
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Software Development AntiPatterns https://sourcemaking.com/antipatterns/software-develo...

Facebook 1159 Twitter 1.4k Google+ 1k

 (/) / AntiPatterns (/antipatterns)

Software Development
AntiPatterns
(/antipatterns/software-
development-
antipatterns)
Good software
structure is Software Development
essential for system AntiPatterns
extension and (/antipatterns/software-
maintenance. development-
Software antipatterns)
development is a The Blob (/antipatterns
chaotic activity, /the-blob)
therefore the Continuous
implemented Obsolescence
structure of systems tends to stray from the planned structure as (/antipatterns
determined by architecture, analysis, and design. /continuous-
obsolescence)
Software refactoring is an effective approach for improving
Lava Flow (/antipatterns
software structure. The resulting structure does not have to
/lava-flow)
resemble the original planned structure.
Ambiguous Viewpoint
The structure changes because programmers learn constraints (/antipatterns
and approaches that alter the context of the coded solutions. /ambiguous-viewpoint)
When used properly, refactoring is a natural activity in the Functional
programming process. Decomposition
For example, the solution for the Spaghetti Code AntiPattern (/antipatterns/functional-
defines a software development process that incorporates decomposition)
refactoring. Refactoring is strongly recommended prior to Poltergeists
performance optimization. Optimizations often involve (/antipatterns
compromises to program structure. Ideally, optimizations affect /poltergeists)
only small portions of a program. Prior refactoring helps partition Boat Anchor
optimized code from the majority of the software. (/antipatterns/boat-
anchor)
Golden Hammer
Development AntiPatterns utilize various formal and informal
(/antipatterns/golden-
refactoring approaches. The following summaries provide an
hammer)
overview of the Development AntiPatterns found in this chapter
and focus on the development AntiPattern problem. Included are Dead End (/antipatterns
descriptions of both development and mini-AntiPatterns. The /dead-end)
refactored solutions appear in the appropriate AntiPattern Spaghetti Code
templates that follow the summaries. (/antipatterns
/spaghetti-code)
The Blob (/antipatterns/the-blob)
Input Kludge
Procedural-style design leads to one object with a lion’s share
(/antipatterns/input-
of the responsibilities, while most other objects only hold data
kludge)
or execute simple processes. The solution includes refactoring
the design to distribute responsibilities more uniformly and Walking through a
isolating the effect of changes. Minefield (/antipatterns
/walking-through-
Continuous Obsolescence (/antipatterns/continuous- minefield)

1 of 4 4/14/2016 6:13 PM
Software Development AntiPatterns https://sourcemaking.com/antipatterns/software-develo...

obsolescence) Cut-And-Paste
Technology is changing so rapidly that developers often have Programming
trouble keeping up with current versions of software and (/antipatterns/cut-and-
finding combinations of product releases that work together. paste-programming)
Given that every commercial product line evolves through new Mushroom Management
releases, the situation is becoming more difficult for (/antipatterns
developers to cope with. Finding compatible releases of /mushroom-
products that successfully interoperate is even harder. management)
Lava Flow (/antipatterns/lava-flow)
Dead code and forgotten design information is frozen in an Software Architecture
ever-changing design. This is analogous to a Lava Flow with AntiPatterns
hardening globules of rocky material. The refactored solution (/antipatterns/software-
includes a configuration management process that eliminates architecture-antipatterns)
dead code and evolves or refactors design toward increasing
Software Architecture
quality.
AntiPatterns
Ambiguous Viewpoint (/antipatterns/ambiguous-viewpoint) (/antipatterns/software-
Object-oriented analysis and design (OOA&D) models are architecture-
often presented without clarifying the viewpoint represented by antipatterns)
the model. By default, OOA&D models denote an Autogenerated
implementation viewpoint that is potentially the least useful. Stovepipe (/antipatterns
Mixed viewpoints don’t allow the fundamental separation of /autogenerated-
interfaces from implementation details, which is one of the stovepipe)
primary benefits of the object-oriented paradigm.
Stovepipe Enterprise
Functional Decomposition (/antipatterns/functional- (/antipatterns/stovepipe-
decomposition) enterprise)
This AntiPattern is the output of experienced, nonobject- Jumble (/antipatterns
oriented developers who design and implement an application /jumble)
in an object-oriented language. The resulting code resembles Stovepipe System
a structural language (Pascal, FORTRAN) in class structure. It (/antipatterns/stovepipe-
can be incredibly complex as smart procedural developers system)
devise very “clever” ways to replicate their time-tested methods
Cover Your Assets
in an object-oriented architecture.
(/antipatterns/cover-
Poltergeists (/antipatterns/poltergeists) your-assets)
Poltergeists are classes with very limited roles and effective life Vendor Lock-In
cycles. They often start processes for other objects. The (/antipatterns/vendor-
refactored solution includes a reallocation of responsibilities to lock-in)
longer-lived objects that eliminate the Poltergeists.
Wolf Ticket
Boat Anchor (/antipatterns/boat-anchor) (/antipatterns/wolf-ticket)
A Boat Anchor is a piece of software or hardware that serves Architecture By
no useful purpose on the current project. Often, the Boat Implication (/antipatterns
Anchor is a costly acquisition, which makes the purchase even /architecture-
more ironic. by-implication)

Golden Hammer (/antipatterns/golden-hammer) Warm Bodies


A Golden Hammer is a familiar technology or concept applied (/antipatterns/warm-
obsessively to many software problems. The solution involves bodies)
expanding the knowledge of developers through education, Design By Committee
training, and book study groups to expose developers to (/antipatterns/design-
alternative technologies and approaches. by-committee)

Dead End (/antipatterns/dead-end) Swiss Army Knife


A Dead End is reached by modifying a reusable component if (/antipatterns/swiss-
the modified component is no longer maintained and army-knife)
supported by the supplier. When these modifications are Reinvent The Wheel
made, the support burden transfers to the application system (/antipatterns/reinvent-
developers and maintainers. Improvements in the reusable the-wheel)

2 of 4 4/14/2016 6:13 PM
Software Development AntiPatterns https://sourcemaking.com/antipatterns/software-develo...

component are not easily integrated, and support problems


Project Management
can be blamed upon the modification.
AntiPatterns
Spaghetti Code (/antipatterns/spaghetti-code) (/antipatterns/software-
Ad hoc software structure makes it difficult to extend and project-management-
optimize code. Frequent code refactoring can improve
antipatterns)
software structure, support software maintenance, and enable
iterative development.

Input Kludge (/antipatterns/input-kludge)


Software that fails straightforward behavioral tests may be an
example of an input kludge, which occurs when ad hoc
algorithms are employed for handling program input.

Walking through a Minefield (/antipatterns/walking-through-


minefield)
Using today’s software technology is analogous to walking
through a high-tech mine field. Numerous bugs are found in
released software products; in fact, experts estimate that
original source code contains two to five bugs per line of code.

Cut-and-Paste Programming (/antipatterns/cut-and-paste-


programming)
Code reused by copying source statements leads to significant
maintenance problems. Alternative forms of reuse, including
black-box reuse, reduce maintenance issues by having
common source code, testing, and documentation.

Mushroom Management (/antipatterns/mushroom-


management)
In some architecture and management circles, there is an
explicit policy to keep system developers isolated from the
system’s end users. Requirements are passed second-hand
through intermediaries, including architects, managers, or
requirements analysts.

 AntiPatterns  AntiPatterns The Blob 


(/antipatterns) (/antipatterns) (/antipatterns
/the-blob)

SourceMaking Design Patterns (/design_patterns) My account (/user)


(/) AntiPatterns (/antipatterns)

3 of 4 4/14/2016 6:13 PM
Software Development AntiPatterns https://sourcemaking.com/antipatterns/software-develo...

Refactoring (/refactoring) Forum


UML (/uml) (https://sourcemaking.userecho.com/)
Contact us
(https://sourcemaking.userecho.com
/?show_feedback_form_private=true)
About us (/about-us)

4 of 4 4/14/2016 6:13 PM

You might also like