PI
Core/Dual

Daniel Jackson

Professor

Phone

258-8471

Room

32-G704

Imagine a world where software has moved beyond traditional design methods, programming languages, and cool technology, and is built to be infinitely more usable in the long term. What might the structure of such a system look like? Professor Daniel Jackson’s research aims to fundamentally change the way we think about designing software, so that it is more robust, safe, and usable. To make radical progress, he believes we need to question fundamental assumptions and forge new understandings of what software design, construction, and analysis are all about.

Prof. Jackson, an associate director of MIT CSAIL and professor in the Department of Electrical Engineering and Computer Science, leads the Software Design Group in CSAIL. He has broad interests in software engineering, especially in development methods, design and specification, formal methods, and safety critical systems. Through his research in these areas, he hopes to make software ultimately more pleasant to use — meaning it is safer, more understandable, more reliable, and more robust overall. This goal means balancing more short-term, concrete tasks that help make progress with discovering major long-term ideas.

Currently, we do not have good structures in place for designing software to fulfill the design of end users. If you compare work on engineering code — which has 50 years of research on different notions on modules, objects, data types, processes, and more — to how you would structure an application, most developers could point to drawing wire frames and sketch out a structure, but because they often do not have real structures, patterns, idioms, or principles for applications, these ideas are vague at best for how to actually shape what a software system does.

To contribute more robust designs around the structure of software, Prof. Jackson is developing a theory of design around concepts. Concepts are reusable pieces of functionality that give you a way to think about how to structure software design. Much of Prof. Jackson’s work centers on concepts, including projects around conceptual analysis and various redesigns of current systems. For example, he and the Software Design Group have put a veneer on Git, a tool for managing source code, to make it more usable. This veneer, called Gitless, is a demonstration of concept design, in which they took the underlying concepts of Git and reworked them to make an app easier to learn and use.

A related project he is working on is rethinking the design of web applications, making them more customizable for the end user. Many users would like the option to perform more actions than what a particular website provides. On a travel website, for example, the site may let the user sort listings by location, but not by price or how walkable the neighborhoods are. Prof. Jackson and PhD student Geoffrey Litt have built a platform for web application extensions called Wildcard that empowers users to the behaviors of websites to meet their needs. The web, as Prof. Jackson points out, was designed to be extensible and interoperable, so creating toolkits to extend these capabilities is a natural way to rethink programming paradigms.

Prof. Jackson and his group are also changing our assumptions about what’s possible in software design when it comes to more complex systems, like certified control for self-driving cars. This new architectural pattern for autonomous vehicles offers a way to verify that the car is safe to drive, without preventing the use of complex machine-learning algorithms for perception and control. This architecture involves a controller that proposes a next action and a certifier that ensures the next action is safe, generating and checking certificates that make autonomous cars safer and allow for more efficient, complex problem-solving.

In these ways and more, Prof. Jackson sees small changes having a dramatic impact on how people design software. An analogy is the design patterns movement for code, which had a huge influence on the way people write programs. Similarly, Prof. Jackson would like to change the way people design software and think about it in terms of concepts, taking existing patterns and reusing them in new ways.

Bio

Daniel Jackson is a professor in the Department of Electrical Engineering and Computer Science, associate director of CSAIL, and a MacVicar Fellow. He leads the Software Design Group. He received an MA from Oxford University in Physics, and his SM and PhD from MIT in Computer Science. He was a software engineer for Logica UK Ltd. and Assistant Professor of Computer Science at Carnegie Mellon University before joining the MIT faculty in 1997.

He has broad interests in software engineering, especially in development methods, design and specification, formal methods, and safety critical systems.

Projects

Project

Alloy

Alloy is a language for describing structures and a tool for exploring them. It has been used in a wide range of applications from finding holes in security mechanisms to designing telephone switching networks. Hundreds of projects have used Alloy for design analysis, for verification, for simulation, and as a backend for many other kinds of analysis and synthesis tools, and Alloy is currently being taught in courses worldwide.

Project

An Interlock for Self Driving Cars

Self-driving cars are likely to be safer, on average, than human-driven cars. But they may fail in new and catastrophic ways that a human driver could prevent. This project is designing a new architecture for a highly dependable self-driving car.

Project

Déjà Vu: Constructing Apps from Concepts

Déjà Vu is a new platform for end-user development of apps with rich functionality. It features a novel theory of modularity for binding concepts; an extensive library of reusable concepts; and a WYSIWYG tool for specifying bindings and customizing visual layout

 7 More

Groups

Community of Research

Human-Computer Interaction Community of Research

The focus of the HCI CoR is inventing new systems and technology that lie at the interface between people and computation, and understanding their design, implementation, and societal impact.

Community of Research

Systems Community of Research

The Systems CoR is focused on building and investigating large-scale software systems that power modern computers, phones, data centers, and networks, including operating systems, the Internet, wireless networks, databases, and other software infrastructure.

 1 More