The interplay of artificial intelligence and software engineering has been an interesting and an active area in research institution and industry. This book covers the state of the art in the use of knowledge-based approaches for software specification, design, implementation, testing and debugging. Starting with an introduction to various software engineering paradigms and knowledge-based software systems, the book continues with the discussion of using hybrid knowledge representation as a basis to specify software requirements, to facilitate specification analysis and transformation of real-time distributed software systems. A formal requirements specification language using non-monotonic logic, temporal logic, frames and production systems for new software engineering paradigms (such as rapid prototyping, operational specification and transformational implementation) is also discussed in detail. Examples from switching and other applications are used to illustrate the requirements language. Finally, the development, specification and verification of knowledge-based systems are investigated.