Component-Based Software Engineering
Component-based software enginering and software architectire is an emerging research area. It encompasses the
traditional area of software design with an emphasis on the design
of distributed systems. Based on the past failures of complex design
techniques to gain wide spread acceptance, CBSE and software architecture languages
must demonstrate that they provide significant value. A primary benefit
will be the early detection of software faults. This is particularly
important for distributed systems, since even simple distributed systems
can be difficult to understand. LASER is exploring ways in which architectural
description languages need to be designed to increase their usability,
acceptability, and consequently analyzability.
Architecture-based Verification
Architecture-based verification is particularly important for distributed
systems since it is often difficult to determine the appropriate
interactions among the components. An approach is needed in which it
is easy to experiment with different interaction models among the components
in order to get early feedback about the impact on the overall behavior
of the resulting systems. One of the problems that currently arise
with this approach, however, is that the semantics of the components
are inextricably intertwined with the semantics of the interaction
model. For example, a simple change from an asynchronous send to
a synchronous send requires that the component now be able to block
and process an acknowledgement. Of course, more complex interactions
models that support features, such as priorities and bounds, require
more extensive component modifications. We have been developing a building
block approach to architectural design that separates a component’s
behavior from its interaction models as well as from the connectors.
This leads to an architectural design where it is indeed possible
to experiment with alternative interaction models without having
to modify the components. We combine this approach with finite state
verification so that developers can make architectural modifications
and quickly receive feedback about the impact of these changes on
important system properties.
[an error occurred while processing this directive]