Patent ID: 8042098
Filing Date: 2011-10-18
Classification: G06F

Abstract:
1. In a computer comprising at least one hardware processor and at least one tangible memory, a method for reverse engineering software code stored in the at least one memory, the method comprising: a) determining a structure of at least two object-oriented software components represented by the software code, wherein the at least two object-oriented software components include a first object-oriented software component and a second object-oriented software component, and wherein the method further comprises determining the structure of the first object-oriented software component by determining a first class name of a first object-oriented class from which the first object-oriented software component is instantiated, determining a first set of attributes of the first object-oriented class, and determining a first set of methods of the first object-oriented class, and determining the structure of the second object-oriented software component by determining a second class name of a second object-oriented class from which the second-object oriented software component is instantiated, determining a second set of attributes of the second object-oriented class, and determining a second set of methods of the second object-oriented class; b) determining dependencies between the first and second object-oriented software components by determining whether any method in the first set of methods invokes any method in the second set of methods, determining whether any method in the second set of methods invokes any method in the first set of methods, determining whether the first object-oriented class is a subclass of the second-object oriented class, and determining whether the first object-oriented class is a superclass of the second object-oriented class; c) creating a design matrix that indicates the dependencies between the first and second object-oriented software components; d) determining mappings between functional requirements and design parameters in the design matrix at least one level above the terminal level, grouping the mappings into sub-matrices of the design matrix, wherein any sub-matrix mapping functional requirements and design parameters from the same level and one level above the terminal level is identified as a candidate for an object oriented class; and e) determining an implementation sequence of object oriented classes identified from the design matrix, wherein the implementation sequence is selected to reduce the amount of iterative development by tracking coupling between software elements using the design matrix and modifying the design matrix to reduce coupling between the software elements.