This book is for readers who have some experience in software development. While we cannot quantify this experience, it would be preferable if the reader has already developed a program that is beyond several hundred lines of code and is familiar with software engineering methods . Our working assumption during the process of writing this book is that one needs some experience in software development in order to understand the essence of what is discussed. Thus, for example, many tasks are based on an individual s reflection on personal experience.