The most critical issue in the delivery of the ICT solutions in the
21st century will not be the hardware but rather the software,
the applications that support the new forms of business like Web Enterprises.
The developments in hardware and networking will provide enough processing,
storage and communication capability. However with the current approach
of software development it will take many years to deliver the applications
that really support reinvention of the business and take maximum advantage
of the capabilities of the information and communication technology.
development is still a 'craft' industry. Programmers build tailor-made
applications from scratch. The problems are the long development time
and high costs for new applications and the reality that the resulting
systems usually do not fully meet the business requirements. These difficulties
affect even more the adaptation of existing systems. Development time
and costs of modifications tend to grow over the years. Eventually it
becomes impossible to meet the changing business requirements with the
existing system. A total replacement with a new system is necessary.
for these problems are sought in packages or in better methods and tools.
Application packages are an alternative, but still need costly implementation
projects and adaptation of the business processes to the functionality
of the packages. Packages have their own architecture, which is not
always adjustable to the structure of the business. Normally a package
does not support all business functions in the supply chain. So it is
necessary to extend the functionality with other packages or tailor-made
applications. Packages do not integrate well with existing applications
and the package may need ICT infrastructure other than the current installed
one. Maintenance of existing package-based systems is still expensive
and time-consuming especially with regard to the necessary upgrading
caused by new releases.
and tools have streamlined the design and development process and realised
a first industrialisation of the application delivery. But methods and
tools did not improve the adaptability to the business of the resulting
applications. Reason is that methods and tools strongly focus on the
improvement of the development process and not focus on an adaptable
construction of the applications.
way to bridge the application gap is to reinvent the construction of
applications. The car industry is a good example. This industry realised
a shorter life cycle of design, development and production of their
products through standardisation of the product components. The car
industry is also able to mass-produce cars that within certain limits
can be customised to the wishes of the client.
developers also need an application construction, which is based on
components. Cap Gemini believes that the solution for coping with
the challenge of application development in the 21st century
lies in a new approach of the application construction: Component-Based
a new and rapidly emerging approach for application development by plugging
together previously built components. This paradigm is not something
new. It has already been endorsed by many industries.
developers do have some notion of the essence of a component. It has
encapsulated functionality and a well-defined interface providing some
service. But in practice a wide variety of different types of components
exist, because the value of components depends on the beholder. For
example for the IT engineer components are a persistency manager for
objects or a transaction manager for secure transactions. For a business
architect components are a pricing pattern or a financial product. An
application developer is more interested in components like an order
window. Apparently the concept of componentisation applies to all levels
of abstraction, from business models to technical components and from
design models to software coding.
the way that all these different types of components can be adapted
to meet specific requirements and how they interact with other components
has not yet been demystified. The solution in our opinion is by no means
just a matter of precise specification of a single component. The solution
also is not an approach where developers freely choose their components
and simply have a working software system in the end. Components should
not be regarded as solitaire phenomena. Instead, they must be bound
to a specific context to ensure proper construction and operation.
believes that the metaphor of a marketplace where developers buy their
components only can be realised with the concept of frameworks
that offer an appropriate context for the assembly of components.
chapter we introduce the Cap Gemini approach of CBD. This approach
is based on the following concepts:
component as the basic element for application construction.
framework as a special component that provides context for component
- A Component
Architecture prescribing the use of components and frameworks
in design and construction of applications
Architecture is part of the Information System
Architecture. The Information System Architecture focuses on the
role of applications in the business (the function aspect), whereas
the Component Architecture focuses on how applications are composed
from software components (the construction aspect).
The Car Metaphor
of cars can act as a metaphor for the ideas about application construction
with CBD. Also the car industry was at first a "craft'' industry.
Every car was individually designed and hand-made in accordance with
the requirements of the customer. This was a very time-consuming and
expensive way of building cars. The first step in industrialisation
of the car industry was mass-production. Mass-production is based
on standardisation of both the car and the production line. The result
has been fast and cheap production of a uniform type of car.
want a greater variety of the product. They want a car that fits their
wishes and which they still can afford. So the next step is mass-customisation
of the product and a flexible production process. An important principle
in mass-customisation is a better choice of the granularity of the reusable
has standardisation of the parts. This is standardisation at
the level of nuts, bolts, spark plugs and tyres. This is also useful
for the efficiency of mass-production. The production of the parts is
done by a number of suppliers, who mass-produce the parts at low cost.
More suppliers can deliver the same type of part.
is also supported by standardisation. But this is standardisation of
components at the level of sub-assemblies of the car like the
motor, the gearbox and the wheel suspension. This level of standardisation
of sub-assemblies allows for different combinations of the available
components, so customers can be offered a greater variability of the
car type is currently based on a standard floor pan, which acts as frame
for the mounting of different engines and different body types like
a sedan, hatchback or wagon. Customers can choose the body-type, combine
it with a certain type of engine and gear-box, choose a luxury level
of the interior and the exterior colour and then fit the car with a
lot of accessories. Thus customers can order a car that is customised
to their wishes.
manufacturer needs a context for both the design and construction of
these components at the level of sub-assemblies. In the component-based
approach of Cap Gemini, we use the framework as the context
for design and construction of application components. The idea of the
framework is used in the car industry in the following ways:
as Construction Frame
frame is the part of the sub-assembly that supports the mounting of
other components and parts. An example is the floor pan as frame for
the whole car construction.
as Design Framework
car industry uses Computer Aided Design (CAD) for the design of new
car types. This provides the opportunity to reuse the design of existing
components in the design of a new car. The designer can adapt the
design of components or let the component supplier design a new component.
The designer can also reuse a design framework. That is the design
of a complete sub-assembly of components like a complete motor, a
complete wheel suspension or a steering-column. The framework defines
how the components and parts of the sub-assembly work together. So
the framework has already a lot of complex functionality, which is
invented and designed earlier. The designer can adapt the framework
and the components it already defines, for the design of a new sub-assembly
for use in a new car-type. The result is a faster design of new cars
and reuse of inventions, creativity and knowledge, which were developed
The Role of a Component Architecture
is put into practice, it is necessary to divide the development organisation
in component developers in the role of component supplier at
one side and developers of software systems assembled of these components
in the role of component consumer at the other side.
can only be effective when a common basis is provided for suppliers
and consumers of components. A Component Execution Environment (CEE)
like COM or CORBA provides a partial solution. CEE's mainly focus on
the technical issues concerning the communication between running software
components. A component architecture is needed to provide suppliers
and customers a set of rules, standards and guidelines that prescribe
what components are and how they are assembled in software systems.
Component Architecture Principles
architecture in our view is a set of principles and rules according
to which a software system is designed and built with the use of components.
This paper focuses on the principles that are independent from the business
domain or the technology of the application. This architecture is the
base for more specific architectures defining the principles and rules
for components in a specific business domain.
architecture covers three aspects of a software system. These are:
architecture specifies the type of building blocks systems are composed
of the software system
architecture specifies how the building blocks are joined together
when developing an application. The architecture describes the role
that the building blocks play in the system.
are divided in categories based on their functionality. These categories
are placed in a two-dimensional layering.
Benefits of the Component Architecture
component architecture supports the developers in realising a coherent
and consistent design of a component-based software system. Such a design
based on the component architecture must be profitable for the following
component architecture allows software developers to adjust a software
system smoothly to changing business requirements and new technology
component architecture supports specialisation of component developers.
Technology-oriented people build technical components and business-oriented
people focus on business components.
impact of changes
component architecture separates in a software system the more stable
components from the more volatile components. Most changes in a software
system remain restricted to the more volatile components.
8.4.1 What is a
is a piece of software or software design with a well-defined interface
and hidden internals. The component is based on a concept, which is
recognisable and of value for its user such as another component, a
software system or a human user. The interface of a component contains
its features, showing what the component can deliver. Examples of features
are services, timer events, attributes, tools etc.
So, a user
knows what the component can deliver, but does not know how
the features are performed.
little to say about the size of a component. A component that keeps
stock of a CD collection could be small. If the component keeps track
of trends in music, register information about artists and relate the
CD collection to all this, it is considerably larger.
of a component has different aspects. The CD-component consists of a
GUI that allows to enter data, it defines domain-objects such as 'CD'
and perhaps 'Artist', it stores objects on your hard disk and it provides
business logic 'behind the screen' to make it look intelligent. All
these aspects may be combined in one component. However a complex component
is more flexible and easier to maintain when it is constructed as a
collaboration of a number of components, each realising some specific
aspect of the total behaviour.
to assemble our applications from components at the level of sub-assemblies
that support a specific business or technology role and not from components
at the level of parts like the screws in the car metaphor.
What is a Framework?
provides different definitions of frameworks.
framework is a pre-built assembly of components, together with the glue
logic which binds them together and is designed to be extended. A framework
is designed to offer a large number of related services centred on a
broad theme. The framework may also be treated as a component by other
clients which use its services, so the whole framework may offer its
services through IDL specified interfaces."
of Jacobson adds an object-oriented
abstract subsystem is a subsystem that contains abstract and concrete
types and classes designed for reuse." and "Ideally
a good framework is designed so that specialisations can be constructed
from its abstract types and classes with ease."
a harmony in the different definitions of what a framework is. Both
definitions say that a framework creates a context for the assembly
of components in an application.
is a special kind of component. It has the interfaces of a component
and it also offers plug-points on which other frameworks or components
prescribes a role that must be played by a component or framework that
uses the plug-point and it defines the rules that the developer must
obey when developing a component or framework that plays the role.
represent concepts defined by the framework that provide a context
for development of applications. A framework creates de facto standards
because developers must follow the rules that are put down in the framework.
Therefore these frameworks are powerful elements for organising component-based
principles prescribe how a software system is composed from components
Dependencies between Components
construction principles that prescribe how applications are composed
from components and frameworks.
and frameworks can make use of another component or framework in two
The Extends Relationship
extends-relationship the plug-point represents an interface.
The plug-point defines services that the component using the plug-point
should deliver. The functionality of the component is an extension
to basic functionality delivered by the framework.
is the Windows printing framework that plays a small but important role
in many Windows applications. The printing framework provides the basic
functionality that is common to all printing services such as printing
and viewing of a document. The framework does not deliver the specific
functionality for all the different printer types that Windows users
utilise. Therefore the plug-points of the framework prescribe abstract
components such as printer and viewer that must extend
the functionality of the framework for printing and viewing services
for a specific type of printer. The plug-point provides a clear definition
of these components, their interfaces and standards that printer manufacturers
must follow when developing the printer and viewer components for their
The Uses Relationship
the uses relationship the plug-point represents a class,
which can be abstract or concrete, for instance the class Person. The
plug-point defines the common behaviour of all persons. The component
that plugs into the plug-point creates an 'alter ego' of the plug-point-class,
for instance the class Customer or Employee. These classes are roles
that persons can play in the organisations. The 'alter ego' Customer
uses the functionality of Person and adds own features for the Customer
relationship is useful for shared data. In many, if not all organisations
registration of persons is centralised. When the only issue is the sharing
of data, person can be an 'ordinary' component and other components
simply share the person-data by calling the interface of this component.
The uses relationship offers more: alter ego's can have their own attributes
The Inherits from Relationship
the inherits from relationship the plug-point represents an abstract
class in the framework. Plugging into the plug-point means creating
a specialisation of the plug-point in the component.
is an 'Agent' framework. The components in the framework support complex
task management functionality. A plug-point provides this functionality
through an abstract class called 'Agent'. Developers realise business
components with agent functionality as a specialisation of this
class such as task managers or workflow managers. This Agent components
have the behaviour for controlling tasks, delegation of sub-tasks to
other Agent components, handling conditions and more. The components
can suspend a task and 'freeze' its state so that it can be continued
at some other time.
principles focus on grouping of components and the boundaries between
components to provide a basis for organisation of development and maintenance
of components and software systems.
The Component Architecture is Two-Dimensional
architectures based on frameworks, components and OO have proven to
be very suitable to organise software, designed for change. Jacobson defines a layered architecture as
a software architecture that organises software in layers, where each
layer is built on top of another more general layer.
proposes a two-dimensional component architecture. The first dimension
defines a software system in layers of generality in conformance
with Jacobson. The second dimension defines a software system in layers
Components in Layers of Generality
the layers of generality the upper layers contain more application specific
components and the lower layers contain more general components. A typical
layered architecture comprises three layers: a system utility layer,
a business layer and an application layer, but more layers are allowed.
utility layer forms the bottom layer providing business independent
system utilities such as printing, notify mechanisms, logging and so
on. The layer contains components that provide generic components and
frameworks that support concepts like agents and printers.
layer forms the middle layer providing components with generic business
functionality and frameworks that define and support complex business
concepts through their plug-points. The number of middle layers is not
fixed. Sometimes a distinction between a common business, business,
sector specific and company specific layers are suitable.
specific layer is the topmost layer containing the components that
are only used in a specific application. These components are not used
in other applications.
utility and business layer support reuse of general business and system
utility components and frameworks in different applications. This accelerates
the application development.
utility layer separates complex IT functionality from the business-oriented
functionality in the higher layers. The developers can perform changes
in business logic and system utility logic more independent of each
other. The layering also supports the separation of the development
organisation in IT oriented and business-oriented developers.
Components in Layers of Volatility
is a second argument for layering of software components. This layering
is orthogonal to the generality layering.
of this layering is to separate the more volatile functionality of software
systems from the more stable functionality. The layering discerns the
components that support on the most volatile part of a software
system: the interface with human users and other systems.
components that focus on processes. These components support
for instance workflow logic and transaction processing.
components that support stable information and procedures in a
certain business or technology domain.
a one-way dependency relationship between interface, process and domain
components. Domain components are unaware of the process components
that use them. The process components are independent of the interfaces
that employ them.
of volatility support independent changes in interface, process and
domain components. Domain components supporting financial accounts are
used in different transaction processes. New transaction types are added
and existing transactions changed without changing the domain components.
The same holds for the interfaces. The transaction processes are used
by bank-employees through a Windows interface and by the customers through
an ATM. New interfaces are easily added, for instance an Internet interface
for the customer supporting home banking.
Applications in the Component Architecture
Architecture leads to a new meaning of the concept application.
In the more conventional approach an application is a program (thus
a piece of software) that the user supports in the execution of a task.
Component Architecture an application is an assembly of application
specific components and of business and system utility components and
different applications share components and frameworks in the business
and system utility layer. Especially the ICT functionality offered by
components and frameworks in the system utility layer is shared by many
exists as a cluster consisting of the design models of its components
and frameworks and the implementations for different types of software/hardware
platforms and the executables as installed at different locations.
The Impact of CBD
have a major impact on both the application delivery and the adaptability
of the business.
Application Delivery with CBD
totally change the way in which developers deliver an application. The
above figure depicts the activities of the developers when delivering
applications for a business-domain in the company. The activities are
projected on the layers of generality in the Component Architecture.
1: developing the system utility components and frameworks
activity is performed by ICT specialists who design and build
the system utility frameworks, which support the business components
and frameworks. The implementation of the system utility frameworks
is based on different types of technology infrastructure. The system
utility frameworks are produced as software.
By the way: the ICT specialists also build the software for the business
components and frameworks when it is not possible to generate them
2: developing business components and frameworks
activity is the task of business component developers who design
the business components and the supporting business frameworks. The
components and frameworks are specified in the unified modelling language
3: Design of the applications for a business domain
activity is the task of application architects who design the
applications, which support a certain business domain within the company.
In our example of a virtual bank in chapter 7, business domains are
the administration of a financial product in the back-office, the
distribution channel manager in the middle-office or the Internet
distribution channel. A business architect has made the business design
consisting of a design of the business organisation, the business
processes, business functions and business information. The application
architect uses this business design of the business domain as starting
point for the application design. Application architects analyse the
requirements and model the applications by means of prebuilt components
and frameworks. The application is specified in the modelling language
UML. The design also provides instructions for the development process,
for example specialisation of existing components and frameworks and
development of new components and frameworks.
The application architect has the supervision of the application development.
4: developing the applications
activity is the task of application developers who realise
the design of the architects. The developers purchase the necessary
system utility and business components and frameworks from the developers,
who perform activities 1 and 2. They develop the necessary application
specific components. The applications developers assemble the application
from the components and frameworks. They generate the software for
the technical platform with the use of code generators and transformation
rules. The developers perform the acceptance testing in co-operation
with the end-users in the company.
of the application development follows the separation of the business
domain and ICT domain of the Component Architecture. The design of the
system utility components and frameworks (Activity 1) is based on the
available support of information and communication technology. The design
and the development of the application and the business components and
frameworks in the application and business layer (activities 2,3 and
4) are based on the demands of the business. The business domain is
technology independent and system utility domain is business independent.
of the business domain are models. The product of the system utility
domain is software. The separation makes it possible to match business
demands and technology support.
also makes a separation between the development of components and frameworks
(activities 1 and 2) and the usage in a specific application (activities
3 and 4). This makes it possible to develop both system utility and
business components and frameworks, which can be used for the development
of specific applications in different projects. The component developers
specifically design the components and frameworks for reuse in different
also supports the division of the development in front office and back-office
activities. The activities 3 (architect) and 4 (application developers)
are front-office activities that are executed in co-operation with the
customer. Architects and developers need communication with the customer
for designing, developing and testing the applications. Developers in
the back-office of Cap Gemini or other independent suppliers perform
the activities 1 and 2 and deliver the components and frameworks to
the architects and developers in activities 3 and 4.
Reduction of Development Time
that CBD in combination with a business-oriented design will strongly
reduce the development time of applications.
which now takes 9 months to develop, will be developed in 9 weeks or
even 9 days. This reduction of the development time is possible in the
use of system utility frameworks that support the business applications.
This results in business applications with only business logic and
no technical logic. The executable instructions for a business application
consist roughly of 20% of business logic and of 80% of technical logic.
With the use of CBD the developer must still specify the 20% of business
logic, but the 80% of technical logic is reused from system utility
software of business components and frameworks is generated from a
specification in UML. Programming of the software coding is no longer
design the business components and frameworks for reuse. Take the
business functions and business information of a specific business
domain for instance financial products as a base for the design and
specification. The developers design a general framework for a financial
product that defines all functionality that can be reused in the development
of a specific financial product. The next time the bank wants to introduce
a new financial product the developers only must specialise and extend
the general framework. The result is that the developers must define
some 20% of the functionality as new functionality. The rest of the
functionality was already pre-defined in the framework.
the reuse of software. Reuse is not new. But most forms of reuse are
at the level of individual parts like screws and tyres in our car metaphor.
features of CBD are:
older methods do not have frameworks, which contain the general business
and system utility logic of the applications. Frameworks also make
the assembling of applications out of components easier. Without frameworks
there is nothing that holds the components in the application logically
and technically together. Frameworks make it possible to define assemblies
of components with more complex business and ICT functionality. Our
approach results in flexible construction of components at the level
of sub-assemblies such as the motor and the car-body in the car metaphor.
hardware and software environments
methods for reuse are based on a specific hardware/software platform,
development tools and programming language. This makes reuse in other
technical environments impossible.
We facilitate reuse on different platforms in two complementary ways:
utility frameworks act as a bridge between the business components/frameworks
and the supporting software and hardware infrastructure. A system
utility framework adds platform-specific system utility logic
to the business components and frameworks that reuse it.
specify business specific components and frameworks in a modelling
language like UML and generate from this specification the software
components and frameworks for the different technical environments.
Adaptability to Business and Technology Change
results in applications that are easily adaptable to changing business
requirements. Business managers nowadays are confronted with rapid change.
Competition forces them to renew their products and services or to lower
the cost of production. Companies are deciding which activities are
core to their business and which activities are candidates for outsourcing.
Mergers are bringing companies together and forcing them to reorganise
an environment, current tailor-made applications and monolithic software
packages are more inhibitors than enablers of change.
makes applications adaptable to business change in the following ways:
component/framework approach makes it easy to change existing applications
by changing the assembly of components and frameworks and building
new applications quickly from available components and frameworks.
- In chapter
7 we showed how the application architecture prescribes a distributed
design of applications, which is derived from the network organisation
of the business. Changes in the business are easily translated to
the necessary changes in the applications. In the case of outsourcing
of business activities it is easy to determine which applications
are part of the outsourcing.
uses system utility frameworks that add systems management functionality
for testing, deployment, maintenance and operation to applications.
also supports the adaptability of applications to changes in technology.
The ICT specialists develop new or adapted system utility frameworks
that make the new technology available for the applications. For the
business components and frameworks that reuse the plug-points of the
system utility frameworks two changes are possible:
frameworks still offer the same functionality through the same
plug-point but the internal processing is improved. For instance
the frameworks show a better performance. The performance of existing
applications that use the frameworks immediately improves.
frameworks offer new or improved functionality through new plug-points.
The company can take advantage of this new functionality by redeveloping
existing business components and business frameworks and let them
reuse the new plug-points. These changes can be accomplished gradually.
The company can also develop new businesses and thus new applications
based on the new system utility functionality.
of our application architecture and CBD is that applications systems
change by adaptation and not by replacement.
Mastering the Complexity
helps an organisation to master the growing complexity of the application
systems. Our example of a virtual bank in chapter 7 shows a far more
complex system than current stand-alone back-office transaction systems.
This complexity will grow exponentially when enterprises become virtual
agile Web Enterprises of companies who are working together in ever
changing patterns of co-operation in the delivery of products and services
to the customers.
an organisation to master the complexity in the following way:
developer, who uses a component or framework in an application, must
only know which services or functionality the component or framework
delivers. The components and frameworks hide their internal logic
for the developer. In doing so they also hide a lot of complexity.
In our car metaphor, the tyre and the rim have a simple standardised
interface. This gives tyre manufacturers the room for developing their
tyres. In the last twenty years the tyre has become a very complex
and high-tech product. With the use of computers the manufacturer
has developed a lot of new knowledge about the construction of tyres.
The same development has taken place in the construction of motors,
automatic gearboxes and all other car components. So the whole car
is now a very complex product but the basic construction from components
and frameworks did not change very much. All new knowledge and growing
complexity are hidden in the components.
CBD will help to do the same with application construction. A standard
construction based on components and frameworks with standardised
interfaces makes it possible to develop more complex applications
with a higher service level without changing the whole application.
We only need to change the components and frameworks and hide all
complexity in these components and frameworks. Good examples of such
components with growing complexity and service level are frameworks
in the system utility layer like transaction managers or persistency
second method to master complexity is self-management of applications.
The motor of a car has an electronic motor management system that
controls the combustion process and the catalyst. Without this self-management
it is impossible to fulfil the current environmental requirements
for cars. The management system also has an interface to the maintenance
diagnostics system in the garage.
Self-management is extremely useful for applications and not only
for built-in control of business processes, which is realised by agents.
During the application life cycle there are a lot of activities and
functions that are better realised with self-management. Deployment
of applications is facilitated when components and frameworks have
built-in functions for the control and execution of their own installation
and version control. The result is "plug and play" software
components. Operation is facilitated when components and frameworks
have built-in functions for their testing, monitoring and remote operation.
One of the important results of self-management is the growing manageability
of the application system. Monitoring, testing and auditing of the
processes is primarily executed by the applications themselves. So,
errors and disruptions are detected earlier and can more easily be
an important contradiction in the feasibility of applications:
can I build an application that is both complex and adaptable while
still being reliable?
history of car we see a growing complexity of the construction, a growing
adaptability of the product to the wishes of customers and a growing
reliability of the car in use.
help us to cope with the same contradiction. We can build ever more
complex applications that are easily adaptable to both business and
technological changes and yet are still reliable in operation and do
not threaten the continuity of the business.