HW5: Reflections


Common concerns in the articles and reflect upon them

Common things I found throughout the four chapters and several readings were that systems require reliable, safe, and secure systems and the best way to obtain and maintain these systems is through a systematic approach do design, development, and deployment with reliability, safety, and security as focus areas.

The Therac-25 Accidents article shows how a failure in the development of software can have potentially lethal consequences. Had the engineers developing this equipment used techniques such as n-version programming or more thorough safety verification processes there is a higher probability that the accidents would not have occurred.

There were repeating themes throughout the chapters such as reliability, dependability, safety and security, etc. This was the case when discussing reliability engineering, safety engineering, security engineering, and resilience engineering. Each section discussed the importance of the same concepts but in relation to the topic at hand. For example, Chapter 11: Reliability Engineering defined reliability and how to quantify it, where Chapter 12: Safety Engineering showed how systems can be reliable but ultimately unsafe if improperly developed.

Another connection throughout the readings was the critical nature of software in the average modern citizens' life. The FBI public service announcement about vehicles being susceptible to exploitation wirelessly that could all for a third party to control critical parts of the vehicle is an example of the importance of creating secure systems while at the same time maintaining functionality. An important aspect of this story is that it had the potential to affect millions of people operating a piece of machinery capable of causing loss of life and damage to property on a massive scale.

Software’s increasing complexity was also a running theme throughout the readings. This increase in complexity leads to the necessity of more systematic approaches to development. Additionally, the size, nature, and introduction of humans into a system ensure that it is not only impractical to detect and stop all errors but impossible. Instead, the systems should be designed to mitigate the negative effects of errors, faults, failures, or even cyberattacks.

Testing is another crucial area of the development process. Each chapter spoke of different forms of testing such as statistical testing or modeling to gauge system reliability or experience, penetration, or tool-based analysis to test security vulnerabilities to a system. Testing allows us to learn from current systems as well as learn from past mistakes such as taking advantage of programming language vulnerabilities and inputs. This (hopefully) leads to more reliable, safe, and secure software as the world becomes increasingly more reliant on software. 

There are other things that were common in the readings, but I found these to be the most interesting and/or most important. The articles about the FBI’s Sentinel software development fiasco and the Why Software Projects Fail, and the Traps You Can Avoid That Could Spell Disaster illustrate the importance of the systematic approach to development and why the areas of reliability, dependability, safety, and security should be focused on throughout the development and design process.

Comments

Popular posts from this blog

HW10: Chapter 5

HW11: Chapter 6

HW26:Chapter 24