It's been a busy three months---I was dropping balls left and right even before I got sick. In amongst all of it, though, I managed to get through a few books.
The first, and most disappointing, was Mills's Practical Formal Software Engineering
. It's meant to be a textbook on formal methods of software development (think Z, statecharts, and all that), but it reads like the notes someone might take in such a course if the second half was rushed through. The first few chapters on counting and basic logic are littered with gnomic utterances ("Leibniz observed that all
precise reasoning is like this." Did he? When, and why, and most importantly, so what?). The middle chapters on UML, Z, and OCL are probably only comprehensible to someone who already knows what's in them, and while the extended exercises at the end might be useful, I suspect most people will, like me, have lost faith by then.
Next is IEEE Computer Society Real World Software Engineering Problems: A Self-Study Guide for Today's Software Professional
. This is meant for people studying toward the IEEE's certification exams for software engineers, and is definitely old school in its approach. A lot of the questions have to do with process (I really should use a capital 'P' there to reflect the reverence with which this book treats it), engineering ethics, and the like. It isn't the kind of software development I do, but that's more a reflection on me than on the book, and I expect to mine a lot of future exam questions from it.
Number three is Qian et al's Software Architecture and Design Illuminated
. It's in the same family as the other software architecture books I tried, and discarded, when I was teaching a course on the subject at U of T
. The authors do a good job of explaining the basics of UML, and of taxonomizing and describing a variety of architectures, but dammit, where are the real-world examples? If you were writing a book about mid-century American architecture, it would be littered with photos, sketches, and blueprints; no such book exists (yet) for software architecture. If anyone wants to take a crack at it, please let me know---I'll be your first and best customer :-)