![]() |
|||
![]()
|
![]() |
![]() |
![]() |
Chapter 25
|
1. | Introduction | ||
2. | Expert Systems: The Background | ||
3. | Software Engineering: An Overview | ||
4. | Contributions of Software Engineering to Expert System Development | ||
4.1. | Evaluation | ||
4.1.1. | Verification | ||
4.1.2. | Validation | ||
4.2. | Modularization | ||
4.3. | Life Cycle Models | ||
4.4. | Methods of Knowledge Representation | ||
4.5. | Walkthroughs | ||
4.6. | Metrics | ||
4.7. | Reuse | ||
4.8. | Involving the Clients | ||
4.9. | Training the Clients | ||
5. | Applying Expert Systems to Software Engineering | ||
5.1. | PECOS | ||
5.2. | The Programmer's Apprentice | ||
5.3. | Professor Marvel | ||
5.4. | The Specification-Transformation Expert System | ||
6. | Conclusion | ||
Acknowledgments | |||
References |
In conventional programming, facts and reasoning are inextricably entwined. The earliest expert systems exploited LISP's symbolic processing capabilities to separate a set of rules, the knowledge base, from a procedure that derived inferences from the rules, the inference engine. The separation of facts from reasoning was then, and is now, the most important single factor that distinguishes expert systems from conventional software.
As a consequence of this separation, expert system development was at first quite different from software development. An expert and a researcher -- who would later be known as a knowledge engineer -- invented rules, added them to the knowledge base, and periodically checked the expert system for appropriate responses.
As expert systems grew larger and more complex, and as they moved from the laboratory into the commercial world, the similarities between the development of an expert system and the development of software became more important than their differences. Activities such as requirements analysis, specification, design, and maintenance have common features that transcend differences of architecture and implementation. In fact, some or all of these activities underlie the construction of any complex system, whether it is a building, a software system, or an expert system.
The evolution of expert systems that occurred during the 1970s and 1980s paralleled the evolution of software development in the 1950s and 1960s. Early computers were too small to support complex systems. As speed and capacity increased, so did the complexity of software. Researchers and practitioners turned for guidance to engineering, perceiving that engineers had established techniques for understanding and developing large systems. The term "software engineering" was coined at a NATO workshop in 1967 and was the theme of a NATO conference in 1968 (Naur, Randell, and Buxton, 1976).
As expert systems grew in size and complexity, developers adopted the same strategy as software developers: they borrowed and adapted techniques from a related area in which the problems had apparently been solved.
In this chapter, we assume familiarity with the basic principles and concepts of expert systems. We review software engineering principles, and we discuss ways in which software engineering techniques can be applied to expert system development. In the final section, we briefly discuss the application of expert systems to software engineering.
Previous | Table of Contents | Next |
![]() |
|
Use of this site is subject certain Terms & Conditions. Copyright (c) 1996-1999 EarthWeb, Inc.. All rights reserved. Reproduction in whole or in part in any form or medium without express written permission of EarthWeb is prohibited. Please read our privacy policy for details. |