NO.053 Computational Intelligence for Software Engineering

Shonan Village Center

October 20 - 23, 2014 (Check-in: October 19, 2014 )


  • Hong Mei
    • Shanghai Jiao Tong University/ Peking University, China
  • Frank Neumann
    • The University of Adelaide, Australia
  • Xin Yao
    • The University of Birmingham, UK
  • Leandro Minku
    • The University of Birmingham, UK


Computational intelligence (CI) techniques have provided many inspirations for improving software engineering, both in terms of the engineering process as well as the software product. The application of CI techniques in software engineering is a well established research area that has been around for decades. There have been dedicated conferences, workshops, and journal special issues on applications of CI techniques to software engineering.

In recent years, there has been a renewed interest in this area, driven by the need to cope with increased software size and complexity and the advances in CI. Search-based software engineering [1] provided some examples of how difficult software engineering problems can be solved more effectively using search and optimisation algorithms.

It is interesting to note that search-based software engineering does not provide merely novel search and optimisation algorithms, such as evolutionary algorithms, to solve existing software engineering problems. It helps to promote rethinking and reformulation of classical software engineering problems in different ways.

For example, explicit reformulation of some hard software engineering problems as true multiobjective problems, instead of using the traditional weighted sum approach, has led to both better solutions to the problems as well as richer information that can be provided to software engineers [2,3]. Such information about trade-off among different objectives, i.e., competing criteria, can be very hard to obtained using classical approaches.

However, most work in search-based software engineering has been focused on increasing the efficiency of solving a software engineering problem, e.g., testing, requirement prioritisation, project scheduling/planning, etc. Much fewer work has been reported in the literature about CI techniques used in constructing and synthesizing ac-tual software. Automatic programming has always been a dream for some people, but somehow not as popular as some other research topics.

The advances in evolutionary computation, especially in genetic programming [4], has re-ignited people’s interest in automatic programming. For example, after the idea of automatic bug fixing was first proposed and demonstrated [5], industrial scale software has been tested using this approach and bugs fixed [6]. The continuous need to test and improve a software system can be modelled as a competitive co-evolutionary process [7], where the programs try to improve and gain a higher fitness by passing all the testing cases while all the testing cases will evolve to be more challenging to the programs. The fitness of a testing case is determined by its ability to fail programs.

Such competitive co-evolution can create ”arms race” between programs and testing cases, which help to improve the programs automatically. In fact, competitive co-evolution has been used in other engineering design domains with success.

There are many other examples of highly innovative ideas from CI for tackling hard software engineering problems. The primary aim of this proposed Shonan meeting is to provide an interdisciplinary forum for computational intelligence and software engineering. It is envisioned that there will be 50% of the participants from each of the two areas. The goal of the meeting is to explore and debate this very promising area of CI for software engineering, including search-based software engineering.

The meeting will include presentations by the participants as well as discussion groups for hot topics and future work. The discussion groups play a central role and should reflect on the current state of the art in the different areas of software engineering and computational intelligence, foster interdisciplinary work, and establish new research directions. The outcomes of these discussion groups will be summarized in the Shonan meeting report such that it is available to all researchers interested in computational intelligence and software engineering.


  1. M. Harman and B. F. Jones, Search-based software engineering. Information and Software Technology, 43:833-839, 2001.
  1. K. Praditwong, M. Harman and X. Yao, Software Module Clustering as a Multi-Objective Search Problem. IEEE Transactions on Software Engineering, 37(2):264-282, March/April 2011.
  1. Z. Wang, K. Tang and X. Yao, Multi-objective Approaches to Optimal Testing Resource Allocation in Modular Software Systems. IEEE Transactions on Reliability, 59(3):563-575, September 2010.
  1. N. L. Cramer. A Representation for the Adaptive Generation of Simple Sequential Programs. In J. J. Grefenstette, editor, Proc. of ICGA’85, pp.183-187, 1985.
  1. A. Arcuri and X. Yao, “A novel co-evolutionary approach to automatic software bug fixing,” Proceedings of the 2008 IEEE Congress on Evolutionary Computation (CEC2008), (Piscataway, NJ), pp. 162-168, IEEE Press, 2008.
  1. W. Weimer, T. Nguyen, C. L. Goues, and S. Forrest. Automatically Finding Patches Using Genetic Programming. Proc. of the 2009 International Conference on Software Engineering (ICSE), pp. 364-374, 2009.
  1. A. Arcuri and X. Yao, “Coevolving programs and unit tests from their specification, ” Proc. of the 22nd IEEE/ACM International Conference on Automated Software Engineering (ASE’2007), (New York, NY), pp.397-400, ACM Press,2007.