orville@weyrich.UUCP (Orville R. Weyrich) (05/11/91)
The emphasis of the following questions is to use the techniques to extract software components for reuse. I am putting together a proposal for a program restructuring and reverse engineering tools which use AI techniques, for the purpose of extracting software components. I would like any information the net can help me with. I expect to post the results, and hope to stimulate some discussion in this area. "Reverse Engineering" can mean a lot of things to different people, including the following: 1) Support for extracting "business rules" from an existing program. This becomes necessary when dealing with dusty-deck code when the people in an organization that were responsible for creating the program have disappeared, along with those that knew how the business was run prior to the installation of the program. Here, we are talking about "knowledge acquisition" as is done in building expert systems, but in this case, there are no human experts left, only a bunch of undocumented source code (or worse!). 2) Support for "Program Archeology" or "Design Recovery" on an existing program. This is done to recover the program design documents which have been lost (or never made). This becomes necessary in order to maintain the code. 3) Producing a "work-alike" product by working backwards from the external behavior to figure out how to code a new application which is a clone, but which does not use the original code. An example would be the "NewWord" product which cloned the "WordStar" word processor. This technique is under legal attack, and is not what I have in mind. I am aware of rumors that companies such as ViaSoft and Transform Logic Corporation are preparing products to support Reverse Engineering, but would like any additional information which the net knows of. In particular, I know that Transform Logic Corporation demonstrated at their "Transform User's Group" last year a product under development which converts dirty old COBOL decks into a hypertext format for browsing by the programmer. I suspect that many consulting/contract job shops have tool suites that they use in-house. I will of course post a summary to the net of the responses which I receive. Please e-mail responses to orville%weyrich@uunet.uu.net or else post to this group. My questions: What products are available now, and what (if any) research is presently being done in this field? I have heard rumors to the effect that the present tools are less than satisfactory. I would be interested in hearing of the experiences (good and bad) of anyone who has used these tools. Bad experiences are particularly useful, since they help clarify where improvements need to be made. References to any articles on the subject would also be appreciated. I am aware of the issue of IEEE Software on Reverse Engineering (January 1990). I understand that there are several program restructuring tools currently available which help turn old GO TO laden COBOL and FORTRAN code into more structured code. What companies are currently using/developing these sorts of tools that I might offer my services to as either a consultant or an employee? Does anyone know of names of people withing these organizations that I could contact? Thanks, Orville. -------------------------------------- ****************************** Orville R. Weyrich, Jr., Ph.D. Certified Systems Professional Internet: orville%weyrich@uunet.uu.net Weyrich Computer Consulting Voice: (602) 391-0821 POB 5782, Scottsdale, AZ 85261 Fax: (602) 391-0023 (Yes! I'm available) -------------------------------------- ******************************