FM

Software Architecture Flashcards

Architectural Design Overview

  • Architectural design is crucial in software engineering as it focuses on how a software system is organized.

Topics Covered

  • Architectural design decisions
  • Architectural views
  • Architectural patterns
  • Application architectures

Software Architecture

  • Definition: The design process that identifies subsystems forming a system and their control and communication framework.
  • Output: A description of the software architecture.

Architectural Design Process

  • Early Stage: Represents the bridge between specification and design, often developed alongside specification activities.
  • Elements: Involves identifying significant components and their communication methods.

Architectural Abstraction

  • Architecture in the Small: Focuses on individual program components.
  • Architecture in the Large: Concerns complex systems, often across multiple distributed computers.

Advantages of Explicit Architecture

  • Stakeholder Communication: Architecture serves as a focal point for stakeholder discussions.
  • System Analysis: Enables analysis of non-functional requirements.
  • Large-scale Reuse: Promotes the reusability of architecture across various systems, supports product-line architectures.

Architectural Representations

  • Documentation: Predominantly done using informal block diagrams; noted for lacking semantic richness.
  • Architectural Models: Semantics depend on model usage, essential for effective communication and documentation.

Architectural Models and Design Decisions

  • Involves multiple common decisions impacting non-functional characteristics, such as:
    • Suitable application architecture
    • System distribution methods
    • Appropriate architectural styles
    • Structure and decomposition of the system
    • Control strategies for system management
    • Evaluation and documentation of architecture

Architecture Reuse

  • Similar architectures across domain-specific systems can enhance efficiency and comprehension.
  • Developments often use architectural patterns or styles to capture essential architecture features.

System Characteristics in Architecture

  • Performance: Minimize communication and localize critical operations.
  • Security: Implement layered architecture for critical assets.
  • Safety & Availability: Include redundancy and fault tolerance mechanisms.
  • Maintainability: Employ fine-grain components for easy replacement.

Architectural Views Overview

  • Architects utilize multiple perspectives including:
    • Logical view (key abstractions as objects/classes)
    • Process view (interacting processes at run-time)
    • Development view (software decomposition for development)
    • Physical view (hardware distribution of software components) along with use cases or scenarios.

Architectural Patterns

  • Definition: Standard methods of design representing good practices that have been tested.
  • Should detail applicability, advantages, and use cases.

Model-View-Controller (MVC) Pattern

  • Components:
    • Model: Manages data.
    • View: Presentation layer to the user.
    • Controller: Handles user interactions.
  • Use Cases: Suitable for systems requiring multiple data views or unknown presentation needs.
  • Advantages: Independent data representation changes; supports various views.

Layered Architecture

  • Structures systems into layers providing specific services.
  • Supports incremental subsystem development with minimal impact on other layers.

Repository Architecture

  • Centralizes data management in a repository.
  • Advantages: Independence of components; consistent data management.
  • Disadvantages: Single point of failure; possible communication inefficiencies.

Client-Server Architecture

  • Distributed model organizing services across components.
  • Facilitates shared database access and variable loads by replicating servers.

Pipe and Filter Architecture

  • Processes data through discrete transformations, commonly used in data processing systems.
  • Advantages: Understanding and transformation reuse; ease of addition.
  • Disadvantages: Communication format must be agreed upon, may create inefficiencies.

Application Architectures

  • Types of Applications: Transaction processing systems, information systems, language processing systems with well-defined structures typical for each type.
  • Transaction Processing Systems: Allow remote access and modification of data in databases.
  • Language Processing Systems: Translate and execute instructions in source languages, involving various compiler components.

Key Points

  • Architectural models guide comparison, validation, and reuse of application systems.
  • Understanding different application types aids in designing robust software architectures, enhancing overall user experience and system reliability.