Books and Readings

There is one required text:

  1. Hans van Vliet, (2000) “Software Engineering: Principles and Practice”, 2nd edition, John Wiley & Sons, .

Note that this book is new this year. In previous years, we used Blum's book, “Software Engineering: A Holistic View”. Blum's book is now getting a little dated, and students regularly complained that they didn't like it. If you happen to pick up a used copy of Blum, feel free to use it, but be aware that it doesn't (adequately) cover some important topics (e.g. Software Architectures, Process Modeling, and Formal Methods)

Other recommended texts:


You should also read some of the newsgroup comp.risks

In previous years, we provided a collected readings for CSC444F. This was used mainly to supplement Blum's book, but also to provide immediate access to some of the classic papers in software engineering. However, van Vliet surveys much of this material, and you probably have enough to read already. However, if you're really energetic, you can probably obtain a copy of this collection from previous year's students, of find the original papers on the web. The collection contained the following papers:

Background Reading:

General Software Engineering Texts

van Vliet's book is the best general software engineering text I have seen, and Pfleeger is the second best. Two other commonly used textbooks are listed here. I find these all too shallow for my liking, but others may find them useful. There is also an IEEE collection of readings. However, it is expensive, and the quality of the papers included is variable. The collection of papers I put together for previous years of this course is much more useful(!):

Program Design

These two are wonderful books on how to program properly. L & G covers the theoretical issues more comprehensively. B & L has more detailed case study material: One other useful book if you feel you are weak on programming is: You'll also (probably) need a reference book for the programming language you are using, but I assume you still have one around from when you first learnt to program.

Software Verification and Validation

See also the testing handout produced by Prof. Horton: postscript, or pdf

Software Requirements Engineering

The first three are textbooks, offering the best coverage of the field. The other two are more general reading, but very worthwhile to get a feel for why requirements engineering is considered the hardest part of software engineering. All these books are worth dipping into.

Software Design

Budgen is an excellent introduction to the general problems of software design, including design representations, design quality, and so on. Shaw and Garlan's book was the first book to describe the emerging field of software architectural design. I've included chapter 2 of this in the collected reading for the course.

Formal Methods

If you need to brush up on your logic, and also get to grips with how it is used in software verification, there is no book better than: Another good introduction is:

Managing the Software Process

These are all good background texts for understanding the broader picture.

See Also...

There is also a large collection of suggested reading material collected from the newsgroup at