|
Overview
Component software has many benefits, most notably increased software re-use;
however, the component software process places heavy burdens on programming
language technology, which modern object oriented programming languages do
not address. In particular, software components require contractual specifications
that are both sufficiently expressive and sufficiently abstract, and, where
possible, these specifications should be checked formally by the programming
language. This project shows how a modern, object-based programming language
can be extended to increase component specification.
The problem domain for specification is stateful, component roles, with
particular emphasis on specifying dependencies for re-entrance across roles.
The language has two extensions for supporting this.
1) Negotiable interfaces are interface types extended with protocols, which
allow specification of changing method availability for stateful roles.
2) Type layers are extensions to module signatures, which specify
dependencies between the interfaces of an application and can be combined to
form an abstract runtime architecture.
The language extensions have been added to a variant of the Component Pascal
programming language (gpcp).
Research team
Supervisor
Associate Professor Paul Roe
Research Students
Simon Kent
|