Design‐code traceability for object‐oriented systems


Traceability is a key issue to ensure consistency among software artifacts of subsequent phases of the development cycle. However, few works have so far addressed the theme of tracing object oriented (OO) design into its implementation and evolving it. This paper presents an approach to checking the compliance of OO design with respect to source code and support its evolution. The process works on design artifacts expressed in the OMT (Object Modeling Technique) notation and accepts C++ source code. It recovers an “as is” design from the code, compares the recovered design with the actual design and helps the user to deal with inconsistencies. The recovery process exploits the edit distance computation and the maximum match algorithm to determine traceability links between design and code. The output is a similarity measure associated to design‐code class pairs, which can be classified as matched and unmatched by means of a maximum likelihood threshold. A graphic display of the design with different green levels associated to different levels of match and red for the unmatched classes is provided as a support to update the design and improve its traceability to the code.

This is a preview of subscription content, access via your institution.


  1. Antoniol, G., R. Fiutem, and L. Cristoforetti (1998), “Using Metrics to Identify Design Patterns in Object-Oriented Software,” Proc. of the Fifth International Symposium on Software Metrics-METRICS'98, pp. 23–34.

  2. Antoniol, G., A. Potrich, P. Tonella, and R. Fiutem (1999), “Evolving Object Oriented Design to Improve Code Traceability,” In Proc. of the International Workshop on Program Comprehension, Pittsburgh, PA, pp. 151–160.

  3. Ball, T. and S.G. Eick (1996), “Software Visualization in the Large,” IEEE Computer 29, 4, 33–43.

    Google Scholar 

  4. Baxter, I.D. and C.W. Pidgeon (1997), “Software Change Through Design Maintenance,” In Proc. of the International Conference on Software Maintenance, Bari, Italy, pp. 250–259.

  5. Bunge, M. (1977), Treatise on Basic Philosophy, Vol. 3: Ontology I: The Furniture of the World, Reidel, Boston, MA.

    Google Scholar 

  6. Bunge, M. (1979), Treatise on Basic Philosophy, Vol. 4: Ontology II: A World of Systems, Reidel, Boston, MA.

    Google Scholar 

  7. Chidamber, S.R. and C.F. Kemerer (1994), “A Metrics Suite for Object Oriented Design,” IEEE Transactions on Software Engineering 20, 6, 476–493.

    Article  Google Scholar 

  8. Cormen, T.H., C.E. Leiserson, and R.L. Rivest (1990), Introductions to Algorithms, MIT Press.

  9. Duda, R.O. and P.E. Hart (1973), Pattern Classification and Scene Analysis, Wiley, New York.

    Google Scholar 

  10. Fiutem, R. and G. Antoniol (1998), “Identifying Design-Code Inconsistencies in Object-Oriented Software: A Case Study,” In Proceedings of the International Conference on Software Maintenance, Bethesda, Maryland, pp. 94–102.

  11. Gamma, E., R. Helm, R. Johnson, and J. Vlissides (1995), Design Patterns: Elements of Reusable Object Oriented Software, Addison-Wesley, Reading, MA.

    Google Scholar 

  12. Garlan, D. and M. Shaw (1996), Software Architecture: Perspectives on an Emerging Discipline, Vol. 1, Prentice-Hall, Englewood Cliffs, NJ.

    Google Scholar 

  13. Holt, R. and J.Y. Pak (1996), “GASE: Visualizing Software Evolution-in-the-Large,” In Proceedings of the Working Conference on Reverse Engineering, Monterey, pp. 163–166.

  14. Interactive Development Environments (1996), STP Manuals.

  15. Lamb, D.A. (1987), “IDL: Sharing Intermediate Representations,” ACM Transactions on Programming Languages and Systems 9, 3, 297–318.

    Article  Google Scholar 

  16. Lea, D. and C.K. Shank (1994), “ODL: Language Report,” Technical report, NY CASE Center.

  17. Lindvall, M. and K. Sandahl (1996), “Practical Implications of Traceability,” Software: Practice and Experience 26, 10, 1161–1180.

    Article  Google Scholar 

  18. Lorenz, M. and J. Kidd (1994), Object-Oriented Software Metrics, Prentice-Hall, Englewood Cliffs, NJ.

    Google Scholar 

  19. Luckham, D., F. von Henke, B. Krieg-Bruckner, and O. Owe (1987), “Anna, A Language for Annotating Ada Programs: Reference Manual,” In Lecture Notes on Computer Science, Vol. 260, Springer-Verlag, Berlin, Germany.

    Google Scholar 

  20. Meyers, S., C.K. Duby, and S.P. Reiss (1993), “Constraining the Structure and Style of Object-Oriented Programs,” Technical Report CS-93-12, Brown University.

  21. Murphy, G.C., D. Notkin, and K. Sullivan (1995), “Software Reflexion Models: Bridging the Gap Between Source and High-Level Models,” In Proceedings of the Third ACM Symposium on the Foundations of Software Engineering, pp. 18–28.

  22. OMG (1991), “The Common Object Request Broker: Architecture and Specification,” Technical Report 91.12.1, Object Management Group.

  23. Rational Software Corporation (1997), Unified Modeling Language, Version 1.0.

  24. Rumbaugh, J., M. Blaha, W. Premerlani, F. Eddy, and W. Lorensen (1991), Object-Oriented Modeling and Design, Prentice-Hall, Englewood Cliffs, NJ.

    Google Scholar 

  25. Schwanke, R. (1991), “An Intelligent Tool for Reengineering Software Modularity,” In Proceedings of the International Conference on Software Engineering, pp. 83–92.

  26. Sefika, M., A. Sane, and R.H. Campbell (1996), “Monitoring Compliance of a Software System with its High-Level Design Models,” In Proceedings of the International Conference on Software Engineering, pp. 387–396.

  27. Woods, S., S.J. Carriere, and R. Kazman (1999), “A Semantic Foundation for Architectural Reengineering and Interchange,” In Proc. of the International Conference on Software Maintenance, Oxford, England.

Download references

Author information



Rights and permissions

Reprints and Permissions

About this article

Cite this article

Antoniol, G., Caprile, B., Potrich, A. et al. Design‐code traceability for object‐oriented systems. Annals of Software Engineering 9, 35–58 (2000).

Download citation


  • Class Diagram
  • Edit Distance
  • Traceability Link
  • Object Oriented System
  • Class Pair