Existing program is restructured based on a set of tasks that the existing
program executes. A set of tasks is used, in conjunction with related
test cases, to verify the correct functioning of the restructured
program, and also to restructure the program. The restructuring process
involves information about: (i) the tasks for which the original computer
program is used, (ii) the inputs (including their valid ranges) to be
provided to the program to accomplish the tasks, and (iii) the outputs
generated by the program, known but unfixed bugs, etc. Legacy computer
programs or applications for which reliable documentation is either not
available or inadequate is desirably restructured for improved
understanding and maintenance.