Normative Services for Self-Adaptive Software to Support Dependable Enterprise Information Systems

Software has become a central part of a rapidly growing range of applications, products and services from all sectors of economic activity. Systems in which software interacts with other software, systems, devices, sensors and with people are called software-intensive systems. Examples include large-scale heterogeneous systems, embedded systems for automotive and avionics applications, telecommunications, wireless ad hoc systems, business applications with an emphasis on web services, etc. Our daily activities increasingly depend on complex software-intensive systems that are becoming ever more distributed, heterogeneous, decentralised and interdependent , and that are operating more and more in dynamic and often unpredictable environments. This development has several important consequences: • There exist different kinds of complexity in the development of software. Historically, as software systems grew larger, the focus shifted from the complexity of developing algorithms to the complexity structuring large systems, and then to the additional complexities in building distributed, concurrent systems. In the next ten to fifteen years we will have to face another level of complexity arising from the fact that systems have to operate in large, open and non-deterministic environments: the complexity of knowledge, interaction and adaptation (see Figures 1 and 2). • Instead of developing computer-oriented systems where people have to adapt to the computer we have to develop human-oriented systems into which computers integrate seamlessly. • Requirements for software quality will dramatically increase. But our current methods are not sufficient to deal with adaptive software in a dynamic Beyond the Horizon – Final Report June 2006 2 environment, especially not for large systems with complex interactions. We need to develop practically useful and theoretically well founded principles, methods and tools for engineering future software-intensive systems. Current engineering methods and tools are not powerful enough to design, build, deploy, and maintain software-intensive systems with these properties. There is, however, no realistic alternative to such systems: we cannot afford to stop building software-intensive systems, and we can especially not afford to build inflexible, unreliable software-intensive systems. Today's grand challenge is to develop practically useful and theoretically well-founded principles, methods, algorithms and tools for modelling, programming and engineering reliable, secure and trustworthy future software-intensive systems throughout their whole life-cycle. Among the many promising areas for future research, the participants in this Thematic Group have identified three complementary crucial areas: engineering adaptive software-intensive systems; managing diversity in knowledge; and eternal software-intensive systems. The first two areas focus on growing complexity: of services …