the art, craft, discipline, logic, practice, and science of developing large-scale software products needs a believable, professional base. the textbooks in this three-volume set combine informal, engineeringly sound practice with the rigour of formal, mathematics-based approaches. volume 1 covers the basic principles and techniques of formal methods abstraction and modelling. first this 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 it trains 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 are explained here using the raise specification language (rsl). this book then covers the basic principles of applicative (functional), imperative, and concurrent (parallel) specification programming. finally, the volume contains a comprehensive glossary of software engineering, and extensive indexes and references. these volumes are suitable for self-study by practicing software engineers and for use in university undergraduate and graduate courses on software engineering. lecturers will be supported with a comprehensive guide to designing modules based on the textbooks, with solutions to many of the exercises presented, and with a complete set of lecture slides.