HW4: Chapters 11 & 12

11.4: What is the common characteristic of all architectural styles that are geared to supporting software fault tolerance?

They are based on the assumption that diverse implementations of the same specification are independent and do not include common errors. Therefore, they will not fail in the same way at the same time. The software should be written by different teams who should not communicate during development. 

11.7: It has been suggested that the control software for a radiation therapy machine, used to treat patients with cancer, should be implemented using N-version programming. Comment on whether or not you think this is a good suggestion.

When dealing with radiation and cancer, the stakes are very high. There is no room for errors in the software, and there must be many precautions to avoid accidents. This is where fault-tolerant software has an advantage. A fault-tolerant software would provide an extra layer of protection against system failure during use. N-version programming still works even if one of the versions throws a failure, depending on the tolerance. I think it would be better to use a self-checking architecture, in which all separate channels must be working properly in order to proceed with the operation. According to the book, in medical treatment systems reliability is more important than availability because an incorrect system response could lead to the patient receiving the wrong treatment. Therefore a self-checking architecture, which is used in situations where reliability is more essential than availability, should be used over N-version programming. 

11.9: Explain how programming language support of exception handling can contribute to the reliability of software systems.

Depending on how the programming language supports exception handling, the approach to using good practices in your programming changes. The guidelines to follow for error reduction in programming may differ between languages and notations. Therefore, if a programming language does not have the proper implementations required to implement good practices into your code, then it is going to create less reliable software systems no matter how good the software engineers on the project are. For example, if a language does not have a means of altering the visibility of information in a software architecture, then an individual would not be able to withhold information from parts of the project where that information is not needed. 

12.5: A train protection system automatically applies the brakes of a train if the speed limit for a segment of track is exceeded, or if the train enters a track segment that is currently signaled with a red light (i.e., the segment should not be entered). There are two critical-safety requirements for this train protection system: The train shall not enter a segment of track that is signaled with a red light. The train shall not exceed the specified speed limit for a section of track. Assuming that the signal status and the speed limit for the track segment are transmitted to on-board software on the train before it enters the track segment, propose five possible functional system requirements for the onboard software that may be generated from the system safety requirements.

1. The system must be able to get the speed of the train.
2. The system must be able to get the current track that the train is headed towards.
3. The system must be able to compare the speed of the train to the speed limit of the track.
4. The system must be able to apply brakes autonomously.
5. The system must be able to override manual input when safety requirements are breached.


Popular Posts