Contents of the Book
A Rich Set of Software Engineering Topics and Examples
The book is organized into seven parts that include a total of 27 chapters:
Part I: Preliminaries
In this part, the foundational concepts of software engineering along with key terminology used throughout the book are introduced. The part also presents the core notations of the Unified Modeling Language (UML), which will be consistently applied in subsequent chapters.
Part II: Requirements Engineering
One of the most critical software development phases concerns identifying and understanding the problem space—that is, the set of needs, constraints, and conditions that the software system must address. This part defines what constitutes a requirement and emphasizes the distinction between the expected behavior of the software system and the assumptions about its operational environment.
Part III: Software Design
This part concerns the central activity of structuring effective software solutions. Key topics include design principles and patterns, architectural styles, software quality attributes, and tactics to achieve them.
Part IV: Verification and Validation
Ensuring that software is correct, reliable, and fit for purpose is paramount. This part introduces core techniques for verification and validation, stressing that quality assurance must be integrated early and continuously throughout the development life cycle.
Part V: Development, Operation, Maintenance, and Evolution
Although basic programming is not the focus of this book, this part presents the tools and practices that support modern software construction, including integrated development environments, version control, and continuous integration systems. It also addresses the challenges of deployment, long-term maintenance, and software evolution.
Part VI: Life Cycles and Processes
Software Engineering processes are sophisticated and complex activities that must be properly supported, guided, governed, and improved. This part of the book offers a comprehensive overview of the most important methods and techniques to help software engineers master the many dimensions of Software Engineering processes.
Part VII: Conclusions and Perspectives
This part concludes the book with a forward-looking perspective on emerging trends, including the potential impact of generative AI on software engineering. It also reflects on the broader role of the discipline in shaping the future of technology and society.

