Reverse Engineering of Computer-Based Control Systems

This article presents a process for the reengineering of computer-based control systems, and describes tools that automate portions of the process. The intermediate representation (IR) for capturing features of computer-based systems during reverse engineering is presented. A novel feature of the IR is that it incorporates the control system software architecture, a view that enables information to be captured at five levels of granularity: the program level, the task level, the package level, the subprogram level, and the statement level. A reverse engineering toolset that constructs the IR from Ada programs, displays the IR, and computes concurrency, communication and object-orientedness metrics is presented. Also described is the design of hypermedia techniques that enhance the usability of the reverse engineering tools.

[1]  Ted J. Biggerstaff,et al.  Design recovery for maintenance and reuse , 1989, Computer.

[2]  Suzanne W. Dietrich,et al.  A conceptual design for a code analysis knowledge base , 1992, J. Softw. Maintenance Res. Pract..

[3]  Jim Q. Ning,et al.  Knowledge-based program analysis , 1990, IEEE Software.

[4]  Dieter K. Hammer,et al.  Assignment and pre-run-time scheduling of object-based, parallel real-time processes , 1994, Proceedings of 1994 6th IEEE Symposium on Parallel and Distributed Processing.

[5]  Lonnie R. Welch,et al.  Program dependence analysis for concurrency exploitation in programs composed of abstract data type modules , 1994, Proceedings of 1994 6th IEEE Symposium on Parallel and Distributed Processing.

[6]  Lonnie R. Welch Assignment of ADT modules to processors , 1992, Proceedings Sixth International Parallel Processing Symposium.

[7]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[8]  Binoy Ravindran,et al.  Reengineering of Legacy Systems : Toward an Automated Approach , 1994 .

[9]  Linda M. Wills,et al.  Recognizing a program's design: a graph-parsing approach , 1990, IEEE Software.

[10]  RothermelGregg,et al.  Efficient construction of program dependence graphs , 1993 .

[11]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[12]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[13]  Lonnie R. Welch Cloning ADT modules to increase parallelism: rationale and techniques , 1993, Proceedings of 1993 5th IEEE Symposium on Parallel and Distributed Processing.

[14]  Gregg Rothermel,et al.  Efficient construction of program dependence graphs , 1993, ISSTA '93.

[15]  Lonnie R. Welch A Parallel Virtual Machine for Programs Composed of Abstract Data Types , 1994, IEEE Trans. Computers.

[16]  R.A. Steigerwald,et al.  Reusable component retrieval for real-time applications , 1993, [1993] Proceedings of the IEEE Workshop on Real-Time Applications.

[17]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[18]  Richard L. Piazza,et al.  Separating parsing and analysis in reverse engineering tools , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[19]  Lonnie R. Welch,et al.  Modeling resource contention among distributed periodic processes , 1992, [1992] Proceedings of the Fourth IEEE Symposium on Parallel and Distributed Processing.

[20]  Peter Freeman,et al.  Maintenance and porting of software by design recovery , 1986 .

[21]  Arthur B. Maccabe,et al.  The program dependence web: a representation supporting control-, data-, and demand-driven interpretation of imperative languages , 1990, PLDI '90.