Home > Software Architecture and Distributed Object Technology
Software Architecture and Distributed Object Technology
Overview »
Publications

Software Architecture

Software architecture is an emerging new 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, 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.

Although our long-term goal is to find a common set of building blocks for the most widely used interaction models, we present here some preliminary results based on the investigation of one particular interaction model - Message Passing. Variants of message passing semantics are investigated and formally defined in terms of a set of reusable ports. An example is presented to show how the interactions of a message passing system can be specified using ports and how finite-state verification techniques can be used to find a sound design.

Software Architecture Processes

Software Architecture Processes, namely processes for using architectures to develop software, are also being researched by LASER. Architectures are viewed as software engineering artifacts that can be used as the basis for developing superior software products. But the development of these products should still be accomplished with the guidance of processes. The processes are themselves software artifacts that should be developed in such a way as to demonstrably assure that they achieve their goals and requirements. Architecting Processes should be developed to demonstrably assure that software products are of high quality. Different processes will have different effectiveness in assuring this. Different architecture definition formalisms will be of differing value in supporting these different processes. The selection of an architecture definition formalism should, therefore, be strongly determined by the choice of Architecting Processes, and the goals and requirements that they must satisfy.

 

© 2006 University of Massachusetts Amherst. Site Policies.
This site is maintained by the Laboratory for Advanced Software Engineering Research.