Chapter One: Introduction to Software Engineering




  • Bruegge and Dutiot give several different interesting examples of "software run awry." Do some browsing on the Internet and in other texts and provide some new examples of projects or systems where software did not meet stated goals or requirements.


In CS 220, Professor Bivens relayed the tragedy of the Therac-25 software errors. As reported in the IEEE Computer Applications in Power[*], there were six cases of massive radiation overdoses attributed to faulty software controlling the Therac-25. These errors resulted in death or serious injuries for those involved. This is an extreme case, but the lesson is still valid.

The problem occurred when the machine could be operated in a state in which it was possible to deliver more radiation than was intended. This fault can be traced to improper requirements definition or insufficient testing.

In the first case, the designers needed to realize that they could prevent the users from operating the machine, and this should have been a requirement. In the latter case, assuming that preventing the operator from using the machine in a dangerous way was a requirement, the developers did not adequately test the system, and let this fatal bug through. bps

The Denver International Airport was sporting a new mega-million dollar computerized automated baggage system. The airport planned to open on Halloween but due to software problems the opening was pushed back to December and then eventually to May since a stable software program could not be achieved. This just shows how hard it can be to meet certain time limits or millions of dollars can be lost. This case also demonstrates the importance of meeting deadlines. Joe Zumpella

From ZDNet UK
Software bug blamed for Australian radioactive spill
10:58 Wednesday 30th January 2002
Andrew Colley, ZDNet Australia

Amec Engineering has laid the blame for a radioactive spill on faulty software, but refuses to name the company concerned:

Amec Engineering, designer of the Beverly uranium processing plant in South Australia, has blamed buggy software for a radioactive spill at the site last December, confirming early suspicions that computers played a role in the accident.

"After a detailed assessment of the incident it is now clear that the problem was caused by a computer programming error that has since been corrected," said Stephen Middleton, spokesperson for the plant's operator, Heathgate Resources.

According to Amec's report, the glitch cut power to the plant's fluid distribution control system during a routine service exercise. At the time, the mechanism should have shut down pumps moving fluid into the plant.
Elizabeth Zehner

  • The phrase "nature abhors sharp corners" reminds us that the natural sciences are quite different from the sciences of the artificial. What kind of "science" is computer science and software engineering. Does "nature abhors sharp corners" apply to our discipline?


Computer science is most definitely an artificial science. We created the entire domain in which we work, and we theoretically have complete control over the environment. Software engineering isn't necessarily as easy a decision. Software engineering deals with the human element of applying computer science. Bruegge and Dutiot talked about artificial sciences in terms of what can be learned from the physical and social sciences. We can apply techniques from both areas to SE. They claim "[Software Engineering] is not algorithmic." We spend so much time studying algorithms in CS, only to find that we cannot apply the same thinking and techniques in SE.

"Nature abhors sharp corners" does indeed apply to software engineering. In SE, we need to be careful to learn what we can from the artificial, physical, and social sciences; we have the opportunity to pull the best from all three worlds. bps

Can you give an example of the types of things that we can learn from other disciplines? For example, what can computer scientists learn from biologists, physicists, or sociologists? I would content that we can learn how to apply the scientific method from the first two. We can learn the same from the third while also learning how to design experiments that involve human subjects. But, are any of these things really related to the engineering of software? Greg


I would have to think that Computer Science is artificial. It has not come about until this past century and was created solely by us. Software Engineering would also be an artificial science due to the fact the it has been around less than a century, but on the other hand software engineering is based on modeling to solve complex problems so in a way it can be viewed as a natural science.

I think "Nature abhors sharp corners" is a good phrase to describe our discipline because to me the phrase is saying that there are always surprises and unpredictable situations just like nature. I think this discipline is exactly that. It is very unpredictable and is always changing for the better. There are no easy ways out or smooth rounded edges. Joe Zumpella

If a science is "new", does this mean that it is always artificial? Are there surprises in the discipline of software engineering because the discipline is young or because this is fundamental? Why do you think that software engineering is really unpredictable? Greg

I feel that Computer Science is most aptly characterized as a natural science with artifical science applications, and one of those applications is Software Engineering. Computer Science, as a whole, is rigorously based in mathematics and physics, both natural sciences themselves. It is when you start to figure people, usually called "human factors," in that it becomes an artifical science.

Elizabeth Zehner

Why do you categorize mathematics as a natural science? For example, is the only interpretation of logic a two-value approach where everything must be either true or false? Personally, I feel that mathematics, while being formal and rigorous, is more artificial than it is natural. Even though mathematics might form the underpinnings of computer science, physics, etc. I still view it as being artificial in nature. Why are things only artificial when human beings become directly involved? Don't physicists become involved in their science when they conduct experiments; how is this different than people using a software system? Greg


  • Distinguish between the terms notation, method, and methodology. Give an example of each of these terms.



A notation is a way to represent a model. A notation attempts to convey an abstract model in a way that is easy to understand. For example, music is written using a notation consisting of staves and notes. This notation makes concrete (well, ignoring performance interpretation) the concept of a piece of music, which previously only existed temporarily and was only understood aurally.

A method is a technique which can be used repeatedly to achieve results. Take music as an example again. I know that if I finger a certain note on my guitar and pluck the string, I'll get a particular pitch, and furthermore the technique with which I play this note will affect the way it sounds. If my guitar is in tune, every time I perform this action, I get predictable results.

A methodology is a set of methods used together to solve a problem. I can use many proven methods of playing my guitar to achieve the final goal: playing a piece of music. It is only through my collection of methods that I am able to play different notes and play them with different styles. The methodology combines individual methods to get results. bps

A Notation is a graphical or textual set of rules that represents a model. HTML is a notation for websites. It is a set of rules to develop a web site that web designers follows.

A Method is a repeatable technique that is used to solve a problem. In algebra the FOIL idea is a method, it is a repeatable exercise to multiply two equations.

A Methodology is a collection of theses methods combined for solving a problem or problems. An example here would be an algebra book which lists many other methods than just FOIL. Joe Zumpella

  • Notation: System of rules for representing a model
    • Example: Mathematical graphing notation,i.e. modeling equations on a plane (Cartesian), on a circle (Polar), on a sphere, etc.
  • Method: A technique for solving a problem (Question: Does it/Should it specify inputs and outputs like a computer program or a recipe? Seems logical, but not included in book's definition.)
    • Example: One of the steps of Gaussian elimination.
  • Methodology: A collections of methods that solve a class of problems.
    • Example: Gaussian elimination to solve a system of equations.

Mildly interesting aside: I first thought that Gaussian Elimination was a method, but close inspection of the methodology definition changed this. While methods can contain sub-methods (which is why I thought Gaussian Elimination was a legitimate answer), the fact is they solve a single specific problem. Methodologies solve classes of problems, which is why Guassian elimination is a methodology, and a cake recipe (while it contains sub-methods of pre-heating an oven, etc.) is just a method.
Elizabeth Zehner



Link to this Page