Session:Software Architecture Consistency--Paper Preview

From WICSA Conference Wiki

Jump to: navigation, search

A Declarative Approach to Architectural Reflection

Mads Ingstrup, Department of Computer Science, University of Aarhus
Klaus Marius Hansen, Department of Computer Science, University of Aarhus

Recent research shows runtime architectural reflection is instrumental in, for instance, building adaptive and flexible systems or checking correspondence between design and implementation. Moreover, experience with computational reflection in various branches of computer science shows that the interface through which the meta-information of the running system is accessed, and possibly modified, lies at the heart of designing reflective systems. This paper proposes that such an interface should be like a database: accessed through queries expressed using the concepts with which architecture is described.

Specifically, our contributions are: (1) a presentation of the general idea of a query-based approach to architectural reflection, (2) a definition of an Architectural Query Language (AQL) in which perspectives on an architectural model can be expressed as queries, (3) a prototype of a system which both creates runtime models of specific distributed architectures and allow for evaluation of AQL queries on these models. We illustrate the viability of the approach in two particular applications of such a model: constraint checking relative to an architectural style, and reasoning about certain quality attributes of an architecture.

A Case Study in Incremental Architecture-Based Re-engineering of a Legacy Application

Marwan Abi-Antoun, Institute for Software Research International (ISRI), Carnegie Mellon University
Wesley Coelho, Department of Computer Science, University of British Columbia

Without rigorous software development and maintenance, software tends to lose its original architectural structure and become more difficult to understand and modify. ArchJava, a recently proposed implementation language which embeds a component-and-connector architectural specification within Java implementation code, offers the promise of preventing the loss of architectural structure.

We describe a case study in which we incrementally re-engineer an existing implementation with an eroded architecture to obtain an ArchJava implementation that more closely matches an idealized architecture. Building on results from similar case studies, we chose an application consisting of over 16,000 source lines of Java code and 80 classes that exhibited many characteristics of real-world legacy applications. We describe our process, some lessons learned, as well as some perceived limitations with the tools, techniques and languages we used.

Generalizing consistency checking between software views

Johan Muskens, Technische Universiteit Eindhoven
Reinder Bril, Technische Universiteit Eindhoven
Michel Chaudron, Technische Universiteit Eindhoven

Inconsistencies between software views are a source of errors for software systems. In this paper we present a general approach that aids in finding inconsistencies between different views. This approach supports both intra phase consistency checking and inter phase consistency checking. The approach is suitable for detecting consistency problems between, for example, multiple diagrams in a UML design as well as between a design and an implementation.

The approach is based on verification of rules using relation partition algebra. In this paper, we present two types of rules: obligations and the more commonly used constraints, which can be viewed as lower bounds and upper bounds, respectively.

To check consistency between views, rules are derived from one view, the so-called prevailing view, and imposed on another view, the so-called subordinate view. Because our approach does not prescribe which views are prevailing, it can be used in any arbitrary process. Violations to rules can be expressed in terms of either the prevailing view or the subordinate view. Exceptions to rules are easiliy embedded in our general approach to consistency checking.

Personal tools