Abstract
As a recognized discipline, software engineering traces its roots back to the 1968 NATO conference where the term was first used extensively to highlight the need for an engineering approach to the development of software. In the 30 years since that first “software engineering” conference, significant attempts have been made to improve the overall effectiveness of the software development process, and thus reduce the frequency and severity of software project failures. A major part of this improvement effort has been the attempt to develop quantitative measures which can be used to more accurately describe and better understand and manage the software development life cycle. Thus, many software metrics and models have been introduced during this period. In this article, we briefly trace the history of the development of software metrics and models, and then summarize the current state of the field. For discussion purposes, this entire development period is then arbitrarily divided into an Introductory Period (1971–1985), Growth Period (1985–1997) and the Current Period (1997–?). The development of metrics during each of these periods is then related to the treatment of software metrics and models in software engineering curricula during that same period. Our conclusion is that software engineering curricula have indeed reflected the state of software engineering as the work in software metrics and models has progressed. Furthermore, software engineering curricula of the future should reflect the relatively mature state that software metrics have attained, by covering the basic concepts of metrics in appropriate core courses, and more advanced metrics topics in a specialized, elective metrics course.
Similar content being viewed by others
References
Akiyama, F. (1971), “An Example of Software System Debugging,” Information Processing 71, 353–358.
Albrecht, A.J. (1979), “Measuring Application Development Productivity,” In Proceedings of the IBM Joint SHARE/GUIDE Symposium, pp. 83–92.
Albrecht, A.J. and J. Gaffney (1983), “Software Function, Source Lines of Code and Development Effort Prediction: A Software Science Validation,” IEEE Transactions on Software Engineering 9, 6, 639–647.
Baker, F. (1972), “Chief Programmer Team Management of Production Programming,” IBM Systems Journal 11, 1, 56–73.
Basili, V. and D. Hutchens (1986), “Experimentation in Software Engineering,” IEEE Transactions on Software Engineering 12, 7, 733–738.
Basili, V. and B. Perricone (1984), “Software Errors and Complexity: An Empirical Investigation,” Communications of the ACM 27, 1, 42–52.
Basili, V. and D. Weiss (1984), “A Methodology for Collecting Valid Software Engineering Data,” IEEE Transactions on Software Engineering 10, 3, 728–738.
Beizer, B. (1997), “Cleanroom Process Model: A Critical Examination,” IEEE Software 14, 2, 14–16.
Boehm, B. (1981), Software Engineering Economics, Prentice-Hall, Englewood Cliffs, NJ.
Boehm, B. (1991), “Software Risk Management: Principles and Practices,” IEEE Software 8, 1, 32–41.
Boehm, B. et al. (1996), “The COCOMO 2.0 Software Cost Estimation Model – A Status Report,” American Programmer, July, 2–17.
Booch, G. (1994), Object-Oriented Analysis and Design, 2nd Edition, Benjamin Cummings.
Briand, L.C., S. Morasca and V. Basili (1996), “Property-Based Software Engineering Measurement,” IEEE Transactions on Software Engineering, January, 68–86.
Chidamber, S. and C. Kemerer (1994), “A Metrics Suite for Object Oriented Design,” IEEE Transactions on Software Engineering 20, June, 476–493.
Coad, P. and E. Yourdon (1991), Object-Oriented Analysis, 2nd Edition, Prentice-Hall, Englewood Cliffs, NJ.
Comer, J.R. and D. Rodjak (1987), “Adapting to Changing Needs: A New Perspective on Software Engineering Education at Texas Christian University,” In Software Engineering Education: The Educational Needs of the Software Community, N. Gibbs and R. Fairley, Eds., Springer-Verlag.
Conte, S., H. Dunsmore and V. Shen (1986), Software Engineering Metrics and Models, Benjamin Cummings.
Coulter, N. (1983), “Software Science and Cognitive Psychology,” IEEE Transactions on Software Engineering 9, 2, 166–171.
Curtis, B., S. Sheppard and P. Milliman (1979), “Third-Time Charm: Stronger Prediction of Programmer Performance by Software Complexity Metrics,” In Proceedings of 4th IEEE International Conference on Software Engineering, pp. 356–360.
Curtis, B. (1980), “Measurement and Experimentation in Software Engineering,” Proceedings of the IEEE 68, 9, 1144–1147.
Davis, F.D., R.P. Bagozzi and P.R. Warshaw (1989), “User Acceptance of Computer Technology: A Comparison of Two Theoretical Models,” Management Science 35, 8, 982–1003.
de Champeaux, D. (1997), Object-Oriented Development Process and Metrics, Prentice-Hall, Englewood Cliffs, NJ.
DeMarco, T. (1979), Structured Analysis and System Specification, Prentice-Hall, Englewood Cliffs, NJ.
DeMarco, T. (1982), Controlling Software Projects: Management, Measurement and Estimation, Yourdon Press.
Diaz, M. and J. Sligo (1997), “How Software Process Improvement Helped Motorola,” IEEE Software, September/October, 75–81.
Dijkstra, E., O. Dahl and C. Hoare (1972), Structured Programming, Academic Press, New York.
Elshoff, J. (1976), “Measuring Commercial PL/I Programs Using Halstead's Criteria,” ACM SIGPLAN Notices 7, 5, 38–46.
Fenton, N. (1994), “Software Measurement: A Necessary Scientific Basis,” IEEE Transactions on Software Engineering 20, March, 199–206.
Fenton, N. and S. Pfleeger (1997), Software Metrics: A Rigorous & Practical Approach, 2nd Edition, PWS Publishing Co.
Fitzsimmons, A. and T. Love (1978), “A Review and Evaluation of Software Science,” ACM Computing Surveys 10, 1, 3–18.
Furey, S. (1997), “Why We Should Use Function Points,” IEEE Software 14, 2, 28–30.
Gibbs, N. and R. Fairley, Eds. (1987), Software Engineering Education: The Educational Needs of the Software Community, Springer-Verlag.
Gibbs, W.W. (1994), “Software's Chronic Crisis,” Scientific American 271, September, 86–95.
Goel, A. (1985), “Software Reliability Models: Assumptions, Limitations and Applicability,” IEEE Transactions on Software Engineering 11, December, 1411–1423.
Grady, R. and D. Caswell (1987), Software Metrics: Establishing a Company-Wide Program, Prentice-Hall, Englewood Cliffs, NJ.
Grady, R. (1992), Practical Software Metrics for Project Management and Process Improvement, Prentice-Hall, Englewood Cliffs, NJ.
Grady, R. (1994), “Successfully Applying Software Metrics,” IEEE Computer 27, 9, 18–25.
Haley, T.J. (1996), “Software Process Improvement at Raytheon,” IEEE Software 13, 6, 33–41.
Hall, T. and N. Fenton (1997), “Implementing Effective Software Metrics Programs,” IEEE Software 14, 2, 55–65.
Halstead, M. (1977), Elements of Software Science, Elsevier, North-Holland.
Henry, S. and D. Kafura (1981), “Software Structure Metrics Based on Information Flow,” IEEE Transactions on Software Engineering 7, 5, 510–518.
Henry, S. and D. Kafura (1984), “The Evaluation of Software Systems Structure Using Quantitative Software Metrics,” Software Practice and Experience 14, 6, 561–573.
Humphrey, W. (1989), Managing The Software Process, Addison-Wesley, Reading, MA.
Humphrey, W. (1995), A Discipline for Software Engineering, Addison-Wesley, Reading, MA.
IEEE (1997), Standards Collection Software Engineering, IEEE Pub., see esp., Standards 982.1-1988 IEEE Standard Dictionary of Measures to Produce Reliable Software (ANSI), 982.2-1988 IEEE Guide for the Use of IEEE Standard Dictionary of Measures to Produce Reliable Software (ANSI), 1045-1992 IEEE Standard for Software Productivity Metrics (ANSI), and 1061-1992 IEEE Standard for Software Quality Metrics Methodology (ANSI).
IFPUG (1992), Function Point Counting Practices Manual: Release 3.3, International Function Point User's Group.
Jackson, M. (1975), Principles of Program Design, Academic Press, New York.
Jackson, M. (1983), System Development, Prentice-Hall, Englewood Cliffs, NJ.
Jacobson, I. (1992), Object-Oriented Software Engineering, Addison-Wesley, Reading, MA.
Jensen, R. (1984), “A Comparison of the Jensen and COCOMO Schedule and Cost Estimation Models,” In Proceedings of the International Society of Parametric Analysis, pp. 96–106.
Jones, C. (1986), Programming Productivity, McGraw-Hill.
Jones, C. (1994), “Software Metrics: Good, Bad, and Missing,” IEEE Computer 27, 9, 98–100.
Jones, C. (1996), Applied Software Measurement, McGraw-Hill.
Kemerer, C. (1987), “An Empirical Validation of Software Cost Estimation Models,” Communications of the ACM 30, 5, 416–429.
Kitchenham, B. (1997), “The Problem with Function Points,” IEEE Software 14, 2, 29–31.
Laranjeira, L. (1990), “Software Size Estimation of Object-Oriented Systems,” IEEE Transactions on Software Engineering 16, 5, 510–522.
Lind, R. and K. Vairavan (1989), “An Experimental Investigation of Software Metrics and Their Relationship to Software Development Effort,” IEEE Transactions on Software Engineering 15, 5, 649–653.
Linger, R. (1994), “Cleanroom Process Model,” IEEE Software, March, 50–58.
McCabe, T. (1976), “A Complexity Measure,” IEEE Transactions on Software Engineering 2, 4, 308–320.
McCabe, T. and C. Butler (1989), “Design Complexity Measurement and Testing,” Communications of the ACM 32, December, 1415–1425.
Mills, E. (1987), “The Master of Software Engineering Program at Seattle University after Six Years,” In Software Engineering Education: The Educational Needs of the Software Community, N. Gibbs and R. Fairley, Eds., Springer-Verlag.
Mills, E. (1988), “Software Metrics, Curriculum Module SEI-CM-12-1.1,” Software Engineering Institute, Carnegie-Mellon University.
Mills, H., M. Dyer and R. Linger (1987), “Cleanroom Software Engineering,” IEEE Software, September, 19–24.
Mohanty, S. (1981), “Software Cost Estimation: Present and Future,” Software Practice and Experience 11, 103–121.
Munson, J. and T. Khoshgoftaar (1989), “The Dimensionality of Program Complexity,” In Proceedings of the 11th International Conference on Software Engineering.
Musa, J., A. Iannino and K. Okumoto (1987), Software Reliability: Measurement, Prediction, Application, McGraw-Hill.
Naur, P. and B. Randell, Eds. (1969), Software Engineering: Report on NATO Conference, Garmisch, Germany, October 7–10, 1968.
Offen, R. and R. Jeffery (1997), “Establishing Software Measurement Programs,” IEEE Software 14, 2 March/April, 45–53.
Paulk, M., B. Curtis, M. Chrissis and C. Weber (1993), “Capability Maturity Model for Software,” Version 1.1, Software Engineering Institute Technical Report, SEI-CMU-93-TR-2, Software Engineering Institute, Pittsburgh, PA.
Pfleeger, S.L. and C.L. McGowan (1990), “Software Metrics in a Process Maturity Framework,” Journal of Systems and Software, July, 255–261.
Pfleeger, S. L., R. Jeffery, B. Curtis and B. Kitchenham (1997), “Status Report on Software Measurement,” IEEE Software 14, 2, 33–43.
Poulin, J.S (1997a), “Reuse Metrics Deserve a Warning Label: The Pitfalls of Measuring Software Reuse,” Crosstalk: The Journal of Defense Software Engineering, July, 22–24.
Poulin, J.S. (1997b), Measuring Software Reuse: Principles, Practices and Economic Models, Addison-Wesley, Reading, MA.
Prather, R. (1984), “An Axiomatic Theory of Software Complexity Metrics,” Computer Journal 27, 4, 340–347.
Pressman, R. (1997), Software Engineering: A Practitioner's Approach, 4th Edition, McGraw-Hill.
Putnam, L. and W. Myers (1997), Industrial Strength Software: Effective Management Using Measurement, IEEE Computer Society, Los Alamitos, CA.
Shen, V., S. Conte and H. Dunsmore (1983), “Software Science Revisited: A Critical Analysis of the Theory and Its Empirical Support,” IEEE Transactions on Software Engineering 9, 2, 155–165.
Shepperd, M. (1993), Software Engineering Metrics, Vol. I: Measures and Validations, McGraw-Hill.
Stevens, W., G. Myers and L. Constantine (1974), “Structured Design,” IBM Systems Journal 13, 2, 115–139.
Takahashi, R. (1997), “Software Quality Classification Model Based on McCabe's Complexity Measure,” Journal of Systems and Software 38, 61–69.
Tillmann, G. (1993), A Practical Guide to Logical Data Modeling, McGraw-Hill.
Walston, C. and C. Felix (1977), “A Method of Programming Measurement and Estimation,” IBM System Journal 16, 1, 54–73.
Weller, E. (1994), “Using Metrics to Manage Software Projects,” IEEE Computer 27, 9, 27–33.
Weinberg, G. (1993), Quality Software Management, Vol. 2, First-Order Measurement, Dorset House Pub.
Weyuker, E. (1988), “Evaluating Software Complexity Measures,” IEEE Transactions on Software Engineering 14, 9, 1357–1365.
Wolverton, R. (1974), “The Cost of Developing Large-Scale Software,” IEEE Transactions on Computers 23, 6, 615–636.
Yourdon, E. (1997), Death March: The Complete Software Developer's Guide to Surviving “Mission Impossible” Projects, Prentice-Hall, Englewood Cliffs, NJ.
Zuse, H. (1991), Software Complexity: Measures and Methods, de Gruyter.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Mills, E.E. Metrics in the software engineering curriculum. Annals of Software Engineering 6, 181–200 (1998). https://doi.org/10.1023/A:1018909531948
Issue Date:
DOI: https://doi.org/10.1023/A:1018909531948