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.