Engineering Artificial Intelligence Software (Book)

This book is aimed at the computer-literate person interested in the reality of exploiting the promise of Artificial Intelligence (AI) in practical, maintainable software systems. It cuts through the hype, so commonly associated with discussions of AI, and presents the realities, both the promise and the problems, the current state of the art, and future directions. 

It is not another expert systems book. Expert systems are viewed as just one manifestation of AI in practical software; the issues raised in this book are much broader. It looks at the conventional wisdom in software engineering-what the goals ar, the rationale behind them, and what the realities actually are. 

Edition

Preface

1 Introduction to Computer Software   1

1.1 Computers and software systems
1.2 An introduction to software engineering
1.3 Bridges and buildings versus software systems
1.4 The software crisis
1.5 A demand for more software power
1.6 Responsiveness to human users
1.7 Software systems in new types of domains
1.8 Responsiveness to dynamic usage environments
1.9 Software systems with self-maintenance capabilities
1.10 A need for AI systems


2 AI Problems and Conventional SE Problems   27

2.1 What is an AI problem?
2.2 Ill-defined specifications
2.3 Correct versus 'good enough' solutions
2.4 It's the HOW not the WHAT
2.5 The problem of dynamics
2.6 The quality of modular approximations
2.7 Context-free problems


3 Software Engineering Methodology   36

3.1 Specify and verify - the SAV methodology
3.2 The myth of complete specification
3.3 What is verifiable?
3.4 Specify and test - the SAT methodology
3.5 The strengths
3.6 Testing for reliability
3.7 The weaknesses
3.8 What are the requirements for testing?
3.9 What's in a specification?
3.10 Prototyping as a link


4 An Incremental and Exploratory Methodology   56

4.1 Classical methodology and AI problems
4.2 The RUDE cycle
4.3 How do we start?
4.4 Malleable software
4.5 AI muscles on a conventional skeleton
4.6 How do we proceed?
4. 7 How do we finish?
4.8 The question of hacking
4.9 Conventional paradigms


5 New Paradigms for System Engineering   79

5.1 Automatic programming
5.2 Transformational implementation
5.3 The "new paradigm" of Balzer, Cheatham and Green
5.4 Operational requirements of Kowalski
5.5 The POLITE methodology


6 Towards a Discipline of Exploratory Programming   109

6.1 Reverse engineering
6.2 Reusable software
6.3 Design knowledge
6.4 Stepwise abstraction
6.5 The problem of 'decompiling'
6.6 Controlled modification
6.7 Structured growth


7 Machine Learning: Much Promise, Many Problems   141

7.1 Self-adaptive software
7.2 The promise of increased software power
7.3 The threat of increased software problems
7.4 The state of the art in machine learning
7.5 Practical machine learning examples


8 Expert Systems: The Success Story    158

8.1 Expert systems as AI software
8.2 Engineering expert systems
8.3 The lessons of expert systems for engineering AI software


9 AI into Practical Software   170

9.1 Support environments
9.2 Reduction of effective complexity
9.3 Moderately stupid assistance
9.4 An engineering toolbox
9.5 Self-reflective software
9.6 Overengineering software


10 Summary and What the Future Holds   193


References   200
Index   206

 

Related Titles