Towards a Theory of Software Design

10 Nov
Thursday, 11/10/2016 4:00pm to 5:00pm
Computer Science Building, Room 151
Distinguished Lecturer Series
Speaker: Daniel Jackson

Abstract:  Engineers make things work reliably and efficiently; designers make them useful. In the development of buildings, for example, the civil engineer is concerned with the internal structural that prevents the building from falling down; the designer (i.e., the architect) is concerned with the aspects of the building (light, space, etc.) experienced by its users.

We have a pretty good theory of software engineering that guides the internal structure of software systems, using notions such as decoupling, information hiding, representation independence, redundancy, and so on. But we don't have much of a theory to guide the design of software: the aspects that determine the user's experience.

In this talk, I'll present the elements of an evolving theory of software design based on the identification of concepts and purposes, and I'll present some straightforward design rules that can help improve the design of a software system without resorting to trial and error (e.g., by brainstorming and user testing). I'll give examples from a variety of well known applications.


A reception will be held at 3:40 p.m. in the atrium, outside the presentation room.
Faculty Host