Book Review: Leszek Maciaszek's Requirements Analysis and System Design

Leszek Maciaszek
Addison-Wesley, 2004 (2nd Edition)

ISBN 0321204646
with CD (the book's slides, figures, model files, and 12 free visual modelling tools)

Buy it from Amazon.com
Buy it from Amazon.co.uk

Other Reviews

 

It is a truth universally acknowledged (as Jane Austen-loving engineers know) that when a book has 'System' in its title, it is about software; but when it has 'Software' in its title, its wisdom is very often applicable to systems of all kinds. Maciaszek's book is about software.

Maciaszek teaches Computing at Macquarie University, Sydney. His well thought out and carefully constructed textbook fills the undergraduate course slot that once upon a time was called Programming, before it was graced with the title of Software Engineering. It isn't quite a direct rival to e.g. Ian Sommerville's Software Engineering, as its coverage is limited to the 'technical' side -- there are no equivalents to Sommerville's chapters on Project Management, or Cost Estimation, or Quality Assurance, for instance.

The book covers requirements 'determination', objects, specification, (software) architecture and design, user interface design, database design, and testing and change management. There is a clear focus on object-oriented analysis and design, and of course on the UML too.

Each chapter begins with a scene-setting chunk of text. A set of six case studies enliven and illustrate the theoretical concepts, which are introduced by 'problem statements'. The examples are documented with text and screenshots -- all gray, but the plentiful UML diagrams are in tones of blue with black text (a cost-effective way of bringing colour to the page). At the end of each chapter is a summary, a list of quick self-test questions, and a set of (more detailed) exercises for students. Furthermore, there's a final revision chapter called 'Tutorial-style Review and Reinforcement', with a series of connected 'steps', i.e. exercises for the student to follow.

What is unusual about the book is what one could call its 'Nuffield Science' approach: the student learns by doing and by example, rather than by theoretical instruction. On the whole this is a good idea for a practical subject. Some of the examples are, happily, taken from industry (though the dreaded University Enrolment system appears, complete with an addStudent() operation, p193).

The discussion is clear and frank, with simple suggestions and rules-of-thumb (even the good old CRUD check is in there). Some things NOT to do are also covered, like Convenience Inheritance; though I was sorry to hear that exceptions to inheritance are now a BAD THING. Back in the old Artificial Intelligence days, it was quite possible to say Bird isa Animal; Penguin isa Bird; canFly(B) if B isa Bird and not B isa Penguin. It worked fine, as long as you realised that 'isa' (subclass of) inherited recursively to any depth, whereas 'canFly' was inherited only while it wasn't blocked. But they've done away with all that, as Moliere said of the new Medicine.

Maciaszek offers more detailed coverage, but is therefore also a longer read than Carol Britton's Gentle Introduction to OOAD. It is on the other hand a bit shorter and more limited in its range than Sommerville. The coverage of requirements is relatively light, but is certainly a useful introduction. Overall, I imagine that when the list of topics matches a university course's syllabus, it will be a popular choice.

This is a modern and practical student textbook. The addition of the CD will no doubt make the book more useful for both students and lecturers.

© Ian Alexander 2004