Automated Software Engineering Introduction
by Paul Grünbacher and Yves Ledru
Software engineering is concerned with the development and evolution of large and complex software-intensive systems. It covers theories, methods and tools for the specification, architecture, design, testing, and maintenance of software systems. Todays software systems are significantly large, complex and critical, that only through the use of automated approaches can such systems be developed and evolve in an economic and timely manner.
Automated software engineering applies computation to software engineering activities. The goal is to partially or fully automate these activities, thereby significantly increasing both quality and productivity. This includes the study of techniques for constructing, understanding, adapting and modelling both software artefacts and processes. Automatic and collaborative systems are both important areas of automated software engineering, as are computational models of human software engineering activities. Knowledge representations and artificial intelligence techniques applicable in this field are of particular interest, as are formal techniques that support or provide theoretical foundations.
Automated software engineering approaches have been applied in many areas of software engineering. These include requirements definition, specification, architecture, design and synthesis, implementation, modelling, testing and quality assurance, verification and validation, maintenance and evolution, configuration management, deployment, reengineering, reuse and visualisation. Automated software engineering techniques have also been used in a wide range of domains and application areas including industrial software, embedded and real-time systems, aerospace, automotive and medical systems, Web-based systems and computer games.
The ASE community meets annually at the International Conference on Automated Software Engineering, sponsored by IEEE and ACM (visit http://www.ase-conference.org for information on the current conference). The Journal of Automated Software Engineering (Kluwer) is also a natural place to find recent advances in this discipline.
This special issue includes three invited articles and around thirty submitted articles. The invited articles by Motoshi Saeki and Andrew Ireland illustrate the links between ASE and artificial intelligence techniques. Motoshi Saekis work builds on ontologies to favour the reuse of requirements and the components of requirements. Andrew Irelands work applies automated reasoning techniques, in particular proof planning, to the static analysis of programs. Wolfgang Emmerichs invited contribution addresses the development of trusted and quality of service-aware distributed systems. This is particularly important as such systems are increasingly deployed across organisational boundaries.
The articles under this special theme describe research in automating software development activities or providing collaborative support to users engaged in such activities. These include the following:
- articles in the Requirements group address tool support for the scenario-based discovery of requirements, animation and validation of business transactions, or the use of natural language processing to improve the quality of requirements
- several articles deal with Program Understanding and Architecture and present research in software maintenance support via reengineering, automatic support for software reuse and support for designing and validating architectural specification
- a larger group of articles addresses Software Testing, covering aspects such as automatic generation of test cases, testability analysis, or test-suite planning and derivation using the Unified Modelling Language (UML)
- the articles on Software Verification deal with model checking and the verification of groupware protocols
- another group of articles addresses Aspects and Language Technology, with topics including aspect-oriented techniques for software adaptation for pervasive computing, use of language technology for the analysis and transformation of large software systems, or the identification of cross-cutting concerns in embedded C code
- the articles on Configuration Management and Deployment include aspects such as tool environments for software maintenance and adaptation, automation of software release and deployment, or frameworks and associated services for deploying and maintaining networks of collaborative, distributed environments.
- finally, several articles demonstrate the use of Models in software engineering; transformation and verification of models, model transformation languages, and model-driven development of pervasive systems.
Johannes Kepler University Linz, Austria
Yves Ledru, Laboratoire Logiciels Systèmes
Réseaux/IMAG Institut d'Informatique et
de Mathematiques Appliqués de Grenoble,