This book covers a range of basic and advanced topics in software engineering. The field has undergone several phases of change and improvement since its invention, and there is significant ongoing research in software development, addressing aspects such as analysis, design, testing and maintenance. Rather than focusing on a single aspect of software engineering, this book provides a systematic overview of recent techniques, including requirement...