Skip to Main Content
Support for evolution can be classified as static or dynamic. Static evolvability is principally concerned with structuring systems as separated abstractions. Dynamic evolvability is concerned with the means by which change is effected. Dynamic evolution provides the requisite flexibility for application evolution, however, the dynamic approach is not scalable in the absence of static measures to achieve separation of abstractions. This separation comes at a price in that issues of concern become trapped within static abstraction boundaries, thereby inhibiting dynamic evolution. The need for a unified approach has long been recognised but existing systems that attempt to address this need do so in an ad-hoc manner. The principal reason for this is that these approaches fail to resolve the incongruence in the underlying models. Our contention is that this disparity is incidental rather than fundamental to the problem. To this end, we propose an alternative model based on the compliant systems architecture (CSA), a structuring methodology for constructing software systems. The overriding benefit of this work is increased flexibility. Specifically our contribution is an instantiation of the CSA that supports unified static and dynamic evolution techniques. Our model is explored through a worked example in which we evolve an application's concurrency model.