This book teaches new methods for specifying, analyzing, and testing software, essentials for creating high-quality software. Using a toolkit built on the C# language and the .NET framework, the authors work through several realistic case studies in depth and detail, making the methods easy for programmers and testers to learn and use.