Abstract
The cost of maintaining a software system over a long period of time far exceeds its initial development cost. Much of the maintenance cost is attributed to the time required by new developers to understand legacy systems. High-level structural information helps maintainers navigate through the numerous low-level components and relations present in the source code. Modularization tools can be used to produce subsystem decompositions from the source code but do not typically produce high-level architectural relations between the newly found subsystems. Controlling subsystem interactions is one important way in which the overall complexity of software maintenance can be reduced.
We have developed a tool, called ARIS (Architecture Relation Inference System), that enables software engineers to define rules and relations for regulating subsystem interactions. These rules and relations are called Interconnection Styles and are definedusing a visual notation. The style definition is used by our tool to infer subsystem-level relations in designs being reverse engineered from source code.
In this paper we describe our tool and its underlying techniques and algorithms. Using a case study, we describe how ARIS is used to reverse engineer high-level structural information from a real application.
Similar content being viewed by others
References
Biggerstaff, T.J. 1989. Design recovery for maintenance and reuse. IEEE Computer, 22(7):36–49.
Chen, Y., Gansner, E.R., and Koutsofios, E. 1997. A C++ data model supporting reachability analysis and dead code detection. In Proceedings of the European Conference on Software Engineering/Foundations of Software Engineering.
Chikofsky, E.J. and Cross, J.H. 1990. Reverse engineering and design recovery: A taxonomy. IEEE Software, 7(1):13–17.
Consens, M.P. and Mendelzon, A.O. 1990. GraphLog: A visual formalism for real life recursion. In Proceedings of the 9th ACM SIGACT-SIGMOD Symposium on Principles of Database Systems, pp. 404–416.
Dellarocas, C. 1997. Acoordination perspective on software system design. In Proceedings of the 9th International Conference on Software Engineering and Knowledge Engineering, pp. 318–325.
DeRemer, F. and Kron, H.H. 1976. Programming in the large versus programming in the small. IEEE Transactions on Software Engineering, 2(2):80–86.
Fahmy, H., Holt, R.C., and Mancoridis, S. 1997. Repairing software style using graph grammars. In IBM Proceedings of the Seventh Centre for Advanced Studies Conference (CASCON'97).
Gansner, E., Koutsofios, E., North, S., and Vo, K. 1993. A technique for drawing directed graphs. IEEE Transactions on Software Engineering, 19(3):214–230.
Holt, R.C. and Mancoridis, S. 1994. Using tube graphs to model architectural designs of software systems. Technical Report CSRI-308, Computer Science Research Institute, University of Toronto.
Korn, J., Chen, Y., and Koutsofios, E. 1999. Chava: Reverse engineering and tracking of Java applets. In Proceedings of the 6th Working Conference on Reverse Engineering, pp. 314–325.
Krishnamurthy, B. 1995. Practical Reusable Unix Software. New York: John Wiley & Sons.
Mancoridis, S. 1997. Customizable notations for software design. In Proceedings of the 9th International Conference on Software Engineering and Knowledge Engineering.
Mancoridis, S. 1998. ISF: A visual formalism for specifying interconnection styles for software design. International Journal of Software Engineering and Knowledge Engineering, World Scientific Publishing Company, 8(4):517–540.
Mancoridis, S. and Holt, R.C. 1996. Recovering the structure of software systems using tube graph interconnection clustering. In Proceedings of the 1996 International Conference on Software Maintenance.
Mancoridis, S., Mitchell, B.S., Chen, Y., and Gansner, E.R. 1999. Bunch: A clustering tool for the recovery and maintenance of software system structures. In Proceedings of International Conference of Software Maintenance.
Mancoridis, S., Mitchell, B.S., Rorres, C., Chen, Y., and Gansner, E.R. 1998. Using automatic clustering to produce high-level system organizations of source code. In Proceedings of the 6th Intl. Workshop on Program Comprehension.
Müller, H., Orgun, M., Tilley, S., and Uhl, J. 1993. A reverse engineering approach to subsystem structure identification. Journal of Software Maintenance: Research and Practice, 5:181–204.
Müller, H.A., Orgun, M.A., Tilley, S.R., and Uhl, J.S. 1992. Discovering and reconstructing subsystem structures through reverse engineering. Technical Report DCS-201-IR, University of Victoria, August 1992.
Murphy, G., Notkin, D., and Sullivan, K. 1995. Software reflexion models: Bridging the gap between source and high-level models. In Proceedings of the ACM SIGSOFT Symposium on Foundations of Software Engineering (FSE'95), Washington, DC, pp. 18–28.
Ossher, H. 1989. A Case Study in Structure Specification: A Grid Description of Scribe. IEEE Transactions on Software Engineering, 15(11):1397–1416.
Prieto-Diaz, R. and Neighbors, J.M. 1986. Module interconnection languages. The Journal of Systems and Software, 6:307–334.
Schwanke, R.W. 1991. An intelligent tool for re-engineering software modularity. In Proceedings of the 13th IEEE International Conference on Software Engineering, Austin, Texas, pp. 83–92.
Shaw, M., DeLine, R., Klien, D.V., Ross, T.L., Young, D.M., and Zalesnik, G. 1995. Abstractions for Software Architectures and Tools to Support Them. IEEE Transactions on Software Engineering, 21(4):314–335.
Tzerpos, V. and Holt, R.C. 1998. Software botryology, automatic clustering of software systems. In Proceedings of the International Workshop on Large-Scale Software Composition, pp. 811–818.
Wolf., A.L., Clarke, L.A., and Wileden, J.C. 1988. A model of visibility control. IEEE Transactions on Software Engineering, 14(4):512–520.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Traverso, M., Mancoridis, S. On the Automatic Recovery of Style-Specific Architectural Relations in Software Systems. Automated Software Engineering 9, 331–360 (2002). https://doi.org/10.1023/A:1020346626363
Issue Date:
DOI: https://doi.org/10.1023/A:1020346626363