CSC/ECE 517 Fall 2010/ch7 7g ms: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
 
(26 intermediate revisions by 2 users not shown)
Line 3: Line 3:
=Analysis Paralysis Anti-pattern=
=Analysis Paralysis Anti-pattern=


In software engineering, an anti-pattern (or antipattern) is a pattern that may be commonly used but is ineffective and/or counterproductive in practice[[1]].
In software engineering, an anti-pattern is a pattern that may be commonly used but is ineffective and/or counterproductive in practice[[1]]. Specifically, the Analysis Paralysis is an anti-pattern because it is something done, but something that should be avoided.  Typically, users of the Analysis Paralysis pattern do not realize it at first, if ever.  This is because typical problem solving does require some analysis.  However, Analysis Paralysis is the over analyzation of a problem, to the point where no movement is ever made on solving the problem.  Analysis paralysis is one of the classic anti-patterns in object oriented software development. In analysis paralysis, we over analyze (or over think) a situation until no decision is ever made, which effectively paralyzes the current process' outcome. [[#References|[5]]]


Analysis paralysis is one of the classic anti-patterns in object oriented software development. In analysis paralysis, we over analyze (or over think) a situation until no decision is ever made, which effectively paralyzes the current process' outcome.
=History=
In Aesop's Fables' "The Fox and the Cat", the fox has "hundreds of ways of escaping" while the cat has "only one". When they heard the hounds approaching, the cat scampered up a tree while "the Fox in his confusion was caught up by the hounds". The fable ends with the moral, "Better one safe way than a hundred on which you cannot reckon."
In The Tragedy of Hamlet, Prince of Denmark, the main character, Prince Hamlet, is often said to have a mortal flaw of thinking too much, such that his youth and vital energy are, in Shakespeare's words, "sicklied o'er with the pale cast of thought."
=How to Defeat Analysis Paralysis=
    *Keep models small. Never integrate them. Building a bigger model doesn't add knowledge - it destroys knowledge
    *Employ a professional architect
    *Start your project with one requirement and an architectural prototype
==The PDCA Model==
    *Plan
    *Do
    *Check
    *Act


[[Image:AnalParal.gif|frame|right|FSM Showing Analysis Paralysis.  The Healthy Problem Solving FSM assumes you do eventually make progress. ]]


=Causes=
=Causes=
In software development, analysis paralysis typically manifests itself through exceedingly long phases of project planning, requirements gathering, program design and data modeling, with little or no extra value created by those steps. When extended over too long a timeframe, such processes tend to emphasize the organizational (i.e., bureaucratic) aspect of the software project, while detracting from its functional (value-creating) portion.
In software development, analysis paralysis typically manifests itself through exceedingly long phases of project planning, requirements gathering, program design and data modeling, with little or no extra value created by those steps. When extended over too long a timeframe, such processes tend to emphasize the organizational (i.e., bureaucratic) aspect of the software project, while detracting from its functional (value-creating) portion.


 
Further things to minimize in the workplace in order to defeat analysis paralysis include[[#References|[3]]]:
*Pride  
*Pride  
*Narrow Mindedness
*Narrow Mindedness
Line 39: Line 22:
*Creative speculation, when discovery and definition are required.
*Creative speculation, when discovery and definition are required.
*BigProjectSyndrome: this one will do it all, will use the latest tools, will use a new paradigm, will use all new developers, will start with a clean slate, will handle all use cases of two or more existing systems in the first release, etc.
*BigProjectSyndrome: this one will do it all, will use the latest tools, will use a new paradigm, will use all new developers, will start with a clean slate, will handle all use cases of two or more existing systems in the first release, etc.
*Risk avoidance, fear of making a mistake.  
*Risk avoidance, fear of making a mistake.
 
=Effects=
One of the most harmful effects of Analysis Paralysis is extended time to market.  In the case of new products, this gives competitors more time to develop products that may be better than yours, and may even be released before yours.  In the case of existing products, this can cause customers to become dissatisfied because they are not receiving updates regularly.  By setting deadlines, one can hope to achieve shorter time to market.[[#References|[4]]]
 
=Overcoming Analysis Paralysis=
One simple measure to overcome Analysis Paralysis is to create small goals, and then execute them.  Often times people fall into Analysis Paralysis because it seems necessary to have every minute detail planned from the start.  However, this is rarely the case.  Having a general view of long term plans is all that is necessary.  Then, one should take a small piece of that plan and flush it out in full detail, and begin to act on it.  By only taking small pieces to act on at once, one will never run into a case of being overwhelmed and thus avoid Analysis Paralysis.
 
Dr. Edwards Deming popularized a process called the PDCA Model. PDCA stands for: Plan, Do, Check, Act.  Such a process emphasizes the necessity to keep producing output, and not just planning to produce output.


=References=
=References=
[[#References|[1]]] Wikipedia. (2010, November) Wikipedia - Anti-Pattern. [Online]. http://en.wikipedia.org/wiki/Anti-pattern]
[[#References|[1]]] Wikipedia. (2010, November) Wikipedia - Anti-Pattern. [Online]. http://en.wikipedia.org/wiki/Anti-pattern
[[#References|[2]]] Analysis Paralysis. (2010, November) Analysis Paralysis. [Online]. http://c2.com/cgi/wiki?AnalysisParalysis]
 
[[#References|[3]]] Analysis Paralysis. (2010, November) Programming Management Anti-Patterns. [Online]. http://sourcemaking.com/antipatterns/analysis-paralysis]
[[#References|[2]]] Analysis Paralysis. (2010, November) Analysis Paralysis. [Online]. http://c2.com/cgi/wiki?AnalysisParalysis
[[#References|[4]]] Marelisa. (2010, November) How to Defeat Analysis Paralysis – The PDCA Model. [Online]. http://abundance-blog.marelisa-online.com/2010/06/26/defeat-analysis-paralysis/]
 
[[#References|[3]]] Analysis Paralysis. (2010, November) Programming Management Anti-Patterns. [Online]. http://sourcemaking.com/antipatterns/analysis-paralysis
 
[[#References|[4]]] Marelisa. (2010, November) How to Defeat Analysis Paralysis – The PDCA Model. [Online]. http://abundance-blog.marelisa-online.com/2010/06/26/defeat-analysis-paralysis/
 
[[#References|[5]]] Analysis paralysis. (2010, December) http://en.wikipedia.org/wiki/Analysis_paralysis
 
=See also=
* Anti Pattern http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki3_1_ab
 
=External Links=
 
* Is Analysis Paralysis Stopping You From Taking Action? http://www.healthmoneysuccess.com/602/analysis-paralysis-stopping-you-from-taking-action/
* How to Deal With Analysis Paralysis http://www.ehow.com/how_2065802_deal-analysis-paralysis.html

Latest revision as of 04:13, 2 December 2010

Analysis Paralysis Anti-Pattern

Analysis Paralysis Anti-pattern

In software engineering, an anti-pattern is a pattern that may be commonly used but is ineffective and/or counterproductive in practice1. Specifically, the Analysis Paralysis is an anti-pattern because it is something done, but something that should be avoided. Typically, users of the Analysis Paralysis pattern do not realize it at first, if ever. This is because typical problem solving does require some analysis. However, Analysis Paralysis is the over analyzation of a problem, to the point where no movement is ever made on solving the problem. Analysis paralysis is one of the classic anti-patterns in object oriented software development. In analysis paralysis, we over analyze (or over think) a situation until no decision is ever made, which effectively paralyzes the current process' outcome. [5]


FSM Showing Analysis Paralysis. The Healthy Problem Solving FSM assumes you do eventually make progress.

Causes

In software development, analysis paralysis typically manifests itself through exceedingly long phases of project planning, requirements gathering, program design and data modeling, with little or no extra value created by those steps. When extended over too long a timeframe, such processes tend to emphasize the organizational (i.e., bureaucratic) aspect of the software project, while detracting from its functional (value-creating) portion.

Further things to minimize in the workplace in order to defeat analysis paralysis include[3]:

  • Pride
  • Narrow Mindedness
  • The lure of infinite composability and decomposability
  • Insistence on completing all analysis before beginning design.
  • Regular change of leads and their philosophies (each trashing and restarting the work of the previous)
  • Too many learning curves at once (underqualified analyst) causing incessant revisiting of prior work
  • Lack of goals
  • Increasingly conflicting goals (often political)
  • Creative speculation, when discovery and definition are required.
  • BigProjectSyndrome: this one will do it all, will use the latest tools, will use a new paradigm, will use all new developers, will start with a clean slate, will handle all use cases of two or more existing systems in the first release, etc.
  • Risk avoidance, fear of making a mistake.

Effects

One of the most harmful effects of Analysis Paralysis is extended time to market. In the case of new products, this gives competitors more time to develop products that may be better than yours, and may even be released before yours. In the case of existing products, this can cause customers to become dissatisfied because they are not receiving updates regularly. By setting deadlines, one can hope to achieve shorter time to market.[4]

Overcoming Analysis Paralysis

One simple measure to overcome Analysis Paralysis is to create small goals, and then execute them. Often times people fall into Analysis Paralysis because it seems necessary to have every minute detail planned from the start. However, this is rarely the case. Having a general view of long term plans is all that is necessary. Then, one should take a small piece of that plan and flush it out in full detail, and begin to act on it. By only taking small pieces to act on at once, one will never run into a case of being overwhelmed and thus avoid Analysis Paralysis.

Dr. Edwards Deming popularized a process called the PDCA Model. PDCA stands for: Plan, Do, Check, Act. Such a process emphasizes the necessity to keep producing output, and not just planning to produce output.

References

[1] Wikipedia. (2010, November) Wikipedia - Anti-Pattern. [Online]. http://en.wikipedia.org/wiki/Anti-pattern

[2] Analysis Paralysis. (2010, November) Analysis Paralysis. [Online]. http://c2.com/cgi/wiki?AnalysisParalysis

[3] Analysis Paralysis. (2010, November) Programming Management Anti-Patterns. [Online]. http://sourcemaking.com/antipatterns/analysis-paralysis

[4] Marelisa. (2010, November) How to Defeat Analysis Paralysis – The PDCA Model. [Online]. http://abundance-blog.marelisa-online.com/2010/06/26/defeat-analysis-paralysis/

[5] Analysis paralysis. (2010, December) http://en.wikipedia.org/wiki/Analysis_paralysis

See also

External Links