Like lots of things in life, I got into writing technical books through a fortunate correspondence of events. As a young lecturer at Strathclyde University in Glasgow, I volunteered to present a course on large-scale software (so called) and I wrote a set of notes for this. My then colleague, Andrew McGettrick had recently taken on the role of series editor for a new UK book series to be produced by Addison-Wesley and he suggested that I might like to turn these into a book. Naively, I imagined that this would be a simple job that would take about 3 months. Two years later, the first edition of ‘Software Engineering’ was published. I found that I quite enjoyed writing and I flatter myself that I’m quite good at writing readable technical prose – so this was the start of a parallel publishing career.
1982. Software Engineering, 1st edition. In today’s language, this would be a beta version. I experimented with preparing camera-ready text and discovered I’m not good at it. The book looked cheap and amateurish but was in the right place at the right time. It sold enough copies to make it worth producing what really was Version 1.
1983. Inside the Dragon. The early 80’s saw an explosion of new micro computers and one of my colleagues, Duncan Smeed, worked with one such company in Wales called Dragon Data. We collaborated on producing a guide to this computer. Sadly, Dragon Data had production problems and never really managed to compete with Sinclair and disappeared around 1984. But it was fun while it lasted.
1983. Information Unlimited. I’d got the hang of book writing by now and turned my 1st year course notes into an introductory computing book that looked forward into how computers and digital technology would affect our lives. I’m pleased to say I got quite a few things right although, like most commentators, didn’t predict the WWW.
1985. Software Engineering, 2nd edition. This was the first professionally produced version of my book and I was astonished and delighted by the number of sales.
1986. Software Engineering Environments. A conference book – my first experience of an edited collection of papers.
1987. Software Development with Ada. Ada was then a new programming language, perhaps the first language designed for large scale software engineering. I wrote this book with my friend and PhD supervisor Ron Morrison from St Andrews. We thought that Ada would take over the world but compiler development was badly managed and it never had the impact that it should have had outside of aerospace and defence. It was and is a good language (better than Java IMO).
1989. Software Engineering, 3rd edition. The first hardback edition. It was the best-selling book in the International Computer Science series and AW gave me a leather bound edition. By this time, I was a full professor of computer science at Lancaster University and had less and less time for book writing.
1992. Software Engineering, 4th edition.
1993. Software Engineering – ESEC’93. Proceedings of the 1993 European Software Engineering Conference, which I edited along with Manfred Paul. The conference commemorated the 25th anniversary of software engineering.
1996. Software Engineering, 5th edition. The first edition to have a section devoted to dependable systems (my research interest at that time) and the first edition to have its own website.
1996. Software Configuration Management. A workshop proceedings. Editing proceedings is a thankless task and I decided that I would do no more of these.
1997. Requirements Engineering: A Good Practice Guide. produced with my colleague Pete Sawyer from work we did on a European project called REAIMS. This has been remarkably successful and spawned the Sommerville-Sawyer model of requirements engineering process maturity. Amazingly, in 2019, the book is still in print and sells a few copies every year.
1998. Requirements Engineering: Processes and Techniques. A companion volume on requirements engineering aimed at students rather than practitioners. I wrote this with my colleague Gerald Kotonya and, in 2016, it is also still in print.
2001. Software Engineering, 6th edition. Published just before the dot-com crash, this book had remarkable sales in its 1st year then sales crashed as students decided that they wouldn’t all become dot-com millionaires by studying computer science.
2004: Software Engineering, 7th edition. The book continued to grow. I added 4 new chapters and changed lots of others. In retrospect, I think I should have waited a year or so instread of rushing it out and then following with the 8th edition shortly after.
2007. Software Engineering, 8th edition. This edition was really the 7th edition as it should have been. I added new chapters on security engineering, aspect-oriented software engineering and service-oriented software engineering. But sales continued to decline and I decided that I’d only do one more edition and then give up. By this time, I’d changed jobs and moved back to Scotland as a Professor of Computer Science at St Andrews University.
2010. Software Engineering, 9th edition. I decided to get rid of a lot of stuff from the printed version of the book and move it to the web. I also radically restructured the book. Addison Wesley had shut down their computer science series in the UK so production was moved to the US. This book was published just as computer science became fashionable again and the decline in sales that had lasted about 7 years was arrested. I decided that it was worth doing another edition after all.
2015. Software Engineering, 10th edition. My retirement edition (I retired from St Andrews in 2014) published in April 2015. More emphasis on systems engineering and not simply software engineering. The first edition to have a set of supplementary videos on YouTube.
2020. Engineering Software Products. Over the past few years, I have become convinced that we need to rethink introductory courses in software engineering to make these more relevant to students. I’ve written about this in a couple of blog posts (, Engineering Software Products ). I therefore decided to write a new textbook that focuses on software engineering techniques used in software product development.