Software is hard to change for a variety of reasons, including the presence of assumptions about the external system (the context) being deeply embedded within software fragments. This project investigated this problem from two perspectives: reduction of assumptions in particular fragments through the appropriate choice of structuring (essential structure); and, mitigating the presence of assumptions already present.

The idea of communication history was central to implicit context: the record of communications and data passed could be used to retrieve information without explicitly requiring intervening units to know anything about it.

Declarative event patterns were a realization of communication history, geared as an extension to aspect-oriented programming.

This project, though finished, gave rise to many of the current ideas of LSMR.


Declarative event patterns (via the URD tool)

Implicit context (via the IConJ tool)