0
16kviews
Discuss on Modularity and Functional Independence fundamentals of design concepts.

Subject: Software Engineering

Topic: Software design specification

Difficulty: Medium

1 Answer
2
817views

Modularity

  • Software architecture and design pattern embody modularity.
  • That is, software is divided into separately named and addressable components, sometimes called modules that are integrated to satisfy problem requirements. Creating such modules bring modularity in software.
  • Modularity is a “single attribute of software that allows a program to be intellectually manageable”
  • 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

  • The concept of functional independence is a direct outgrowth of modularity and the concepts of abstraction and information hiding.
  • 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

  • Functional independence is a key to good design, and design is the key to software quality.
  • 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.

Please log in to add an answer.