Software-Intensive Systems
"Challenges, Visions and Research Issues for Software-Intensive Systems"
22 - 23 May 2004 , Edinburg, Scotland
Rationale
Software has not only become a key feature of a rapidly growing range of products and services from all sectors of economic activity, but also our daily lives depend on complex software-intensive systems, from banking to communications to transportation to medicine. Software technology is a driving factor for many high tech products; competence in software technology defines more and more the innovation capability of the industry.
On the other hand, software today undergoes a fast technological progress where object-orientation, new modeling languages such as UML, new programming languages such as Java and CASE tools have considerably influenced the system development techniques of today. Moreover, formal techniques have undergone a steep development during the last years. Based on formal foundations and deep theoretical results, methods and tools have been developed to support specification, design, validation and verification of software systems. Model-based and algebraic specifications, abstract state machines, CSP and CCS, temporal logics, rewriting techniques, finite automata, model checking and many other formal specification and verification techniques have been applied to non-trivial case studies and are used in practice e.g. for the development of safety critical systems.
However, actual practice shows that still many severe quality deficiencies and methodological shortcomings:
- pragmatic modeling languages and techniques have no clean scientific foundations which inhibits the construction of powerful analysis and development tools;
- formal approaches are not well-integrated with the pragmatic methods and do not scale up to complex software-intensive systems.
Moreover, the increasing complexity of software-intensive systems poses new engineering challenges for:
- ensuring reliability, safety, security, availability, and dependability,
- supporting the interoperability, and
- enhancing the usability of software-intensive systems as well as for
- integrating and adapting legacy software, and for
- supporting distribution and mobility.