1/65
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
What is system design?
Phase where the analysis model is transformed into a system design model. Developers define design goals and decompose the system into smaller subsystems that can be handled by individual teams.
When are strategies for building the system selected?
System design.
What is the result of system design?
A model that includes subsystem decomposition.
What are the activities that system design is decomposed into?
Identify design goals by identifying qualities of the system that should be optimized.
-
Design initial subsystem decomposition by decomposing the system into smaller parts based on the analysis models.
-
Refine subsystem decomposition until all design goals are met.
When do developers bridge the gap between the requirements specification (produced during requirements elicitation and analysis), and the system?
System design, and object design.
What does requirements elicitation and requirements analysis focus on?
The purpose and functionality of the system.
What is something that system design focuses on?
System decomposition, processes, data structures, and software/hardware components.
What does the requirements analysis phase result in?
The requirements model.
What does the requirements model entail?
Nonfunctional requirements and constraints (response time, throughput, reliability).
-
Use case model describing the system functionality from actors’ point of view.
-
Object model describing the entities manipulated by the system.
-
Sequence diagram for each use case, showing the sequence of interactions among objects in the use case.
-
Analysis model describing the system from the actors’ point of view and serves as the basis of communication between the client and the developers.
What does system design result in?
Design goals: Describing the qualities of the system that developers should optimize.
-
Software architecture: Describing the subsystem decomposition in terms of subsystem responsibilities, dependencies among subsystems, subsystem mapping to hardware.
-
Boundary use cases: Describing the system configuration, startup, shutdown, and exception handling issues.
What are design goals derived from?
Nonfunctional requirements.
What is a service?
A set of related operations that share a common purpose.
During system design, subsystems are defined in terms of what?
The services they provide.
During object design, the subsystem interface is defined in terms of what?
The operations it provides.
What are two properties of subsystems?
Coupling and cohesion.
What is coupling?
Measures the dependencies between two subsystems.
What is cohesion?
Measures the dependencies among classes within a subsystem.
What should ideal subsystem decomposition do?
Minimize coupling and maximize cohesion.
What is layering?
Allows a system to be organized as a hierarchy of subsystems, each providing higher-level services to the subsystem above it by using lower-level services from the subsystems below it.
How do we reduce the complexity of the application domain?
Identify smaller parts called “classes” and organized them into packages.
How do we reduce the complexity of the solution domain?
Decompose the system into subsystems, which are made of a number of solution domain classes.
What is a subsystem?
Replaceable part of the system with well-defined interfaces that encapsulates the state and behavior of its contained classes. Characterized by the services it provides to other subsystems.
What does decomposing the system into subsystems, allow for?
Allows teams to work on individual subsystems with minimal communication.
What is a logical component?
Corresponds to a subsystem that has no explicit run-time equivalent.
What is a physical component?
Corresponds to a subsystem that has an explicit run-time equivalent, for example, a database server.
What does system design focus on?
Defining the services provided by each subsystem.
What does object design focus on?
The application programmer interface, which refines the subsystem interfaces.
What is coupling?
The number of dependencies between two subsystems.
What does it mean if two subsystems are loosely coupled?
They are relatively independent.
What does it mean if two subsystems are strongly coupled?
Modifications to one subsystem is likely to impact the other. Subsystems ought to be as loosely coupled as reasonable.
What is cohesion?
The number of dependencies within a subsystem.
What is high cohesion?
The subsystem contains many objects that are related to each other and perform similar tasks.
What is low cohesion?
Subsystem contains a number of unrelated objects.
Should subsystems have high or low cohesion?
Low cohesion.
What is a layer?
Grouping of subsystems providing related services and are ordered in that each layer can depend only on lower level layers and has no knowledge of the layers above it.
What is a difference between closed and open architecture?
In a closed architecture, each layer can access only the layer immediately below it.
-
In an open architecture, a layer can also access layers at deeper levels.
What is an example of closed architecture?
Reference Model of Open Systems Interconnection (OSI model).
What is an example of open architecture?
Swing user interface toolkit for Java.
What are some closed layered architecture advantages?
Leads to low coupling between subsystems.
-
Subsystems can be integrated and tested incrementally.
What are some closed layered architectures disadvantages?
Each level introduces a speed and storage overhead that makes it harder to meet nonfunctional requirements.
What does subsystem decomposition result in?
Partitioning and layering of the system. Each subsystem can be decomposed into lower-level layers until simple enough to be implemented by a developer or team.
What is architectural style?
A way of organizing a system’s architecture including how the system is decomposed, control flows, and how subsystems communicate.
What are some architectural styles?
Repository architectural style-
Model/View/Controller (MVC) architectural style
Client/server architectural style
Peer-to-peer architectural style
Three-tier architectural style
Four-tier architectural style
Pipe and filter architectural style
What is repository architectural style?
Subsystems access and modify a single data structure called the central repository. Subsystems are relatively independent and interact only through the repository. Control flow can be dictated either by the central repository.
What is a disadvantage of repository architectural style?
Disadvantage is that the central repository can quickly become a bottleneck for performance and modifiability.
What is repository architectural style suited for?
Applications with constantly changing, complex data-processing tasks.
What is Model/View/Controller (MVC) architectural style?
Subsystems are classified into:
Model subsystems: Maintains domain knowledge
-
View subsystems: Display information to the user
-
Controller subsystems: Manage sequence of interactions with the user.
What is MVC suited for?
Interactive systems, especially when multiple views of the same model are needed.
What is client/server architectural style?
A subsystem where the server provides services to instances of other subsystems called the clients, which are responsible for interacting with the user. Request for a service is done via a remote procedure call mechanism.
What is an example of client/server architectural style?
An information system with a central database is an example of a client/server architectural style.
What is peer-to-peer architectural style?
Generalization of the client/server architectural style in which subsystems can act both as client or servers, in that each subsystem can request and provide services.
What is an example of peer-to-peer architectural style?
Database that accepts requests from the application and notifies to the application when data is changed.
What is three-tier architectural style?
Organizes subsystems into three layers.
Interface layer: Includes all boundary objects that deal with the user, including windows, forms, web pages.
-
Application logic layer: Includes all control and entity objects, processing, and rule checking,
-
Storage layer: Used for storing, retrieving, and query of persistent objects.
What is four-tier architectural style?
Interface layer is decomposed into a Presentation Client layer and a Presentation Server layer. The Presentation Client layer is located on the user machines, whereas the Presentation Server layer can be located on a servers.
What is pipe and filter architectural style?
Subsystems process data received from a set of inputs and send results to other subsystems via a set of outputs. Subsystems are called “filters,” and associations between subsystems are called “pipes.”
What is an example of pipe and filter architectural style?
Unix shell
What are design goals?
Identifies the qualities that our system should focus on and can be inferred from the nonfunctional requirements or from the application domain. The first step of system design is defining design goals.
What can design goals be selected from?
Qualities such as:
Performance
Dependability
Cost
Maintenance
End user criteria
What is performance criteria?
Speed and space requirements imposed on the system. Includes:
Robustness
Reliability
Fault tolerance
What is cost criteria?
Includes the cost to develop the system, deploy it, and maintain it.
What is maintenance criteria?
Determine how difficult it is to change the system after deployment. Includes:
Extensibility
-
Modifiability
-
Adaptability
What is end user criteria?
Qualities desirable from a users’ point of view, but have not yet been covered under the performance criteria. Includes:
Utility
-
Usability
What are examples of design goal trade-offs?
Delivery time vs. functionality
Delivery time vs. quality
What is delivery time vs. functionality?
If development falls behind, the system can be delivered on time with fewer features or deliver all features later.
What is delivery time vs. quality?
If testing falls behind, the system can release on time with known bugs and be patched later, or delay release to reduce bugs.
What is facade design pattern?
Allows us to further reduce dependencies between classes by encapsulating a subsystem with a unified interface.