Measuring Object-Oriented System Complexity Steven D. Sheetz Graduate School of Business University of Colorado Business Building, Room 119, Campus Box 419 Boulder, Colorado 80309-0419 SHEETZ_S@CUBLDR.COLORADO.EDU (303) 492-4405 David P. Tegarden Management Information Systems College of Business Administration University of Denver Denver, Colorado 80208 DTEGARDE@DUCAIR/dtegarde@du.edu (303) 871-4340 David E. Monarchi Graduate School of Business University of Colorado Business Building, Room 454, Campus Box 419 Boulder, Colorado 80309-0419 MONARCHI_D@CUBLDR.COLORADO.EDU (303) 492-7584 ABSTRACT This paper addresses Object-Oriented (OO) system complexity at the application, object, method, and variable levels. At each level measures are proposed to account for the cohesion and coupling aspects of the system. OO system complexity at each level is presented as a function of the measurable characteristics such as fan-in, fan-out, number of I/O variables, fan-up, fan-down, and polymorphism. Each measure is defined with adherence to the principles that measures must be intuitive and that they must be applicable to all phases of the OO development life cycle. I. INTRODUCTION Complexity is one of the major factors in the cost of developing and maintaining software. Measurement of software complexity has been of great interest to researchers in software engineering for some time. One of the key reasons for this interest is the potential to use the measurements in procedures to control costs of a system over its lifetime. According to Coad and Yourdon (1991) , A good design is one that balances trade-offs to minimize the total cost of the system over its entire lifetime. We propose that software complexity measures are necessary to accomplish two goals necessary to make trade-offs and to reduce costs over the lifetime of a system. These goals are: