I was asked to teach a 4th year course on Software Engineering at the University of Toronto by the then Chair of the Electrical and Computer Engineering Department, Jonathan Rose. I told JR that if I did it, I would re-write the book, and he said that was exactly what he wanted!
So, I literally wrote a textbook for the course and wound up teaching it for about 10 years straight. I have only made minor edits and rewrites to it in the years since. It may be a bit outdated now, but still useful.
Feel free to download and re-distribute it (so long as you keep my original copyright on it), but do not sell it for profit.