Friday, November 3, 2017

4 Times Software Screwed Us Over: How Do We Avoid This?




4 Times Software Screwed Us Over: How Do We Avoid This?


In this digital era, you must have heard about social media giants such as Facebook and Twitter and e-commerce platforms such as Alibaba and Amazon. These online websites rely on various software packages for their operation. These programs have quite frankly changed the way we work, think and live.

gt_how_software_screwed_us_over

Besides, many devices that earlier were solely mechanical in nature, are now controlled by software. For instance, thermostats were once electromechanical devices. However, they now rely heavily on software for operation.
However, software bugs can be quite problematic, especially with our increased reliance on them for daily activities. In fact, there have actually been quite a few occasions where software has fallen short of its intended purpose, leading to unpleasant results. 
In this article, we talk about 4 occasions where software performance has majorly missed its mark and how to avoid such software issues.

1. U.S. Multi-State 911 Outage


Emergency_Services

911 is a critical service, which allows individuals to contact emergency personnel whenever needed. At times, getting in touch with the emergency dispatchers via 911 can literally make the difference between life and death. 
Therefore, it was quite the disaster when on April 9, 2014, 911 call-routing failed in seven states of the US, including California, Florida, Minnesota, North Carolina, Pennsylvania, South Carolina, and Washington.
This outage was caused by a preventable coding error, which occurred at an emergency call management center in Colorado that was owned by Intrado.

2. Grounding of United Airlines' Fleet


united_airlines

In July 2015, United Airlines was forced to ground its entire fleet of aircraft due to a software glitch. This affected more than 4,900 flights globally and left many passengers stranded at airports and quite obviously frustrated. 
There was probably an economic impact as well since the airline would have had to compensate many passengers for the inconvenience. There were also probably several important business meetings that were bungled because of the grounding.

3. Toyota Camry Accelerator Pedal Malfunction


A Tangled Mess
As more and more features are being added to software over the years, it can start to look like this.

In September 2007, Jean Bookout was traveling on Interstate Highway 69 in Oklahoma with passenger Barbara Schwarz, when she ran into difficulties controlling her Toyota Camry
She attempted to lift her feet off the throttle but the car continued to accelerate. The brake pedal failed to stop the car and she was forced to use her emergency brake.
Unfortunately, this sent the car careening into an embankment. Schwarz died as a result and Bookout was hospitalized for five months due to critical injuries.
Car-accident

Representational image

It was speculated that the accident occurred due to several coding inadequacies that led to the crash of a task in the Camry's CPU. This CPU would control an inordinately huge number of functions, including ignition, throttle control, and cruise control.
Toyota's code became a tangled mess after several years of new codes being piled on old ones. This is usually referred to as 'spaghetti code'.
Spaghetti code is unnecessarily complex and makes it nearly impossible to find errors. Moreover, Toyota had also violated several safety rules in their coding. It should be noted that this was not an isolated case of unintended acceleration in a Toyota.
However, Bookout's accident brought this issue into the light and highlighted Toyota's flaws in their software process. It was even found that there were more than 10 million ways for unwanted acceleration to potentially occur, based on the way Toyota's code was structured.

Nest Thermostat Failure


Nest_Thermostat_1
Source: Flickr
Nest is a company, owned by Alphabet, that makes smart thermostats. These thermostats are quite nifty and allow users to control the temperature in their homes from their smartphones.
Last winter, Nest thermostats experienced a glitch in the form a faulty software update, which caused their batteries to drain. Unfortunately, this error happened in the middle of winter, leaving several users without heat temporarily. This is definitely something you don't want to happen in this time of the year.

A Brief Analysis of Software Issues

 Approaches such as model-based design and TLA+ allow developers to gain a bigger picture overview of how their software works.
Brett Victor, a prominent computer researcher, reckons that there is a disconnect between programmers and the problems they are trying to solve with codes.
Due to this disconnect, it becomes difficult for programmers to envision what they're trying to put in codes. Victor thinks this is one of the contributing factors to software being rife with bugs.
However, there is hope. Approaches such as model-based design and TLA+ allow developers to gain a bigger picture overview of how their software works.

bug-testing

Model-based design, as the name suggests, allows the development of software via visual models. TLA+, which stands short for Temporal Logic of Actions, is a language designed for writing the specifications of a computer program. What's great about TLA+ is that it allows exhaustive testing and verification of software before it gets publicized.
Both model-based design and TLA+ have already proven their salt. Esterel technologies, a software development firm, uses model-based design to build safety-critical software while TLA+ has been used by the likes of Microsoft to fix a possible catastrophic Xbox error, and by the European Space Agency to rewrite codes for a probe that landed on a comet.
The process of writing code is held in high esteem by programmers. Many of them are quite simply intrigued by the process of writing codes. It is, therefore, a challenge to get some programmers to accept approaches such as model-based design and TLA+. These approaches are often perceived as strictly academic with no real-world viability. However, a change of view must come as early as possible.

Final Thoughts

Software is increasingly being used in applications that require built-in safety precautions. Better methods of designing software must be introduced across the board as such applications are vital in our lives.
Processes like automation rely heavily on software these days but one error in a line of code can lead us to major setbacks as the above instances show.

Coding

Now, imagine something like Artificial Intelligence (AI) being incorporated into these applications. AI is scary enough on its own without software glitches. Add bugs into the mix and there's no telling what could happen.
However, there is a silver lining here. With a little work and some new tools, we can make better software and AI by designing it more soundly and testing it to its studs. 
Let's hope that this critical issue is taken seriously by concerned authorities so that we can use software to its full potential but only to build a safer and smarter future.

https://www.guidingtech.com/avoid-software-issues/


Toyota Unintended Acceleration and the Big Bowl of “Spaghetti”
Code
Posted on Thursday, Nov 7th, 2013
------------------------------------------------
    A Case Study of Toyota
Unintended Acceleration and
       Software Safety
      Prof. Phil Koopman
     September 18, 2014
Carnegie Mellon University
     koopman@cmu.edu
------------------------------------------------
The Coming Software Apocalypse
A small group of programmers wants to change how we code—before catastrophe strikes.
* This article originally stated that there were 10 million ways for the Toyota Camry to cause unintended acceleration.
We regret the error.
================================