This book is intended for anyone who plans, designs and implements software systems, for anyone who is involved with quality assurance, and hence for anyone who is interested in the practicability of modern concepts, methods and tools in the software development process. The book aims at software engineers and at students with specialized interests in the area of software engineering. The reader is expected to be familiar with the fundamental concepts of software engineering. In writing the book, the authors tap years of experience in industrial projects and research work in the development of methods and tools that support the software development process. Perhaps now more than ever, the buzzword "software crisis" serves to alert us that software systems are often error-prone, that significant diffi culties arise in mastering complexity in the production of software systems, and that the acceptance and adequacy of software products is significantly lower than is the case with other technical products. The following goals have been suggested for the improvement of the software development process: • exact fulfillment of user requirements • increased reliability and robustness • greater modularity of both the development process and the product • simple and adequate operation, i. e. , better ergonomics • easy maintainability and extensibility • cost-effective portability • increased reusability of software components • reduced costs for production, operation and maintenance VI Preface Research and development work in the area of software engineering has in creased dramatically in recent years.