antipatterns commonly reinvented bad solutions to problems picture from:

45
Antipatterns Antipatterns Commonly reinvented bad solutions to Commonly reinvented bad solutions to problems problems Picture from: http://www.intel.com/cd/ids/developer/asmo-na/eng/dc/mrte/201 33.htm

Upload: sherman-gordon

Post on 11-Jan-2016

221 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Antipatterns Commonly reinvented bad solutions to problems Picture from:

AntipatternsAntipatterns

Commonly reinvented bad solutions to problemsCommonly reinvented bad solutions to problems

Picture from: http://www.intel.com/cd/ids/developer/asmo-na/eng/dc/mrte/20133.htm

Page 2: Antipatterns Commonly reinvented bad solutions to problems Picture from:

OverviewOverview

General Information and StatisticsGeneral Information and Statistics Reference ModelReference Model The AntiPattern TemplateThe AntiPattern Template Types and examples of AntipatternsTypes and examples of Antipatterns

Page 3: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Software Development StatisticsSoftware Development Statistics

five out of six software projects are five out of six software projects are considered unsuccessful considered unsuccessful

Nearly 1/3 of software projects are outright Nearly 1/3 of software projects are outright canceledcanceled

2/3 delivered software that was typically 2/3 delivered software that was typically twice the expected budget and took twice twice the expected budget and took twice as long to developed as originally planned as long to developed as originally planned

Page 4: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Fundamental Software PatternsFundamental Software Patterns

191 total patterns191 total patterns 23 Gamma Patterns23 Gamma Patterns 17 Buschmann Patterns17 Buschmann Patterns 72 Analysis Patterns72 Analysis Patterns 38 CORBA Design Patterns38 CORBA Design Patterns 42 42 AntipatternsAntipatterns

Statistics from: http://www.serve.com/hibc/briefing/sld043.htm

Page 5: Antipatterns Commonly reinvented bad solutions to problems Picture from:

What Are Antipatterns?What Are Antipatterns?

Picture from: http://www.serve.com/hibc/briefing/sld010.htm

Page 6: Antipatterns Commonly reinvented bad solutions to problems Picture from:

What Are Antipatterns?What Are Antipatterns?

““Negative Solutions,” or solutions that Negative Solutions,” or solutions that present more problems than they address.present more problems than they address.

natural extensions to design patternsnatural extensions to design patterns Bridge the gap between architectural Bridge the gap between architectural

concepts and real-world implementationsconcepts and real-world implementations Provide Knowledge to prevent and recover Provide Knowledge to prevent and recover

from common Mistakes.from common Mistakes.

http://www.serve.com/hibc/briefing/sld003.htm

Page 7: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Antipatterns Vs. Design PatternsAntipatterns Vs. Design Patterns

Design Pattern- a general Design Pattern- a general repeatable solution to a repeatable solution to a commonly occurring commonly occurring problemproblem

Antipattern- Such a Antipattern- Such a solution which is solution which is recognized as a poor way recognized as a poor way to solve the problem, and to solve the problem, and a refactored solutiona refactored solution

Picture and information from: http://www.serve.com/hibc/briefing/sld006.htm

Page 8: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Why Study AntipatternsWhy Study Antipatterns

Antipatterns provide easily identifiable templates for Antipatterns provide easily identifiable templates for common problems, as well as a path of action to rectify common problems, as well as a path of action to rectify these problems.these problems.

Antipatterns provide real world experience in recognizing Antipatterns provide real world experience in recognizing recurring problems in the software industry providing a recurring problems in the software industry providing a detailed remedy for the most common ones.detailed remedy for the most common ones.

Antipatterns provide a common vocabulary for identifying Antipatterns provide a common vocabulary for identifying problems and discussing solutions.problems and discussing solutions.

Antipatterns provide stress release in the form of shared Antipatterns provide stress release in the form of shared misery.misery.

Antipatterns ensure common problems are not Antipatterns ensure common problems are not continually repeated within an organizationcontinually repeated within an organization

Page 9: Antipatterns Commonly reinvented bad solutions to problems Picture from:

ViewpointsViewpoints The Manager ViewpointThe Manager Viewpoint: :

The viewpoint of those who manage teams, projects, and programs. This The viewpoint of those who manage teams, projects, and programs. This viewpoint is related to the responsibility for planning and scheduling across the viewpoint is related to the responsibility for planning and scheduling across the software development lifecycle. Management is often responsible for the software development lifecycle. Management is often responsible for the software development lifecycle used, including the software configuration software development lifecycle used, including the software configuration management.management.

The architect viewpointThe architect viewpoint: : focuses on identifying the technology, and specifying system configurations and focuses on identifying the technology, and specifying system configurations and

architecture. This covers both logical and physical representations of the architecture. This covers both logical and physical representations of the architecture and establishing the scope of the use of the selected technologies. architecture and establishing the scope of the use of the selected technologies. During implementation the role of the architect involves ensuring designs During implementation the role of the architect involves ensuring designs conform to the architecture and updating the architecture based on coding conform to the architecture and updating the architecture based on coding discoveries made during implementation.discoveries made during implementation.

The developer viewpointThe developer viewpoint: : focuses on the implementation of the software development process. A focuses on the implementation of the software development process. A

developer can be anyone who has a role in mainstream development or developer can be anyone who has a role in mainstream development or implementation of a software system. Such roles include gathering implementation of a software system. Such roles include gathering requirements, designing, coding, and testing.requirements, designing, coding, and testing.

Page 10: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Reference ModelReference Model

The Reference Model is broken down in three main areas:The Reference Model is broken down in three main areas:■■ Root causesRoot causes

Provide fundamental context for the AntiPatternProvide fundamental context for the AntiPattern

Primal forcesPrimal forces are the key motivators for decision makingare the key motivators for decision making

Software design-level modelSoftware design-level model Define architectural scaleDefine architectural scale

The reference Model helps us gain an understanding of what The reference Model helps us gain an understanding of what causes particular Antipatterns, and the scope at which they occur. causes particular Antipatterns, and the scope at which they occur. This information helps us better understand the problem, and why This information helps us better understand the problem, and why it continues to happen. it continues to happen.

Page 11: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Root Causes: Root Causes: -Seven Deadly Sins-Seven Deadly Sins

Haste:Haste: Tight deadlines often lead to neglecting important activitiesTight deadlines often lead to neglecting important activities

Apathy:Apathy: The attitude of not caring about solving known problems.The attitude of not caring about solving known problems.

Narrow-Mindedness:Narrow-Mindedness: Refusal of developers to learn proven solutions.Refusal of developers to learn proven solutions.

Sloth:Sloth: adaptation of the most simple “solution”.adaptation of the most simple “solution”.

Avarice:Avarice: Greed in creating a system can result in very complex, and difficult to maintain Greed in creating a system can result in very complex, and difficult to maintain

software.software. Ignorance:Ignorance:

The lack of motivation to understand things.The lack of motivation to understand things. Pride:Pride:

The Failure to reuse existing software packages because they were not invented The Failure to reuse existing software packages because they were not invented by a specific companyby a specific company

Page 12: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Primal Forces:Primal Forces:- Key Motivators of decision making- Key Motivators of decision making Management of FunctionalityManagement of Functionality

Meeting the requirementsMeeting the requirements

Management of PerformanceManagement of Performance Meeting required speed and operationMeeting required speed and operation

Management of ComplexityManagement of Complexity Defining abstractionsDefining abstractions

Management of ChangeManagement of Change Controlling the evolution of software Controlling the evolution of software

Management of IT ResourcesManagement of IT Resources Managing people and IT artifactsManaging people and IT artifacts

Management of Technology TransferManagement of Technology Transfer Controlling technology evolutionControlling technology evolution

Page 13: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Software Design Level Model Software Design Level Model (SDLM):(SDLM):

Global scale:Global scale: involves design issues that are globally applicable involves design issues that are globally applicable

across all systems. This level is concerned with across all systems. This level is concerned with coordination across all organizations that participate coordination across all organizations that participate in information sharing.in information sharing.

Enterprise scale:Enterprise scale: focuses on coordination and communication across a focuses on coordination and communication across a

single organization. The organization can be single organization. The organization can be distributed across many locations.distributed across many locations.

System scale:System scale: deals with communications and coordination across deals with communications and coordination across

applications and sets of applications.applications and sets of applications.

Page 14: Antipatterns Commonly reinvented bad solutions to problems Picture from:

SDLM (cont.)SDLM (cont.) Application scale:Application scale:

focuses upon the organization of applications focuses upon the organization of applications developed to meet a set of user requirements.developed to meet a set of user requirements.

Framework scale:Framework scale: focused on the organization and development of focused on the organization and development of

application frameworks.application frameworks. Micro-architecture scale:Micro-architecture scale:

centered on the development of software components centered on the development of software components that solve recurring software problems. that solve recurring software problems.

Object scale:Object scale: concerned with the development of reusable objects concerned with the development of reusable objects

and classes. The object level is more concerned with and classes. The object level is more concerned with code reuse than design reuse.code reuse than design reuse.

Page 15: Antipatterns Commonly reinvented bad solutions to problems Picture from:

AntiPattern TemplateAntiPattern Template Name:Name:

The formal name of the AntiPatternThe formal name of the AntiPattern Also Known As:Also Known As:

Other popular, descriptive, or humorous names for the Other popular, descriptive, or humorous names for the AntiPattern.AntiPattern.

Most Frequent Scale:Most Frequent Scale: Where the AntiPattern fits into the SDLM ModelWhere the AntiPattern fits into the SDLM Model

Refactored Solution Name:Refactored Solution Name: The name of the pattern that acts as the proper Refactored The name of the pattern that acts as the proper Refactored

solution.solution. Refactored Solution Type:Refactored Solution Type:

This will identify the type of improvement that results from This will identify the type of improvement that results from applying the AntiPattern solution. Such improvements include: applying the AntiPattern solution. Such improvements include: Software, Technology, Process, and Role improvements.Software, Technology, Process, and Role improvements.

Page 16: Antipatterns Commonly reinvented bad solutions to problems Picture from:

AntiPattern Template (cont.)AntiPattern Template (cont.) Root CausesRoot Causes::

One or more key root causes that result in the AntiPattern.One or more key root causes that result in the AntiPattern. Unbalanced Forces:Unbalanced Forces:

Identifies the Primal Forces that are ignored, misused, or Identifies the Primal Forces that are ignored, misused, or overused in the AntiPattern.overused in the AntiPattern.

Anecdotal Evidence:Anecdotal Evidence: Common phrases and humorous anecdotes that describe the Common phrases and humorous anecdotes that describe the

problem.problem. Background:Background:

Sets the Scene for the AntiPattern and introduces the problem Sets the Scene for the AntiPattern and introduces the problem under discussion.under discussion.

General Form:General Form: General characteristics of the AntiPattern are identified, and an General characteristics of the AntiPattern are identified, and an

overview of the nature of the problem is presented.overview of the nature of the problem is presented.

Page 17: Antipatterns Commonly reinvented bad solutions to problems Picture from:

AntiPattern Template (cont.)AntiPattern Template (cont.)

Symptoms and Consequences:Symptoms and Consequences: A list of symptoms and related consequences resulting from this A list of symptoms and related consequences resulting from this

AntiPattern.AntiPattern.

Typical Causes:Typical Causes: A list of the unique causes of an AntiPattern, which should relate A list of the unique causes of an AntiPattern, which should relate

to corresponding symptoms and consequences where possible. to corresponding symptoms and consequences where possible.

Known Exceptions:Known Exceptions: Specific occasions when AntiPattern behavior and processes Specific occasions when AntiPattern behavior and processes

may not always be wrong.may not always be wrong.

Refactored Solutions:Refactored Solutions: Resolves the unbalanced forces, causes, symptoms, and Resolves the unbalanced forces, causes, symptoms, and

consequences of the AntiPattern.consequences of the AntiPattern.

Page 18: Antipatterns Commonly reinvented bad solutions to problems Picture from:

AntiPattern Template (cont.)AntiPattern Template (cont.)

Variations:Variations: Lists known variations of the AntiPattern,Lists known variations of the AntiPattern,

Example:Example: An example of the AntiPattern based on real-world An example of the AntiPattern based on real-world

experienceexperience Related Solutions:Related Solutions:

Identifies and lists any cross-references to other Identifies and lists any cross-references to other Antipatterns which are closely related.Antipatterns which are closely related.

Applicability to Other Viewpoints and Scales:Applicability to Other Viewpoints and Scales: Describes the impact of the AntiPattern to other Describes the impact of the AntiPattern to other

applicable SDLM scales.applicable SDLM scales.

Page 19: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Example of an AntiPattern using Example of an AntiPattern using the Templatethe Template

Example of the Lava Flow AntiPattern at: Example of the Lava Flow AntiPattern at:

→→http://antipatterns.com/lavaflow.htmhttp://antipatterns.com/lavaflow.htm

Picture From: http://antipatterns.com/lavaflow.htmhttp://antipatterns.com/lavaflow.htm

Page 20: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Types of AntipatternsTypes of Antipatterns

Development AntipatternsDevelopment Antipatterns Problems encountered by programmersProblems encountered by programmers

Architecture AntipatternsArchitecture Antipatterns Common problems in system structureCommon problems in system structure

Management AntipatternsManagement Antipatterns Problems in communicationProblems in communication

Page 21: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Development AntipatternsDevelopment Antipatterns

Picture from: http://www.serve.com/hibc/briefing/sld024.htm

Page 22: Antipatterns Commonly reinvented bad solutions to problems Picture from:

What are Development What are Development Antipatterns?Antipatterns?

Common pitfalls in the development Common pitfalls in the development processprocess

The goal of identifying Development The goal of identifying Development Antipatterns is help to identify was to Antipatterns is help to identify was to refractor your system.refractor your system.

Page 23: Antipatterns Commonly reinvented bad solutions to problems Picture from:

List of Development AntipatternsList of Development Antipatterns

Ambiguous ViewpointAmbiguous Viewpoint Boat AnchorBoat Anchor Continuous ObsolescenceContinuous Obsolescence Cut and Paste ProgrammingCut and Paste Programming Dead EndDead End Fire DrillFire Drill Functional DecompositionFunctional Decomposition

List from: http://www.serve.com/hibc/dev_cat.htm

Page 24: Antipatterns Commonly reinvented bad solutions to problems Picture from:

List (cont.)List (cont.)

Golden HammerGolden Hammer Input KludgeInput Kludge Lava FlowLava Flow Mushroom ManagementMushroom Management PoltergeistsPoltergeists The BlobThe Blob Walking Through a Mine FieldWalking Through a Mine Field

List from: http://www.serve.com/hibc/dev_cat.htm

Page 25: Antipatterns Commonly reinvented bad solutions to problems Picture from:

A Few Examples:A Few Examples:The BlobThe Blob

Synopsis - Procedural-style design leads Synopsis - Procedural-style design leads to one object with numerous to one object with numerous responsibilities and most other objects responsibilities and most other objects only holding data. only holding data.

Refactored Solution- Refactor the design Refactored Solution- Refactor the design to distribute responsibilities more uniformly to distribute responsibilities more uniformly and isolate the effect of changes. and isolate the effect of changes.

Example from: http://www.serve.com/hibc/dev_cat.htm

Page 26: Antipatterns Commonly reinvented bad solutions to problems Picture from:

A Few Examples:A Few Examples:PoltergeistsPoltergeists

Synopsis- Small Classes with very limited Synopsis- Small Classes with very limited responsibilities and short life cycles.responsibilities and short life cycles.

Refactored Solution- Allocate the Refactored Solution- Allocate the Responsibility to Larger Objects and Responsibility to Larger Objects and eliminate the Poltergeists.eliminate the Poltergeists.

Example from: http://www.serve.com/hibc/dev_cat.htm

Page 27: Antipatterns Commonly reinvented bad solutions to problems Picture from:

A Few Examples: A Few Examples: Ambiguous ViewpointAmbiguous Viewpoint

Synopsis- Lack of clarification of the Synopsis- Lack of clarification of the modeling viewpoint leads to problematic modeling viewpoint leads to problematic ambiguities in object models. ambiguities in object models.

Refactored Solution- Always clarify which Refactored Solution- Always clarify which of the 3 essential viewpoints is modeled: of the 3 essential viewpoints is modeled: business, specification, or implementation. business, specification, or implementation.

Example from: http://www.serve.com/hibc/dev_cat.htm

Page 28: Antipatterns Commonly reinvented bad solutions to problems Picture from:

A Few Examples:A Few Examples:Cut and Paste Programming Cut and Paste Programming

Code reused by copying source Code reused by copying source statements leads to significant statements leads to significant maintenance problems. maintenance problems.

Black Box reuse reduces maintenance Black Box reuse reduces maintenance issues by having a common source code, issues by having a common source code, testing, and documentation for multiple testing, and documentation for multiple reuses. reuses.

Example from: http://www.serve.com/hibc/dev_cat.htm

Page 29: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Architecture AntipatternsArchitecture Antipatterns

Picture from: http://www.serve.com/hibc/briefing/sld015.htm

Page 30: Antipatterns Commonly reinvented bad solutions to problems Picture from:

What are Architecture Antipatterns?What are Architecture Antipatterns?

Architectural AntiPatterns focus on some Architectural AntiPatterns focus on some common problems and mistakes in the common problems and mistakes in the creation, implementation, and creation, implementation, and management of architecture.management of architecture.

Page 31: Antipatterns Commonly reinvented bad solutions to problems Picture from:

List of Architectural AntipatternsList of Architectural Antipatterns

Architecture by ImplicationArchitecture by Implication Auto generated StovepipeAuto generated Stovepipe Cover Your AssetsCover Your Assets Design by CommitteeDesign by Committee Intellectual ViolenceIntellectual Violence JumbleJumble Reinvent the WheelReinvent the Wheel Spaghetti CodeSpaghetti Code

List from: http://antipatterns.com/dev_cat.htm

Page 32: Antipatterns Commonly reinvented bad solutions to problems Picture from:

List cont.List cont.

Stovepipe EnterpriseStovepipe Enterprise Stovepipe SystemStovepipe System Swiss Army KnifeSwiss Army Knife The Grand Old Duke of YorkThe Grand Old Duke of York Vendor Lock-InVendor Lock-In Warm BodiesWarm Bodies Wolf TicketWolf Ticket

List from: http://antipatterns.com/dev_cat.htm

Page 33: Antipatterns Commonly reinvented bad solutions to problems Picture from:

A Few Examples:A Few Examples:Reinvent the WheelReinvent the Wheel

Synopsis- Legacy systems with Synopsis- Legacy systems with overlapping functionality. Every system overlapping functionality. Every system built in isolation.built in isolation.

Refactored Solution- Take advantage of Refactored Solution- Take advantage of existing, tested, and available systemsexisting, tested, and available systems

Example from: http://antipatterns.com/dev_cat.htm

Page 34: Antipatterns Commonly reinvented bad solutions to problems Picture from:

A Few Examples:A Few Examples:Vendor Lock inVendor Lock in

Synopsis- Proprietary, product-dependent Synopsis- Proprietary, product-dependent architectures do not manage complexity and architectures do not manage complexity and lead to a loss of control of the architecture and lead to a loss of control of the architecture and maintenance costs. maintenance costs.

Refactored Solution- Providing an isolation layer Refactored Solution- Providing an isolation layer between product-dependent interfaces and the between product-dependent interfaces and the majority of application software enables majority of application software enables management of complexity and architecture. management of complexity and architecture.

Example from: http://antipatterns.com/dev_cat.htm

Page 35: Antipatterns Commonly reinvented bad solutions to problems Picture from:

A Few Examples:A Few Examples:Cover Your AssetsCover Your Assets

Synopsis- Document driven software Synopsis- Document driven software processes often employ authors who list processes often employ authors who list alternatives instead of making decisions. alternatives instead of making decisions.

Refactored Solution-Establish clear Refactored Solution-Establish clear purposes and guidelines for purposes and guidelines for documentation tasks; inspect the results documentation tasks; inspect the results for the value of documented decisions. for the value of documented decisions.

Example from: http://antipatterns.com/dev_cat.htm

Page 36: Antipatterns Commonly reinvented bad solutions to problems Picture from:

A Few Examples:A Few Examples:Stovepipe SystemStovepipe System

Synopsis- Ad hoc integration solutions and Synopsis- Ad hoc integration solutions and lack of abstraction lead to brittle, un-lack of abstraction lead to brittle, un-maintainable architectures maintainable architectures

Refactored Solution- Proper use of Refactored Solution- Proper use of abstraction, subsystem facades, and abstraction, subsystem facades, and metadata leads to adaptable systems. metadata leads to adaptable systems.

Example from: http://antipatterns.com/mgmt_cat.htm

Page 37: Antipatterns Commonly reinvented bad solutions to problems Picture from:

Management AntipatternsManagement Antipatterns

Picture from: http://www.serve.com/hibc/briefing/sld015.htm

Page 38: Antipatterns Commonly reinvented bad solutions to problems Picture from:

What are Management What are Management Antipatterns?Antipatterns?

Areas where human communication can Areas where human communication can be destructive to the software processbe destructive to the software process

The purpose of management AntiPatterns The purpose of management AntiPatterns is to develop awareness that enables you is to develop awareness that enables you to increase your success. to increase your success.

Page 39: Antipatterns Commonly reinvented bad solutions to problems Picture from:

List of Management AntipatternsList of Management Antipatterns

Analysis ParalysisAnalysis Paralysis Blowhard JamboreeBlowhard Jamboree CorncobCorncob Death By PlanningDeath By Planning Email is dangerousEmail is dangerous Fear of SuccessFear of Success Irrational managementIrrational management

List from: http://antipatterns.com/mgmt_cat.htm

Page 40: Antipatterns Commonly reinvented bad solutions to problems Picture from:

List Cont.List Cont.

Project Mis-ManagementProject Mis-Management Smoke and MirrorsSmoke and Mirrors The FeudThe Feud Throw it over the WallThrow it over the Wall Viewgraph EngineeringViewgraph Engineering

List from: http://antipatterns.com/mgmt_cat.htm

Page 41: Antipatterns Commonly reinvented bad solutions to problems Picture from:

A Few Examples:A Few Examples:Analysis Paralysis Analysis Paralysis

Synopsis- Striving for perfection and Synopsis- Striving for perfection and completeness in the analysis phase leads completeness in the analysis phase leads to project gridlock. to project gridlock.

Refactored Solution- Use an Incremental, Refactored Solution- Use an Incremental, iterative development processes. Defer iterative development processes. Defer the detailed analysis until the knowledge is the detailed analysis until the knowledge is available. available.

Example from: http://antipatterns.com/mgmt_cat.htm

Page 42: Antipatterns Commonly reinvented bad solutions to problems Picture from:

A Few Examples:A Few Examples:CorncobCorncob

Synopsis- Frequently, difficult people Synopsis- Frequently, difficult people obstruct and divert the software obstruct and divert the software development process. development process.

Refactored Solution- Address agendas of Refactored Solution- Address agendas of the individual through various tactical, the individual through various tactical, operational, and strategic organizational operational, and strategic organizational actions. actions.

Example from: http://antipatterns.com/mgmt_cat.htm

Page 43: Antipatterns Commonly reinvented bad solutions to problems Picture from:

A Few Examples:A Few Examples:Fear of SuccessFear of Success

Synopsis- People (software developers Synopsis- People (software developers included) do crazy things when a project is included) do crazy things when a project is near successful completion. near successful completion.

Refactored Solution- When project Refactored Solution- When project completion is close-at-hand, a clear completion is close-at-hand, a clear declaration of success is important for the declaration of success is important for the project environment. project environment.

Example from: http://antipatterns.com/mgmt_cat.htm

Page 44: Antipatterns Commonly reinvented bad solutions to problems Picture from:

A Few Examples:A Few Examples:Smoke and MirrorsSmoke and Mirrors

Synopsis- End-users mistakenly assume Synopsis- End-users mistakenly assume that a brittle demonstration is a capability that a brittle demonstration is a capability that is ready for operational use. that is ready for operational use.

Refactored Solution- Practice of proper Refactored Solution- Practice of proper ethics is important to manage ethics is important to manage expectations, risk, liabilities, and expectations, risk, liabilities, and consequences in computing sales and consequences in computing sales and marketing situations. marketing situations.

Example from: http://antipatterns.com/mgmt_cat.htm

Page 45: Antipatterns Commonly reinvented bad solutions to problems Picture from:

ReferencesReferences

http://www.serve.com/hibc/http://www.serve.com/hibc/ http://antipatterns.com/http://antipatterns.com/ Brown, William J., McCormick III, Hays W. Brown, William J., McCormick III, Hays W.

"Skip", Thomas, Scott W. "Skip", Thomas, Scott W. AntiPatterns in AntiPatterns in project management.project management. New York: Wiley, New York: Wiley, 2000. 2000.

http://www.intel.com/cd/ids/developer/asmo-na/eng/dc/mrte/20133.htm