100 likes | 107 Views
This chapter delves into the organization of classes, packages, and subsystems in software architecture, focusing on the application layer. It discusses the use of UML package diagrams, layer design, and the benefits of separating concerns. Understanding the domain layer versus the application layer is essential.
E N D
Chapter 13 Logical Architecture
Logical Architecture • Large-scale organization of classes • Packages - • Subsystems • Layers • Tools - UML package diagrams
Layer • Coarse grained • Cohesive responsibility • E.g. User Interface or common services • Strict or relaxed • What are the pros and cons of each? • This class focuses on one layer – application (or domain) layer.
Software Architecture • Many definitions – fuzzy concept • “a set of significant decision about the organization of a software system.” • The framework or structure. • Key aspect: Large scale, big ideas • Motivation • Constraints • Organization • Patterns • Responsibilities • Connections
Design with Layers • Organize layers using related responsibilities • Collaboration and Coupling • The Layers Pattern
Why? • Separation of concerns • Encapsulate complexity • Eliminate inter-twined code • Features and fixes are contained • Replaceable layer • Reusable function • Team organization Up-front investment reduces maintenance costs.
Domain layer vs. Application Layer • Application layer organization • Create domain objects that encapsulate application logic (Domain Layer) • “Create software objects with names and information similar to the real-world domain and assign application logic responsibilities to them.” • Domain layer != Domain model • “Designing objects this way leads to the application logic layer being more accurately called the domain layer of the architecture – the layer that contains domain objects.” • Lowers the representational gap.”
Terminology • Tier - current usage: physical nodes • Layers • Partitions - parallel division of layers • See Figs 13.6 and 13.7
SSD, System Operations, Layers • When there is a UI layer: • SSD shows operations to the UI Layer • Do not couple UI objects directly to application/domain objects. • Do not put application data into UI objects. • Model (domain) vs UI (view) separation.
Summary • Separation into layers is a common first step • In Architecture centric design, this flows from the software architecture