written 7.8 years ago by | • modified 6.1 years ago |
Subject: Software Engineering
Topic: Software design specification
Difficulty: Medium
written 7.8 years ago by | • modified 6.1 years ago |
Subject: Software Engineering
Topic: Software design specification
Difficulty: Medium
written 7.8 years ago by |
Modularity
Meyer defines five criteria that enables us to evaluate design method with respect to its ability to define an effective modular system.
1. Modular decomposability
A design method provides a systematic mechanism for decomposing the problem into sub-problems. This reduces the complexity of the problem and modularity can be achieved.
2. Modular composability
A design method enables existing design components to be assembled into a new system.
3. Modular understandability
A module can be understood as a standalone unit. Then it will be easier to build and easier to change.
4. Modular continuity
Small changes to the system requirements results in changes to individual modules rather than system-wide changes.
5. Modular protection
An aberrant condition occurs within a module and its effects are constrained within the module.
Functional Independence
Functional independence is achieved by developing modules with “single-minded” function and an “aversion” to excessive interaction with other modules.
Stated in other way, we want to design software so that each module addresses a specific sub function of requirements and has a simple interface when viewed from other part of program structure.
Independence is important because, software with effective modularity I.e. independent modules is easier to develop because function may be compartmentalized and interfaces are simplified.
Independent modules are easier to maintain because secondary effects caused by design or code modification are limited, error progression are reduced, and reusable modules are possible
Independence is assessed using two qualitative criteria
1. Cohesion
Cohesion is an indication of relative function strength of a module. A cohesive module perform a single task, requiring little interaction with other components in other parts of program
2. Coupling
Coupling is an indication of the relative interdependence among modules. Coupling depends on the interface complexity between modules, the point at which entry or reference is made to module and what data passes across the interface.