1. What is a race condition in software? Why are race conditions difficult to debug?
2. What are the advantages of allowing software users to identify and report bugs? What are the disadvantages?
3. Why do some people argue that shrinkwrap software should be exempt from the Magnuson-Moss Warranty Act and Article 2 of the Uniform Commercial Code?
4. Suppose the legislature in your state is debating the adoption of UCITA and you have been called as an expert witness. What are the three most important ideas you want your legislators to get from your testimony?
5. Why are computer simulations playing an increasingly important role in science and engineering?
I have attached a Word document here containing your answers. I have tried to be more explanatory as some of the questions are quite fundamental and so the more you know the better.
1. Race condition is a very common occurrence in multi-threading applications or in applications that used shared resources such as memory. To provide an analogy, consider the case of special laboratory equipment that is used by 3 students in a lab. Now let us assume that a scheduling sheet is maintained in which students are supposed to mention their times of use for the equipment to avoid conflicts. Suppose on a given day, student 1 wants to use the equipment from 11 AM-2 PM and writes it down. Student 2 comes in next and writes down his time of use as 1:30 PM-4 PM. Student 3 is scheduled to use the equipment after 4 PM. This creates an overlap from 1:30 PM- 3 PM where both students 1 and 2 will be vying to use the equipment. It is likely that in their tussle leads to the equipment being damaged by overload. Consequently, when student 3 comes in he is unable to use it at all. Another good example that is commonly used to explain race conditions in a non-technical manner is the bank account example which goes as follows:
Company X has $1,000 in the bank. X pays a rent of $2,000 and received a payment of $10,000 for services rendered to company Y. However, due to a race condition, X is in deficit of $1,000 and is now applying for bankruptcy.
How does this happen? Let us look at a detailed account of these transactions: Bank staff A takes the current value of $1,000 and adds $10,000 to it. Bank staff B takes the current value of $1,000 and subtracts $2,000 from it. Bank staff A updates the value to $11,000. Bank staff B updates the value to -$1,000.
This is analogous to programming where shared-memory programs that use explicit time synchronization might have improperly synchronized entities such as classes that contain references to objects from other classes or try to update the same data structure at the ...
In this solution we answer a series of questions regarding software development.