Architectural Design Flashcards
(30 cards)
What is Software Architecture?
Organization and structure of significant components in a system that interact through interfaces
Architectural Design
The process of understanding how a software system should be organized.
What is the purpose of Architectural Design
To assist in development and maintainance of software systems by organizing components of the system to make maintainance and development easier
How is software architecture modeled?
Often using informal block diagrams showing entities and relationships (ER diagram)
Does architectural design impact functional or non-functional requirements?
Non-Functional
What architecture characteristics would assist in improving time to market?
Agility, Testability, Deployability
What architecture characteristics would assist in improving user satisfaction?
Performance, Availability, Fault Tolerance, Testability, Deployability, Agility
What architecture charcteristics implement Time and Budget?
Simplicity, Feasibility, Affordability
What are some non-functional requirements that are impacted by good architectural design?
Performance, Security, Availability, Maintainability
An architect must be able to translate __ into the right __
Domain Concerns, Architectural characteristics
Why is it difficult to design an architecture that successfully mitigates security concerns and availability concerns?
Because security comes at the cost of convenience
Explicit expected number of users and scale commonly appear in domain concerns. True/False?
True
What 5 (five) components are contained in clean architecture?
Independent of Frameworks Testable Independent of UI Independent of Database implementation (or engine) Independent of External agencies
What is the dependency rule of thumb?
Source code dependencies must only point inward towards higher-level policies
What is architecture reuse?
Known as an architectural design pattern, an architecture is often reused by more than one system that are similar
What are architectural patterns?
Representing a reusable architecture that is a good practice in many different environments for similar projects
What is the microkernel architecture?
Consists of a core system and many plug-in logic or functions that are used as feature modules for the core system
What is the benefit of the layered architectural design pattern?
Easy to use accross large teams, Great SoC, allows replacement of layers as long as interface is maintained, Redundant facilities can be provided at the layer level
what is the Model-View-Controller Pattern?
A pattern used when you need to add or display data in many different forms. Great support for CRUD operations. Allows data to change independently from the UI and vice versa.
What is client-server architecture pattern?
Servers distributed across a network and the general functionality between the server can be available to all clients (CI, Console, Windows, Web)
What is the advantage of pipe and filter architecture?
Easy to add to since you can simply add transformations to the system that work on similar data
What is the repository pattern?
Components separated into individual repositories and do not even need to know about other repositories. Changes made by one component can be propagated to all components
Application Architecture
Generic application architecture for a type of software system that may be configured.
List the 3 common application types?
Data processing applications
Transaction processing applications
Event Processing applicaitons