Virtual (Composite) Applications

March 8, 2011 by Igor Lozhkin

The concept of a software application has been in existence since the first software project. In simple terms, an application is a collection of certain functionalities put together for a particular use.  

Enterprise applications usually deal with data, process data in a certain way and let users interact with data, for example web reports server. The way we analyze application projects has a few established methodologies, but in the end they allow establishing what the system should be (read: what type of data it should deal with), what the system should do (read: how it should process data), and how it should interface with users (which pretty much depends on who its target users are).

Until recently, an application was viewed as something more or less monolithic, with its parts and pieces servicing only its own application.

Penetration of web portals into corporate intranets, use of HTTP as loosely-coupled language-neutral communication protocols between system components, and HTML/CSS as standard presentation technology, brought in a new previously downplayed aspect of an application: re-integration capabilities.  Following the concept of re-integration, an application should allow its pieces be re-integrated in a different way, often meshed-up with pieces of other applications, to present information to different types of target users, which may not have been anticipated by developers of the original individual application.  

Collection of functionalities integrated by a web portal system from parts of other applications and small atomic services, are called virtual (or composite) applications. 
So, what are the qualities which an application and its components as well as atomic services should possess to be re-integration capable. Obviously, the above-mentioned qualities are a must, i.e. the ability to communicate via HTTP with other components, which may be developed with different languages and run on different platforms, and use HTML/CSS for presentation. However, most importantly, such applications should be free from the following built-in functionalities, by delegating those to web portal system and identity and configuration management system: 
  • authentication (establish who the user is)
  • authorization (establish whether a user has access) and user access management 
  • configuration management
  • user management and user profile management
  • data auditing
  • events publishing 
  • activity logging
  • emailing
  • state management
There are many additional benefits of making applications and services re-integration capable, one of them being that they become simpler and easier to develop and maintain, as many functionalities which were traditionally implemented in application code are taken out from such applications and delegated to web portal system, identity and configuration management system and other platform tools.