An introduction to modern software engineering
In 1981, I wrote a short book that was an introduction to software engineering for computer science students. This covered most of software engineering as it was at that time. Virtually all software was then developed in ‘projects’, where a client supplied the ‘requirements’ and the software was implemented by a separate team.
Over the years, the discipline expanded and so did my book. It was no longer just an introduction but embraced several advanced topics. As new editions were produced, they increasingly reflected my interests in systems engineering and not just software engineering. Although there were changes to discuss software products, fundamentally the book focused on methods and techniques for large software engineering projects.
Over its 10 editions, my software engineering textbook has been amazingly successful and it is still widely used. Yet, when I was working on the most recent edition, I felt that the book had reached the end of its life. The discipline of software engineering has radically changed with an increased emphasis on products rather than projects. The project-oriented nature of the book was alien to the everyday experience of students, who primarily used apps, games and other software products. I’ve written about this in <a href = “http://iansommerville.com/systems-software-and-technology/what-should-we-teach-in-software-engineering-courses/”>a previous post </a> where I suggested that we need to completely rethink most introductory software engineering courses.
I always thought that the 10th edition would be my swansong. I had no plans to update it further and I retired from university teaching and research. I planned to focus on my other interests – hiking and backpacking, photography, cooking and personal programming projects. I thought that younger writers would create new books that took a different approach to software engineering.
But, this hasn’t really happened. Introductory software engineering texts still mostly talk about methods and techniques that are suitable for projects rather than software products. I’m not much impressed by them so I decided that I would try and write something different – both in approach and in style.
This book focuses on software engineering techniques that are relevant for software product engineering. Topics covered include personas and scenarios, cloud-based software, microservices, security and privacy and DevOps. There’s no mention of software projects, process models, requirements, the UML, software maintenance, etc. You can see a complete <a href= “http://iansommerville.com/engineering-software-products/contents/” >contents list</a> on the draft web site.
It’s different in style from most textbooks. It recognises that innovation in software product development doesn’t come from university research so there are no citations or reference lists. I’ve focused on readability with less formal, academic language. There are lots of diagrams, tables and a few Python programs.
Software engineering and software products are critical for our society. Yet, many computer science students are turning away from conventional software engineering courses because they simply don’t seem relevant to them. I hope that this book will contribute to reversing this trend. I finished a complete draft today but it still needs a bit of polishing before I deliver it for publication. It should be available in early 2019.