130 likes | 285 Views
AntiPatterns Tik-110.498 Seminar on Design Patterns HUT 18.05.2001 Vesa Kärpijoki Softplan Oy. Introduction. 5/6 of software projects are regarded as failures 1/3 of software projects are canceled
E N D
AntiPatternsTik-110.498 Seminar on Design PatternsHUT 18.05.2001Vesa KärpijokiSoftplan Oy
Introduction • 5/6 of software projects are regarded as failures • 1/3 of software projects are canceled • 50 years of software development —> still the same fundamental problems are encountered over and over again • no generic preventive actions for avoiding the problems • no generic countermeasures for mitigating the effects of the problems • Possible solution: AntiPatterns?
Background for AntiPatterns • “AntiPattern is a literary form that describes a commonly occurring solution to a problem that generates decidedly negative consequences.” • Design Patterns define an ideal solution to a problem, while the AntiPatterns describe two solutions: • AntiPattern solution: the unwanted, problematic, existing solution • refactored solution: the good solution (target of the AntiPattern) • Purpose is to give the IT industry a common vocabulary and means to discuss and mitigate the common problems • Developed to complement the existing fundamental software patterns (GoF, Buschmann, Analysis, CORBA) • AntiPatterns have arisen from the discussion and proposals by patterns experts on the Internet (~ 1996-)
AntiPattern Fundamentals (1/2) • Three groups of AntiPatterns: • Software Development AntiPatterns • Software Architecture AntiPatterns • Software Project Management AntiPatterns • Root causes for AntiPatterns: • haste • apathy • narrow-mindedness • sloth • avarice • ignorance • pride
AntiPattern Fundamentals (2/2) • Primal forces — management of: • functionality • performance • complexity • change • IT resources • technology transfer • Software Design-Level Model: • Object level • Micro-architecture level • Framework level • Application level • System level • Enterpriselevel • Global/Industry level
AntiPattern Template • Possible templates: Pseudo-AntiPattern, Mini-AntiPattern and Full AntiPattern template • Mini-AntiPattern template consists of: • compact, unique and unambiguous name • description of the AntiPattern solution • description of the refactored solution • Full AntiPattern template includes also for instance: • scale and scope of the AntiPattern • root causes; practical description of the typical causes • misused primal forces • symptoms of the problem; (negative) consequences • variation
Software Development APs • Concentrates on lowest layer of IT business: programming, code management and (mis)use of DPs • Groundwork by Mike Aykroyd in 1996 • Most famous software development APs include: • Blob • Spaghetti Code • Cut-and-Paste Programming • LavaFlow • Golden Hammer • Mushroom Management
Mini AntiPattern: Robot “I believe the power of the holy scripts (TM)!” “Why would you do the two replacements with Notepad?? Let me code a script that does it for you.” “No, that doesn’t need to be reviewed or tested. I ran a script that modified all the 4527 try-catch clauses recursively. It works, I guarantee that.” • Problem: A person who believes that almost anything can (and should) be automated. Often an administrator who wants to play in his own “sandbox”. • Root causes: Sloth, Pride • Refactored solution: interaction, mentoring, constant peer reviews, pair programming, management control
Mini AntiPattern: Lonely Rider “Oh no we cannot do anything to the module before John comes back from his two-month holiday (in Bali)!” “I am a guru. I’d like to work alone, it’s just my way of doing things.” “I don’t know about it. Ask John, he has written the code for almost all of our key components.” • Problem: A seemingly irreplaceable person who intentionally or unintentionally becomes the single point of failure and bottleneck in the software project • Root causes: Avarice, Pride • Refactored solution: interaction between developers, constant peer reviews, competence transfer, mentoring help to less experienced and busy developers
Software Architecture APs • Software architecture focuses on: • Partitioning the system into well-defined modules • Interfaces between the modules • Technology applied to implement the interface connections • Well-known architecture APs include: • Stovepipe System • Cover Your Assets • Architecture by Implication • Design by Committee • Swiss Army Knife • Reinvent the Wheel
Project Management APs • Project management focuses on: • Controlling the software process • Management of human and IT resources • Management of external interfaces (customers and partners) • Common project management APs are e.g.: • Analysis Paralysis • Death by Planning • Corncob • Project Mismanagement • Fire Drill • Smoke and Mirrors
Mini AntiPattern: Jekyll & Hyde Mr. Jekyll in private conversation, 8:01 AM: (gentle voice) “Yes, I think your idea is great, let’s talk it over in the lunch. It’s on me.” Mr. Hyde in project meeting with the subordinates and the big boss is listening, 8.03 AM (furious): “What the.. That’s a poor idea. And why no one has done anything to think about this beforehand? I can’t stand this kind of incompetence!” • Problem: A (typically opportunist) person whose behaviour is totally dependent on the audience. Jekyll transforms to and from Hyde in a nanosecond. • Root causes: Ignorance, Pride • Refactored solution: a good long talk in a proper and non-offending environment (pizza?); a transfer to other projects & departments
Discussion • AntiPatterns define a well-known and publicly recognized way to identify and prevent the common mistakes and problems in software development • AntiPatterns describe commonly known and tested countermeasures to an AntiPattern solution in the form of a refactored solution • AntiPatterns are available for anyone (Internet) • Also non-software -related AntiPatterns exist • Anyone can write and propose new AntiPatterns • AntiPattern must be encountered at least in three different occasions (forms) before accepted “officially”