This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Design Recovery for Distributed Systems
July 1997 (vol. 23 no. 7)
pp. 461-472

Abstract—Two factors limit the utility of reverse engineering technology for many distributed software systems. First, with the exception of tools that support Ada and its explicit tasking constructs, reverse engineering tools fail to capture information concerning the flow of information between tasks. Second, relatively few reverse engineering tools are available for programming languages in which many older legacy applications were written (e.g., Jovial, CMS-2, and various assembly languages). In this paper, we describe approaches that were developed for overcoming these limitations. In particular, we have implemented an approach for automatically extracting task flow information from a command and control system written in CMS-2. Our approach takes advantage of a small amount of externally provided design knowledge in order to recover design information relevant to the distributed nature of the target system.

[1] T. Biggerstaff, "Design Recovery for Maintenance and Reuse," Computer, July 1989.
[2] T. Biggerstaff, J. Hoskins, and D. Webster, "DESIRE: A System for Design Recovery," MCC Technical Report, STP-081-89, May 1989.
[3] R. Rock-Evans and K. Hales, "Reverse Engineering: Markets, Methods and Tools," vol. 1, Ovum Ltd., 1990.
[4] C. Sittenauer, M. Olsem, and D. Murdock, "Re-engineering Tools Report," technical report, Air Force Software Technology Support Center, 1992.
[5] H. Reubenstein, R. Piazza, and S. Roberts, "Separating Parsing and Analysis in Reverse Engineering Tools," Proc. Working Conf. on Reverse Eng., May 1993.
[6] L.J. Holtzblatt, R.L. Piazza, and S.N. Roberts, "Design Recovery Technology for Real-Time Systems," Mitre Technical Report 95B0000057, July 1995.
[7] M. Weiser, "Program Slicing," IEEE Trans. Software Eng., vol. 10, no. 4, July 1984.
[8] N. Chapin, "Real-Time Software Maintenance," Proc. Eighth Int'l Conf. Software Maintenance and Re-Engineering, Aug. 1991.
[9] C. Castells-Schofield, "Engineering a Language-Independent Approach to Parsing for Analysis and Testing," Vitro Technical J., vol. 8, no. 1, 1990.
[10] P. Devanbu, "GENOA—A Customizable, Language and Front-End Independent Code Analyzer," Proc. 14th Int'l Conf. Software Eng., May 1992.
[11] S. Roberts, "Reverse Engineering Assembly Language Programs," Proc. Fourth Reengineering Forum, vol. 2, Sept. 1994.
[12] Reasoning Systems, "Refine User Guide," May 1990.
[13] Reasoning Systems, "Refine/C User's Guide," Mar. 1992.
[14] C. Rich and L. Wills, "Recognizing a Program's Design: A Graph Parsing Approach," IEEE Software, vol. 7, no. 1, 1990.
[15] M. Harandi and J. Ning, "Knowledge-Based Program Analysis," IEEE Software, vol. 7, no. 1, 1990.
[16] A. Quilici, "A Hybrid Approach to Recognizing Program Plans," Proc. Working Conf. Reverse Eng., May 1993.
[17] W. Kozaczynski, J. Ning, and T. Sarver, "Program Concept Recognition," Proc. Seventh Ann. Knowledge-Based Software Eng. Conf., 1992.
[18] A. Engberts, W. Kozaczynski, and J. Ning, "Concept Recognition-Based Program Transformation," Proc. IEEE Conf. Software Maintenance, 1991.
[19] R. Schwanke, "An Intelligent Tool for Re-Engineering Software Modularity," Proc. 13th Int'l Conf. Software Eng., 1991.
[20] M. Shaw, "Larger Scale Systems Require Higher-Level Abstractions," Proc. Fifth Int'l Workshop Software Specification and Design, 1989.
[21] D. E. Perry and A. L. Wolf,“Foundations for the study of software architecture,”inACM SIGSOFT Software Eng. Notes, Oct. 1992, vol. 17, no. 4, pp. 40–52.
[22] P. Lutsky, "Automatic Testing by Reverse Engineering of Software Documentation," Proc. Second Working Conf. Reverse Eng., July 1995.
[23] G. Murphy, D. Notkin, and E. Lan, "An Empirical Study of Static Call Graph Extractors," Univ. of Washington, Computer Science Dept, Technical Report 95-08-01.
[24] D. Garlan and M. Shaw, "An Introduction to Software Architecture," Tutorial 15th Int'l Conf. Software Eng., 1993.
[25] M. Shaw, "Larger Scale Systems Require Higher-Level Abstractions," Proc. Fifth Int'l Workshop Software Specification and Design, 1989.
[26] D. E. Perry and A. L. Wolf,“Foundations for the study of software architecture,”inACM SIGSOFT Software Eng. Notes, Oct. 1992, vol. 17, no. 4, pp. 40–52.
[27] G. Abowd, R. Allen, and D. Garlan,“Using style to understand descriptions of software architecture,”inProc. First ACM SIGSOFT Symp. Foundations of Software Eng., Dec. 1993.
[28] W. Tracz, "Domain-Specific Software Architecture (DSSA)—Frequently Asked Questions (FAQ), Software Eng. Notes, vol. 19, no. 2, 1994.
[29] D. Harris, H. Reubenstein, and A. Yeh, "Reverse Engineering to the Architectural Level," Proc. 17th Int'l Conf. Software Eng., 1995.
[30] S. Roberts, R. Piazza, and D. Katz, "A Portable Assembler Reverse Engineering Environment," Proc. Third Working Conf. Reverse Eng., Nov. 1996.
[31] D Harris, A. Yeh, and H. Ruebenstein, "Extracting Architectural Features from Source Code," Automated Software Eng., vol. 3, pp. 109-138,Boston: Kluwer Academic, 1996.
[32] A. Yeh, D. Harris, and M. Chase, "Manipulating Recovered Software Architecture Views," Proc. 19th Int'l Conf. Software Eng., pp. 184-194,Boston: ACM Press, May 1997.

Index Terms:
Design recovery, program understanding, legacy systems, language independence.
Citation:
Lester J. Holtzblatt, Richard L. Piazza, Howard B. Reubenstein, Susan N. Roberts, David R. Harris, "Design Recovery for Distributed Systems," IEEE Transactions on Software Engineering, vol. 23, no. 7, pp. 461-472, July 1997, doi:10.1109/32.605763
Usage of this product signifies your acceptance of the Terms of Use.