Composite application development is the new paradigm of application development which promises rapid time to market and ultimately the reusability of legacy enterprise information assets. The flexibility and agile delivery of composite applications is made possible by assembly of configurable components that have been carefully identified by analyzing existing enterprise applications. Reusability, configurability and assembly are key to composite applications. Reusability, modularity and assembly of configurable components are not new concepts at all, but were, more often than not, difficult to conceptualize and implement.
The mature, comprehensiveness and seamlessly interoperable tool and platform suites from leading vendors are now making possible this new style of Lego-block assembly style application development. Though there is still a long way to go. Service-oriented architecture plays a very critical role in all this. The concepts, principles and patterns of SOA enables conceptualization and realization of such configurable components and "services" a practical reality. SOA may be considered the prime driver for composite assembly.
We can define composite application as "Rapidly compose-able applications that enable business workflows through assembly of customizable and configurable pre-fabricated assets that could be deployed on runtime to access diverse enterprise resources and applications required for executing
Having identified a set of such CRAs and features, the third challenge is to govern the lifecycle of such assets – versioning, provisioning, demand and supply management, ownership, usage policies, etc. – typical concerns of SOA management and governance. The complexity lies in handling the heterogeneity of the resulting composite. Since, the reusable components and services that would comprise a composite application would ultimately have touch points with multiple existing enterprise applications, this has implications for managing distributed transactions, propagating security credentials, single sign-on, performance bottlenecks due to possible intermediate message transformation, routing, etc. across these different applications. This is perhaps the most challenging part, distributed application development at its best or worst. Service Component Architecture (SCA) and Service Data Objects (SDO) are important standards to look out for in this space.
The reusable and configurable components and services which comprise a composite application are typically services exposing functionality from existing enterprise applications, adapters that make possible connections between disparate systems, document handlers and transformers which enable conversion among different document formats ( XML or non-XML, industry vertical open standards based or otherwise, structured or semi-structured, etc.), business process templates, sub-process templates, workflows, data and message schemas specifying a Common Information Model for enterprise entities, schemas for component/service to component/service interaction messaging, business rules, business policies, service level agreements, UI assets, business event metadata and executables, roles, etc.
These different components and services access already existing enterprise applications, which range from custom developed applications to commercial off-the-shelf products and tools such as ERP, SCM, CRM, MDM, BI, BAM, knowledge management, portal, etc. In fact most of the product vendors relevant in this space have a vision for composite application development and have identified methodologies and developed tools to encourage creation of reusable components and services that are powered by their product suites. For example, an ERP vendor would expose its legacy APIs in the form Web services interfaces ( WSDLs), which could be accessible from a registry/repository product and reused in unforeseen business use cases. For example, in order to use a Web service (CRA) in some sequence with another Web service (CRA) it may be needed to have rule (CRA) based routing in the business process (CRA), which might invoke different sub-processes (CRA) based on rules (CRA). The sub-processes may be accessing an application having different business semantics and hence message transformation (CRA) could be applied.
Vendors in this space can be partitioned into three categories – pure tool and platform suite providers (interoperable set of tools supporting composite application development), content providers (primarily industry, domain specific CRAs and composites, but also enabling building and deploying of composite applications through tools and platforms) and hybrid (primarily strong in composite application related tools, but also provide optional industry domain specific CRAs and composites).
The typical entry points for composite applications would be multi-channel delivery, rapid deployment of business processes, single view of customer, enterprise process/information mashups, cross line-of-business interaction and so on. The emerging trend of cloud computing (like IBM's recent foray  and Amazon's Ec2 ) represents another new entry point. To sum it up, composite applications are nothing but a grand vision for integration at one or more these standard enterprise architecture layers – presentation, business and data and more recently into the infrastructure later.
About the author
Dr. Sudeep Mallick is a Senior Technical Architect and Researcher with SOA Center of Excellence, SETLabs, Infosys Technologies LTD. He has numerous publications in international journals and conferences to this credit on the topic of service oriented computing, software engineering and enterprise architecture. He is also the author of a book on enterprise IT architecture.
This was first published in December 2007