PROTEUS Configuration Language(PCL)

by Ian Sommerville, Univ. of Lancaster

In order for a software system to remain useful it must evolve. This evolution causes different versions of the system to be created which might run on different hardware platforms, offer extended or more limited functionality, offer better performance, etc. Typically, once a new version of a system has been created, it is maintained as an independent entity without reference to the system versions used to create it.

This causes difficulties for the evolution process. If a problem is reported for one version of a system, it may be very difficult to relate the problem report to previous system versions; costs of change have to be estimated independently for each system version; finding the most appropriate version of a system to act as a starting point may be difficult.

Such problems arise because we lack methods and notations to represent all of the versions of a system in a single coherent model. If such a model is available, the impact of change across versions is much easier to analyse and the possibility exists of using it as part of a configuration information system and using it to support other configuration management activities such as system building.

The development of the Proteus Configuration Language (PCL) is a central part of the Proteus project which is intended to help solve these problems of system evolution. PCL was derived from previous work on module interconnection languages and is a language to represent such system models. PCL can be used to describe hardware, software and documentation descriptions in a single system model, integrate descriptions of the logical system structure with descriptions of how that system is represented as a set of files and model tools which are used to build a system version.

A PCL description of entities making up an application system includes the following parts:

¥ A classification which is used to identify the type of entity. Classifications might be hardware or software, C-Source-Code, etc.

¥ An attribute part where attributes identifying a system version (such as the development language, the customer, etc.) and other information may be specified.

¥ An interface part where the interface offered by a component to other components is described.

¥ A composition part where the logical composition of a component in terms of other components is defined.

¥ A physical part where the representation of a component in terms of files in a repository or filestore is specified.

¥ A relationships part which sets out the relationships between entities. There is a set of built-in relations and further relations may be user-defined.

A key characteristic of PCL is its ability to support variability. Conditions, governed by attribute values, may be included in any part of a PCL description. When a new version of a system is created, the PCL description can be modified by adding conditional expressions so that it represents both the old and the new versions. As evolution progresses, the PCL description itself evolves so that it presents a single view of all existing system versions.

PCL is intended for use in conjunction with the design methods (SDL, HOOD and MD) being extended in the Proteus project. These methods are intended to describe a single version of a system. PCL adds value to them with its support for describing system families and, in some cases, the tools associated with the methods are being developed to generate skeleton PCL descriptions which serve as a basis for family description.

A unique feature of PCL is its ability to model tools as well as the structure of application systems. Tool modelling involves specifying the input and output interfaces of a tool and the scripts which are executed in a particular environment to run the tool. Tools are associated with entity classifications so that the tools required to build a specific entity may be inferred by the system.

The toolset supporting PCL helps with the development of system models and demonstrates the feasibility of using such models in the automation of the system building process. It will be described more fully in a future edition of this Newsletter. In short, the PCL toolset includes a graphical editor to create and modify PCL descriptions, a PCL analyser to parse and check descriptions, a tool to create specific version descriptions from family descriptions and a makefile generator. This tool creates a makefile from a PCL description which can then be used to build a specific system version. The toolset also includes a repository manager which acts as a front-end to version management systems such as RCS. This provides a convenient user interface and extended facilities for version identification.

For further information download the following references from the FTP server.