![]() November 1996
Software Bug Costs $363 MillionOn June 4 the European Space Agency's Ariane 5 rocket, on its first flight, veered off course and exploded approximately 40 seconds after liftoff. The cost of this failure is estimated to be $363 million. Since this was considered a test flight, neither the rocket nor the four science satellites it carried were insured. Why did the rocket veer off course? The on-board computer told it to, because it received faulty data from the inertial reference system (known as SRI). The SRI measures the position and motion of the rocket in space. Why did the SRI send bad data? Its computer had encountered a software bug: it tried to store a 64-bit floating point number in a 16-bit signed integer, but the number was too big to fit. So the SRI was running a diagnostic program and it was sending test patterns to the computer controlling the rocket! Since the SRI is a mission-critical component, it has a backup -- an identical piece of hardware. The software was also identical, so the backup had already failed because of the same bug. The redundancy was only intended to handle random hardware failures, not software bugs. What is the moral here? Perhaps only this: it is impossible to write bug-free software, even in a 10-year, $7 billion project. We shouldn't expect lesser efforts to be totally free of software bugs, and the goal should be to minimize the impact of bugs when they do occur. The Year 2000 ProblemWhat year is 1/1/00? Is it 1900 or 2000? That, in essence, is the Year 2000 Problem. As a convenience to computer users who must enter dates, and sometimes to save computer storage space, programs often use two digits for the year. Dates usually reflect relatively recent events, so it is a convenience not to have to enter a four-digit year. Of course, even now, two digits are not always sufficient. The date of publication of a book, for instance, could be 1896 or 1996. A library card catalog, for instance, must handle both. If software is written with the year 2000 in mind, it can usually accept a two-digit year without difficulty. For example, in RTG Bills, our legal time and billing software, we assume a year between 50 and 99 means 1950 to 1999 and a year between 00 and 49 means 2000 to 2049. Internally, the full four-digit year is stored. Unfortunately, many programs simply fail to consider the Year 2000 Problem. Two serious difficulties can occur: (1) All two-digit years may default to 19xx. This can be an annoyance, if you have to enter a four-digit year, or a disaster, if the program cannot even accept and store a four-digit year. (2) If a program does not store dates internally with a four-digit year, it probably won't be able to maintain the proper chronological order in its sorting and calculations. For example, an event in 2000 should come after an event in 1999, if a report is created in chronological order. And a warranty which goes from 1996 to 2006 should be 10 years long, not -90 (that is, 06 minus 96). Example 1: WordPerfect 7Consider sorting lines by date in a word processor. Corel WordPerfect 7 can sort lines of text. Suppose each line begins with a date. It will treat numbers separated by slashes as separate words, and you can tell it to sort by the third word (the year), then the first word (the month), and finally by the second word (the day). Unfortunately, the program does not understand dates, so it cannot account for the year 2000. If you sort these three lines:
the program puts 1/1/00 first because it is sorting the years numerically (00 comes before 95). You can only fix this by using a four-digit date for all entries:
Example 2: Quattro Pro 7Unlike WordPerfect, Quattro Pro has a date format. Internally, it stores dates with the full four-digit year and it can display dates with various formats. However, if you enter a two-digit year, it always assumes the 20th century. Here is a column of dates after they were sorted by Quattro Pro: 01-Jan-1896 01-Jan-00 01-Jan-95 01-Jan-96 01-Jan-2000 Notice that the entries are in the proper chronological order, assuming 01-Jan-00 means the first day of 1900. Example 3: Quicken 3 and 5When we entered 1/1/1896, both programs accepted it but changed it to 1/1/96 and sorted it as 1996 not 1896. The date 1/1/00 was not accepted as a valid date. Both programs accepted 1/1/2000 but displayed it as 1/1'0, which appears to be a bug. When we clicked on the calendar icon in Quicken 5, it showed a calendar for January 2000, so perhaps only the display is affected. RTG Bills and RTG Timer are trademarks of RTG Data Systems. Other company and product names may be trademarks of the companies with which they are associated. Copyright © 1996 RTG Data Systems |