A man may imagine he understands something, but still not understand anything in the way that he ought to. (Paul of Tarsus, 1 Corinthians 8:2) Calling this a 'practical theory' may require some explanation. Theory and practice are often thought of as two di?erent worlds, governed bydi?erentideals,principles, andlaws.DavidLorgeParnas, forinstance,who hascontributedmuchtoourtheoreticalunderstandingofsoftwareengineering and also to sound use of theory in the practice of it, likes to point out that 'theoretically' is synonymous to 'not really'. In applied mathematics the goal is to discover useful connections between these two worlds. My thesis is that in software engineering this two-world view is inadequate, and a more intimate interplay is required between theory and practice. That is, both theoretical and practical components should be integrated into a practical theory. It should beclearfrom theabovethattheintended readership of this book is not theoreticians. They would probably have di?culties in appreciating a book on theory where the presentation does not proceed in a logical sequence from basic de?nitions to theorems and mathematical proofs, followed by - plication examples. In fact, all this would not constitute what I understand by a practical theory in this context.
From the reviews: "Kurki-Suinio's book aims at developing a practical theory for the development of distributed reactive systems. ... The approach presented in the book is the result of many years of research. The design method developed by the author has been successfully used for the construction of many distributed parallel systems. ... Potential audience of this book is definitely found among software engineers ... . The book is also useful for researchers working in the mentioned area." (Klaus Schneider, The Computer Journal, 2007) "This book deals with reactive systems by first explaining a simple condition action effect language, which is similar to the language Unity or the one used in I/O automata. ... The book is usable as an extensive introduction for those who acquire the skill to use and extend it elsewhere. Of course as such it also usable for those who want to know what is going on in the field of concurrency from a TLA perspective." (Jan Friso Groote, Zentralblatt MATH, Vol. 1070, 2005) "It is rare to find a book that answers the questions of software engineers who are working with dynamic systems ... where formalisms of actions and behaviors are often answered by abstract theories of artificial intelligence. ... . Overall, this is a well-written book, which takes a practical software engineering approach, rather than a philosophical artificial intelligence (AI) one. The book will make a good complementary reading for courses on intelligent agents, showing a practical route for translating theory into software specifications." (Aladdin Ayesh, Computing Reviews, April, 2006)