This Article 
 Bibliographic References 
 Add to: 
Toward the Reverse Engineering of UML Sequence Diagrams for Distributed Java Software
September 2006 (vol. 32 no. 9)
pp. 642-663
This paper proposes a methodology and instrumentation infrastructure toward the reverse engineering of UML (Unified Modeling Language) sequence diagrams from dynamic analysis. One motivation is, of course, to help people understand the behavior of systems with no (complete) documentation. However, such reverse-engineered dynamic models can also be used for quality assurance purposes. They can, for example, be compared with design sequence diagrams and the conformance of the implementation to the design can thus be verified. Furthermore, discrepancies can also suggest failures in meeting the specifications. Due to size constraints, this paper focuses on the distribution aspects of the methodology we propose. We formally define our approach using metamodels and consistency rules. The instrumentation is based on Aspect-Oriented Programming in order to alleviate the effort overhead usually associated with source code instrumentation. A case study is discussed to demonstrate the applicability of the approach on a concrete example.

[1] P. Avgustinov, A.S. Christensen, L. Hendren, S. Kuzins, J. Lhoták, O. Lhoták, O. de Moor, D. Sereni, G. Sittampalam, and J. Tibble, “Optimising aspectJ,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 117-128, 2005.
[2] N. Bawa, S. Ghosh, “Visualizing Interactions in Distributed Java Applications,” Proc. IEEE Int'l Workshop Program Comprehension, pp. 292-293, 2003.
[3] B. Beizer, Software Testing Techniques, second ed. Van Nostrand Reinhold, 1990.
[4] G. Booch, J. Rumbaugh, and I. Jacobson, The Unified Modeling Language User Guide, second ed. Addison-Wesley, 2005.
[5] Borland: Together, http://www.borland.comtogether, 2003.
[6] L.C. Briand, Y. Labiche, and J. Leduc, “Towards the Reverse Engineering of UML Sequence Diagrams for Distributed, Multithreaded Java Software,” Technical Report SCE-04-04, Carleton Univ., http://www.sce.carleton.caSquall, Sept. 2004.
[7] L.C. Briand, Y. Labiche, and Y. Miao, “Towards the Reverse Engineering of UML Sequence Diagrams,” Proc. IEEE Working Conf. Reverse Eng., pp. 57-66, 2003.
[8] B. Bruegge and A.H. Dutoit, Object-Oriented Software Engineering—Conquering Complex and Changing Systems. Prentice Hall, 2000.
[9] W. De Pauw, E. Jensen, N. Mitchell, G. Sevitsky, J. Vlissides, and J. Yang, “Visualizing the Execution of Java Programs,” Proc. Software Visualization, pp. 151-162, 2002.
[10] G.A. Di Lucca, A.R. Fasolino, P. Tramontana, U. De Carlini, “Abstracting Business Level UML Diagrams from Web Applications,” Proc. IEEE Int'l Workshop Web Site Evolution, pp. 12-19, 2003.
[11] B. Dufour, C. Goard, L. Hendren, O. de Moor, G. Sittampalam, and C. Verbrugge, “Measuring the Dynamic Behavior of AspectJ Programs,” Proc. Ann. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 150-169, 2004.
[12] T. Elrad, R.E. Filman, and A. Bader, “Aspect-Oriented Programming: Introduction,” Comm. ACM, vol. 44, no. 10, pp. 29-32, 2001.
[13] H.-E. Eriksson and M. Penker, UML Toolkit. Wiley, 1998.
[14] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns—Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
[15] C. Ghezzi, M. Jazayeri, and D. Mandrioli, Fundamentals of Software Engineering. Prentice Hall Int'l Ed., 1991.
[16] J.D. Gradecki and N. Lesiecki, Mastering AspectJ—Aspect-Oriented Programming in Java. Wiley, 2003.
[17] Y.-G. Guéhéneuc and T. Ziadi, “Automated Reverse-Engineering of UML v2.0 Dynamic Models,” Proc. ECOOP Workshop Object-Oriented Reengineering, 2005.
[18] R. Hofman and U. Hilgers, “Theory and Tool for Estimating Global Time in Parallel and Distributed Systems,” Proc. IEEE Euromicro Workshop Parallel and Distributed Processing, pp. 173-179, 1998.
[19] IBM:Rational Test Real-Time, testrealtime/, 2005.
[20] D.F. Jerding, J.T. Stasko, and T. Ball, “Visualizing Interactions in Program Executions,” Proc. ACM Int'l Conf. Software Eng. (ICSE), pp. 360-370, 1997.
[21] R. Kollmann and M. Gogolla, “Capturing Dynamic Program Behavior with UML Collaboration Diagrams,” Proc. IEEE European Conf. Software Maintenance and Reeng., pp. 58-67, 2001.
[22] R. Kollmann, P. Selonen, E. Stroulia, T. Systa, and A. Zundorf, “A Study on the Current State of the Art in Tool-Supported UML-Based Static Reverse Engineering,” Proc. IEEE Working Conf. Reverse Eng., pp. 22-32, 2002.
[23] D. Kortenkamp, R. Simmons, T. Milam, and J.L. Fernandez, “A Suite of Tools for Debugging Distributed Autonomous Systems,” Formal Methods and Systems Design J., vol. 24, no. 2, pp. 157-188, 2004.
[24] D. Mills, “RFC 2030—Simple Network Time Protocol (SNTP) Version 4 for IPv4, IPv6 and OSI,”, 2005.
[25] J. Moe and D.A. Carr, “Using Execution Trace Data to Improve Distributed Systems,” Software—Practice and Experience, vol. 32, no. 9, pp. 889-906, 2002.
[26] M. Nishizawa, S. Chiba, and M. Tatsubori, “Remote Pointcut—A Language Construct for Distributed AOP,” Proc. ACM Int'l Aspect Oriented Software Development, pp. 7-15, 2004.
[27] R. Oechsle and T. Schmitt, “JAVAVIS: Automatic Program Visualization with Object and Sequence Diagrams Using the Java Debug Interface (JDI),” Software Visualization, pp. 176-190, 2002.
[28] “UML 2.0 Superstructure Specification,” Final Adopted Specification ptc/03-08-02, Object Management Group, 2003.
[29] T. Pender, UML Bible. Wiley, 2003.
[30] M. Raynal and M. Signhal, “Logical Time: A Way to Capture Causality in Distributed Systems,” technical report, IRISA, Jan. 1995.
[31] T. Richner and S. Ducasse, “Using Dynamic Information for the Iterative Recovery of Collaborations and Roles,” Proc. IEEE Int'l Conf. Software Maintenance (ICSM), pp. 34-43, 2002.
[32] A. Rountev and B.H. Connell, “Object Naming Analysis for Reverse-Engineered Sequence Diagrams,” Proc. IEEE/ACM Int'l Conf. Software Eng., pp. 254-263, 2005.
[33] A. Rountev, O. Volgin, and M. Reddoch, “Static Control-Flow Analysis for Reverse Engineering UML Sequence Diagrams,” Proc. ACM Workshop Program Analysis for Software Tools and Eng., pp. 96-102, 2005.
[34] M. Salah and S. Mancoridis, “Toward an Environment for Comprehending Distributed Systems,” Proc. IEEE Working Conf. Reverse Eng., pp. 238-247, 2003.
[35] W. Schütz, The Testability of Distributed Real-Time Systems. Kluwer Academic, 1993.
[36] T. Sintes, “Singletons with Needles and Thread,” http://www. 2002-0102-qa-0125- singleton4.html, 2004.
[37] T. Systa, K. Koskimies, and H. Muller, “Shimba—An Environment for Reverse Engineering Java Software Systems,” Software—Practice and Experience, vol. 31, no. 4, pp. 371-394, 2001.
[38] Y. Terashima, I. Imai, Y. Shimostuma, F. Sato, and T. Mizuno, “A Proposal of Monitoring and Testing for Distributed Object Oriented Systems,” Electronics and Comm. in Japan, Part 1 (Comm.), vol. 86, no. 10, pp. 33-44, 2003.
[39] P. Tonella and A. Potrich, “Reverse Engineering of the Interaction Diagrams from C++ Code,” Proc. Int'l Conf. Software Maintenance, pp. 159-168, 2003.
[40] R.J. Walker, G.C. Murphy, B. Freeman-Benson, D. Wright, D. Swanson, and J. Isaak, “Visualizing Dynamic Software System Information through High-Level Models,” Proc. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pp. 271-283, 1998.
[41] J. Warmer and A. Kleppe, The Object Constraint Language, second ed. Addison Wesley, 2003.

Index Terms:
UML, sequence diagram, reverse engineering, distribution, RMI, AspectJ, OCL.
Lionel C. Briand, Yvan Labiche, Johanne Leduc, "Toward the Reverse Engineering of UML Sequence Diagrams for Distributed Java Software," IEEE Transactions on Software Engineering, vol. 32, no. 9, pp. 642-663, Sept. 2006, doi:10.1109/TSE.2006.96
Usage of this product signifies your acceptance of the Terms of Use.