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
An introduction to Software Design
A brief tutorial on software design and relevant terminology.
Design - Concepts and Principles
An abbreviated discussion that can serve as a basic overview.
What are Software Design Principles?
Brief but worthwhile discussion of selected design principles.
Design principles
Pragmatic design guidelines proposed at the IBM developer site.
Software design principles (mined from Books and papers)
Excellent lists of design principles. Will require further expansion, but interesting to see how authors differ in their emphasis.
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 OO Design Principles
A brief discussion of basic principles with an emphasis on OOD.
Software Design Concepts - Tutorial
An useful overview of many important software design concepts presented in a quasi-slide-like presentation.
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.
pdf: Software Design Principles and Guidelines
A slide presentation that summarized important design concepts and principles.
Design Principles from Design Patterns
An interview with Eric Gamma,co-author of the seminal book on design patterns and one of the GoF.
Application Software Design Guidelines
Guidelines for designing software for people who are physically or mentally challenged.
Accessibility Design Guidelines for Software
Microsoft's guidelines for designing accessible software.
Apple's Design Guidelines for User Interfaces
APPLE consistently created the industry's most elegant and ergonomic software. These basic design guidelines provide an introduction.
Design Guidelines for Eionet
These guidelines (for a specific WebApp) provide an excellent template for the create of App specific guidelines. Much of this information is generic and can be adapted to any App.
A Software Design Specification Template
A complete design spec template with explanation and discussion. Recommended.
Video: Don Norman: The Design of Future Things
A lecture by one of the world foremost design experts. (1:28)
Video: Diagramming and the Design Process
A lecture at USC.
Object-Oriented Design Concepts and Principles
Principles Of Object Oriented Design
Princiiples that apply to all software with an emphasis on OO.
Five OO Design Principles
A basic introduction to five key principles.
Object-Oriented Design Concepts
A reasonably detailed discussion of important concepts.
Object Oriented Software Design
An introductory discussion with resource links presents at Wikiversity.
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.
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.
Object Orientation Tips
Presents a wide array of useful tips and guidelines for OO software development. Recommended.
An Example OO design
A complete design example of ATM software.
pdf: Object Oriented Design Standards
This indepth document describes the Object Oriented Design Standards as they are used in the corelinux++ project. It provides a set of guidelines, rationales and standards for object oriented design. Recommended.
Design principles for highly reusable concurrent object-oriented systems
The authors argue that "argue that the establishment of orthogonal design principles should be useful" in the creation of concurrent systems.
Create robust, reusable object-oriented designs
A brief commentary on good and bad OO design.
Design of Object-Oriented Real-time Systems
Guidelines for R/T and embedded applications. Contains many useful pointers.
Pattern-Based Software Design
(See also our Pattern-Based Design page for a more complete list)
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.
Patterns Catalogs
(See also our Pattern-Based Design page for a more complete list)
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.
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 in-depth 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 Notation for Aspect-Oriented Design
A collection of papers that address AOD paradigm using UML.
Books
Donald Norman has written two book that have become classics in the design literature and must reading for anyone who designs anything that humans use:
The Design of Everyday Things
The Psychology of Everyday Things
Conceptual Blockbusting is a book that is essential reading for designers who want to broaden their way of thinking.
How to Solve It and a more recent book
How to Solve It: Modern Heuristics provide a generic problem-solving process that can help software designers when they are faced with complex problems.
Introduction to Software Engineering Design and
Software Design Methodology: From Principles to Architectural Styles present a comprehensive treatment of design in the context of software engineering.
Code Complete: A Practical Handbook of Software Construction presents an excellent discussion of the practical aspects of designing high-quality computer software.
Bringing Design to Software discusses software designs that work, those that dont, and why.
Field Methods Casebook for Software Design suggests field research methods (much like those used by anthropologists) to understand how end-users do their work and then design software that meets their needs.
Contextual Design: A Customer- Centered Approach to Systems Designs offers another view of software design that integrates the customer/user into every aspect of the software design process.
Code Complete presents an excellent discussion of the practical aspects of designing high-quality computer software.
Simple Program Design presents an introductory discussion of software design that is useful for those beginning their study of the subject.
Refactoring: Improving the Design of Existing Code discusses techniques for the incremental optimization of software designs.
Software Design Techniques presents an excellent historical survey of important papers on software design. This tutorial reprints many of the classic papers that have formed the basis for current trends in software design.
Measuring Software Design Quality presents measures of design quality, presented from both the technical and management perspectives.
Over the past decade, many books on pattern-based design have been written for software engineers. See our Pattern-Based Design page for a lengthy list of patterns books.
|