The art, craft, discipline, logic, practice and science of developing large scale software products is an increasing need of a trustworthy, believable and professional base. This book is one in a series of three volumes, devoted to fill this need. The three strongly related text books combine informal, engineeringly sound approaches with the rigour of formal, mathematics based approaches.
This volume 1 covers the basic principles and techniques of abstraction and modeling. First the book provides a sound, but simple basis of insight into discrete mathematics: Numbers, sets, Cartesians, types, functions, the lambda calculus, algebras and mathematical logic. Then the book goes on to teach and train its readers in basic property and model oriented specification principles and techniques. The model oriented concepts, that are common to such specification languages as B, VDM-SL, and Z, will be propagated here through the use of the RAISE specification language RSL.
Finally the book covers basic principles of functional, imperative and parallel specification programming - the latter based on the use of CSP: Hoare's language of Communicating Sequential Processes.
The present book is targeted at university undergraduate students and at college lecturers.