On the many ways software engineering can benefit from knowledge engineering

  • Authors:
  • Lionel C. Briand

  • Affiliations:
  • Carleton University, Ottawa, ON, Canada

  • Venue:
  • SEKE '02 Proceedings of the 14th international conference on Software engineering and knowledge engineering
  • Year:
  • 2002

Quantified Score

Hi-index 0.00

Visualization

Abstract

Software Engineering is not only a technical discipline of its own. It is also a problem domain where technologies coming from other disciplines are relevant and can play an important role. One important example is knowledge engineering, a term that I use in the broad sense to encompass artificial intelligence, computational intelligence, knowledge bases, data mining, and machine learning. I see a number of typical software development issues that can benefit from these disciplines and, for the sake of clarifying the discussion, I have divided them into four categories: (1) Planning, monitoring, and quality control of projects, (2) The quality and process improvement of software organizations, (3) Decision making support, (4) Automation.First, the planning, monitoring, and quality control of software development is typically based, unless it is entirely ad-hoc, on past project data and/or expert opinion. As discussed below, several techniques coming from machine learning, computational intelligence, and knowledge-based systems have shown to be useful in this context. Second, software organizations are inherently learning organizations, that need to improve, based on experience and project feedback, the way they develop software in changing and volatile environments. Large amounts of data, numerous documents, and other forms of information are typically gathered on projects. The question then becomes how to enable the intelligent storage and use of such information in future projects. Third, during the course of a project, software engineers and managers have to face important, complex decisions. They need decision models to support them, especially when project pressure is intense. Techniques originally developed for building risk models based on expert elicitation or optimization heuristics can play a key role in such a context. The last category of applications concerns automation. Many automation problems, such as test data generation, can be formulated as constraint solving problems. A number of metaheuristic algorithms can be adapted for that purpose and have shown to be practically usable and flexible to adjust to numerous situations.This paper discusses all the points above, identify open issues and future research directions, and provide some carefully selected, key pointers for further reading.