Page 194 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 194
Principles of Software Engineering
Notes
Figure 9.11: Control Flow Graph with Complexity 28
One essential ingredient in any testing methodology is to limit the program logic during
development so the program can be understood, and the amount of testing required verifying
the logic is not overwhelming. A developer who, ignorant of the implications of complexity,
expects to verify a module such as that of with a handful of tests is heading for disaster. The
size of the module in size of several of the previous graphs exceeded 60 lines, for example the
module in. In practice, large programs often have low complexity and small programs often have
high complexity. Therefore, the common practice of attempting to limit complexity by controlling
only how many lines a module will occupy is entirely inadequate. Limiting complexity directly
is a better alternative. (See Figure 9.8 and Figure 9.9)
It is difficult to define or measure software qualities and quantities and to
determine a valid and concurrent measurement metric.
9.2 Data Binding
We have seen that coupling and cohesion are significant concepts for evaluating a design.
However, to be really effective, metrics are wanted to “measure” the coupling between modules
or the cohesion of a module. During system design, we tried to quantify coupling based on
information flow between modules. Now that the logic of modules is also available, we can come
up with metrics that also consider the logic. One metric that attempts to capture the module-level
concept of coupling is data binding. Data bindings are events that capture the data interaction
across portions of a software system. In other words, data bindings try to specify how strongly
188 LOVELY PROFESSIONAL UNIVERSITY