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.