AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis

If patterns are good ideas that can be re-applied to new situations, AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis looks at what goes wrong in software development, time and time again. This entertaining and often enlightening text defines what seasoned developers have long suspected: despite advances in software engineering, most software projects still fail to meet expectations--and about a third are cancelled altogether. The authors of AntiPatterns draw on extensive industry experience, their own and others, to help define what's wrong with software development today. They outline reasons why problem patterns develop (such as sloth, avarice, and greed) and proceed to outline several dozen patterns that can give you headaches or worse. Their deadliest hit list begins with the Blob, where one object does most of the work in a project, and Continuous Obsolescence, where technology changes so quickly that developers can't keep up. Some of the more entertaining antipatterns include the Poltergeist (where do-nothing classes add unnecessary overhead), the Boat Anchor (a white elephant piece of hardware or software bought at great cost) and the Golden Hammer (a single technology that is used for every conceivable programming problem). The authors then proceed to define antipatterns oriented toward management problems with software (including Death by Planning and Project Mismanagement, along with several miniature antipatterns, that help define why so many software projects are late and overbudget). The authors use several big vendors' technologies as examples of today's antipatterns. Luckily, they suggest ways to overcome antipatterns and improve software productivity in "refactored solutions" that can overcome some of these obstacles. However, this is a realistic book, a mix of "Dilbert" and software engineering. A clever antidote to getting too optimistic about software development, AntiPatterns should be required reading for any manager facing a large-scale development project. --Richard Dragan

[1]  W. Stewart Joseph , 2002, The Psychological clinic.

[2]  Verzekeren Naar Sparen,et al.  Cambridge , 1969, Humphrey Burton: In My Own Time.

[3]  M. Swift Timothy. , 1995, Nursing times.

[4]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[5]  C. Kepner,et al.  The New Rational Manager , 1981 .

[6]  P. Harwood Michael , 1985 .

[7]  Peter L Block,et al.  Flawless Consulting: A Guide to Getting Your Expertise Used , 1987 .

[8]  C. Cargill Information technology standardization: Theory, process, and organizations , 1989 .

[9]  William H. Roetzheim,et al.  Developing software to government standards , 1990 .

[10]  Ivar Jacobson,et al.  Reengineering of old systems to an object-oriented architecture , 1991, OOPSLA '91.

[11]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[12]  Jean-Marc Nerson,et al.  Object-Oriented Analysis and Design , 1992, TOOLS.

[13]  Chris Halliwell,et al.  Camp development: the art of building a market through standards , 1993, IEEE Micro.

[14]  Mary Shaw,et al.  Software Architectures for Shared Information Systems , 1993 .

[15]  Thomas J. Mowbray,et al.  System Integration with Minimal Object Wrappers , 1993, TOOLS.

[16]  Janet Whitcut,et al.  The Oxford Dictionary of Modern Quotations , 1993 .

[17]  Ivar Jacobson,et al.  Object-Oriented Software Engineering , 1991, TOOLS.

[18]  James O. Coplien,et al.  A development process generative pattern language , 1994 .

[19]  Michael Stonebraker,et al.  Migrating Legacy Systems: Gateways, Interfaces, and the Incremental Approach , 1995 .

[20]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[21]  Jim McCarthy,et al.  Dynamics of Software Development , 1995 .

[22]  Bruce F. Webster,et al.  Pitfalls of object-oriented development , 1995 .

[23]  Douglas C. Schmidt,et al.  Using design patterns to develop reusable object-oriented communication software , 1995, CACM.

[24]  Adele Goldberg,et al.  Succeeding With Objects: Decision Frameworks for Project Management , 1995 .

[25]  James O. Coplien,et al.  Pattern languages of program design , 1995 .

[26]  Arthur J. Riel,et al.  Object-Oriented Design Heuristics , 1996 .

[27]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[28]  Rich Hilliard,et al.  Experiences Applying a Practical Architectural Method , 1996, Ada-Europe.

[29]  Gregory F. Rogers,et al.  Framework-Based Software Development in C++ , 1997 .

[30]  Evan R. Kirshenbaum,et al.  Building Evolvable Systems: The ORBlite Project , 1997 .

[31]  Joseph W. Yoder,et al.  Big Ball of Mud , 1997 .

[32]  S. Adams The Dilbert Future: Thriving on Stupidity in the 21st Century , 1997 .

[33]  Martin Fowler,et al.  Analysis patterns - reusable object models , 1996, Addison-Wesley series in object-oriented software engineering.

[34]  Thomas J. Mowbray,et al.  CORBA design patterns , 1997 .

[35]  Jonathan P. Bowen,et al.  The use of industrial-strength formal methods , 1997, Proceedings Twenty-First Annual International Computer Software and Applications Conference (COMPSAC'97).

[36]  Wolfgang Pree,et al.  Design Patterns for Object-Oriented Software Development , 1994, Proceedings of the (19th) International Conference on Software Engineering.

[37]  D. Palkon Dogbert's Top Secret Management Handbook , 1997 .

[38]  Ivar Jacobson,et al.  Software Reuse: Architecture, Process And Organization For Business Success , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[39]  Brad Appleton,et al.  Patterns for Conducting Process Improvement , 1998 .

[40]  Sally Fincher,et al.  What is a Pattern Language , 2000 .