Round-trip engineering with the Two-Tier Programming Toolkit
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.
KeywordsDesign 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.
- 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
- 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
- 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: http://www.springerlink.com/content/had48cpgyeu1lnnc/abstract/ [Accessed October 29, 2012].
- 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
- 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–TAGT’98, LNCS 1764. Springer, pp. 296–309.Google Scholar
- Gamma, E. Helm, R., Johnson, R., & Vlissides, J. (1995). Design patterns: elements of reusable object-oriented software. Reading: Addison Wesley Longman.Google Scholar
- 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
- 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
- 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
- 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
- Guéhéneuc, Y.-G. (2004) A reverse engineering tool for precise class diagrams. In CASCON ‘04. IBM Press, pp. 28–41. Available at: http://dl.acm.org/citation.cfm?id=1034914.1034917 [Accessed November 30, 2012].
- Henriksson, A. & Larsson, H. (2003). A definition of round-trip engineering, University of Linköping.Google Scholar
- 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
- 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
- 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
- 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: http://portal.acm.org/citation.cfm?id=336512.336526&type=series [Accessed March 30, 2010].
- 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
- 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
- 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
- Nickel, U.A. et al. (2000) Roundtrip engineering with FUJABA (Extended Abstract). In 2nd Workshop on Software-Reengineering (WSR).Google Scholar
- Quatrani, T. (1998). Visual modeling with rational Rose and UML. Boston: Addison-Wesley Longman Publishing Co., Inc..Google Scholar
- 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
- Sendall, S. & Küster, J. (2004). Taming model round-trip engineering.Google Scholar
- 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: http://dl.acm.org/citation.cfm?id=832277.834354 [Accessed June 30, 2014].
- Wassermann, R. & Cheng, B. H. C. (2003). Security patterns. In Pattern Languages of Programs—PLoP 2003. Robert Allerton Park, MI.Google Scholar
- 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: http://doi.acm.org/10.1145/2884781.2884822 [Accessed May 23, 2016].
- 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