This systematic and detailed monograph describes a design methodology for knowledge-based systems. Such systems contain knowledge as well as information and data. The information and data can be modeled and implemented as a database. The knowledge can be implemented either in a programming language or in an expert systems shell. The methodology has two special features: It is unified, i.e., it represents the data, information, and knowledge in a homogeneous manner, as well as the relationships between them. Also, it builds a maintenance mechanism into the design. A special benefit of the book is its thorough treatment of constraints for knowledge and for knowledge-based systems. Presenting the material in both a formal and a practical way, it is intended for practitioners as well as researchers and advanced students.