Our goal is to develop a theory of software design focused on the conceptual structure that underlies software. Key threads include developing suitable diagrammatic notations; articulation of design criteria; and reworking existing applications like Git.

For decades, 'software design' has been about the internal structure of the code. Recently though, with the growing interest in design thinking, practitioners and researchers have started focusing more on the design of the behavior of the software. The behavior not only determines the user experience, but also shapes the implementation in fundamental ways. In this project, we are developing a radical new approach to software design that focuses on this aspect. The key idea is the identification of conceptual constructs that embody the key behavioral features of the application. To realize the goal of a new design method for software, we analyze existing systems and applications and develop new ones, polishing our design theory in response to what we learn from case studies.