Rethinking Software Design

The fundamental question of software design—namely how to shape software so that it is more usable—has been strangely marginalized. We've made great progress on user interfaces, but the structures that affect usability, flexibility, robustness, and even security, lie deeper in the software.

In a cluster of related projects, we're developing:

  • a theory of software design based on "concepts", which are essentially micromachines that are understandable to human users
  • a series of case studies to test and extend the theory
  • a new modularity mechanism based on concepts to support rapid assembly of applications without coding.

As computing becomes even more pervasive in our society, and as we depend more and more on software infrastructure, its design—in this sense, not in the sense of internal code structure—will become a central concern, and we think that now is the time to rethink how we design software.

Papers

Talks

  • A new modularity for software (video)
    Daniel Jackson. Keynote, OOPSLA/SPLASH 2018. Boston, MA. Nov 7, 2018
  • What's Wrong with Git? (video)
    Santiago Perez De Rosso. Git Merge 2017. Brussels, Belgium. Feb, 2017
  • Towards a Theory of Conceptual Design for Software (slides)
    Daniel Jackson. Onward! SPLASH 2015. Pittsburgh, PA. October 29, 2015

Designs

Acknowledgments

This research is part of a collaboration between MIT and SUTD (the Singapore University of Technology and Design), and is funded by a grant from SUTD’s International Design Center.