CBDI Forum CBDI Web Services
Roadmap. Guiding the transition to Web Services and SOA
 
CBDI Knowledgebase

Real World Migration of Development Projects to SOA cont'd...

Using OptimalJ to Move to SOA

To briefly re-cap, OptimalJ's key strengths are:

  • Business focused development where key development resources are building business functionality not architecture
  • Automatic application generation from a high-level business model leading to accelerated development
  • The model includes the concept of services that promotes the design of a consistent and business-focused service bus
  • Reduction of complexity and improved quality through application of industry-standard patterns
  • Governance of process ensuring a consistency of model and code leading to improved re-use, lower maintenance and improved quality

Modeling Services

A service model consists of a set of business operations with consistent naming, input and outputs and relationships to the business objects they affect or use. We believe that the full benefit of SOA is possible only when you have a consistent model and a business overview of services. The Domain Model in OptimalJ includes the Domain Service Model where you model business applications. Once you have the model, existing software assets can be integrated into the SOA and new functionality built where is doesn't exist.

Enterprise SOA

Now let's look at the real world of enterprise applications and in particular whether the MDA paradigm and MDA-based tools offer any advantage when faced with a mixture of packaged applications that developers can't touch, old client-server applications, a few desktop applications based on Excel and Access, a small Java web application, and some mainframe applications with traditional CICS APIs or similar. Not much sign of the Business Services Bus here! So you have the latest copy of OptimalJ - where do you start?

We can identify a number of distinct steps in the transition. Step one is 'Model', which includes 'Inventory' and 'Map' and steps two, three and four are 'Build', 'Integrate', 'Migrate'. In the first step we are designing architecture for the business and creating an inventory and in steps two, three and four we create new services, integrate the existing applications and begin the migration towards SOA. By generating code that implements SOA the developers concentrate on building functionality that will be visible to the business users.

The following table sets out some key activities we identify on the roadmap to SOA. Some activities would be completed using OptimalJ's model, but others such as the inventory and mapping activities could be done with office tools.

Steps Description Tool/Formats
Model Build a UML business model, including a service model OptimalJ or other modeling tools
Inventory Document each application in the enterprise, breaking each one down into domains that map loosely to the business model HTML document with links to UML use cases and business model, use case model
Map Identify services provided by each application and map each one to the service model, including a traffic light status reflecting whether the service can be re-used in the proposed services bus HTML document showing the relationship between the existing and proposed services
Build Generate the service bus code from the model as session beans with Web Service interfaces OptimalJ, MDA tools
Integrate Use the generated classes as wrappers for existing functionality identified from the inventory Connectors based on JCA (Java Connector Architecture), CORBA, Web Services
Migrate Replace inflexible code with components that fit with the planned SOA Development platform IDE

Table 1 - Key Activities on the Roadmap to SOA

Achieving SOA inevitably involves some enterprise integration work, which calls for an adapter approach. Fortunately J2EE has embraced this requirement with JCA. So the integration work can be modeled and documented in the same tool set.

JCA Integration Model

OptimalJ implements the JCA architecture and utilizes the JCA resource adapters provided for platforms such as Cobol/CICS and IMS/DC. JCA supports the concept of contracts and can handle issues such as security and transactions in the J2EE application server. Its modeling capability extends to the Connector model that can be manually entered or imported from Cobol copybooks.

Figure 2 - Integration Model

The same approach works for CORBA IDL or of course Web Services, which is shown below. UNIFACE, Compuware's 4GL development environment has an established user base who can also benefit from integration capabilities that OptimalJ brings. UNIFACE uses the CORBA interface to expose functionality and will be of particular interest to these users. Additionally with the latest UNIFACE release, UNIFACE Services can be transformed into Web Services. In both cases UNIFACE automatically generates the interface definition (IDL or WSDL) which can be imported into OptimalJ to create a Connector Model, which can be used to populate the Domain Model; we believe that this ability to build a service and integration model is an important capability that ensures that a coherent migration to SOA is possible.

Figure 3 - Integration Model for CORBA and Web Services

Web Services Support

Web Services provides the platform independence required by the heterogeneous enterprise. The service layer generated by OptimalJ can be selectively published as Web Services simply by selecting a component in the model and choosing a menu option. There is no need to change any code or write any configuration files because OptimalJ's code generator step deals with all the deployment issues for your selected platform.

Model-based Pattern-Driven Code Generation

Finally we look at OptimalJ's code generation capability and focus in on what makes this code generator so different from less successful forerunners.

The key features of Compuware's new approach are:

  • UML platform independent business model (drives the whole process)
  • Transformation patterns and customizable implementation patterns (model-to-code transformation)
  • Active synchronization
  • Business rules
  • Integrated deployment
  • Standards-based methodology and code implementation

OptimalJ promotes a top-down approach by driving the code generation from the UML business model and maintains the model when the resulting code is customized to implement business logic. Unlike earlier generators however, the code that is generated follows an established set of patterns and best practice as documented in Sun's J2EE blueprints.

Active synchronization removes the need to reverse-engineer the model from the Java code; the IDE used by the developer is integrated with the model and 'knows' which lines of Java the developer cannot change (so called guarded blocks). Any changes to the model must be made in the model. Free blocks are designated for the developer to plug in the business rules and processing logic.

The patterns used to transform the Domain Model into an Application Model and then to code are not closed to the system architect and can be altered in order to follow company standards. OptimalJ's Template Pattern Language (TPL) is used to define the transformation from model to code. Join points add more subtlety to the pattern customization by enabling a join to be made between a customized pattern and the pre-configured pattern supplied by Compuware - thus you can update your OptimalJ patterns without losing your special enhancements.

Conclusion

In this report we have looked at the issues facing a company moving towards SOA from a heterogeneous set of applications and platforms. We recommend a process that starts with a top-level service model into which new and existing functionality can be integrated. By focusing on how OptimalJ matches up to these types of demands we have identified some of the key features of OptimalJ:

  • Service model
  • Automatic generation of an application model with SOA
  • Support for enterprise integration within the model
  • Support for Web Services

MDA is a powerful way to manage the complexity of distributed computing platforms such as J2EE and OptimalJ's approach takes pattern use to a new level of productivity, addressing SOA and Web Services through its consistent application of patterns. Early adopters of OptimalJ report productivity gains using OptimalJ but we note that the service architecture is taken as a given. The issue isn't anymore what is SOA or do we need SOA, but how fast can we get there?

Links

OMG MDA Model Driven Architecture MDA Documents ormsc/01-07-01: Model Driven Architecture (MDA)
http://www.omg.org/cgi-bin/apps/do_doc?ormsc/01-07-01.pdf
omg/01-12-01: Developing in OMG's Model Driven Architecture (MDA)
http://www.omg.org/cgi-bin/apps/do_doc?omg/01-12-01.pdf
Compuware http://www.compuware.com
Success Stories http://www.compuware.com/products/optimalj/1792_ENG_HTML.htm


Previous Page  
eLearning

  © Everware-CBDI Inc 1999-2008