Software Design Engineering
Design is a meaningful engineering representation of something that is to be built. It can be traced to a customer's requirements and at the same time assessed for for quality against a set of predefined criteria for 'good' design. In the software engineering context, design focuses on four major areas of concern, data, architecture, interfaces, and components. In this section, we present design engineering resources that address:
Design Principles and Concepts
Object-Oriented Design Principles and Concepts
Patterns-Based Software Design
Patterns Catalogs
Design Modeling using UML
Books
Design Principles and Concepts
Design Concepts and Principles
A collection of useful articles on design prepared by software-engineer.org.
Is Design Dead?
A thought-provoking treatise by Martin Fowler that discusses design within the context of agile methods.
Keep It Simple
An article on design written by Steve McConnell. Recommended.
Basic Design Principles - 1
A brief discussion of basic principles with an emphasis on OOD.
Software Design Principles - 2
Characteristics of good and bad designs
Software Design Concepts - Tutorial
An useful overview of many important software deisgn conceptspresented in a quasi-slide-like presentation.
The Software Design Process
A description of design as an implementation plan and an aesthetic representation. See also a general description of design.
A State Of The Art Report: Software Design Methods
A detailed report on software design methods including a discussion of all design concepts and principles found in SEPA, Chapter 13.
The Software Portability Home Page
Contains useful resources that address this important design characteristic.
Object-Oriented Design Concepts and Principles
Cetus Links - Object-Orientation
One of the Web's most extensive lists (over 18,000 entries) of OO resources coverign virtually every aspect of the subject. Highly recommended.
OMG Home Page
A wide array of information and resources on object technologies can be found at the Object Management Group's site.
The Object-Oriented Page
Another detailed list of on-line resources for object technologies.
OO Bibliography
A search-oriented bibliography.
OOA/OOD resources
An in-depth collection of OOA/OOD resources including a listing of many OOA/OOD tools. Highly recommended.
OOA/OOD Methods Resources
Cetus has collected links to over 48 OOA/OOD methods, including UML. Highly recommended.
Responsibility-Driven Design
A brief discussion of OO responsibility-driven design.
Pattern-Based Software Design
Design Patterns Resources - 1
An extensive hotlist containing pointers to virtually everyhting patterns.
Design Patterns Resources - 2
Excellent collection of patterns resources including tutorials, papers, and many other pointers. Recommended.
Design Patterns Resources - 3
Extensive hotlist prepared by CETUS links.
Design Patterns Resources - 4
An extensive hotlist prepared by Scott Ambler. Recommended.
What is a Pattern?
An worthwhile article by James Coplien.
Essential Patterns
Excellent treatment by Brad Appleton. Recomended.
Much Ado About Patterns
Why have patterns become a hot topic in software engineering?
Patterns Tutorials
Pointers to a variety of tutorials on software patterns.
Design Patterns and Pattern Languages
A useful paper prepared by Douglad Schmidt.
Software Technologies Patterns Page
Useful information and a collection of design patterns.
Patterns Catalogs
Portland Pattern Repository
An extensive catalog of design patterns
Design Patterns in Java
A collection of actual design patterns.
The OO Pattern Digest
This site is "dedicated to helping you understand and use Object-Oriented Patterns more effectively and efficiently."
Design Patterns
An extensive collection of patterns and demos
Hypermedia Patterns Repository
A collection of patterns for hypermedia and web applications.
Design Modeling using UML
UML Resource Center
A comprehensive collection of resources prepared by IBM-Rational.
UML Design Center
A worthwhile collection of articles on software design using UML.
CETUS Links - UML
One of the Web's most comprehensive collections of resources.
UML Glossary
If you need a definition of a UML term, this is the place to look. Also contains pointers to reference manuals and process specifications.
OOA/OOD using UML
A discussion of UML notation for Object Oriented Analysis and Design
OO Design Practices using UML
An indepth paper on OO design published by IBM.
UML and Software Design
An overview of basic UML design notation.
UML Examples
Examples of all important UML diagrams
UML Bibliography
Over 400 print references to papers, books, and other resources on UML.
UML Books
A listing (with links) of over 50 books on UML.
UML Notation for Aspect-Oriented Design
A collection of papers that address AOD paradigm using UML.
Books 
Donald Norman has written two books, (The Design of Everyday Things, Basic Books, 2002 and The Psychology of Everyday Things, Harpercollins, 1988) that have become classics in the design literature and must reading for anyone who designs anything that humans use. Adams (Conceptual Blockbusting, third edition, Addison-Wesley, 1986) has written a book that is essential reading for designers who want to broaden their way of thinking. Finally, a classic text by Polya (How to Solve It, second edition, Princeton University Press, 1988) and a more recent book by Michalewicz and Fogel (How to Solve It: Modern Heuristics, Springer-Verlag, 1999) provide a generic problem-solving process that can help software designers when they are faced with complex problems.
Following in the same tradition, Winograd et al. (Bringing Design to Software, Addison-Wesley, 1996) discusses software designs that work, those that dont, and why. A fascinating book edited by Wixon and Ramsey (Field Methods Casebook for Software Design, Wiley, 1996) suggests field research methods (much like those used by anthropologists) to understand how end-users do the work they do and then design software that meets their needs. Beyer and Holtzblatt (Contextual Design: A Customer- Centered Approach to Systems Designs, Academic Press, 1997) offer another view of software design that integrates the customer/user into every aspect of the software design process.
McConnell (Code Complete, Microsoft Press, 1993) presents an excellent discussion of the practical aspects of designing high-quality computer software. Robertson (Simple Program Design, third edition, Boyd and Fraser Publishing, 1999) presents an introductory discussion of software design that is useful for those beginning their study of the subject. Fowler and his colleagues (Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999) discusses techniques for the incremental optimization of software designs.
An excellent historical survey of important papers on software design is contained in an anthology edited by Freeman and Wasserman (Software Design Techniques, 4th ed., IEEE, 1983). This tutorial reprints many of the classic papers that have formed the basis for current trends in software design. Measures of design quality, presented from both the technical and management perspectives, are considered by Card and Glass (Measuring Software Design Quality, Prentice-Hall, 1990).
Over the past decade, many books on pattern-based design have been written for software engineers. Gamma and his colleagues (Design Patterns, Addison-Wesley, 1995) have written the seminal book on the subject. Other books by Douglass (Real-Time Design Patterns, Addison-Wesley, 2002), Metsker (Design Patterns Java Workbook, Addison-Wesley, 2002), Juric et al (J2EE Design Patterns Applied, Wrox Press, 2002), Marinescu and Roman (EJB Design Patterns, Wiley, 2002), and Shalloway and Trott (Design Patterns Explained, Addison-Wesley, 2001) discuss design patterns in specific application and language environments. In addition, classic books by the architect Christopher Alexander (Notes on the Synthesis of Form, Harvard University Press, 1964) and (A Pattern Language: Towns, Buildings, Construction, Oxford University Press, 1977) are must reading for a software design who intends to fully understand design patterns.
|