chapter 5 Flashcards
Define design in design process.
The creative process of figuring out how to implement the customer’s requirements.
What is early design (design process)?
Decisions that address the system’s architecture.
What is later design (design process)?
Decisions that address the implementation of individual units.
What is routine design (design process)?
Reusing solutions to previous problems.
What is architectural style?
Generic solutions to software problem. Client-server, p2p, etc.
What is SAD?
Software architecture document. An iterative process of designing a system.
What are the 6 ways to use architectural models for your problem?
- understand the system.
- determine reuse.
- blueprints for construction.
- reason about system evolution.
- analyze dependencies.
- understand risks and make decisions.
What is decomposition?
Breaking down a problem into smaller pieces.
What are views?
Views are different diagrams (visual models) that convey information about the system; ER-diagram, class diagram, etc.
Explain functional decomposition (design method).
A design that is focused on functions.
The functions are broken down and separated into modules.
Explain feature-oriented decomposition (design method).
System is broken down into features.
Describes interactions among features.
Explain object-oriented decomposition (design method).
Objects are assigned to modules.
How objects related to one another (high level).
Object’s attributes and operations (low level).
Explain object-oriented decomposition (design method).
Objects are assigned to modules.
How objects related to one another (high level).
Object’s attributes and operations (low level).
When is a design modular?
Each activity in the system is performed by exactly one unit.
When is software well-defined?
The module is used as intended. Requires utf-8 formatting? Then provide utf-8 formatting instead of ascii.
Name three common types of architectural views.
- Dependencies view.
- Generalization view.
- Work-assignment view.
What is dependencies view?
Shows dependencies among software units.
Useful for software planning.
Deciding what is necessary and what to do first in sprints.
Additionally useful for assessing impact of a design change.
What is a generalization view?
Relationship between abstract and non-abstract classes.
College:
People -> employees, students.. etc.
What is a work-assignment view?
System is broken down in to work tasks to be assigned to teams to build.
Helpful for project management planning.
What are 5 types of architectural styles.
- Pipes-and-Filter
- Client-server
- Peer-to-peer
- Publish-subscribe
- Repositories
What is pipes-and-filter architecture style?
A system with a bunch of functions that take input and produce an output.
Useful for batch processing (shell scripts).
Not good for interactive applications.
What is client-server architecture style?
Server offers services.
Clients interact with the server via request/reply protocol.
What is peer-to-peer architecture style?
Each component acts as its own process (both client and server).
Very tolerant to failures.
What is publish-subscribe architecture style?
Components react by broadcasting and reacting to events.
Need a shared repository and is difficult to test.
What are repositories (architecture style)?
A central data store. An interface (component) operates it (store, retrieve, etc.)
What are 7 quality attributes?
- Modifiability
- Performance
- Security
- Reliability
- Robustness
- Usability (ease of use)
- Business goals
Define the quality attribute: modifiability.
Design must be easy to change.
Directly affected units: modify responsibilities as necessary.
Indirectly affected units: implementations must be revised.
What is cohesion (quality attribute: modifiability)?
Cohesion is the degree to which elements in a module belong together. Changes to the system should impact as few units as possible.
Define the quality attribute: performance.
- Response time: speed of response.
- Throughput: requests processed per minute.
- Load: how many uses can be supported w/o affected #1. and #2.
Define the quality attribute: security.
Immunity: prevent attempted attacks.
Resilience: recover from attacks easily.
Define the quality attribute: reliability.
Software performing its required functions under assumed conditions.
Fault: human error (incorrect inputs).
Failure: system does not behave as intended.
Software is more reliable if it prevents or tolerates faults. Assume the user will screw up, build in defenses.
Define the quality attribute: robustness.
Robust systems accommodate or recover from problems.
Recovery tactics:
rollbacks, abort transactions, backup units, reduced service.
Define the quality attribute: usability.
Ease of use for the user to operate the system.
Define the quality attribute: business goals.
Quality goals the system is expected to exhibit (time to market, dev cost, etc.)
Buy vs build: save dev time.
Initial dev vs maintenance cost.
New vs known tech.
What is architectural evaluation?
An iterative process that involves making decisions, assessing those decisions and making adjustments.
What is safety analysis in architectural evaluation?
Techniques during design to identify faults.
Fault-tree analysis: backward trace through the design.
Data-flow graph: transfer of data from one process to another.
Control flow graph: transfer of control among units.
What is trade-off analysis in architectural evaluation?
Compare different designs and pick the best one.
What is cost-benefit analysis in architectural evaluation?
Business tool to determine the financial benefits of a proposed change.
ROI (return on investment): benefit/cost
Payback period: length of time to recover the cost.
What are two ways software architecture is reviewed or evaluated?
- Validation: software satisfies the requirements.
2. Verification: software adheres to good design principles.
What is validation in architecture review?
A group of people (devs) are judging whether the software meets the requirements.
What is verification in architecture review?
Judge whether the software adheres to good design principles.
Active design review: review individual sections of the architecture.
Passive review process: reading documentation and looking for problems.
What is software product lines?
Product line: reusing elements for for software.
Product family: multiple products developed from similar assets.
Core asset base: the assets to be reused.
When leveraging existing solutions what is cloning?
borrow design/code with minor adjustments.
When leveraging existing solutions what are reference models?
generic architecture that suggests how to decompose a system.
What are design patterns?
generic solutions for making lower-level decisions.
What are design conventions or idioms?
collection of design decisions that promote quality.
What are design principles?
characteristics of a good design.
What is generality (quality attribute)?
make modules easier to change.
What is coupling (quality attribute)?
the degree to which units are connected.
a loosely coupled system reduced ripple effects of changes.
What is mutual suspicion (quality attribute: robustness)?
each module assumes the other contains faults.
example: validating email each time it is passed from one module to another.