Evolution is a fact of life. Environments and the species that operate within them – living, artificial, or virtual – evolve. Until now, evolution of the software system species has focused on code/design-level changes, rather than requirements/environment-level ones.
We are interested in developing techniques for designing software systems that evolve in response to changes in their requirements and operational environment. Today, the operational environment of a growing number of software systems is global, open, partly unknown and always unpredictable. In this context, software systems have to evolve in order to cope (“survive” is the technical term for other species). Some of this evolution is at the code level, and some at the architectural level. The most important evolution, however, is taking place at the requirements level and the environment, and is intended to ensure that a system continues to meet the needs of its stakeholders and the constraints – physical, economic, legal and otherwise – of its operational environment.
Evolving requirements are increasingly caused by an evolving understanding of a complex system operating within a complex environment. Consider a system that integrates information from a number of law enforcement agencies operating in a certain metropolitan region. It may well be that none of the stakeholders understands up-front what are the requirements for this system. Accordingly, a pragmatic way to proceed may be to offer an initial system which then evolves incrementally while in use. In this case, the initial system can be seen as a platform for evolution, rather than version 1.0 of the system.
Our perspective in this research has a Requirements Engineering (RE) orientation: requirements models capture purposes, while domain models capture assumptions about the operational environment of a system. System evolution is to be driven by requirements and domain models. To advance the state-of-the-art, we propose to enrich the models we use by adopting ideas and theories from Artificial Intelligence (AI), notably Multi-Agent Systems, Knowledge Representation and Planning.