Abstract
Comparing software artifacts to identify their similarities and differences is a task ubiquitous in software engineering. Logical-design comparison is particularly interesting, since it can serve multiple purposes. When comparing the as-intended vs. the as-implemented designs, one can evaluate implementation-to-design conformance. When comparing newer code versions against earlier ones, one may better understand the development process of the system, recognize the refactorings it has gone through and the qualities motivating them, and infer high-order patterns in its history. Given its importance, design differencing has been the subject of much research and a variety of algorithms have been developed to compare different types of software artifacts, in support of a variety of different software-engineering activities. Our team has developed two different algorithms for differencing logical-design models of object-oriented software. Both algorithms adopt a similar conceptual model of UML logical designs (as containment trees); however, one of them is heuristic whereas the other relies on a generic tree-differencing algorithm. In this paper, we describe the two approaches and we compare them on multiple versions of an open-source software system.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Dulucq, S., Tichit, L.: RNA Secondary structure comparison: exact analysis of the Zhang–Shasha tree edit algorithm. Journal Theoretical Computer Science 306(13), 471–484 (2003)
Comparing and merging UML models in IBM Rational Software Architect, http://www-128.ibm.com/developerworks/rational/library/05/712_comp/
Egyed, A.: Scalable consistency checking between diagrams - The VIEWINTEGRA approach. In: Proceedings of the 16th International Conference on Automated Software Engineering, pp. 387–390 (2001)
Kim, M., Notkin, D.: Discovering and Representing Systematic Code Changes. In: Proceedings of the 31st International Conference on Software Engineering, pp. 309–319 (2009)
Kim, M., Notkin, D., Grossman, D.: Automatic Inference of Structural Changes for Matching Across Program Versions. In: Proceedings of the 29th International Conference on Software Engineering, pp. 333–343 (2007)
Levenshtein, V.: Binary codes capable of correcting deletions, insertions and reversals. Soviet Physics Doklady 10(8), 707–710 (1966)
Mikhaiel, R., Lin, G., Stroulia, E.: Simplicity in RNA Secondary Structure Alignment: Towards biologically plausible alignments. In: Post Proceedings of the IEEE 6th Symposium on Bioinformatics and Bioengineering, pp. 149–158 (2006)
Mikhaiel, R., Stroulia, E.: Examining Usage Protocols for Service Discovery. In: Dan, A., Lamersdorf, W. (eds.) ICSOC 2006. LNCS, vol. 4294, pp. 496–502. Springer, Heidelberg (2006)
Mikhaiel, R., Stroulia, E.: Accurate and Efficient HTML Differencing. In: Proceedings of the 13th International Workshop on Software Technology and Engineering Practice, pp. 163–172 (2005)
Mikhaiel, R.: Comparing XML Documents as Reference-aware Labeled Ordered Trees, PhD Thesis, Computing Science Department, University of Alberta (2011)
Ohst, D., Welle, M., Kelter, U.: Difference tools for analysis and design documents. In: Proceedings of the 19th International Conference on Software Maintenance, pp. 13–22 (2003)
Schofield, C., Tansey, B., Xing, Z., Stroulia, E.: Digging the Development Dust for Refactorings. In: Proceedings of the 14th International Conference on Program Comprehension, pp. 23–34 (2006)
Selonen, P., Koskimies, K., Sakkinen, M.: Transformations between UML diagrams. Journal of Database Management 14(3), 37–55 (2003)
Tsantalis, N., Negara, N., Stroulia, E.: WebDiff: A Generic Differencing Service for Software Artifacts. In: Proceedings of the 27th IEEE International Conference on Software Maintenance, pp. 586–589 (2011)
Wagner, R.A., Fischer, M.J.: The string-to-string correction problem. Journal of the ACM 21(1), 168–173 (1974)
Xing, Z., Stroulia, E.: Understanding Phases and Styles of Object-Oriented Systems’ Evolution. In: Proceedings of the 20th International Conference on Software Maintenance, pp. 242–251 (2004)
Xing, Z., Stroulia, E.: Understanding Class Evolution in Object-Oriented Software. In: Proceedings of the 12th International Workshop on Program Comprehension, pp. 34–45 (2004)
Xing, Z., Stroulia, E.: Data-mining in Support of Detecting Class Co-evolution. In: Proceedings of the 16th International Conference on Software Engineering & Knowledge Engineering, pp. 123–128 (2004)
Xing, Z., Stroulia, E.: UMLDiff: an algorithm for object-oriented design differencing. In: Proceedings of the 20th IEEE/ACM International Conference on Automated Software Engineering, pp. 54–65 (2005)
Xing, Z., Stroulia, E.: Towards Experience-Based Mentoring of Evolutionary Development. In: Proceedings of the 21st IEEE International Conference on Software Maintenance, pp. 621–624 (2005)
Xing, Z., Stroulia, E.: Analyzing the Evolutionary History of the Logical Design of Object-Oriented Software. IEEE Trans. Software. Eng. 31(10), 850–868 (2005)
Xing, Z., Stroulia, E.: Refactoring Practice: How it is and How it Should be Supported - An Eclipse Case Study. In: Proceedings of the 22nd IEEE International Conference on Software Maintenance, pp. 458–468 (2006)
Xing, Z., Stroulia, E.: Understanding the Evolution and Co-evolution of Classes in Object-oriented Systems. International Journal of Software Engineering and Knowledge Engineering 16(1), 23–52 (2006)
Xing, Z., Stroulia, E.: Refactoring Detection based on UMLDiff Change-Facts Queries. In: Proceedings of the 13th Working Conference on Reverse Engineering, pp. 263–274 (2006)
Xing, Z., Stroulia, E.: Differencing logical UML models. Autom. Softw. Eng. 14(2), 215–259 (2007)
Xing, Z., Stroulia, E.: API-Evolution Support with Diff-CatchUp. IEEE Trans. Software Eng. 33(12), 818–836 (2007)
Xing, Z., Stroulia, E.: The JDEvAn tool suite in support of object-oriented evolutionary development. In: Proceedings of the 30th International Conference on Software Engineering (ICSE 2008 Companion), pp. 951–952 (2008)
Xing, Z.: Supporting Object-Oriented Evolutionary Development by Design Evolution Analysis, PhD Thesis, Computing Science Department, University of Alberta (2008)
Xing, Z.: Model Comparison with GenericDiff. In: Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering, pp. 135–138 (2010)
Zhang, K., Shasha, D.: Simple fast algorithm for the editing distance between trees and related problems. SIAM Journal on Computing 18(6), 1245–1262 (1989)
Fokaefs, M., Mikhaiel, R., Tsantalis, N., Stroulia, E., Lau, A.: An Empirical Study on Web Service Evolution. In: Proceedings of the IEEE International Conference on Web Services, ICWS 2011, pp. 49–56 (2011)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Mikhaiel, R., Tsantalis, N., Negara, N., Stroulia, E., Xing, Z. (2013). Differencing UML Models: A Domain-Specific vs. a Domain-Agnostic Method. In: Lämmel, R., Saraiva, J., Visser, J. (eds) Generative and Transformational Techniques in Software Engineering IV. GTTSE 2011. Lecture Notes in Computer Science, vol 7680. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-35992-7_4
Download citation
DOI: https://doi.org/10.1007/978-3-642-35992-7_4
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-35991-0
Online ISBN: 978-3-642-35992-7
eBook Packages: Computer ScienceComputer Science (R0)