The authors’ focus in this book is to deliver software engineering knowledge and skills that readers can put into immediate practical use. The book provides the essential topic coverage required by students of software engineering, from the nuts and bolts of objects to software architecture, from writing code to testing, from software development processes to project management. Working through nine contemporary themes in Software Engineering, students are given an awareness of key issues from understanding the customer and user, evaluating alternative requirements and design, to developing quantitative and logical thinking and effective communication.The book is designed to be used primarily in second-year software engineering courses, but is also widely use in its first edition as an introductory software engineering text at all levels. It will also be valuable to programming practitioners who want to develop a better understanding of modern software engineering.