When modernizing an application, there is frequently a need to identify and extract portions of the application that contain key business logic so that they can be incorporated into the new version of the application. The Harvesting Editor is intended to facilitate this process by using a rules-based approach to separate what is probably important business logic from the artifacts of the architecture which surrounds it so that a programmer can more easily identify useful code fragments and capture them in a way that they can be re-used. We will use the term “wheat” to identify code which is a good candidate for harvesting and “chaff” for code which we are unlikely to want to harvest.
When companies have an aging legacy application, their options are to continue to try to work with the application as it is, to write a fresh new application, or to attempt to transform the existing application (See http://www.psdn.com/library/entry.jspa?externalID=961&categoryID=58 for a discussion.). Some form of application transformation tends to be the option most likely to produce good results at reduced risk and with controlled cost.
There are several different approaches to application transformation including the formal Application Transformation Approach (ATA) advocated by Progress® (see http://www.progress.com/progress_software/products/services/docs/at_ment... ). Another approach which has recently been discussed in various forums, but without a formal name, is installing an ESB/SOA environment and then progressively converting targeted sections of code into services, a sort of “Getting on the Bus, gradually” approach. Most of these approaches involve a combination of creating new code and harvesting key business logic from existing code. (see http://www.progress.com/progress/ptw/2005/emea/docs/ptw_061.ppt for a discussion in the context of ATA). This current project is aimed at helping the process of harvesting and reusing code from existing applications.
A PDF of the full article is available below, which include illustrations not available here