Software Architectural Styles Flashcards
What does software architecture represent?
The high-level logical structure of software, composed of components and their interfaces.
What does the interface of a component include?
The interaction with other components, the system, end-users, or hardware devices.
According to IEEE, what is software architecture?
The fundamental organization of a system embodied in its components, their relationships, and the principles governing its design and maintenance.
Why is software architecture critical for success?
It represents the earliest and most significant design decisions.
What is the role of software architecture among stakeholders?
A communication medium to help them understand the application.
What are some architectural styles?
Data flow (pipe and filter), data-centred, object-oriented, layered (n-layer), and model-view-controller (MVC).
What are the components of a data flow architecture?
Filters and pipes.
What is a filter in a data flow architecture?
An independent, self-contained processing unit.
What are the benefits of a data flow architecture?
Filters can be executed in parallel, improving efficiency.
What are the 2 types of filters?
Passive and active.
What are the 2 types of pipes?
Bounded and typed.
What are the two groups of data flow styles?
Pipe and filter, and pipeline.
What are the benefits of the data flow style?
Maintainability, reusability, and support for concurrent processing.
What are the components of a data-centred architecture?
Data store (shared memory) and clients.
What are the 2 types of data stores?
Repository and blackboard.
What is the repository style?
Passive; clients check the data store for changes.
What is the blackboard style?
Active; the data store notifies clients of changes.
What are examples of repository styles?
Relational and non-relational databases.
What are examples of blackboard styles?
Expert systems and knowledge bases.
What are the benefits of the data-centred style?
Reduced data duplication, data availability, and easy addition/deletion of clients.
What does a class describe?
The properties of an entity in terms of attributes, data types, and operations.
What is the connector between classes?
Functional code (method invocation).
What are the benefits of object-oriented architecture?
Information hiding, inheritance, and data integrity.
What is information hiding?
Hiding implementation details from clients.
What is inheritance?
Developing reusable classes.
What are the typical layers in a three-layer architecture?
Presentation layer, business logic layer, and data access/storage layer.
What is the presentation layer?
The user interface for accessing services and displaying results.
What is the business logic layer?
Processes user events, coordinates between layers, and makes logical decisions.
What is the data layer?
Accesses and stores data.
What is MVC architecture?
Model-View-Controller architecture, designed to separate data display, system behaviour, and data access.
What is the role of the model in MVC?
Handles data and responds to queries.
What is the role of the view in MVC?
Handles data display.
What is the role of the controller in MVC?
Handles user actions and updates the model and view.
What are the benefits of MVC?
Consistency between model and views, view independence, and code reusability.
What is distributed architecture?
Deploying software architecture on hardware like a computer network.
What is the client-server style?
A two-tier distributed architecture with independent clients accessing a service system.
What is the connector between client and server?
Network protocols.
What are the rules of communication in client-server architecture?
Clients know server identity, clients are independent, and servers only respond to requests.
What are the benefits of distributed architecture?
Scalability and fault tolerance.
What is event-driven architecture?
A system composed of events and components that consume or report events.
What is service-oriented architecture (SOA)?
Developing applications by composing existing services from different providers.
What is peer-to-peer (P2P) networking?
A decentralized network where nodes (peers) interact directly and share resources.