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.