Software Design: From Programming to Architecture
February 2003, ©2004
All Computer Scientists and Software Engineers need to understand software design, but until now there hasn't been one, complete, up-to-date guide to its theory and practice.
Eric Braude's Software Design: From Programming to Architecture begins at the code level with programming issues such as robustness and flexibility in implementation. Increasing in abstraction and scope, the book then moves to mid-level issues, emphasizing a thorough understanding of standard design patterns and components. Finally, the book ends with high-level issues such as architectures, frameworks, and object-oriented analysis and design. In addition, the text contains a prologue on software process, making it versatile enough to use in a software engineering course.
Prologue: The Software Process.
PART I: DESIGN PRINCIPLES, THE UNIFED MODELING LANGUAGE, AND CODE-LEVEL DESIGN.
Chapter 1. Programming Review and Introduction to Software Design.
Chapter 2. Object-Orientation.
Chapter 3. The Unified Modeling Language.
Chapter 4. Design Principles I: Correctness and Robustness.
Chapter 5. Design Principles II: Flexibility, Reusability, and Efficiency.
PART II: DESIGN PATTERNS.
Chapter 6. Introduction to Design Patterns.
Chapter 7. Creational Design Patterns.
Chapter 8. Structural Design Patterns.
Chapter 9. Behavioral Design Patterns.
PART III: COMPONENTS.
Chapter 10. Introduction to Components.
Chapter 11. JavaBeans.
Chapter 12. Microsoft Assemblies.
PART IV: OBJECT-ORIENTED ANALYSIS AND DESIGN.
Chapter 13. Requirements and Domain Classes.
Chapter 14. Architectures and Frameworks.
- Various design patterns, with detailed explanations, provide essential tools for academic and professional growth.
- Examples of how to apply all the design patterns covered, with complete Java code for most examples.
- Chapters on component technology motivate readers with highly engaging topics, such as JavaBeans.
- Includes an extensive discussion of UML (Unified Modeling Language), with many UML samples and exercises.
- Reviews the goals and objectives of good software design.
- Provides chapters on C# and .NET (The book's main language is Java, but the author includes an overview of C# to show the application of Component technology in .NET).
- Includes an introductory chapter on software process.
- Web-based "starter" code for many of the exercises enables readers to learn concepts hands-on, without having to start every programming assignment from scratch.