Architectural Structures and Views An architecture is a very complicated construct -- too complicated to be seen all at once . Dr. Reeja S R Associate professor CSE Dept. SJEC, Vamanjoor
Architectural Structures
Software structures The 3 structures correspond to 3 broad types of decisions that an architectural design involves: How is the system to be structured as a set of code units? How is the system to be structured as a set of runtime components and interactions between them? How is the system to relate to non-software elements in its environment? (CPU, file systems, networks, development teams, etc)
Module Structure
Module Structure Decomposition Units: Modules Relation: “Is a sub-module of” Useful for: project structuring and planning, to produce modifiable systems
Module Structure Uses Units: Modules Relation: “Uses” Uses: To engineer systems that can be easily extended or contracted
Module Structure Layered – special case of USES structure Units: Modules Relation: “Uses the services of layer n-1” Uses: Allows incremental development, abstraction to lower layers
Module Structure Class or Generalization Units: Modules Relation: “Inherits from”, “is an instance of” Uses: Allows reuse and incremental addition of functionality
Component and Connector Structures
Component and Connector Structure Process Structure Components: Processes / threads Connectors: communication, synchronization Relation: “runs concurrently with”, “precedes”, “follows”, “synchronizes with” Uses: Helps to engineer system’s execution performance & availability
Component and Connector Structure Concurrency Structure Components: Modules Connectors: logical threads Relation: “runs on the same logical thread” Uses: helps to eliminate deadlock and reduce bottlenecks
Component and Connector Structure Shared Data / Repository Structure Components: modules that create, share, access persistent data Connectors: data flow Relation: “produces data”, “consumes data” Uses: To ensure good performance and data integrity
Component and Connector Structure Client Server Structure Components: Clients and servers Connectors: protocols and messages Relation: “communicates with” Uses: separation of concerns, physical distribution, load balancing
Allocation Structures
Allocation Structure Deployment Structure Components: hardware Relation: “allocated to”, “migrates to” Uses: Allows to reason about performance, data integrity, availability, security
Allocation Structure Work Assignment Structure Components: modules, development teams Relation: “assigned to” Uses: project management, best use of expertize
Choosing Structures Kruchten’s Four Views: Logical - elements are “key abstractions” that are objects or classes in OO. This is a module view. Process - addresses concurrency & distribution of functionality. This is a C&C view. Development - shows organization of software modules, libraries, subsystems, and units of development. This is an allocation view. Physical - maps other elements onto processing & communication nodes, also an allocation view, but usually referred to specifically as the deployment view.