This well written first volume covers the basic principles and techniques of abstraction and modeling. It starts by providing the reader with a sound but simple basis for discrete mathematics before moving on to teach basic property and model-oriented specification principles and techniques. In addition, the reader will learn the essentials of functional, imperative, and parallel specification programming.
From the reviews:
"The book under review is the first one from a series of three volumes that provides a compelling framework for a more comprehensive understanding of both formal and practical concerns of software engineering. The major feature distinguishing these textbooks from other current ones ... is the natural manner in which the formal techniques smoothly glide from software design towards the requirements prescription phase and beyond to domain description. ... By its consistency and rigor, the book is, undoubtedly, remarkably useful to professional software developers." (Tudor Balanescu, Zentralblatt MATH, Vol. 1095 (21), 2006)