This book discusses a comprehensive spectrum of software engineering techniques and shows how they can be applied in practical software projects. This edition features updated chapters on critical systems project management and software requirements.