Note for Adopters

Software engineering has changed and it’s time to change what we teach to students in introductory SE courses.

My books on software engineering reflected my background and experience in the development of large, complex, custom software systems. But most software is now developed as software products and these are not developed using the same processes as custom systems. We need to revise our courses to reflect this reality.

My thinking about software engineering teaching changed radically after spending time with students working on startup companies. They had taken my courses but were using completely different approaches to their software development. We talked about these and I discovered that there were no introductory software engineering texts that focused on software product development.

I have written this book because I think it is important that our courses should inspire students and equip them with tools and techniques to develop modern software. They use software products and apps every day so can relate to these and many students would like to start their own software product company.

Some people think that agile methods are all we need for product development but I think that an introductory SE course has to reflect the reality that there’s more to software engineering than programming.

Consequently, I cover ways of understanding product requirements, software architecture, testing and devops. Most products rely on the cloud in some way so there are two chapters on cloud-based software. Finally, we must educate students to think about security from the outset so I’ve included a chapter on practical aspects of security engineering.

I’ve written this book to support a one-semester introductory course with lots of supplementary material to help you use this book in your courses - solutions to exercises, quizzes, video suggestions and PowerPoint and Keynote presentations for each chapter.

I hope you like the book and I’d appreciate your feedback on it.