Abstract
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.
Similar content being viewed by others
References
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.
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.
Ball, T. and S.G. Eick (1996), “Software Visualization in the Large,” IEEE Computer 29, 4, 33–43.
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.
Bunge, M. (1977), Treatise on Basic Philosophy, Vol. 3: Ontology I: The Furniture of the World, Reidel, Boston, MA.
Bunge, M. (1979), Treatise on Basic Philosophy, Vol. 4: Ontology II: A World of Systems, Reidel, Boston, MA.
Chidamber, S.R. and C.F. Kemerer (1994), “A Metrics Suite for Object Oriented Design,” IEEE Transactions on Software Engineering 20, 6, 476–493.
Cormen, T.H., C.E. Leiserson, and R.L. Rivest (1990), Introductions to Algorithms, MIT Press.
Duda, R.O. and P.E. Hart (1973), Pattern Classification and Scene Analysis, Wiley, New York.
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.
Gamma, E., R. Helm, R. Johnson, and J. Vlissides (1995), Design Patterns: Elements of Reusable Object Oriented Software, Addison-Wesley, Reading, MA.
Garlan, D. and M. Shaw (1996), Software Architecture: Perspectives on an Emerging Discipline, Vol. 1, Prentice-Hall, Englewood Cliffs, NJ.
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.
Interactive Development Environments (1996), STP Manuals.
Lamb, D.A. (1987), “IDL: Sharing Intermediate Representations,” ACM Transactions on Programming Languages and Systems 9, 3, 297–318.
Lea, D. and C.K. Shank (1994), “ODL: Language Report,” Technical report, NY CASE Center.
Lindvall, M. and K. Sandahl (1996), “Practical Implications of Traceability,” Software: Practice and Experience 26, 10, 1161–1180.
Lorenz, M. and J. Kidd (1994), Object-Oriented Software Metrics, Prentice-Hall, Englewood Cliffs, NJ.
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.
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.
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.
OMG (1991), “The Common Object Request Broker: Architecture and Specification,” Technical Report 91.12.1, Object Management Group.
Rational Software Corporation (1997), Unified Modeling Language, Version 1.0.
Rumbaugh, J., M. Blaha, W. Premerlani, F. Eddy, and W. Lorensen (1991), Object-Oriented Modeling and Design, Prentice-Hall, Englewood Cliffs, NJ.
Schwanke, R. (1991), “An Intelligent Tool for Reengineering Software Modularity,” In Proceedings of the International Conference on Software Engineering, pp. 83–92.
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.
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.
Author information
Authors and Affiliations
Rights 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). https://doi.org/10.1023/A:1018916522804
Issue Date:
DOI: https://doi.org/10.1023/A:1018916522804