Sometimes the software is like us. It can be bloated, slow, and messy. Humans can see a doctor if these symptoms persist (maybe not due to a mess), but we rarely get broken software to go to its developer over and over again.
The answer to why our software is broken is trapped in a network of flashy hardware dependency, the limitations of a “code and fix” approach and inadequate design. MIT Professor Daniel Jackson, who is the associate director of the Computing and Artificial Intelligence Laboratory (CSAIL) at MIT, looked at the existing limitations to create a new framework to make our programs work better. His software design theory takes a human-centered approach that sees an application as a collection of interacting concepts. Jackson’s new book “The Essence of Software” builds on his many years of software research, including the design of Alloy, an open source language and analyzer for software modeling.
Q: Bugs. Security vulnerabilities. Design flaws. Has software always been bad?
A: The software is actually better than it ever was. It’s just that the power and functionality of software has grown so rapidly that we haven’t always been able to keep up. And there are some software products (Apple Keynote, for example) that are nearly perfect: easy to use, flexible, with almost no bugs. My book offers an approach that will allow anyone to create such good software.
Q: In your new book, “The essence of software“, you present a theory of software design that demonstrates how a software system” can be viewed as a set of interacting concepts. “How does this overthrow conventional wisdom?
A: First, conventional wisdom considers user experience primarily in the user interface: its layout, colors, labels, etc. The concept design goes further, to address the fundamental mechanisms that the programmer builds and the user experience.
Second, most apps have large overlapping areas of functionality, but existing approaches fail to recognize this, and developers build the same functionality over and over again as if they were new, without taking advantage of the fact that they have been built several times. before. Just think of the number of social media apps that implemented upvotes, comments, or favorites, for example. Concepts allow you to identify those opportunities for reuse and to take advantage of the design wisdom that has been accumulated.
Q: 2021 has been one of the worst years for data breaches. Boeing 787s must be restarted every 51 minutes to avoid “several potentially catastrophic failure scenarios”. Can your approach help with these kinds of safety and security issues?
A: A lot of the safety and security concerns stem from a lack of clarity in the design. Concepts can help with this. More directly, concepts can ensure that users actually understand the effects of their actions, and we know that many disasters happen because users do the wrong thing. In security, getting the user to do the wrong thing (like granting access to someone who shouldn’t have access to it) is usually the easiest way to take control of a system. So if you can design an app to make it harder for users to do things that they will regret, you can alleviate this problem.
New malware detection for Android at source code level
This story is republished courtesy of MIT News (web.mit.edu/newsoffice/), a popular site covering current research, innovation and education at MIT.
Quote: Book Explores Conceptual Clarity and a New Theory of Software Design (2021, December 1) retrieved December 2, 2021 from https://techxplore.com/news/2021-12-explores-clarity-theory-software.html
This document is subject to copyright. Other than fair use for private study or research purposes, no part may be reproduced without written permission. The content is provided for information only.