Final Material - System Design Flashcards
What is the difference between architectural design and component design?
Architectural design is an abstract version of the system that identifies the software as a system with many components interacting with each other Component design is more detailed toward modules and implementations. Defines the logical structure of each module and interfaces to communicate with other modules
What is an architectural pattern?
A means of representing, sharing, and reusing knowledge. A stylized description of good design practice that has been tried and tested in different environments
What is the model view controller architectural pattern?
A model that separates presentation and interaction from system data.
The model component manages system data and operations of the data
The view component defines and manages how data is presented to the user
The controller component manages user interaction and passes interactions to the view and the model
When should you use model-view-controller architectural pattern
When there are multiple ways to view and interact with the data
When the future requirements for interaction and presentation of data are unknown
What are the advantages and disadvantages of model view controller architectural pattern?
Advantages: allows data to change independently of representation and vice-versa, supports presentation of the same data in different way with changes made in one representation shown in all
Disadvantage: Involves additional code and complexity when data model and interactions are simple
What is the layered architecture pattern?
Organizes the system into layers with related functionality for each layer
When should you use the layered architectural pattern?
When building new facilities on existing systems
When development is spread across several teams with each team responsible for a layer
When there is a requirement for multi-level security
What are the advantages and disadvantages of the layered architectural pattern?
Advantages: allows replacement of entire layers as long as the interface is maintained
Disadvantages: Providing clean separation is difficult and a high-level layer may need to interact with layers not just directly below it, performance can be a problem because of multiple levels of interpretation of a service request
What is the client-server architectural pattern?
Functionality of the system is organized into services with each service delivered from a different server
When should you use the client-server architectural model?
When data in a shared database needs to be accessed from a range of locations
What are the advantages and disadvantages of client-server architectural pattern?
Advantages: Servers can be distributed across a network, general functionality can be available to all clients and does not need to be implemented by all services
Disadvantages: Each service is a single point of failure, performance is unpredictable because it depends on the network and the system
What is the pipe-filter architectural pattern?
Processing of data is organized so each processing component is discrete and carries out one type of data transformation
When should you use pipe-filter architectural pattern?
In data processing applications where inputs are processed at separate stages to generate related outputs
What are the advantages and disadvantages of pipe-filter architectural pattern?
Advantages: workflow style matches the structure of business processes, evolution by adding transformations is straightforward
Disadvantages: format for data transfer needs to be agreed upon by communicating transformations
What is coupling?
Measures system complexity by focusing on complexity between a module and other modules. Loosley coupled modules make it easy to connect to other modules with well-defined interfaces