what is design?
is a set of activities that need to be performed by the designer in oder to specify a solution to a problem
what are activities of a design process?
Activities I enjoy == Peanut Butter Every Evening
what is the nature of a design process [ DP ]?
Process Is Basic
- DP doesn’t follow a precise sequence of events
- DP is iterative in nature
- DP has extensive backtracking
what is the problem and solution in a design?
problem : req specification
solution : description on how to meet the reqs
what does software design describe?
Software design [ SD ] documents contain?
text and diagram
what is a design plan?
what is a design concept?
a way to provide designers with basic ideas from which more sophisticated design models can be applied
what questions does a design concept help a designer answer?
what are the fundamental concepts in software design?
ASMR IS fundamental
- Abstraction
- Software arch
- modularity
- refinement
- info hiding
- software procedure
what is abstraction?
is the management of complexity by focusing on essential characteristics and hiding implementational details
what are abstraction method in OOP?
what is modularity?
the degree of how well a SW can be understood by examining its components independently
what is a module?
an independent unit used to construct a more complex structure
give examples of a module.
what are quality attributes of a module?
what is cohesion and coupling?
cohesion - measure of functional strength of a module
coupling - measure of degree of interdependence of a module
what are ranges of coupling?
highest to lowest [ —>]
high : content, common, control
medium : stamp, data
low : uncoupled
what is content coupling?
1 module can modify content [ internal data, code ] of another.
what is common coupling?
modules share common data [ global DS and common blocks ]
what factors make common coupling a poor choice?
No 4 Red flags
- no clear data responsibility
- reduced readability
- reduced maintainability
- reduced usability
- reduced control over data access
give an example of a content coupling and an improvement for it.
let’s say we have:
1. func lookUp()
2. List<Customer> customers = [];
- look up handles searching for customers.
- if it doesn't find the customer it will directly modify contents of customers to add the new customer;</Customer>
improvement:
lookUp() calls addCutomer()
give an example of a common coupling and an improvement for it.
we have:
1. globalDataStore() - maintains data of various modules
- modules can directly read and write to it.
improvement:
2. dataStoreManager();
- will be in charge of data in the gDS();
- modules will request read and write form the dSM();
what is control coupling?
modules communicate with each other by passing control information [ parameters ]. can be good or bad