The views of both Bennet and Shrobe are
fairly far reaching. Shrobe’s in particular represents a quite extreme
vision. However all the ideas so far are grounded in the fundamentals
of how component software (and software in general) is developed today.
To see how such views can be considered
plausible it is useful to consider the motivations for Component
Software expressed by other prominent authors. Clemens Szyperski, one
of the fathers of Component Software, explores the motivations for
current and future trends in component software in his paper Component
Software: What, Where and How? [Szyp02]. Here he divides the
motivations for using software components into the four tiers
summarised below:
Tier
1: Build Time Composition
Component applications that reside in this
tier use prefabricated components in amongst custom development. This
drives balance between the competitive advantages of purpose-built
software and the economic advantage of standard purchased components.
Most importantly components are consumed at development time and
released as part of a single custom implementation.
Tier
2: Software Product Lines
Scaling above Tier 1 involves the reuse of
partial designs and implementation fragments across multiple products.
This is the domain of Software Product Lines [Web1], [Bosch00]. In this
tier components are developed for reuse across multiple products. This
is similar in some ways to conventional manufacture. An automotive
manufacturer may create a variety of unique variations of a single car
model. These would be constructed through the use of standard
components and production systems that specialise in their
configuration and assembly into the various products. A similar concept
can be applied to component development and assembly with developers
taking roles either as component assemblers or product integrators.
Tier
3: Deployment Composition
In this tier components are integrated as
part of the product’s deployment (not at build time). An example of
deployment composition is the web browser, which is deployed then
subsequently updated with downloaded components that enable specialist
functionality on certain web pages. Sun’s J2EE also supports partial
composition at deployment time through the use of a deployment
descriptor and hence also falls into this category.
Tier
4: Dynamic Upgrade and Extension
In this final tier there are varying degrees
of redeployment and automatic installation that facilitate a product
that can grow and evolve over its lifetime. This final tier is the
realm of current and future research.
What is notable about Szyperski’s tiers is
that they are all motivated by financial drivers. Tier1 arises from the
competitive advantage gained through reusing prefabricated components
over developing them in house. Tier2 results from the forces of an
economy scope
to extend reuse beyond singular product boundaries and into
orchestrated reuse programmes.
In the third and fourth tiers Szyperski
switches focus from just reuse to aspects of composition and dynamic
upgrade. However the economic motivators here are subtler.
In the third tier they focus on the need for
standardisation in a similar vein to that introduced earlier by
Prieto-Diaz. Deployment composition generally relies on a framework
within which the components operate. This introduces a much-needed
discipline to the process as well as offering the opportunity to
develop components, which leverage off the framework itself.
The fourth tier supports dynamic upgradeable
and extensible structures and represents Syperski’s view on the future
of component software. Research into applications in this tier provides
an extremely challenging set of problems for researchers, such as
validation of correctness, robustness and efficiency.
With this fourth tier architecture Szyperski
is pointing towards a future of dynamic composition but also notes that
it is one that it will likely be hindered by the problems of
compositional correctness. Validating dynamically composed components
in a realistic deployment environment is an extremely complex problem
simply as a result of the implementation environment not being known at
the time of development.
This is an issue of quality assurance.
Firstly there is no reliable means to exhaustively test integrations at
the component suppliers end. Secondly there are little in the way of
component development standards, certifications or best practices that
might help increase consumer confidence in software components by
guaranteeing the reliability of vended components.
David Garlan [Gar95] illustrated similar issues a decade ago in
the domain of static component assembly. Garlan noted problems with
low-level interoperability and architectural mismatch resulting from
incompatibilities between the components he studied. Issues such as
“which components hold responsibility for execution” or “what
supporting services are required” are examples of problems arising from
discrepancies in the assumptions made by component vendors.
Garlan listed four sets of improvements which future
developments must incorporate to overcome the problems of
interoperability and architectural mismatch:
·
Make
architectural assumptions explicit.
·
Construct
large pieces of software using orthogonal sub-components.
·
Provide
techniques for bridging mismatches
·
Develop
sources of architectural design guidance.
Whilst these issues were observed when
considering static composition (i.e. within Szyperski’s first Tier) the
same issues are applicable to higher tiers too. Approaches to remedying
these issues have been suggested on many levels. One approach is to
provide certification of components so that consumers have some
guarantee of the quality, reliability and the assumptions made in their
construction. Voas introduced a method to determine whether a software
component can negatively affect an utilising system [Voas97].
The same concept has been taken further at
the Software Engineering Institute (SEI) at Caregie Mellon with a
certification method known as Predictable Assembly from Certifiable
Components or PACC [Web2]. Instead of simple black box tests PACC
allows component technology to be extended to achieve predictable
assembly using certified components. The components are assessed though
a validation framework that measurers statistical variations in various
component parameters (such as connectivity and execution ranges). This
in turn allows companies greater confidence in the reliability of the
components they assemble.
Szyerski also alludes to a similar
conclusion:
“Specifications need to be grounded in
framework of common understanding. At the root is a common ontology
ensuring agreed upon terminology and domain concepts.” [Szyper02].
He suggests the solution of a specification
language, AsmL, which shares some similarities with PACC. AsmL, which
is based on the concept of Abstract State Machines [Gure00], is a means
for capturing operational semantics at a level of abstraction that fits
in with the process being modelled. Put another way it allows the
formalisation of the operations and interactions of the components that
it describes in a type of an overly rich interface description. This in
turn allows processes to be specified and validated with automated test
case generators thus providing verification and correctness by
construction.
AsmL has been applied on top of Microsoft’s
.NET CLR by Mike Barnet et al. [Barn03] with some successes made in
specifying and verifying correctness of composed component systems. In
Barnet’s implementation the framework is able to provide notification
that components do not meet the required specification (along similar
lines to that suggested by Shrobe) but is as yet unable to provide
automated support or actually pinpoint the reason for the failure.
Keshava Reddy Kottapally [Web3] presents a near and far future
view of component software as being influenced by the development of
Architectural Description Languages (ADL’s). These ADL’s focus on the
high level structure of the overall application rather then
implementation details and again arise from similar concepts to those
suggested by Szyperski. Physically they provide specification of a
system in terms of components and their interconnections i.e. they
describe what a component needs rather than what it requires.
Kottapally’s near future view revolves around adaptation of the
currently prominent component architectures (.NET, J2EE, CORBA) to
incorporate ADL’s. He gives the example that ADL files would be built
with Builder tools designed specifically for ADL specification. Then
interfaces such as CORBA IDL could be generated automatically once the
ADL file is in place. The purpose being to facilitate connection
orientated implementations where the connections can handle different
data representations. This would be enabled via bridges between
interoperability standards (e.g. a CORBA EJB Bridge).
He also suggests a unified move to the new
challenges proposed by COTS based development. COTS-Based
Systems focus on improving the technologies and practices used for
assembling prefabricated components into large software systems
[COTS04], [Voas98]. This approach
attempts to realign the focus of software engineering from the
traditional linear process of system specification and construction to
one that considers the system contexts such as requirements, cost,
schedule, operating and support environments simultaneously.
Kottapally continues to present a more
far-reaching view on the future of CBSD. In particular he highlights
several developments he feels are likely to become important:
- The removal of static interfaces to be
replaced by architectural frameworks that deal with name
resolution via connectors.
- Resolution of versioning issues.
- General take up of COTS.
- Traditional SE transforms to CBSD.
- Software agents will represent human
beings acquiring intelligence and travelling in the global network
using component frameworks and distributed object technologies.
|