Sh. Zweben et al., THE EFFECTS OF LAYERING AND ENCAPSULATION ON SOFTWARE-DEVELOPMENT COST AND QUALITY, IEEE transactions on software engineering, 21(3), 1995, pp. 200-208
Software engineers often espouse the importance of using abstraction a
nd encapsulation in developing software components, They advocate the
''layering'' of new components on top of existing components, using on
ly information about the functionality and interfaces provided by the
existing components, This layering approach is in contrast to a ''dire
ct implementation'' of new components, utilizing unencapsulated access
to the representation data structures and code present in the existin
g components, By increasing the reuse of existing components, the laye
ring approach intuitively should result in reduced development costs,
and in increased quality for the new components, However, there is no
empirical evidence that indicates whether the layering approach improv
es developer productivity or component quality. We discuss three contr
olled experiments designed to gather such empirical evidence, The resu
lts support the contention that layering significantly reduces the eff
ort required to build new components, Furthermore, the quality of the
components, in terms of the number of defects introduced during their
development, is at least as good using the layered approach. Experimen
ts such as these illustrate a number of interesting and important issu
es in statistical analysis, We discuss these issues because, in our ex
perience, they are not well-known to software engineers.