Chapter 6: Architectural Design
Architectural Design Activities
Definition
- Architectural Design Activities refer to the main tasks involved in designing a software system’s architecture.
Causes
Goals / Objectives
- Break down the system into organized parts
- Define how components interact
- Establish control mechanisms
Importance
- Helps structure the system clearly
- Supports communication and control planning
Procedures
- 1. System Organization – Structuring the system into sub-systems
- 2. Modular Decomposition – Breaking sub-systems into modules
- 3. Control Modeling – Defining control relationships between modules
Advantages & Disadvantages
- Advantages:
- Clear framework for design
- Supports reuse and complexity management
- Disadvantages:
Impact / Effect
- Leads to better system planning and communication
- Enables reuse and easier maintenance
Examples
Key Takeaways
- Architectural design includes system organization, modular decomposition, and control modeling
- It helps define structure, communication, and control
- It’s essential for building maintainable and scalable systems
Importance of Architectural Design
Definition
- Architectural Design is the process of defining a structured framework for a software system.
Causes
- Need for organized control and communication
- Requirement to identify sub-systems
Goals / Objectives
- Establish control and communication framework
- Identify sub-systems within the system
Importance
- Provides a high-level view of the system
- Helps stakeholders understand the system
- Ensures system meets requirements
- Enables reuse and negotiation
- Manages complexity
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Advantages:
- High-level system presentation
- Requirement validation
- Reusable architecture
- Design negotiation
- Complexity management
- Disadvantages:
Impact / Effect
- Improves stakeholder communication
- Supports system analysis and reuse
- Facilitates design discussions
- Helps manage complex systems
Examples
Key Takeaways
- Architectural design is crucial for communication, reuse, and complexity management
- It helps validate requirements and negotiate design decisions
- It provides a reusable and understandable structure
System Organization / Structuring
Definition
- System Organization is the process of structuring a system into sub-systems and defining their communication.
Causes
- Need to manage complexity
- Requirement to share data and distribute components
Goals / Objectives
- Identify sub-systems
- Define communication between sub-systems
- Enable distribution and data sharing
Importance
- Helps visualize system structure
- Supports independent development of sub-systems
- Enables reuse and scalability
Procedures
- Represent system in block diagrams
- Define sub-systems and their roles
- Establish communication and interfaces
- Choose an organization model:
Repository model
Client-server model
Layered model
Advantages & Disadvantages
- Advantages:
- Clear separation of concerns
- Easier maintenance and scalability
- Disadvantages:
- Depends on model used (see below for model-specific pros/cons)
Impact / Effect
- Affects how data is shared and processed
- Influences system performance and flexibility
Examples
- Packing Robot System with sub-systems like:
- Vision system
- Object Identification System
- Arm Controller
- Gripper Controller
- Packing Selection System
- Conveyer Controller
Key Takeaways
- System organization defines sub-systems and their communication
- It uses models like repository, client-server, and layered
- Helps manage complexity and enables reuse
System Organization Models
Definition
- These are common styles used to organize software systems.
Repository Model
Definition
- A model where a central database is used to share data among sub-systems.
Causes
- Need to share large amounts of data
Goals / Objectives
- Centralize data management
- Allow sub-systems to access shared data
Importance
- Simplifies data access
- Reduces duplication
Procedures
- Use a central repository
- Connect sub-systems to the repository
Advantages & Disadvantages
- Advantages:
- Centralized management
- Sub-systems don’t need to know how data is produced
- Efficient data sharing
- Disadvantages:
- Hard to distribute
- Sub-systems must agree on a data model
- Data evolution is expensive
- No specific management policies
Impact / Effect
- Enables integration but limits flexibility
Examples
- Integrated CASE Toolset with:
- Program Editor
- Report Generator
- Code Generator
- Design Analyzer
- Project Repository
Key Takeaways
- Repository model uses a central database for sharing data
- It’s good for large data but hard to distribute
- Sub-systems must compromise on data models
Client-Server Model
Definition
- A model where clients request services from servers over a network.
Causes
- Need to distribute data and processing
Goals / Objectives
- Separate data and processing
- Allow multiple clients to access services
Importance
- Supports distributed systems
- Enables scalability and flexibility
Procedures
- Set up servers for specific services
- Connect clients to servers via a network
Advantages & Disadvantages
- Advantages:
- Easy data distribution
- Effective networking
- Cheaper hardware
- Easy server upgrades
- Disadvantages:
- Different data models cause inefficient sharing
- Redundant management
- No central register of services
Impact / Effect
- Enables distributed access but may cause data inconsistency
Examples
- Film and Picture Library System with:
- Catalogue Server
- Video Server
- Picture Server
- Hypertext Server
- Clients accessing via wide-bandwidth network
Key Takeaways
- Client-server model separates services and clients
- It’s scalable and flexible but may have data sharing issues
- Useful for distributed systems
Layered Model
Definition
- A model where the system is organized into layers, each providing services to the layer above.
Causes
- Need for structured development and clear interfaces
Goals / Objectives
- Support incremental development
- Limit impact of changes to adjacent layers
Importance
- Helps manage complexity
- Supports modular development
Procedures
- Organize system into layers:
- Operating System Layer
- Database System Layer
- Object Management Layer
- Configuration Management Layer
Advantages & Disadvantages
- Advantages:
- Clear interfaces
- Supports incremental development
- Changes affect only adjacent layers
- Disadvantages:
Impact / Effect
- Makes system easier to maintain and extend
Examples
- Version Management System with 4 layers:
- Configuration Management
- Object Management
- Database System
- Operating System
Key Takeaways
- Layered model organizes systems into stacked layers
- It supports modularity and easier updates
- Each layer provides services to the one above
Modular Decomposition
Definition
- Modular Decomposition is the process of breaking down sub-systems into smaller, manageable modules.
Causes
- Need to simplify complex systems
- Requirement to organize components clearly
Goals / Objectives
- Decompose sub-systems into modules
- Group related components together
- Improve maintainability and clarity
Importance
- Makes systems easier to understand and manage
- Supports reuse and modular development
Procedures
- Identify sub-systems
- Break each sub-system into modules
- Apply decomposition strategies:
Object-Oriented Decomposition
Function-Oriented Decomposition
Advantages & Disadvantages
- Advantages:
- Easier to manage and maintain
- Supports reuse and clarity
- Disadvantages:
Impact / Effect
- Leads to better system structure
- Improves development and maintenance efficiency
Examples
- Not specified in notes (see sub-strategies below for examples)
Key Takeaways
- Modular decomposition breaks sub-systems into smaller modules
- It uses object-oriented or function-oriented strategies
- Helps manage complexity and improve clarity
Object-Oriented Decomposition
Definition
- A strategy that organizes modules based on objects and their interactions.
Causes
- Need to model real-world entities
- Desire for encapsulation and reuse
Goals / Objectives
- Group related data and operations into objects
- Model system behavior using object interactions
Importance
- Reflects real-world structure
- Supports encapsulation and reuse
Procedures
- Define objects with attributes and operations
- Connect objects based on relationships
- Example structure:
Client, Receipt, Invoice, Payment
- Attributes:
CustomerNo, Name, Address, etc.
- Operations:
Issue(), sendReminder(), acceptPayment(), sendReceipt()
Advantages & Disadvantages
- Advantages:
- Natural mapping to real-world entities
- Supports reuse and encapsulation
- Disadvantages:
Impact / Effect
- Improves system modularity and clarity
- Makes maintenance and extension easier
Examples
- Invoice Processing System with objects:
Client, Invoice, Payment, Receipt
- Each object has attributes and operations
Key Takeaways
- Object-oriented decomposition uses objects to organize modules
- It reflects real-world entities and supports reuse
- Common in systems like invoice processing
Function-Oriented Decomposition
Definition
- A strategy that organizes modules based on system functions and processes.
Causes
- Need to focus on operations and tasks
- Desire to structure system by functionality
Goals / Objectives
- Break system into functional components
- Group related tasks into modules
Importance
- Clarifies system operations
- Supports task-based development
Procedures
- Identify main functions
- Create modules for each function
- Example structure:
Issue receipts, Read invoices, Identify payments, Issue reminders
- Modules:
Receipts, Invoices, Payments, Reminders
Advantages & Disadvantages
- Advantages:
- Clear functional breakdown
- Easy to understand system flow
- Disadvantages:
Impact / Effect
- Helps organize system by tasks
- Improves clarity and functional focus
Examples
- Invoice Processing System with modules:
Receipts, Invoices, Payments, Reminders
- Functions:
Issue receipts, Identify payments, etc.
Key Takeaways
- Function-oriented decomposition organizes modules by tasks
- It’s useful for systems focused on operations
- Common in invoice and payment systems
Control Modeling
Definition
- Control Modeling is the process of defining how sub-systems are controlled and how services are delivered at the right time and place.
Causes
- Need to manage control flow between sub-systems
- Requirement to deliver services correctly
Goals / Objectives
- Establish control relationships between sub-systems
- Ensure services are delivered efficiently
- Define control styles for different system types
Importance
- Helps coordinate sub-system operations
- Ensures timely and correct service delivery
- Supports system reliability and responsiveness
Procedures
- Choose control style:
Centralized Control
Call-Return Model
Manager Model
Event-Based Control
Broadcast Model
Interrupt-Driven Model
Advantages & Disadvantages
- Advantages:
- Enables structured control flow
- Supports both sequential and concurrent systems
- Disadvantages:
- Depends on control style used (see below for model-specific pros/cons)
Impact / Effect
- Affects system responsiveness and coordination
- Determines how sub-systems interact and respond
Examples
- Not specified in notes (see sub-models below for examples)
Key Takeaways
- Control modeling defines how sub-systems are managed
- It uses centralized or event-based styles
- Ensures services are delivered correctly and on time
Centralized Control
Definition
- A control style where one sub-system has overall responsibility and starts/stops other sub-systems.
Causes
- Need for structured control in sequential or concurrent systems
Goals / Objectives
- Centralize control logic
- Coordinate sub-system operations
Importance
- Simplifies control flow
- Ensures predictable behavior
Procedures
- Use one main controller
- Apply either:
Call-Return Model for sequential systems
Manager Model for concurrent systems
Advantages & Disadvantages
- Advantages:
- Clear control hierarchy
- Suitable for predictable systems
- Disadvantages:
- May limit flexibility
- Not ideal for distributed systems
Impact / Effect
- Provides structured control
- May reduce responsiveness in dynamic environments
Examples
- Not specified in notes (see sub-models below)
Key Takeaways
- Centralized control uses one main controller
- It’s suitable for sequential or concurrent systems
- Ensures structured and predictable control flow
Call-Return Model
Definition
- A top-down subroutine model used in sequential systems.
Procedures
- Main program calls routines in sequence
- Example structure:
Main Program
Routine 1, Routine 2, Routine 3
Routine 1.1, Routine 1.2, etc.
Examples
- Sequential systems with structured subroutine calls
Key Takeaways
- Call-return model is used for sequential systems
- It follows a top-down structure
- Each routine is called in order by the main program
Manager Model
Definition
- A model where one system component acts as a manager and controls other processes.
Procedures
- Designate a system manager
- Allow sub-systems to execute concurrently
- Example components:
Sensor Processes, Computation Processes, System Controller, Actuator Processes, User Interface, Fault Handler
Examples
- Concurrent systems with a central controller
Key Takeaways
- Manager model is used for concurrent systems
- One component manages all others
- Processes can run at the same time
Event-Based Control
Definition
- A control style where sub-systems respond to events from other systems or the environment.
Causes
- Need for dynamic and responsive control
- Requirement to handle external or internal events
Goals / Objectives
- Enable sub-systems to react to events
- Support distributed and real-time systems
Importance
- Improves responsiveness
- Supports integration across networks
Procedures
- Use either:
Broadcast Model
Interrupt-Driven Model
Advantages & Disadvantages
- Advantages:
- Flexible and dynamic
- Suitable for distributed systems
- Disadvantages:
- May be harder to manage and predict
Impact / Effect
- Enables real-time responses
- Supports integration across multiple systems
Examples
- Not specified in notes (see sub-models below)
Key Takeaways
- Event-based control responds to system or environmental events
- It’s flexible and suitable for real-time systems
- Uses broadcast or interrupt-driven models
Broadcast Model
Definition
- A model where events are broadcast to all sub-systems, and those able to handle them respond.
Procedures
- Broadcast event to all sub-systems
- Sub-systems respond if capable
- Example structure:
Event and Message Handler
- Subsystems 1–4 respond to events E1–E4
Examples
- Distributed systems across networks
Key Takeaways
- Broadcast model sends events to all sub-systems
- Only relevant sub-systems respond
- Useful for integrating distributed systems
Interrupt-Driven Model
Definition
- A model where sub-systems respond to interrupts, often used in real-time systems.
Procedures
- Use an interrupt handler
- Sub-systems respond when interrupted
Examples
- Real-time systems requiring immediate response
Key Takeaways
- Interrupt-driven model uses interrupts to trigger responses
- It’s suitable for real-time systems
- Ensures fast and targeted control
Final Revision Summary
System Organization
- Structure system into sub-systems
- Identify communication paths
- Models:
Repository, Client-Server, Layered
Modular Decomposition
- Break sub-systems into modules
- Strategies:
Object-Oriented, Function-Oriented
Control Modeling
- Define control relationships
- Styles:
Centralized (Call-Return, Manager), Event-Based (Broadcast, Interrupt-Driven)