Software Quality Journal

, Volume 26, Issue 2, pp 249–271 | Cite as

Round-trip engineering with the Two-Tier Programming Toolkit

  • A.H. EdenEmail author
  • E. Gasparis
  • J. Nicholson
  • R. Kazman


A major impediment to the long-term quality of large and complex programs is inconsistency between design and implementation. Conflicts between intent and execution are common because detecting them is laborious, error-prone, and poorly supported, and because the costs of continuously maintaining design documents outweigh immediate gains. A growing inconsistency between design and implementation results in software that is unpredictable and poorly understood. Round-trip engineering tools support an iterative process of detecting conflicts and resolving them by changing either the design or the implementation. We describe a Toolkit which supports a round-trip engineering of native Java programs without interfering with any existing practices, tools, or development environments, thereby posing a minimal barrier on adoption. The Toolkit includes a user-guided software visualization and design recovery tool, which generates Codecharts from source code. A “round-trip” process is possible because Codecharts visualizing source code can be edited to reflect the intended design, and the Verifier can detect conflicts between the intended and as-implemented design. We demonstrate each stage in this process, showing how the Toolkit effectively helps to close the gap between design and implementation, recreate design documentation, and maintaining consistency between intent and execution.


Design verification Tool support Software evolution Java Codecharts 



The authors wish to thank Raymond Turner for extending considerable support throughout this research; the Research Promotion Fund, the Knowledge Transfer Innovation Fund, University of Essex, and the EPSRC for funding various parts of this project. We also wish to thank Olumide Iyaniwura, Gu Bo, Maple Tao Liang, Dimitrious Fragkos, Omololu Ayodeji, Xu Yi, and Christina Maniati for their contributions to this research.


  1. Alzahrani, A. A. H. (2015). Modelling and automated detection of design patterns using Codecharts with applications to security patterns (draft). Colchester, Essex: University of Essex.Google Scholar
  2. Alzahrani, A. A. H., Eden, A. H., & Yafi, M. Z. (2015). Conformance checking of single access point pattern in JAAS using Codecharts. In the world congress on information technology and computer applications. Tunisia: Hammamet.Google Scholar
  3. Anon. 2006. Java 3D, Available at:
  4. Assmann, U. (2003). Automatic roundtrip engineering. Electronic Notes in Theoretical Computer Science, 82(5), 33–41.CrossRefGoogle Scholar
  5. Barringer, H. et al. (2004). Rule-based runtime verification. In B. Steffen & G. Levi, eds. Verification, Model Checking, and Abstract Interpretation. Lecture Notes in Computer Science. Springer Berlin / Heidelberg, pp. 277–306. Available at: [Accessed October 29, 2012].
  6. Biggerstaff, T. J. (1989). Design recovery for maintenance and reuse. IEEE Computer, 22(7), 36–49.CrossRefGoogle Scholar
  7. Chen, F., & Roşu, G. (2007). Mop: an efficient and generic runtime verification framework. SIGPLAN Not., 42(10), 569–588.CrossRefGoogle Scholar
  8. Chikofsky, E. J., & Cross, J. H. (1990). Reverse engineering and design recovery: a taxonomy. IEEE Software, 7(1), 13–17.CrossRefGoogle Scholar
  9. Demeyer, S. et al. (1999). Why unified is not universal: UML shortcomings for coping with round-trip engineering. In Proc. 2nd Int’l Conf. on the Unified Modeling Language. Lecture Notes in Computer Science. pp. 630–645.Google Scholar
  10. Eden, A. H., & Nicholson, J. (2011). Codecharts: roadmaps and blueprints for object-oriented programs. Hoboken: Wiley-Blackwell.CrossRefzbMATHGoogle Scholar
  11. Eden, A. H., et al. (2013). Modeling and visualizing object-oriented programs with Codecharts. Formal Methods in System Design, 43(1), 1–28.MathSciNetCrossRefzbMATHGoogle Scholar
  12. Fischer, T. et al. (1999). Story diagrams: a new graph grammar language based on the unified modelling language and java. In Proc. Theory and Application of Graph Transformations–TAGT98, LNCS 1764. Springer, pp. 296–309.Google Scholar
  13. Gamma, E. Helm, R., Johnson, R., & Vlissides, J. (1995). Design patterns: elements of reusable object-oriented software. Reading: Addison Wesley Longman.Google Scholar
  14. Gasparis, E. (2010) Design Navigation: recovering design charts from object-oriented programs. PhD Dissertation. School of Computer Science and Electronic Engineering, University of Essex.Google Scholar
  15. Gasparis, E., Nicholson, J., et al. (2008a). Navigating through the design of object-oriented programs. In 15th Working Conf. on Reverse Engineering—WCRE. Antwerp, Belgium.Google Scholar
  16. Gasparis, E., Eden, A.H., et al. (2008b). The Design Navigator: Charting Java Programs. In Tool Demonstrations, Proc. of 30th IEEE Int’l Conf. on Software Engineering—ICSE 2008. Leipzig: IEEE Computer Society Press.Google Scholar
  17. Goldberg, M. & Wiener, G. (2010). Round-trip modeling using OPM/PL. In 2010 I.E. International Conference on Software Science, Technology and Engineering (SWSTE). IEEE, pp. 13–21.Google Scholar
  18. Guéhéneuc, Y.-G. (2004) A reverse engineering tool for precise class diagrams. In CASCON ‘04. IBM Press, pp. 28–41. Available at: [Accessed November 30, 2012].
  19. Guttag, J. V., Horning, J. J., & Wing, J. (1982). Some notes on putting formal specifications to productive use. Science of Computer Programming, 2(1), 53–68.CrossRefzbMATHGoogle Scholar
  20. Henriksson, A. & Larsson, H. (2003). A definition of round-trip engineering, University of Linköping.Google Scholar
  21. Hettel, T., Lawley, M. & Raymond, K. (2008). Model Synchronisation: Definitions for Round-Trip Engineering. In A. Vallecillo, J. Gray, & A. Pierantonio, eds. Theory and Practice of Model Transformations. Lecture Notes in Computer Science. Springer Berlin Heidelberg, pp. 31–45.Google Scholar
  22. Jackson, M. (2008). Automated software engineering: supporting understanding. Automated Software Engineering, 15(3–4), 275–281.CrossRefGoogle Scholar
  23. Kazman, R., & Carrière, S. J. (1999). Playing detective: reconstructing software architecture from available evidence. Automated Software Engineering, 6(2), 107–138.CrossRefGoogle Scholar
  24. Koschke, R. (2001). Software visualization for reverse engineering. In Lecture Notes In Computer Science. Revised Lectures on Software Visualization, International Seminar. pp. 138–150.Google Scholar
  25. Mo, R. et al. (2015). Hotspot patterns: the formal definition and automatic detection of architecture smells. In 2015 12th Working IEEE/IFIP Conference on Software Architecture (WICSA). 2015 12th Working IEEE/IFIP Conference on Software Architecture (WICSA). pp. 51–60.Google Scholar
  26. Müller, H. A. et al. (2000). Reverse engineering: a roadmap. In Proc. Conf. The Future of Software Engineering. Limerick, Ireland: ACM, pp. 47–60. Available at: [Accessed March 30, 2010].
  27. Müller, H.A. & Klashinsky, K., 1988. Rigi—a system for programming-in-the-large. In Proc. 10th Int’l Conf. Software engineering. Singapore: IEEE Computer Society Press, pp. 80–86.Google Scholar
  28. Nicholson, J. et al., 2014. Automated verification of design patterns: a case study. Science of Computer Programming, 80, Part B, pp.211–222.Google Scholar
  29. Nicholson, J. (2011). On the theoretical foundations of LePUS3 and its application to object-oriented design verification. PhD Dissertation: School of Computer Science and Electronic Engineering, University of Essex.Google Scholar
  30. Nickel, U.A. et al. (2000) Roundtrip engineering with FUJABA (Extended Abstract). In 2nd Workshop on Software-Reengineering (WSR).Google Scholar
  31. Paesschen, E. V., Meuter, W. D., & D’Hondt, M. (2005). SelfSync: A dynamic round-trip engineering environment. In L. Briand & C. Williams (Eds.), Model driven engineering languages and systems (pp. 633–647). Heidelberg: Lecture Notes in Computer Science. Springer Berlin.CrossRefGoogle Scholar
  32. Perry, D. E., & Wolf, A. L. (1992). Foundations for the study of software architecture. SIGSOFT Software Engineering Notes, 17(4), 40–52.CrossRefGoogle Scholar
  33. Quatrani, T. (1998). Visual modeling with rational Rose and UML. Boston: Addison-Wesley Longman Publishing Co., Inc..Google Scholar
  34. Ryoo, J., Laplante, P. & Kazman, R. (2012). Revising a security tactics hierarchy through decomposition, reclassification, and derivation. In Software Secutiry and Reliability. Washington, D.C.Google Scholar
  35. Schmidt, D. C. (2006). Guest editor’s introduction: model-driven engineering. Computer, 39(2), 25–31.CrossRefGoogle Scholar
  36. Sendall, S. & Küster, J. (2004). Taming model round-trip engineering.Google Scholar
  37. Shneiderman, B. (1996). The eyes have it: a task by data type taxonomy for information visualizations. In Proceedings of the 1996 I.E. Symposium on Visual Languages. VL ‘96. Washington, DC, USA: IEEE Computer Society, p. 336–. Available at: [Accessed June 30, 2014].
  38. Sipser, M. (1997). Introduction to the theory of computation. Boston: PWS Pub. Co..zbMATHGoogle Scholar
  39. Wassermann, R. & Cheng, B. H. C. (2003). Security patterns. In Pattern Languages of Programs—PLoP 2003. Robert Allerton Park, MI.Google Scholar
  40. Wing, J. M. (1990). A specifier’s introduction to formal methods. Computer, 23(9), 8–23.CrossRefGoogle Scholar
  41. Xiao, L. et al. (2016). Identifying and quantifying architectural debt. In Proceedings of the 38th International Conference on Software Engineering. ICSE ‘16. New York, NY, USA: ACM, pp. 488–498. Available at: [Accessed May 23, 2016].
  42. Yoder, J. & Barcalow, J. (2000). Architectural patterns for enabling application security. In B. Foote, N. Harrison, & H. Rohnert, eds. Pattern languages of program design 4. Addison-Wesley.Google Scholar

Copyright information

© Springer Science+Business Media New York 2017

Authors and Affiliations

  • A.H. Eden
    • 1
    Email author
  • E. Gasparis
    • 2
  • J. Nicholson
    • 3
  • R. Kazman
    • 4
    • 5
  1. 1.Sapience.orgLondonUK
  2. 2.Singularity LabsChalkidaGreece
  3. 3.ZiNET Data SolutionsHastingsUK
  4. 4.Software Engineering InstituteCarnegie Mellon UniversityPittsburghUSA
  5. 5.University of HawaiiHonoluluUSA

Personalised recommendations