Enterprise Application Development

Paradigms for Enterprise Application Development on the Web

Introduction

Internet has been seen by many management gurus as the major innovation since the concept of Assembly Line. While the assembly line enabled mass-production of standard products and services, Internet enables "Mass-Customization" by providing a way to contact the customer directly. Software systems, which were seen as secondary support systems, are now perceived as "KEY Differentiator" from Competitors.

As Information Systems has become a critical resource, most organizations are moving away from proprietary solutions to OPEN Standards. Organizations are facing unprecedented challenges building enterprise-scale applications to support mission-critical functions across their businesses. Changes happen in many forms such as changing Business Policies, Mergers and Acquisitions, evolving technology etc

Scripting has been the dominant paradigm for Enterprise Application Development in the client-server platform. Though the Client-Server Paradigm has evolved into Web Platform, Scripting is still predominately used for developing Enterprise Applications. The requirements of the Client-Server Era are completely different from today's necessities & challenges. To address these challenges, organizations require new tools and techniques to build successful applications.In this paper we discuss the several challenges faced by enterprises such as adoption to OPEN standards, Info-Appliances, etc and present "Model Based Code Generation" Technology as a solution, how it can provide the next leap forward in enterprise application development.This technology provides faster implementation coupled the ability to customize the specific business needs.

Importance of OPEN Standards :

Businesses face a problem of complexity mainly due to the various layers that join together to bring out a desired functionality. Software is joined to the operating system; the operating system is joined to the hardware; data is joined to the database; likewise through the internet now the business is connected to the customers; customers to each other, business competitors, suppliers, banks and the government. And so on. Metcalfe's law says that the value of the network rises as the square of the number of participants. The more people you have, the greater the value. This is the blessing of connectedness.

But when something goes wrong, it can spread through the network of relationships and beyond. There is a law by Phipps of IBM, which states that:

"Every relationship has a cost associated with it. If every party has to have a relationship with every other party, then the cost rises as a factorial of the number of participants. You quickly discover that the cost rises to a point that I describe as entropy death. This is the point where costs exceed value."

Phipps recounts a story about a company using a well-known office suite to automate the back-end of their business. They wrote a number of macros that linked together class libraries. Then someone changed a piece of software, which caused a macro to stop working. So they debugged the macro and found a defunct operator they had to get rid of. To deploy a new version of the macro, they had to upgrade the spreadsheet part of their office suite. But to do that, they had to upgrade the whole suite, because of licensing obligations. These changes necessitated other changes, and ultimately nothing worked any more.

Similarly if each of the connected participants use proprietary technologies, Additional Efforts are needed to maintain connectedness with such participants. This would lead to a maintenance nightmare as the number of participants increase. The only solution is acceptance of Open Standards by all the consenting participants so that connected does not required additional efforts. Accepting the OPEN Standards, there is still the problem of which OPEN Standard to choose. There are several competing OPEN standards addressing the same domain. The connectivity of an Enteprise would be limited to those who have adapted the same standard.

Info - Appliances :

Not very long ago, the clients which access information from the corporate servers were desktop PCs. The Presentation Layer for the PCs were defined and development was much simpler. Information Appliances in the form of Personal Digital Assistances (PDAs), Pocket PCs, Cell-Phones etc are expected to be clients that would access information from the corporate server. The architecture of the devices are not known now and if the systems developed now are not compatible with those devices, the development efforts would be a failure. The phipps law holds here also. We cannot develop presentation layers individually for each devices which would lead to the maintenance nightmare. Java, which is presented as a viable solution, could use only the least common denominator of these devices thereby not exploiting the special features each medium has to offer.

Component Frameworks

For E-Commerce Transaction Processing, There are two Component Frameworks, Microsoft's DCOM framework and SUN's Enterprise JavaBeans framework. The Choice of Component Framework is a crucial decision to made and would be one of the critical factors influencing the success or failure of an E-Commerce Project. If the wrong platform is chosen, at a later stage, the entire project might have to be rewritten resulting in additional costs.

Web-Forms

Forms are an integral part of Business Application Software. It is the visual component of a business object, which is presented to the end-user on clients. Browsers are being adopted as the Universal Client of the web platform and HTML as its Lingua Franca. Developers using HTML as the language for Web based Forms for E-Commerce applications find it tedious and time-consuming to developing them. W3C has only recently acknowledged this weakness and is investigating proposals. Similarly developing Forms for other info-devices are also time-consuming and tedious.

Object-Relational Paradigm

Client-Server based applications have been using Relational Database as the back-end to store the business transactions. Transaction Processing involving locking, rollback, which is crucial part of business computing, was handled by the RDBMS itself. A Major bottleneck of having transaction processing component within the RDBMS server itself is that the commit-rollback functionality will work only within a single database and not across multiple databases.

For Web based Computing and E-Commerce always use multiple databases from multiple vendors, as there will several organizations involved in a transaction. The Component Framework like Enterprise JavaBeans and DCOM have the transaction monitors separated from rdbms servers. These transaction monitors rely on object-oriented technologies while the transactions are still going to be RDBMS for a long time to come. To overcome this problem, Object-Relational Layers are to be used. Enterprise Application Development Tools have to rely on Object-Relational Technology rather than pure relational technology.

Business Communication

No Organization is an island. Organizations are now increasing interconnected with their suppliers, customers, and several others such as shareholders etc. B2B & B2C Communication will be one of the crucial components of Enterprise Applications in the web-platform. These functionalities are to be supported from the core-development process for efficient integration. Having additional tools to provide this functionality would only lead to increase in complexity of development and maintenance.

The Scripting Practice

During the Client-Server era, Scripting was the popular way of developing Enterprise Applications. Components were developed in Object-Oriented Languages and "Wiring" of these components into applications was done using scripting languages. Scripting Languages like Visual Basic, PowerBuilder etc were very popular. The major advantage offered by scripting languages was that they were easier to program than Object-Oriented Languages.

Developing Enterprise Applications with scripting languages have become more complicated with the emergence of Web. The Web is a composite of several platforms having multiple platforms on the client-side and server-side. There are individual scripting languages such as JavaScript for browsers, wmlscript for wireless-devices, proprietary languages for Personal Digital Assistants, Pocket PCs etc. This raises the issue of Info-Appliances out-lined above.

Wiring Components based on scripting is always based on a particular component framework's standards. When the component framework has to be changed, then all the scripts have to be rewritten.

A viable alternative

In Model based Code-generation technology , a Semantic Model of the Enterprise is used to capture the application's design, structure and function. Models separate the application's functional specification from the underlying platform on which the model is implemented. A Model consists of several parameters each of, which would have multiple choices to choose from. In order to construct a model, a developer has to specify the parameters and the appropriate properties. Once a Model is built, The EAD would generate the code for the underlying platform.

Information Models enhance visibility of the applications business logic, which typically gets entangled in the source code of the application. As business rules change, the change can made in a single place and ripple to all places in all applications which should be effected. This makes maintenance and enhancement of the system far easier. The developer has to specify the characteristics of the application by modifying the various parameters of the Information Model.

Model based Code-Generation Technology

Semantic Models: Semantic Models or Information Models are used to capture the application's design, structure and function. Models are stored in a central repository, which separates the specifications from implementation. Models enhance visibility of the applications business logic, which typically gets entangled in the source code of the application. As business rules change, the change can made in a single place and ripple to all places in all applications which should be effected. This makes maintenance and enhancement of the system far easier.

XML based Semantic Models offer the same services as that of scripting namely "Component -Wiring". XML is a very powerful framework, which can capture relationships, events, conditions and actions. Code-Generation Tools previously did not have this framework to capture the adequate semantics required. XML offers the flexibility and ease of use of the scripting languages. In Model based Code-Generation framework, the application logic captured in the XML based models are executed by first generating code in an Object-Oriented Language such as C++ or Java and later compiling them on the fly.

If the semantic model is found to be inadequate for a situation, the developer then directly modify the generated code to handle these exceptions. Model based Code-Generation code could be viewed as a preprocessing system, which does the mundane tasks in code development.

Advantages of Model based Code Generation

  1. True enterprise-scale application development tools automatically create the source code for the entire application optimized for the deployment environment. The generation of native source is important for several reasons. First, most large-scale applications have high performance requirements. Tools that don' t produce native code rely on a "least common denominator" implementation, which is not tuned to any specific target and consequently cannot yield the necessary performance. Similarly, the tool can be made to generate the wrapper codes for the various component frameworks such as EJB, DCOM etc.

  2. Having the tool produce the code, the developer is freed from knowing how to write high performance code across the vast array of different platforms, databases and middleware. Instead, the developer can focus on the business requirements for the application. The EAD tool takes care of the rest.

  3. As developers maintain applications by maintaining models and not the generated code, an organization wishing to deploy the application on a new platform can do so by simply regenerating the code for that new target technology. Vast amounts of code re-writing are eliminated. This allows organizations to take advantage of new platforms, as they become available. However, this approach is not limited to migrating from one platform to another. An important aspect is automatically exploiting new features on a platform, as they become available. Enterprises are not locked into yesterday' s technology.

  4. Developers need not have advanced skill-set for each and every platform the software is expected to be run. Also this enables the reduction in team size for a project thereby reducing cost.