1. Describe two methods of designing for change. In other
words, how can you design software systems so that they are easy to change? (1
point for both parts of answer. ˝ point for 1 part of answer.)
·
Identify areas that are likely to change.
·
Develop plans for how to change these items.
·
Use information hiding. (Or, reduce redundant code.)
·
Define “families” of programs.
·
Use object-oriented techniques. (Although this is not a
cure-all.)
2. What are cohesion and coupling? (1 point for both parts
of answer. ˝ point for 1 part of answer.)
·
Cohesion – The extent to which a program module (or
subroutine or function) relates to one thing (or concept or idea). We
want high cohesion.
·
Coupling – The extent to which a program module (or
subroutine or function) is interconnected with other modules. (They
share variables, global data, lines of code, entry points, etc.) We want low
coupling.