In the software industry, "com-ponent" is a heavily overloaded
term. The world of components has many evolving threads.
Software components and associated technology currently manifest the long
search for reusing software efficiently.
Component-based development processes and tools offer the opportunity to
achieve higher efficiencies and enable software development to scale. And, at
the enterprise level, architecture methodologies use component concepts to
structure their IT strategy.
This writeup explores each of these threads with an example of the direction
that technology is taking. It concludes with some speculation on the
implications for the future of software development and the Indian IT industry.
|
Software components
Software components have ‘plug-and-play’ potential. They offer packaged
functionality, exposed in some form, for reuse.
The application that uses these components must integrate them in order to
manifest the business process that the software is designed to support. The
technology for delivering software components has been evolving rapidly, with
Web services being the latest in component delivery architecture.
A components’ model of an application defines its structure in terms of a
set of interacting components. These can be developed or sourced, with each
component performing a set of tasks that it publishes for use by the
application. Components are deployed using appropriate technology so that
network transparency, platform independence, programming language independence
and, now, with Web services, organizational independence, are achieved.
Web services are another step in the evolution distributed computing. Data
exchange using XML-based standards has enabled heterogeneous computing
environments to share information over the Internet. XML itself has evolved from
the structured representation of information to the structured representation of
inter-application messaging. Web services take this evolution a step further
with XML-based mechanisms for invoking services of software components using
SOAP. These services can be deployed across any number of physical machines
connected to the Net.
The components’ architecture view of application development, therefore,
first defines components and their planned interaction and then builds
individual components that are finally glued together into an application. The
evolution of the application then becomes a question of changing the behavior of
its components or replacing one or more of them. While this view is valuable, it
begs the question of how these components are finally glued together and how
changes in the components and their interactions are treated. Process-based
architecture, another key emerging trend, addresses the issue through process
model-based technologies that provide a framework into which components can be
‘plugged’ in.
A critical part of software specifications (apart from components and their
functions) are business processes, which can be instantiated in the software
architecture within user interface elements or in process components.
Post-software implementation, it is the business process that is most subject to
change. Formally modeling the process helps structuring the software so that it
is easy to change.
Take this further–make the processes configurable within the architecture
and change them–by merely configuring the software rather than change
programs.
Business process modeling language and related languages such as xlang (used
in Microsoft’s BizTalk framework) are examples of this trend. Messaging and
workflow technologies are moving towards supporting a process model-based
approach that uses Web services, where each component within or outside the
organization merely provides functions strung together by the model-based
framework. This is an emerging area–standardization is underway.
Tools
The effective use of software development tools is critical in
industrializing the development. Tools can significantly accelerate the
development process. They can automate programming tasks and help manage the
process itself. Using tools such as error-trapping code, memory management
calls, etc reduces the probability of defects in the software. Tools also have
the potential to deliver software into a technical architecture. When the
software platform or architecture needs to be changed, re-configuring the tools
alone can usually allow the same application to be deployed on the new
architecture without expending additional development effort.
Many software tools are in the market today although several of them are
programming aids and not life-cycle development tools. Adding features such as
multi-user support, configuration management, application modeling,
component-based development support, application maintenance support and
architectural independence results in a spectrum of capability. For large-scale
or complex software development, components need to be integral to software
development tools; specification, development and testing need to be
component-based.
In practice, however, although very few truly component-based life-cycle
development tools are available today, significant strides have been made in
India, with TCS’s MasterCraft development environment. The evolution of
components as a way of life for software development has thrown up the need for
component repositories where components can be catalogued for search, discovery,
and systematic management. For a number of years, TCS has been supporting
research in this area at the University of Wisconsin, where an enterprise
components repository is being developed.
Enterprise components
Beyond the evolution of component technology, and the emergence of component
based automated software development and repositories, as outlined above, at the
enterprise level, component concepts are acting as methodologies that enable
organizations to articulate their information systems strategies.
Enterprise architecture must articulate the components an organization
requires. For an information systems strategy, stakeholder needs should be
analyzed. Processes that need software application support should be identified.
A component is a group based on functionality, e.g. business changes impact
the functionality of business components; changes in application affect
application components; and technical components are those that change depending
on purely technical features of software (rather than of architecture).
So business components are purely logical entities; application components
are logical but with manifestations also in software applications (a software
application may have more than one application component); and technical
components are those that are implemented directly in software as ‘infrastructure’
layers or as part of a software platform–they help run applications.
Application components correspond to one or more design-level components.
Each design-level component is realized using component technology, tools and
process models and maintained using a component repository.
Although the consulting world is just beginning to use enterprise-level
components, TCS, with its iMpact methodology for architecture consulting, has
already used them for strategic engagements. iMpact, one of the world’s few
such methodologies to be published so far, uses a totally component-based
approach from enterprise level down to design and development.
India must lead
Component concepts and technologies could well change the way organizations–and
the Indian IT industry–view software.
The evolution of component technology could usher in scenarios where business
chains–rather than mere organizations–become the ‘enterprise’ for which
solutions should be designed. As software tools come of age, significant
improvements in productivity, flexible IT strategies and higher RoI for IT
departments will be a reality.
Partnering with academic and industry bodies, TCS has, for long, taken the
route of developing its own products, methodologies and frameworks. But India,
too, has been playing an increasingly important role in IT and it is high time
that Indian industry, as a whole, should drive this change.
S Ramadorai
The author is chief executive officer of Tata Consultancy Services, Asia’s
largest software and services company.