August 1997
SE203: SOFTWARE ENGINEERING

QUESTION 3

Total Marks: 20 Marks

Click here to access other questions

SUGGESTED SOLUTIONS
Solutions and allocated marks are indicated in green.
Return to Question 3

3. (a) Define what is meant by Information Hiding. [2]
Modules should be designed so that information contained within a module is inaccessible to modules that have no need for such information.
[2 marks]
(b) In design history, modularity can be thought of as a method of managing complex program by sub-dividing them into distinct and manageable parts. In the study of design however, there is also an issue of cost. Explain, with the aid of an appropriate diagram, the conflicting nature of cost and modularity: why might it not be always a good idea to have a very high degree of modularity? In your answer, indicate what you feel is a possible solution to these two factors. [5]
2 marks for correctly labelled diagram:

3 marks for explanation, which should cover the following points:
Cost/effort and number of modules are 2 conflicting factors: as number of modules increases, cost per module decreases, but cost to interface increases
Explain and identify the region of minimum cost
Explain the 'ideal' point: the intersection between the cost per module and the cost to the interface curves
[5 marks]
(c) Cohesion and Coupling are two ways of measuring the degree of modularity. Define what is meant by both terms, and then indicate the degree desirable for each. [3]
Coupling measures the degree of interdependence between two modules
Cohesion measures the strength of functional association between elements within a module
Desirable to have low coupling and high cohesion
[1 mark for each point]
[3 marks]
(d) After the design step in a life-cycle usually comes the coding step. There are several factors that should be considered when choosing a suitable programming language for the coding step, one of which might be the algorithm and computational complexity of the program. Identify, and then describe in your own words, any five other such factors. [1]
Other possible factors are:
General application area
Environment in which software will execute
Performance considerations
Data structure complexity
Knowledge of software development staff
Availability of a good compiler or cross-compiler
For each factor, 1 mark for identification and 1 mark for explanation
[10 marks]