| < Free Open Study > |
5.5. Comments on Popular Methodologies
The history of design in software has been
As I write this edition in the mid-2000s, some software swamis are arguing for not doing any design at all. "Big Design Up Front is BDUF ," they say. "BDUF is bad. You're better off not doing any design before you begin coding!"
In ten
How do you tell how much is enough? That's a judgment call, and no one can make that call
As P.J. Plauger says, "The more dogmatic you are about applying a design method, the fewer real-life problems you are going to solve" (Plauger 1993). Treat design as a
|
| < Free Open Study > |
| < Free Open Study > |
Additional Resourcescc2e.com/0520 Software design is a rich field with abundant resources. The challenge is identifying which resources will be most useful. Here are some suggestions. Software Design, GeneralWeisfeld, Matt. The Object-Oriented Thought Process , 2d ed. SAMS, 2004. This is an accessible book that introduces object-oriented programming. If you're already familiar with object-oriented programming, you'll probably want a more advanced book, but if you're just getting your feet wet in object orientation, this book introduces fundamental object-oriented concepts, including objects, classes, interfaces, inheritance, polymorphism, overloading, abstract classes, aggregation and association, constructors/destructors, exceptions, and others. Riel, Arthur J. Object-Oriented Design Heuristics . Reading, MA: Addison-Wesley, 1996. This book is easy to read and focuses on design at the class level. Plauger, P. J. Programming on Purpose: Essays on Software Design . Englewood Cliffs, NJ: PTR Prentice Hall, 1993. I picked up as many tips about good software design from reading this book as from any other book I've read. Plauger is well-versed in a wide-variety of design approaches, he's pragmatic, and he's a great writer.
Meyer, Bertrand.
Object-Oriented Software Construction
, 2d ed. New York, NY: Prentice Hall PTR, 1997. Meyer
Raymond, Eric S.
The Art of UNIX Programming
. Boston, MA: Addison-Wesley, 2004. This is a well-researched look at software design through UNIX-colored
Larman, Craig. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process , 2d ed. Englewood Cliffs, NJ: Prentice Hall, 2001. This book is a popular introduction to object-oriented design in the context of the Unified Process. It also discusses object-oriented analysis. Software Design TheoryParnas, David L., and Paul C. Clements. "A Rational Design Process: How and Why to Fake It." IEEE Transactions on Software Engineering SE-12, no. 2 (February 1986): 251-57. This classic article describes the gap between how programs are really designed and how you sometimes wish they were designed. The main point is that no one ever really goes through a rational, orderly design process but that aiming for it makes for better designs in the end.
I'm not aware of any comprehensive treatment of information hiding. Most software-engineering
Parnas, David L. "On the Criteria to Be Used in
Parnas, David L. "Designing Software for Ease of Extension and Contraction." IEEE Transactions on Software Engineering SE-5, no. 2 (March 1979): 128-38. Parnas, David L., Paul C. Clements, and D. M. Weiss. "The Modular Structure of Complex Systems." IEEE Transactions on Software Engineering SE-11, no. 3 (March 1985): 259-66. Design PatternsGamma, Erich, et al. Design Patterns . Reading, MA: Addison-Wesley, 1995. This book by the "Gang of Four" is the seminal book on design patterns. Shalloway, Alan, and James R. Trott. Design Patterns Explained . Boston, MA: Addison-Wesley, 2002. This book contains an easy-to-read introduction to design patterns. Design in General
Adams, James L.
Conceptual Blockbusting: A Guide to Better Ideas
, 4th ed. Cambridge, MA: Perseus Publishing, 2001. Although not
Polya, G.
How to Solve It: A New Aspect of Mathematical Method
, 2d ed. Princeton, NJ: Princeton University Press, 1957. This discussion of heuristics and problem solving focuses on mathematics but is
Michalewicz, Zbigniew, and David B. Fogel. How to Solve It: Modern Heuristics . Berlin: Springer-Verlag, 2000. This is an updated treatment of Polya's book that's quite a bit easier to read and that also contains some nonmathematical examples.
Simon, Herbert.
The Sciences of the Artificial
, 3d ed. Cambridge, MA: MIT Press, 1996. This fascinating book draws a distinction between sciences that deal with the natural world (biology, geology, and so on) and sciences that deal with the artificial world created by
Glass, Robert L. Software Creativity . Englewood Cliffs, NJ: Prentice Hall PTR, 1995. Is software development controlled more by theory or by practice? Is it primarily creative or is it primarily deterministic? What intellectual qualities does a software developer need? This book contains an interesting discussion of the nature of software development with a special emphasis on design. Petroski, Henry. Design Paradigms: Case Histories of Error and Judgment in Engineering . Cambridge: Cambridge University Press, 1994. This book draws heavily from the field of civil engineering (especially bridge design) to explain its main argument that successful design depends at least as much upon learning from past failures as from past successes. StandardsIEEE Std 1016-1998, Recommended Practice for Software Design Descriptions . This document contains the IEEE-ANSI standard for software-design descriptions. It describes what should be included in a software-design document. IEEE Std 1471-2000. Recommended Practice for Architectural Description of Software Intensive Systems . Los Alamitos, CA: IEEE Computer Society Press. This document is the IEEE-ANSI guide for creating software architecture specifications.
|
| < Free Open Study > |