This Article 
 Bibliographic References 
 Add to: 
The Structural Complexity of Software: An Experimental Test
November 2005 (vol. 31 no. 11)
pp. 982-995
Chris F. Kemerer, IEEE Computer Society
James E. Tomayko, IEEE Computer Society
This research examines the structural complexity of software and, specifically, the potential interaction of the two dominant dimensions of structural complexity, coupling and cohesion. Analysis based on an information processing view of developer cognition results in a theoretically driven model with cohesion as a moderator for a main effect of coupling on effort. An empirical test of the model was devised in a software maintenance context utilizing both procedural and object-oriented tasks, with professional software engineers as participants. The results support the model in that there was a significant interaction effect between coupling and cohesion on effort, even though there was no main effect for either coupling or cohesion. The implication of this result is that, when designing, implementing, and maintaining software to control complexity, both coupling and cohesion should be considered jointly, instead of independently. By providing guidance on structuring software for software professionals and researchers, these results enable software to continue as the solution of choice for a wider range of richer, more complex problems.

[1] R. Adamov and L. Richter, “A Proposal for Measuring the Structural Complexity of Programs,” J. Systems and Software, vol. 12, pp. 55-70, 1990.
[2] J.R. Anderson, L.M. Reder, and C. Lebriere, “Working Memory: Activation Limitations on Retrieval,” Cognitive Psychology, vol. 30, pp. 221-256, 1996.
[3] A.L. Baker et al., “A Philosophy of Software Measurement,” J. Systems and Software, vol. 12, pp. 277-281, 1990.
[4] R.D. Banker et al., “Software Complexity and Maintenance Costs,” Comm. ACM, vol. 36, no. 11, pp. 81-94, 1993.
[5] R.D. Banker, G.B. Davis, and S.A. Slaughter, “Software Development Practices, Software Complexity, and Software Maintenance Performance: A Field Study,” Management Science, vol. 44, no. 4, pp. 433-450, 1998.
[6] R.D. Banker and S.A. Slaughter, “The Moderating Effects of Structure on Volatility and Complexity in Software Enhancement,” Information Systems Research, vol. 11, no. 3, pp. 219-240, 2000.
[7] R. Berry, “Trends, Challenges and Opportunities for Performance Engineering with Modern Business Software,” IEE Proc. Conf. Software Eng., vol. 150, no. 4, pp. 223-229, 2003.
[8] J.M. Bieman and L.M. Ott, “Measuring Functional Cohesion,” IEEE Trans. Software Eng., vol. 20, no. 8, pp. 644-657, Aug. 1994.
[9] F.P. Brooks, “Three Great Challenges for Half-Century-Old Computer Science,” J. ACM, vol. 50, no. 1, pp. 25-26, 2003.
[10] D.J. Campbell, “Task Complexity: A Review and Analysis,” Academy of Management Rev., vol. 13, no. 1, pp. 40-52, 1998.
[11] H.S. Chae, Y.R. Kwon, and D.H. Bae, “A Cohesion Measure for Classes in Object-Oriented Classes,” Software— Practice and Experience, vol. 30, no. 12, pp. 1405-1431, 2000.
[12] S.R. Chidamber, D.P. Darcy, and C.F. Kemerer, “Managerial Use of Metrics for Object Oriented Software: An Exploratory Analysis,” IEEE Trans. Software Eng., vol. 24, no. 8, pp. 629-639, Aug. 1998.
[13] S.R. Chidamber and C.F. Kemerer, “A Metrics Suite for Object Oriented Design,” IEEE Trans. Software Eng., vol. 20, no. 6, pp. 476-493, June 1994.
[14] J. Daly et al., “Evaluating Inheritance Depth on the Maintainability of Object-Oriented Software,” Empirical Software Eng., vol. 1, pp. 109-132, 1996.
[15] E.W. Dijkstra, “GOTO Statement Considered Harmful,” Comm. ACM, vol. 11, no. 8, p. 147, 1968.
[16] F.B. Abreu and R. Carapuca, “Candidate Metrics for Object-Oriented Software within a Taxonomy Framework,” J. Systems and Software, vol. 26, pp. 87-96, 1994.
[17] N.E. Fenton and S.L. Pfleeger, “Science and Substance: A Challenge to Software Engineers,” IEEE Software, pp. 86-95, 1994.
[18] N.E. Fenton and S.L. Pfleeger, Software Metrics: A Rigorous and Practical Approach, Revised. Boston, Mass.: Int'l Thomson Publishing, 1997.
[19] R.K. Fjeldstad and W.T. Hamlen, “Application Program Maintenance Study: Report to Our Respondents,” Tutorial on Software Maintenance, pp. 11-27, 1983.
[20] V.R. Gibson and J.A. Senn, “System Structure and Software Maintenance Performance,” Comm. ACM, vol. 32, no. 3, pp. 347-358, 1989.
[21] N. Gorla and R. Ramakrishnan, “Effect of Software Structure Attributes Software Development Productivity,” J. Systems and Software, vol. 36, no. 2, pp. 191-199, 1997.
[22] N. Gross and S. Hamm, “Industry Outlook: Software,” BusinessWeek, 11 Jan. 1999.
[23] R. Harrison, S.J. Counsell, and R.V. Nithi, “An Evaluation of the MOOD Set of Object-Oriented Software Metrics,” IEEE Trans. Software Eng., vol. 24, no. 6, pp. 491-496, 1998.
[24] J. Hartmanis, “On Computational Complexity and the Nature of Computer Science,” Comm. ACM, vol. 37, no. 10, pp. 37-43, 1994.
[25] W.S. Humphrey, “A Discipline for Software Engineering,” The SEI Series in Software Eng., p. 790, 1995.
[26] D.H. Hutchens and V.R. Basili, “System Structure Analysis: Clustering with Data Bindings,” IEEE Trans. Software Eng., vol. 11, no. 8, pp. 749-757, Aug. 1985.
[27] J.K. Kearney et al., “Software Complexity Measurement,” Comm. ACM, vol. 29, no. 11, pp. 1044-1050, 1986.
[28] C.F. Kemerer, “Software Complexity and Software Maintenance: A Survey of Empirical Research,” Annals of Software Eng., vol. 1, no. 1, pp. 1-22, 1995.
[29] C.F. Kemerer, “Progress, Obstacles, and Opportunities in Software Engineering Economics,” Comm. ACM, vol. 41, no. 8, pp. 63-66, 1998.
[30] C.F. Kemerer and S.A. Slaughter, “An Empirical Approach to Studying Software Evolution,” IEEE Trans. Software Eng., vol. 25, no. 4, pp. 493-509, 1999.
[31] G. Keppel, Design and Analysis: A Researchers Handbook, third ed. Prentice Hall, 1991.
[32] J. Kim and F. Lerch, “Cognitive Process in Logical Design: Comparing Object Oriented Design and Traditional Functional Decomposition Methodologies,” Proc. Conf. Human Factors in Computing Systems (CHI '92), 1992.
[33] B.A. Kitchenham et al., “Preliminary Guidelines for Empirical Research in Software Engineering,” IEEE Trans. Software Eng., vol. 28, no. 8, pp. 721-734, Aug. 2002.
[34] A. Lakhotia, “Rule-Based Approach to Computing Module Cohesion,” Proc. 15th Int'l Conf. Software Eng., 1993.
[35] H. Lee, “Automatic Clustering of Business Processes in Business Systems Planning,” European J. Operational Research, vol. 114, no. 2, pp. 354-362, 1999.
[36] S.G. MacDonell, M.J. Shepperd, and P.J. Sallis, Metrics for Database Systems: An Empirical Study, 1997.
[37] J.H. Mikkola and O. Gassmann, “Managing Modularity of Product Architectures: Toward an Integrated Theory,” IEEE Trans. Eng. Management, vol. 50, no. 2, pp. 204-218, 2003.
[38] K.-H. Moller and D.J. Paulish, “An Empirical Investigation of Software Fault Distribution,” Proc. First Int'l Software Metrics Symp., 1993.
[39] G.J. Myers, Composite/Structured Design. New York: Van Nostrand Reinhold, 1978.
[40] A.J. Offutt, M.J. Harrold, and P. Kolte, “A Software Metric System for Module Coupling,” J. Systems and Software, vol. 20, pp. 295-308, 1993.
[41] D.L. Parnas, “A Technique for Software Module Specification with Examples,” Comm. ACM, vol. 15, no. 5, pp. 330-336, 1972.
[42] S.L. Pfleeger et al., “Status Report on Software Measurement,” IEEE Software, pp. 33-43, Mar./Apr. 1997.
[43] S. Purao and V. Vaishnavi, “Product Metrics for Object-Oriented Systems,” ACM Computing Surveys, vol. 35, no. 2, pp. 191-221, 2003.
[44] V. Rajlich and G.S. Cowan, “Towards Standard Experiments in Program Comprehension,” Proc. Int'l Workshop Program Comprehension, 1997.
[45] H.D. Rombach, “A Controlled Experiment on the Impact of Software Structure on Maintainability,” IEEE Trans. Software Eng., vol. 13, no. 3, pp. 344-354, Mar. 1987.
[46] S.R. Schach et al. “Determining the Distribution of Maintenance Categories: Survey versus Measurement,” Empirical Software Eng., vol. 8, no. 4, pp. 351-365, 2003.
[47] J.E. Smith, “Characterizing Computer Performance with a Single Number,” Comm. ACM, vol. 31, no. 10, pp. 1202-1206, 1988.
[48] W. Stevens, G. Myers, and L. Constantine, “Structured Design,” IBM Systems J., vol. 13, no. 2, pp. 115-139, 1974.
[49] R. Subramanyam and M.S. Krishnan, “Empirical Analysis of CK Metrics for Object-Oriented Design Complexty: Implications for Software Defects,” IEEE Trans. Software Eng., vol. 29, no. 4, pp. 297-310, 2003.
[50] P. Tonella, “Concept Analysis for Module Restructuring,” IEEE Trans. Software Eng., vol. 27, no. 4, pp. 351-363, Apr. 2001.
[51] I. Vessey and R. Weber, “Some Factors Affecting Program Maintenance: An Empirical Study,” Comm. ACM, vol. 26, no. 2, pp. 128-134, 1983.
[52] A. von Mayrhauser and M.A. Vans, “Program Comprehension during Software Maintenance and Evolution,” Computer, vol. 12, pp. 44-55, 1995.
[53] A. von Mayrhauser and M.A. Vans, “Identification of Dynamic Comprehension Processes during Large Scale Maintenance,” IEEE Trans. Software Eng., vol. 22, no. 6, pp. 424-437, June 1996.
[54] R.E. Wood, “Task Complexity: Definition of the Construct,” Organizational Behavior and Human Decision Processes, vol. 37, pp. 60-82, 1986.
[55] E. Yourdon and L.L. Constantine, Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design. Prentice Hall, 1979.

Index Terms:
Index Terms- Software complexity, software structure, Wood's model of task complexity, coupling, cohesion, experiment, software maintenance, software metrics, cognition, procedural programming, object-oriented programming.
David P. Darcy, Chris F. Kemerer, Sandra A. Slaughter, James E. Tomayko, "The Structural Complexity of Software: An Experimental Test," IEEE Transactions on Software Engineering, vol. 31, no. 11, pp. 982-995, Nov. 2005, doi:10.1109/TSE.2005.130
Usage of this product signifies your acceptance of the Terms of Use.