April 1999
SE203: SOFTWARE ENGINEERING

QUESTION 3

Total Marks: 20 Marks

Click here to access other questions

GRADE A
Sample student's solutions are indicated in green.
Return to Question 3

 

(a) Give a careful description of each of the following design concepts:
(i) Functional independence. [2]
Functional independence refers to the degree of cohesion and coupling that a module should have. Functional independence can be achieved by low coupling and high cohesion.
Cohesion measures the functional strength of a module
Coupling measures the interdependence of a module to others.

 

(ii) Control Hierarchy. [2]
Control Hierarchy is the organization (usually hierarchical) of a modules and implies the hierarchy control relationship between the modules. Control hierarchy show the manner of modules relationship (superordinate / subordinate/ fan-in/ fan-out).

 

(iii) Information Hiding. [2]
Information Hiding is a way of designing a module such that information (e.g. data structures) contained in other modules are not accessible to the modules that do not require this information.
Information Hiding module keeps the scope of effect to related modules only.

 

(iv) Abstraction. [2]
Abstraction allows one to concentrate on a level of generalization without regard of the low irrelevant level details. Abstraction can be achieved by properly partitioned the modules.

 

(b) A programming language is typically said to posses two broad categories of characteristics, namely psychological and engineering characteristics. Describe what is meant by each of these two types of characteristics. Give one example of characteristics falling into each category, and explain why it falls into that category. [6]
A programming language is said to have physchological characteristics because programming language is viewed as a communication way of human to the computer. So coding is a human-activity, hence human aspect physiological aspect has to be considered in coding phase.

One of the characteristics in this category is Linearity, a language that can be written in a linear sequence helps the understandings of human. Human can comprehend, write better if coding is done procedurally/ structured in manner. Extensive branching will violate linearity and make programs harder to be understood.

A programming language is said to have engineering characteristics because coding is part of the system development life cycle. Hence, the technical aspect of a programming language is a concern to produce good software.

Example in this category is availability of development tools. A programming language that has source code generators will help the writing of code easier. Besides it also helps as source code generators can provide a better quality code compare to manually written codes. The availability of such tools ease the coding process that is technically done to be performed during the software engineering phase.

 

(c) The choice of programming language should not only be based on the characteristics described in Part(b), but should also be based on numerous other criteria. Describe in some detail at least two of these possible criteria in the choice of languages. Give your opinion of the relevance or significance of each criterion. [6]
  1. Familiarity of developers/staff to the specified programming language. When choosing a language, one should consider whether the developer is knowledgable or familiar with it. Without good knowledge of the language, developers who use the language might not be able to use the features effectively. Hence in choosing a programming language, staff/developer( who is going to use the language) should carefully consider the quality of the program he can produce using it based on his ability of manipulating the language, not on whether the language is good or bad.
  2. Algorithmic and computational complexity
    Application in which the computational complexity required should be considered. There are some powerful languages that provides certain features but cannot represent/provide other features. When the application of the software required much calculations or scientific computation, one should consider FORTRAN as a potential choice. Though some other languages can replace it, but the efficiency of the code could be doubtful.
  3. Complexity of data structures required
    Not a programming languages provides complex representation of data structure. Hence, while choosing a language, one should consider the degree to which the system requires the use of complex data structures. C and Pascal allow for such complex data structure to be represented.