This book focuses on the methodological treatment of UML P and addresses three core topics of
model-based software development: code generation the systematic testing of programs using a
model-based definition of test cases and the evolutionary refactoring and transformation of
models. For each of these topics it first details the foundational concepts and techniques
and then presents their application with UML P. This separation between basic principles and
applications makes the content more accessible and allows the reader to transfer this knowledge
directly to other model-based approaches and languages.After an introduction to the book and
its primary goals in Chapter 1 Chapter 2 outlines an agile UML-based approach using UML P as
the primary development language for creating executable models generating code from the
models designing test cases and planning iterative evolution through refactoring. In the
interest of completeness Chapter 3 provides a brief summary of UML P which is used throughout
the book. Next Chapters 4 and 5 discuss core techniques for code generation addressing the
architecture of a code generator and methods for controlling it as well as the suitability of
UML P notations for test or product code. Chapters 6 and 7 then discuss general concepts for
testing software as well as the special features which arise due to the use of UML P. Chapter 8
details test patterns to show how to use UML P diagrams to define test cases and emphasizes in
particular the use of functional tests for distributed and concurrent software systems. In
closing Chapters 9 and 10 examine techniques for transforming models and code and thus provide
a solid foundation for refactoring as a type of transformation that preserves semantics.Overall
this book will be of great benefit for practical software development for academic training in
the field of Software Engineering and for research in the area of model-based software
development. Practitioners will learn how to use modern model-based techniques to improve the
production of code and thus significantly increase quality. Students will find both important
scientific basics as well as direct applications of the techniques presented. And last but not
least the book will offer scientists a comprehensive overview of the current state of
development in the three core topics it covers.