artificial intelligence and software engineering
Software Engineering is a knowledge-intensive activity, requiring extensive knowledge of the application domain and of the target software itself. Many Software Engineering costs can be attributed to the ineffectiveness of current techniques for managing this knowledge, and Artificial Intelligence techniques can help alleviate this situation. More than two decades of research have led to many significant theoretical results, but few demonstrations of practical utility. This is due in part to the amount and diversity of knowledge required by Software Engineering activities, and in part to the fact that much of the research has been narrowly focused, missing many issues that are of great practical importance. Important issues that remain to be addressed include the representation and use of domain knowledge and the representation of the design and implementation history of a software system. If solutions to these issues are found, and experiments in practical situations are successful, the implications for the practice of Software Engineering will be profound, and radically different software development paradigms will become possible.
intelligence software software engineering engine knowledge activation applications management help situated research demonstrate practical utility diversity representation use domain knowledge design implementation histories systems experience software development