Software engineering is a body of knowledge that is not only limited to areas of computer science but also to other fields of human endeavours such as data sciences, human psychology, health sciences, etc. This book aims to serve as a reference to relevant topics within the area of software engineering, both at the undergraduate and postgraduate levels. The chapters in this book have been organized for students to learn and understand the main concepts of software engineering. The development of complex computer applications requires the use of a software engineering approach to ensure that the maintainability of the systems can be done systematically once the systems are in operation. Therefore, software engineering is one of the relevant courses in order for students to understand engineering concepts and the phases involved in software development. Each chapter in this book explains in detail the concepts and techniques of software engineering. We have included some exercises for students to check their understanding of the concepts that have learned from any given topics. By following the course outlined in this book, students should be able to define the concepts of software engineering, understand the concepts of software requirements, and explain the concepts of software design as well as software verification and validation.