Abstract
Legacy software systems architecture recovery has been a hot topic for more than a decade. In our approach, we proposed to use the artefacts and activities of the Unified Process to guide this reconstruction. First, we recover the use-cases of the program. Then we instrument the code and “run” the use-cases. Next we analyse the execution trace and rebuild the run-time architecture of the program. This is done by clustering the modules based on the supported use-case and their roles in the software. In this paper we present an industrial validation of this reverse-engineering process. First we give a summary of our methodology. Then we show a step-by-step application of this technique to real-world business software and the result we obtained. Finally we present the workflow of the tools we used to perform this experiment. We conclude by giving the future directions of this research.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Andritsos, P., Tzerpos, V.: Software Clustering based on Information Loss Minimization. In: Proc. IEEE Working Conference on Reverse engineering (2003)
Andritsos, P., Tzerpos, V.: Information Theoretic Software Clustering. IEEE Trans. on Software Engineering 31(2) (2005)
Bergey, J., et al.: Why Reengineering Projects Fail. Software Engineering Institute, Tech Report CMU/SEI-99-TR-010 (April 1999)
Bergey, J., Smith, D., Weiderman, N., Woods, S.: Options Analysis for Reengineering (OAR): Issues and Conceptual Approach. Software Engineering Institute, Tech. Note CMU/SEI-99-TN-014 (1999)
Biggerstaff, T.J., Mitbander, B.G., Webster, D.E.: Program Understanding and the Concept Assignment Problem. Communications of the ACM, CACM 37(5) (1994)
Binkley, D.W., Gallagher, K.B.: Program Slicing. In: Advances in Computers, vol. 43. Academic Press, London (1996)
Dugerdil, P.: A Reengineering Process based on the Unified Process. In: IEEE International Conference on Software Maintenance (2006)
Eisenbarth, T., Koschke, R.: Locating Features in Source Code. IEEE Trans. On Software Engineering 29(3) ( March 2003)
Gall, H., Weidl, J.: Object-Model Driven Abstraction to Code Mapping. In: Proc. European Software engineering Conference, Workshop on Object-Oriented Reengineering (1999)
Gold, N.E.: Hypothesis-Based Concept Assignment to Support Software Maintenance. PhD Thesis, Univ. of Durham (2000)
Jacobson, I., Booch, G., Rumbaugh, J.: The Unified Software Development Process. Addison-Wesley Professional, Reading (1999)
Kazman, R., O’Brien, L., Verhoef, C.: Architecture Reconstruction Guidelines, 3rd edition. Software Engineering Institute, Tech. Report CMU/SEI-2002-TR-034 (2003)
Linding, C., Snelting, G.: Assessing Modular Structure of Legacy Code Based on Mathematical Concept Analysis. In: Proc IEEE Int. Conference on Software Engineering (1997)
Marcus, A.: Semantic Driven Program Analysis. In: Proc IEEE Int. Conference on Software Maintenance (2004)
Mitchell, B.S.: A Heuristic Search Approach to Solving the Software Clustering Problem. In: Proc IEEE Conf on Software Maintenance (2003)
Müller, H.A., Orgun, M.A., Tilley, S., Uhl, J.S.: A Reverse Engineering Approach To Subsystem Structure Identification. Software Maintenance: Research and Practice, vol. 5(4). John Wiley & Sons, Chichester (1993)
Rajlich, V., Wilde, N.: The Role of Concepts in Program Comprehension. In: Proc IEEE Int. Workshop on Program Comprehension (2002)
Siff, M., Reps, T.: Identifying Modules via Concept Analysis. IEEE Trans. On Software Engineering 25(6) (1999)
Tilley, S.R., Santanu, P., Smith, D.B.: Toward a Framework for Program Understanding. In: Proc. IEEE Int. Workshop on Program Comprehension (1996)
Tonella, P.: Concept Analysis for Module Restructuring. IEEE Trans. On Software Engineering 27(4) (2001)
Tonella, P.: Using a Concept Lattice of Decomposition Slices for Program Understanding and Impact Analysis. IEEE Trans. On Software Engineering 29(6) (2003)
Verbaere, M.: Program Slicing for Refactoring. MS Thesis. Oxford University, Oxford (2003)
Wen, Z., Tzerpos, V.: An Effective measure for software clustering algorithms. In: Proc. IEEE Int. Workshop on Program Comprehension (2004)
Wiggert, T.A.: Using Clustering Algorithms in Legacy Systems Remodularisation. In: Proc. IEEE Working Conference on Reverse engineering (1997)
Wong, W.E., Gokhale, S.S., Horgan, J.R., Trivedi, K.S.: Locating Program Features using Execution Slices. In: Proc. IEEE Conf. on Application-Specific Systems and Software Engineering & Technology (1999)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Dugerdil, P., Jossi, S. (2008). Reverse-Architecting Legacy Software Based on Roles: An Industrial Experiment. In: Filipe, J., Shishkov, B., Helfert, M., Maciaszek, L.A. (eds) Software and Data Technologies. ICSOFT ENASE 2007 2007. Communications in Computer and Information Science, vol 22. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-88655-6_9
Download citation
DOI: https://doi.org/10.1007/978-3-540-88655-6_9
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-88654-9
Online ISBN: 978-3-540-88655-6
eBook Packages: Computer ScienceComputer Science (R0)