Written by two of academia's experts in software engineering, Object-Oriented Software Practical software development using UML and Java provides a modern introduction to the subject for today's students.
This important new book gives an in-depth treatment of key principles that have broad applicability and relevance. Lethbridge and Laganiere have packed the text with examples and integrated exercises. In addition there are examples and exercises to give students practice on a variety of interesting problems and to help maintain their motivation.
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.)