Categories for Software Engineering

"This book applies little-known yet quite powerful formal tools from category theory to software structures: designs, architectures, patterns, and styles. Rather than focus on issues at the level of computational models and semantics, it instead applies these tools to some of the problems facing the sophisticated software architect. The terminology and mind set (Part 1 and 2), while different from many common approaches, can provide startlingly concise expression of key properties of software systems (Part 3), and give rigorous meaning to entire families of box-and-line architecture drawings. It is applicable to the formal specification, decompostion, and composition of service-oriented architectures", Desdmond D'Souza, Kinetium

"For computer scientists, this unique book presents category theory in a manner tailored to their interests and with examples to which they can relate", Ira Forman, IBM

 



Ordering


The author



Teaching&Learning

in academia: Bergen, CMU, Copenhagen, Lisbon, Nottingham


Research

Category Theory

Institutions

Algebraic Specification

Formal Methods

Software Architecture

 

"The meaning of things lies not in the things themselves, but in our attitude towards them."
Antoine de Saint-Exupéry

"It is the use to which objects are put in different social contexts that gives them a large part of their fascination."
Neil MacGregor, Director of the British Museum, Financial Times, 28/03/06.

 
Contents
In the past ten years, several books have been published on category theory either by computer scientists or having computer scientists as a target audience. Isn’t the working computer scientist spoilt with choice? 1 Introduction
1.1 The Social Life of Objects
1.2 Categories Versus Sets
1.3 Overview of Typical Application Areas
1.4 What Can Be Found in This Book
Part 1: Basics
Part I covers some of the basics of category theory, including the “bare essentials” that are addressed in any book, from graphs to universal constructions and functors. However, a different emphasis and tone are used that are meant to be more appealing and accessible to software engineers. It is hoped that mathematically mature readers may appreciate a different way of exposing and illustrating these familiar concepts and constructions. 2 Introducing Categories
2.1 Graphs
2.2 Categories
2.3 Distinguished Kinds of Morphisms
3 Building Categories
3.1 Some Elementary Operations
3.2 “Adding Structure”
3.3 Subcategories
3.4 Eiffel Class Specifications
3.5 Temporal Specifications
3.6 Closure Systems
4 Universal Constructions
4.1 Initial and Terminal Objects
4.2 Sums and Products
4.3 Pushouts and Pullbacks
4.4 Limits and Colimits
5 Functors
5.1 The Social Life of Categories
5.2 Universal Constructions Versus Functors
Part 2: Advanced Concepts
In Part II, the reader will find material that only a few other books cover in comparable depth, with a strong emphasis on functor-based constructions like fibrations, and ending with a covering of adjunctions that deviates somewhat from the standard coverage. Again, examples are drawn from areas that have normally been confined to papers such as institutions and models of concurrency.
6 Functor-Based Constructions
6.1 Functor-Distinguished Kinds of Categories
6.2 Structured Objects and Morphisms
6.3 Functor-Structured Categories
6.4 The Grothendieck Construction
6.5 Institutions
7 Adjunctions
7.1 The Social Life of Functors
7.2 Reflective Functors
7.3 Adjunctions
7.4 Adjunctions in Institutions
7.5 Coordinated Categories
Part 3: Applications
Part III offers the chance of seeing category theory at work in a more ambitious project – giving semantics to CommUnity, a prototype language for architectural modelling. This part can be ignored by readers who are not particularly interested in the applications to software engineering. On the other hand, it can be followed, to a large extent, without the material exposed in Part II.
8 CommUnity
8.1 A Language for Program Design
8.2 Interconnecting Designs
8.3 Refining Designs
9 Architectural Description
9.1 Motivation
9.2 Connectors in CommUnity
9.3 Examples
9.4 An ADL-Independent Notion of Connector
9.5 Adding Abstraction to Connectors
10 An Algebra of Connectors
10.1 Three Operations on Connectors
10.2 Higher-Order Connectors
[*] Useful Links

Tutorial 2006 (movie, zipped pdf file)

 

 


 

WIKIPEDIA

 

 

Last updated: 12 April 2004