Software Engineering Using Artificial Intelligence Techniques: Current State and Open Problems

Abstract : This paper surveys the application of artificial intelligence approaches to the software engineering processes. These approaches can have a major impact on reducing the time to market and improving the quality of software systems in general. Existing survey papers are driven by the AI techniques used, or are focused on specific software engineering processes. This paper relates AI techniques to software engineering processes specified by the IEEE 12207 standard of software engineering. The paper is driven by the activities and tasks specified in the standard for each software engineering process. The paper brings the state of the art of AI techniques closer to the software engineer, and highlights the open research problems for the research community. Keywords: Automated Software Engineering, Artificial Intelligence Techniques. 1. Introduction 2. The software intensive systems we develop these days are becoming much more complex in terms of the number of functional and nonfunctional requirements they need to support. The impact of low quality can also have a catastrophic impact on the mission of these systems in many critical applications. Moreover, the cost of software development dominates the total cost of such systems. Research in applying artificial intelligence techniques to software Engineering have grown tremendously in the last two decades producing a large number of projects and publications. A number of conferences and journals are dedicated to publish the research in this field. The AI techniques are proposed in order to reduce the time to market and enhance the quality of software systems. Yet many of these AI techniques remain largely used by the research community and with little impact on the processes and tools used by the practicing software engineer. The recent survey papers published in this field are mainly targeted to the research community. They are driven by the specific AI techniques used rather than the software engineering activities supported. They are also focused on a specific software engineering process such as software design [28] This survey paper attempts to close the gap between the research and practice of applying AI techniques to the software engineering processes. It also highlights open practical problems to the research community in applying such techniques by surveying the recently proposed work in this area. We use the terminology and the processes defined by the IEEE 12207 standard of software engineering. We then map the current state art of AI art techniques proposed in the literature to specific tasks and activities of some of the software processes define by the 12207 standard. These AI techniques attempt to automate or semi-automate these tasks and produce optimal or semi-optimal solutions in much less time. The paper is organized as follows. In section 2, we give an overview of the IEEE 12207 standard of software engineering, and describe the most important AI techniques. We survey the current AI techniques proposed for the primary processes of development in sections 3. We highlight the open problems in section 4.