Unified modeling language (UML) is a standard form of graphical representation of system blueprints in software engineering that can model some formal languages like Java, C#, C++, VB, and Fortran. Thus, its main domain is object-oriented programming. “Standard” seems to be the most essential word here because nowadays UML provides a visualization of systems in the form of 13 kinds of diagrams, including structural diagrams, which include class diagrams; packet diagrams; object diagrams; complex structure diagrams; implementation diagrams; and behavioral diagrams, including activity diagrams, interaction diagrams, use case diagrams, state charts, and some others. Such an approach allows developers to communicate and work in teams.
This volume consists of six chapters and four appendices. However, one may notice great discrepancies between the chapter lengths, which range from ten to 70 pages.
The introduction presents an overview of the UML profile (UML/P) language, with an emphasis on the current trend toward agile modeling. The second chapter introduces class diagrams with the class associations, tags, and stereotypes. The next chapter provides detailed information on an object constraint language (OCL) with its logic, data structures, functions, and expressiveness. Object diagrams are discussed in the next chapter, where readers can learn about their methodological use, the meaning of the objects, and their attributes. The next chapter devotes more than 60 pages to state charts. Here, the authors concentrate on the state properties, transitions, and actions. The penultimate chapter reviews sequence diagrams with their concepts. The chapter on further readings directs readers to the recommended literature on topics including agile model-based software engineering, generative software engineering, UML, domain-specific languages, modeling software architecture, compositionality and modularity of models, semantics of modeling languages, evolution and transformation of models, variability versus software product lines, and state-based modeling (automata). Perhaps some readers will find this information inspiring, but many references are self-citations.
The appendices are a kind of extension of the chapters. The first one presents syntax class diagrams, and the second provides some foundation information on the Java language since the UML/P is introduced with Java code. Appendix C reviews UML/P syntax while Appendix D is an Internet-based auction system.
The book is full of diagrams on a variety of concepts and applications. Still, my preference would be to learn about all of the diagrams instead of a few, and to find a chapter about the methods only. A number of the figures do not comply with the Springer style in terms of the font size: the writing is so small that they could hardly be seen.
I can recommend this book to system developers and academics, but it covers only selected aspects of object-oriented programming. My impression is that the author’s intention was to make it a handbook of the UML/P language because the book’s blurb says it is “ideal for introductory courses for students and practitioners alike.”