Part I Principles 1 Architects and Architecture Today What's a Software Architecture, Anyway? Applying Architectural Principles to Software What's Architecture and What's Not Architecture Is About Decisions Requirements and Quality of Software Who's the Architect, Anyway? An Architect's Responsibilities How Many Types of Architects Do You Know? Common Misconceptions About Architects Overview of the Software Development Process The Software Life Cycle Models for Software Development Summary Murphy's Laws of the Chapter 2 UML Essentials UML at a Glance Motivation for and History of Modeling Languages UML Modes and Usage UML Diagrams Use-Case Diagrams Class Diagrams Sequence Diagrams Summary Murphy's Laws of the Chapter 3 Design Principles and Patterns Basic Design Principles For What the Alarm Bell Should Ring Structured Design Separation of Concerns Object-Oriented Design Basic OOD Principles Advanced Principles From Principles to Patterns What's a Pattern, Anyway? Patterns vs. Idioms Dependency Injection Applying Requirements by Design Testability Security From Objects to Aspects Aspect-Oriented Programming AOP in Action Summary Murphy's Laws of the Chapter Part II Design of the System 4 The Business Layer What's the Business Logic Layer, Anyway? Dissecting the Business Layer Where Would You Fit the BLL? Business and Other Layers Patterns for Creating the Business Layer The Transaction Script Pattern Generalities of the TS Pattern The Pattern in Action The Table Module Pattern Generalities of the TM Pattern The TM Pattern in Action The Active Record Pattern Generalities of the AR Pattern The AR Pattern in Action The Domain Model Pattern Generalities of the DM Pattern The DM Pattern in Action Summary Murphy's Laws of the Chapter 5 The Service Layer What's the Service Layer, Anyway? Responsibilities of the Service Layer What's a Service, Anyway? Services in the Service Layer The Service Layer Pattern in Action Generalities of the Service Layer Pattern The Service Layer Pattern in Action Related Patterns The Remote Fa?ade Pattern The Data Transfer Object Pattern The Adapter Pattern DTO vs. Assembly Service-Oriented Architecture Tenets of SOA What SOA Is Not SOA and the Service Layer The Very Special Case of Rich Web Front Ends Refactoring the Service Layer Designing an AJAX Service Layer Securing the AJAX Service Layer Summary Murphy's Laws of the Chapter 6 The Data Access Layer What's the Data Access Layer, Anyway? Functional Requirements of the Data Access Layer Responsibilities of the Data Access Layer The Data Access Layer and Other Layers Designing Your Own Data Access Layer The Contract of the DAL The Plugin Pattern The Inversion of Control Pattern Laying the Groundwork for a Data Context Crafting Your Own Data Access Layer Implementing the Persistence Layer Implementing Query Services Implementing Transactional Semantics Implementing Uniquing and Identity Maps Implementing Concurrency Implementing Lazy Loading Power to the DAL with an O/RM Tool Object/Relational Mappers Using an O/RM Tool to Build a DAL To SP or Not to SP About Myths and Stored Procedures What About Dynamic SQL? Summary Murphy's Laws of the Chapter 7 The Presentation Layer User Interface and Presentation Logic Responsibilities of the Presentation Layer Responsibilities of the User Interface Common Pitfalls of a Presentation Layer Evolution of the Presentation Patterns The Model-View-Controller Pattern The Model-View-Presenter Pattern The Presentation Model Pattern Choosing a Pattern for the User Interface Design of the Presentation What Data Is Displayed in the View? Processing User Actions Idiomatic Presentation Design MVP in Web Presentations MVP in Windows Presentations Summary Murphy's Laws of the Chapter Final Thoughts Appendix: The Northwind Starter Kit Index