This book is the result of an evolutionary process which took place over a number of years. The contents of this book are based on my seminar for experienced software developers, which I instruct internationally, andon courses which I have taught as an external lecturer in the Informatics Department of the Johann Wolfgang Goethe University in Frankfurt/Main, Germany. These are based, in trun, on my own experience applying this material in commercial software development practice.
The questions posed by participants at my seminar and students have influenced the organizaton and structure of this book sugnificantly. Also the skepticism about the practical applicability of this material sometimes expresed by experinced software developers and their managers has affected my choices of the content of this work and its presentation.