The art, craft, discipline, logic, practice and science of developing large scale software products is in increasing need of a trustworthy, believable and professional base. This book is one of a series of three volumes, devoted to fill this need. This series of strongly related text books combine informal, engineeringly sound approaches with the rigour of formal, mathematics based approaches.
The present volume covers the basic principles and techniques of overall software development: From domains via requirements to software designs. Thus the book advocates a novel approach to software engineering based on the adage: Before requirements can be formulated one must understand the application domain. The book is therefore structured this way: From (i) the principles and techniques for the development of domain descriptions, via (ii) principles and techniques for the derivation of requirements prescriptions from domain models, to (iii) principles and techniques for the refinement of requirements into software designs: Architectures and component design.