This book provides a gentle, software engineering oriented introduction to category theory.
Assuming only a minimum of mathematical preparation,
this book explores the use of categorical constructions
from the point of view of the methods and techniques that have been proposed
for the engineering of complex software systems:
object-oriented development, software architectures, logical and algebraic specification techniques,
models of concurrence inter alia.
After two parts in which basic and more advanced categorical concepts and techniques are introduced,
the book illustrates their application to the semantics of CommUnity –
a language for the architectural design of interactive systems.