Sometimes, the software is just like us. It can be bloated, slow and messy. One can see a doctor if these symptoms persist (perhaps not for a glitch), but rarely do we push a flawed software program to see its developer over and over again.
The answer to why our software is flawed lies in a web of reliance on flashy hardware, the limitations of a “code-and-fix” approach, and inadequate design. MIT Professor Daniel Jackson, associate director of MIT’s Computer Science and Artificial Intelligence Laboratory (CSAIL), looked to existing limitations to create a new framework to improve the way our programs function. His theory of software design takes a human-centered approach that views an app as a collection of interacting concepts. Jackson’s new book, “The Essence of Software,” draws on his many years of software research, including designing an open source language and analyzer alloy for software modeling.
Why: Worms. Security flaws. Design flaws. Has software always been bad?
a: The software is actually better than ever. It’s just that the power and functionality of software has grown so fast that we haven’t always been able to keep up with it. And there are some software products (for example Apple Keynote) that are close to perfect – easy to use, flexible, almost no bugs. My book provides a vision that will empower everyone to make software good.
Why: In your new book, “The Essence of Software,” you introduce a theory of software design that shows how a software system can be viewed as “a collection of interaction concepts.” How does this overturn conventional wisdom?
a: First, conventional wisdom sees the user experience primarily in the user interface – its layout, colors, labels, etc. The concept design goes deeper, addressing the fundamental mechanisms and user experiences created by the programmer.
Second, most apps have large areas of overlapping functionality, but current approaches do not recognize this, and developers repeatedly create similar pieces of functionality as if they were new, without taking advantage of the fact that they were built multiple times. Huh. before this. For example, just think about how many social media apps have implemented up-voting or comments or favorites. Concepts allow you to identify these reuse opportunities and take advantage of accumulated design knowledge.
Why: The year 2021 was one of the worst years for data breaches and cyber attacks – we have seen fragility in everything from electronic medical records to social media and big tech companies. Can your approach help with security loopholes?
a: A high proportion of safety and security issues come from a lack of clarity in the design. Concepts can help with this. More directly, concepts can ensure that users truly understand the implications of their actions, and we know that many disasters happen because users do the wrong thing. In the field of security, allowing the user to do something wrong (such as granting access to someone who shouldn’t have access) is usually the easiest way to control a system. So, if you can design an app that makes it harder for users to do things they will regret, you can reduce this problem.