Software engineering is just a fancy word for design. It consists in getting a long way away from your code – procedural, data, architectural, set-theoretic abstraction – which I resented at first, but which is far more important than it looks. UML is a rigorous, machine-readable graphical logic. Rather than lines of code, design patterns are the real units of serious work.
This book is painfully exoteric (infected by the ‘stakeholder’ bureaucratese bug), relentless plain, and occasionally the examples are not illustrative, but all right fine.
(NB 5 years later: The top-down OOP / UML approach has never been useful to me in 5 years of professional coding.)