Enterprise Applications typically contain substantial amount of Business Knowledge which have been constructed, enhanced and tuned over many years.
Typically such Legacy Enterprise Applications do not have up-to-date documentation,
and original authors and designers are no longer be able or available to re-document the system.
Manual re-documentation of such code often is a lengthy, hugely expensive and error prone process.
SoftwareMining's BRE Toolkit uses sophisticated search algorithms to sieve through huge amount of code and isolate the business related code.
The system allows assignment of descriptions in natural language to the set of variables referenced within the identified rule.
This feature can be used to reproduce business rules in a Natural Language form (ie English).
One of the main features of the tools is the ability to apply SoftwareMining's language translation technology to the extracted business rules.
The Rules can thus be export as Java, C# or COBOL code snippets ready for incorporation onto a newly built applications.
Benefits
Ease Application Maintenance
Substantial gains in Speed and Accuracy for Business Rule Extraction processes
Opening the system to Business-Analyst: GAP Analysis
Business rules exported as HTML - and readily accessible to team members
Application Flowcharting exported as SVG/HTML
Re-architecture: Multi language & SOA
Multi-User facility
An Example
Most COBOL programs perform a variety of tasks.
For example, a Order-Processing program may calculate invoice, update inventory records, have data-entry screens etc.
SoftwareMining's Business Rule Extraction Strategy works by providing Data and Statement-Category filters,
and advanced search algorithms to extract the relevant information from the programs.
All the Business Analyst / developers have to do to start the business rule extraction process is to define:
Specify a filter on ORDER-VALUE Variable; telling the system to find Object References to ORDER-VALUE through the COBOLs Hierarchical structures and REDEFINITIONs
Select Statement filters; screen-handling, database handling and transaction handling, exception handling statements should be ignored as a part of this business rule.
The application of the above filters leads to identification of code responsible for calculating the Value of Orders.
The following code snippet is produced as a result of BRE of a large COBOL program
| Business Rule Code |
IF ORD-VAL IS GREATER THAN DIS-THRSHLD
OR CLNT-IS-NEW
THEN
COMPUTE ORD-VAL = ORD-VAL * WS-DISCT-PRCNT
END-IF.
IF CLNT-IS-LOCAL
THEN
IF NXT-DAY-DLVRY
COMPUTE ORD-VAL = ORD-VAL + STD-LCL-DELV-CHRG
ELSE
COMPUTE ORD-VAL = ORD-VAL + NXT-DAY-LCL-DELV-CHRG
END-IF
ELSE
COMPUTE ORD-VAL = ORD-VAL + OVRSEA-DELV-CHRG
END-IF.
|
Translation of COBOL Rules to Natural Language
SoftwareMining's Business Rule Extraction Toolkit also facilitates the association of Natual Language Description
with variables names. The descriptions are used together in-built heuristic based Natural Language substitution algorithms
to generate specifications in Psuedo-English from the extracted business rule. For example:
| Business Rule
|
IF Order Value IS GREATER THAN lower discount limit
OR This is a new Client
THEN
Order Value = Order Value * discount percentage
END-IF.
IF client has local geographical location
THEN
IF Requires Next Day Delivery
Order Value = Order Value + Local Delivery Charge
ELSE
Order Value = Order Value + next day delivery charge
END-IF
ELSE
Order Value = Order Value + Overseas Delivery Charge
END-IF.
|
Translation of COBOL Rules to Java Rules
Often the aim of Business Rule Extraction is produce specification for rewrite of application in Java or C#.
SoftwareMining's COBOL to Java Translation system is an integrated part of the Business-Rule-Extraction Toolset.
The translation module can be used to produce the business rules in Maintainable and Legible Java or C# code,
together with all XML definitions for data-beans, Object-Relational Persistence Beans, and the underlying framework.
| Business Rule Code |
/**
* calcDiscount
*/
protected void calcDiscount (){
if (orderMaster.getOrdVal() > iData.getDisThrshld() ||
orderMaster.getFirstTimeClient()
.equals(orderMaster.firstTimeClientClntIsNew))
{
orderMaster.setOrdVal(orderMaster.getOrdVal()
* iData.getWsDisctPrcnt());
}
if (clientInfo.getLocalClnt()
.equals(clientInfo.localClntClntIsLocal))
{
if (orderMaster.getDeliveryOption()
.equals(orderMaster.deliveryOptionNxtDayDlvry))
{
orderMaster.setOrdVal(orderMaster.getOrdVal()
+ iData.getStdLclDelvChrg());
} else
{
orderMaster.setOrdVal(orderMaster.getOrdVal()
+ iData.getNxtDayLclDelvChrg());
}
} else {
orderMaster.setOrdVal(orderMaster.getOrdVal()
+ iData.getOvrseaDelvChrg());
}
}
|
|