Software Verification and Analysis: An Integrated, Hands-On Approach