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
Post a Comment