1 of 21

ARCHITECTURE DESIGN

Dr. Noman Islam

2 of 21

INTRODUCTION

  • Chapter introduces Architectural Design.
    • Focus on defining system structure.
    • Translate requirements into architecture.
  • Importance of architecture.
    • Guides implementation and design decisions.
    • Ensures maintainability and scalability.
  • Goal.
    • Learn architectural styles and patterns.
    • Understand component interactions.

3 of 21

ARCHITECTURAL DESIGN OVERVIEW

  • Architecture represents high-level structure.
    • Defines components and their relationships.
    • Provides blueprint for system development.
  • Connects requirements and design.
    • Ensures functional and non-functional requirements are met.
    • Supports system quality attributes.
  • Iterative process.
    • Refine architecture with feedback.
    • Incorporate evolving requirements.

4 of 21

ARCHITECTURE ACTIVITIES

  • Define architectural components.
    • Identify modules, subsystems, layers.
    • Specify responsibilities.
  • Specify interfaces and interactions.
    • Define communication patterns.
    • Ensure compatibility and data flow.
  • Evaluate architectural alternatives.
    • Assess trade-offs.
    • Select optimal design.

5 of 21

ARCHITECTURAL STYLES 1

  • Layered architecture.
    • Organize system into layers.
    • Separation of concerns.
  • Client-server architecture.
    • Servers provide services.
    • Clients consume services.
  • Pipe-and-filter architecture.
    • Data flows through processing elements.
    • Supports flexible processing.

6 of 21

ARCHITECTURAL STYLES 2

  • Model-View-Controller (MVC).
    • Separates data, UI, and control logic.
    • Enhances maintainability.
  • Event-driven architecture.
    • Components communicate via events.
    • Supports asynchronous behavior.
  • Service-oriented architecture (SOA).
    • Services provide reusable functionality.
    • Loose coupling between components.

7 of 21

DESIGN DECISIONS IN ARCHITECTURE

  • Trade-offs between performance and maintainability.
    • Optimized components may reduce readability.
    • Simpler design may affect performance.
  • Scalability considerations.
    • Plan for increasing load.
    • Support distributed deployment.
  • Security and reliability.
    • Design for safe operation.
    • Handle failures gracefully.

8 of 21

COMPONENT INTERACTIONS

  • Define communication mechanisms.
    • Synchronous vs asynchronous.
    • Shared data or message passing.
  • Interface design.
    • Clearly specify input/output.
    • Define contracts for modules.
  • Dependency management.
    • Minimize tight coupling.
    • Maximize modularity.

9 of 21

ARCHITECTURAL VIEWS

  • Module view.
    • Focus on decomposition.
    • Defines module structure.
  • Component-and-connector view.
    • Focus on runtime interaction.
    • Defines communication paths.
  • Allocation view.
    • Shows mapping to hardware or processes.
    • Supports deployment planning.

10 of 21

DOCUMENTATION OF ARCHITECTURE

  • Architecture description document (ADD).
    • Captures all design decisions.
    • Includes diagrams and rationale.
  • Use of UML diagrams.
    • Component diagrams for structure.
    • Sequence diagrams for interactions.
  • Maintain traceability.
    • Link architecture to requirements.
    • Support verification and validation.

11 of 21

ARCHITECTURE EVALUATION 1

  • Assess quality attributes.
    • Performance, reliability, security.
    • Check maintainability and flexibility.
  • Scenario-based evaluation.
    • Use cases for testing architecture.
    • Simulate interactions and load.
  • Identify risks.
    • Detect potential design flaws.
    • Mitigate early in development.

12 of 21

ARCHITECTURE EVALUATION 2

  • Prototyping.
    • Build small parts to test design.
    • Evaluate technical feasibility.
  • Simulation and modeling.
    • Predict performance.
    • Verify architectural decisions.
  • Peer reviews.
    • Stakeholders and experts assess design.
    • Provide improvement suggestions.

13 of 21

PATTERNS IN ARCHITECTURAL DESIGN 1

  • Recurrent solutions to common problems.
    • Provide proven templates.
    • Reduce design errors.
  • Examples: MVC, Observer, Layered.
    • Address standard challenges.
    • Enhance communication and reuse.
  • Benefits.
    • Faster design decisions.
    • Improves quality and maintainability.

14 of 21

PATTERNS IN ARCHITECTURAL DESIGN 2

  • Client-server pattern.
    • Separates clients and services.
    • Supports distributed systems.
  • Microservices pattern.
    • Independent deployable services.
    • Promotes scalability and flexibility.
  • Event-driven pattern.
    • Components react to events.
    • Supports decoupling and async operations.

15 of 21

ARCHITECTURAL STYLES SELECTION

  • Consider system requirements.
    • Functional and non-functional needs.
    • Quality attributes like performance.
  • Evaluate trade-offs.
    • Flexibility vs complexity.
    • Performance vs maintainability.
  • Select optimal style.
    • Match project context.
    • Ensure stakeholder alignment.

16 of 21

SOFTWARE ARCHITECTURE AND AGILE

  • Incremental architectural design.
    • Develop architecture in iterations.
    • Refine based on feedback.
  • Architecture runway.
    • Support future features.
    • Avoid bottlenecks.
  • Lightweight documentation.
    • Capture essential details only.
    • Focus on working system.

17 of 21

DISTRIBUTED ARCHITECTURE

  • Consider networked systems.
    • Clients and servers communicate over network.
    • Handle latency and failures.
  • Partitioning and replication.
    • Divide functionality across nodes.
    • Ensure redundancy for reliability.
  • Consistency and synchronization.
    • Data coherence across nodes.
    • Minimize conflicts and delays.

18 of 21

QUALITY ATTRIBUTES IN ARCHITECTURE

  • Performance, scalability, reliability.
    • Evaluate against expected load.
    • Plan for growth.
  • Security and availability.
    • Prevent unauthorized access.
    • Ensure continuous operation.
  • Maintainability and modifiability.
    • Simplify changes.
    • Support future evolution.

19 of 21

ARCHITECTURE DOCUMENTATION TOOLS

  • CASE tools and UML support.
    • Visualize components and interactions.
    • Maintain design consistency.
  • Architecture repositories.
    • Store reusable components.
    • Support versioning.
  • Collaboration platforms.
    • Team access and updates.
    • Enable stakeholder feedback.

20 of 21

CHALLENGES IN ARCHITECTURAL DESIGN

  • Balancing trade-offs.
    • Performance vs maintainability.
    • Flexibility vs complexity.
  • Evolving requirements.
    • Architecture must adapt.
    • Support iterative changes.
  • Communication gaps.
    • Stakeholders misinterpret diagrams.
    • Ensure clarity through documentation.

21 of 21

CHAPTER SUMMARY

  • Architecture defines high-level system structure.
    • Components, connectors, and views.
    • Bridges requirements and implementation.
  • Selection of styles and patterns is critical.
    • Use proven templates.
    • Consider quality attributes.
  • Evaluation, documentation, and management ensure success.
    • Traceability and validation.
    • Supports scalable, maintainable systems.