|New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About| |
Keywords: ICONIX, Agile, UML, modelling, software methodologies Title: Use Case Driven Object Modelling With UML Author: Doug Rosenberg and Matt Stephens Publisher: Apress ISBN: 1590597745 Media: Book Level: Introductory Verdict: An excellent and informative book that is highly recommended. |
While the methodology wars continue to flourish, and advocates of this process versus that process slug it out to show that they alone are following the one true path, there is one technique that all seem to agree on: the use case.
While extreme programmers prefer the term user story, (and still others talk about storyboards), in reality we are talking about a set of similar techniques for describing the interaction between a user and a system. However, once you've got your use case, how do you turn it into a working piece of software? What steps do you take to identify the objects, properties and methods required to implement the interactions described? Where does the architecture fit in? These are the sort of questions tackled by Doug Rosenberg and Matt Stephens in the snappily entitled 'Use Case Driven Object Modeling with UML: Theory and Practice'.
There's no short answer to these questions, of course. But the key issue that the authors identify is at the core of many of the problems with software development as an industry. For all their apparent simplicity, use cases – and user stories and whatever other label we attach to the usage scenarios – are ambiguous. Software development proceeds by addressing the ambiguities, yielding progressively clearer specifications and a shared understanding between client and developer. It is this process, which the authors call 'disambiguating', that this book so clearly documents.
Using the ICONIX software development process, which sits somewhere between RUP and extreme programming, the authors walk through a single realistic worked example of a software development project. The project, to build an internet book shop, is complex enough to fully exercise the reader and yet common enough that just about every developer will understand the domain. The project is walked through from start right through to coding, testing and review.
The book aims to be a self-teaching guide rather than a basic tutorial, so to this end there are lots of examples, exercises, checklists, questions and so on. Unlike many other books that tackle this sort of subject, the emphasis is very much on the practical application of ideas rather than the handing down of beautifully crafted theories. That's not to say that there aren't plenty of good ideas covered in the text, there are plenty of those, from the use of the 'robustness diagram' (not part of UML 2.0) for mapping from the use case to objects to sound advice on testing; the emphasis is firmly on moving the development process forward in a structured and coherent manner.
On the technology side of things, there's very much a Java flavour to the book. Not simply because the example application is coded in Java, but also because the application the authors build uses the Spring framework, they mention JUnit in the section on testing and so on. However, in many ways all of this is incidental. While the authors use Java and related technologies, the techniques they describe apply to all object-oriented development platforms and languages.
Finally, it's worth mentioning that the book scores highly in terms of clarity of writing, good design (and use of colour) and in providing a high-level of content.