This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
The Effects of Layering and Encapsulation on Software Development Cost and Quality
March 1995 (vol. 21 no. 3)
pp. 200-208
Software engineers often espouse the importance of using abstraction and encapsulation in developing software components. They advocate the “layering” of new components on top of existing components, using only information about the functionality and interfaces provided by the existing components. This layering approach is in contrast to a “direct implementation” of new components, utilizing unencapsulated access to the representation data structures and code present in the existing components. By increasing the reuse of existing components, the layering 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 improves developer productivity or component quality. We discuss three controlled experiments designed to gather such empirical evidence. The results support the contention that layering significantly reduces the effort 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. Experiments such as these illustrate a number of interesting and important issues in statistical analysis. We discuss these issues because, in our experience, they are not well-known to software engineers.

[1] M. Aitkinet al.,Statistical Modeling in GLIM. New York: Oxford, 1989.
[2] G. Booch, Software Components with Ada. Benjamin-Cummings, 1987.
[3] R. Brooks, “Studying Programmer Behavior Experimentally: The Problems of Proper Methodology,” Comm. ACM, vol. 23, no. 4, pp. 207–213, Apr. 1980.
[4] S. R. Chidamber and C. F. Kemerer,“A metrics suite for object oriented design,”IEEE Trans. Software Eng., vol. 20, pp. 476–493, 1994.
[5] S.D. Conte, H.E. Dunsmore, and V.Y. Shen, Software Engineering Metrics and Models.Menlo Park, Calif.: Benjamin/Cummings, 1986.
[6] W. Daniel,Applied Nonparametric Statistics, 2nd ed. Boston, MA: PWS-Kent, 1990.
[7] N.E. Fenton, Software Metrics, A Rigorous Approach. Chapman&Hall, 1991.
[8] D. Harms and B. Weide,“Copying and swapping: Influences on the design of reusable software components,”IEEE Trans. Software Eng.,vol. 17, pp. 424–435, May 1991.
[9] C. Hicks,Fundamental Concepts in the Design of Experiments, 2nd ed. New York: Holt, Rinehart and Winston, 1973.
[10] J. Hollingsworth, B. Weide, and S. Zweben,“Confessions of some used-program clients,”inProc. Fourth Annu. Workshop Software Reuse(Herndon, VA), Nov. 1991.
[11] J. Hollingsworth, "Software Component Design for Reuse," PhD dissertation, Ohio State Univ., Columbus, 1992.
[12] W. R. LaLonde,“Designing families of data types using exemplars,”ACM Trans. Programming Languages, Syst., vol. 11, no. 2, pp. 212–248, 1989.
[13] J. A. Lewiset al.,“An empirical study of the object-oriented paradigm and software reuse,”inProc. 1991 OOPSLA Conf., pp. 184–196.
[14] G. Milliken and D. Johnson,Analysis of Messy Data, Vol. 1: Designed Experiments. Princeton, NJ: Van Nostrand Reinhold, 1984.
[15] R.S. Pressman, Software Engineering—A Practitioner's Approach, 3rd ed., McGraw-Hill, New York, 1992.
[16] D. Ratkowski, M. Evans, and J. R. Alldredge,Cross-Over Experiments. New York: Marcel Dekker, 1993.
[17] H. Scheffe,The Analysis of Variance. New York: Wiley, 1959.
[18] M. Sitaraman and B. Weide, "Component-Based Software Using RESOLVE," ACM Software Eng. Notes, Oct. 1994.
[19] E. Soloway and S. Iyengar, Eds.,Empirical Studies of Programmers. Norwood, NJ: Ablex, 1986.
[20] I. Sommerville, Software Engineering, 4th ed., Addison Wesley Longman, Wokingham, England, 1992.
[21] B. Weide, W. Ogden, and S. Zweben, "Reusable Software Components," M. Yovits, ed., Advances in Computers, vol. 33, pp. 1-65. Academic Press, 1991.

Index Terms:
Empirical study, encapsulation, software components, abstract data types, software development, software reuse
Citation:
Stuart H. Zweben, Stephen H. Edwards, Bruce W. Weide, Joseph E. Hollingsworth, "The Effects of Layering and Encapsulation on Software Development Cost and Quality," IEEE Transactions on Software Engineering, vol. 21, no. 3, pp. 200-208, March 1995, doi:10.1109/32.372147
Usage of this product signifies your acceptance of the Terms of Use.