Information Technology Reference
In-Depth Information
to this, the use of modularity, borrowed from other engineering fields, worked its
way into software engineering. Modular programming focuses on the partitioning
of a program into smaller modules in order to reduce its overall complexity. The
resulting modules constitute definite and intuitive boundaries within the program,
and facilitate the use of multiple software engineering teams, each of which can
focus on an individual module. The layout of these modules constitutes the
physical architecture of a software system.
Booch describes modularity as ''the property of a system that has been
decomposed into a set of cohesive and loosely coupled modules'' (Booch 1994 ).
This not only covers the advantage of workable units, but also touches on the goal
of reducing dependencies among different portions of the program. Such depen-
dencies can make the modification of a program a tremendously large task, as
editing a single class will affect all portions of the program which were dependent
on that class. Those changes will have to be accounted for throughout the entire
system, often at a very high cost. Modularity offers a potential solution to this
problem through the isolation of individual program portions from each other. The
way in which the objects and classes of a module are accessed can then be easily
defined through the implementation of an interface for interaction with other parts
of the program.
The theories of encapsulation and information hiding will be discussed in
further detail later in this chapter, but it is important to understand that, if
implemented properly, they can ensure the integrity and dependability of data
across a software system.
The most important benefit of modularization is the efficiency and workability
afforded by the separation of different programming concerns into manageably
sized, logical modules. The result is a program that is more flexible and much
easier to understand, change, and debug. Additionally, because modules are
constructed independently, they can be easily reused in other applications or stored
for later reference and modification. Modularity also calls for the separate com-
pilation of the modules, which facilitates an incremental development process, and
allows for easier unit testing. The following sections will discuss in more detail a
few of the specific benefits of modularity.
2.3.1 Reuse
The modularization of a software product results in the creation of any number of
independent components, each with a distinct function. One advantage to this
approach comes from the potential use of these components in future projects. This
practice, known as reuse, can save developers from consuming resources in order
to remake something that they have developed in the past. For this reason, reuse is
a common practice in the field of software engineering, and one which needs not
be limited only to software components. Methods of organization, planning
Search WWH ::




Custom Search