Modeling with UML - Bernhard Rumpe (Springer, 2016)