Skip to main content

Ariane 5 Disaster and Design by Contract




Ariane 5 was an unmanned rocket launched by the European Space Agency (ESA) and Centre National d’Etudes Spatiales (CNES) after taking 10 years to develop it with a cost of $7 billion.  About 40 seconds after lifting off, the rocket exploded during its first voyage on 4th of June, 1996 and ended in a failure and became one of the disastrous failures though there were no victims.

An inquiry board which nominated by the Director General of ESA and the Chairman of CNES investigated the causes of crashing and issued a report. According to the report, reason behind this crash was a software failure.

The root cause behind Ariane 5 flight 501’s crash was uncaught exception which could not handle during data conversion of 64-bit floating point number to 16-bit integer for the horizontal component of the velocity vector with respect to the platform and an overflow occurred. The crash occurred due to an oversight to handle this particular exception even though they handled other comparable conversions in the same code smoothly.

According to Jean-Marc Jézéquel and Bertrand Meyer, no one can blame the language used, design, implementation, testing or reusing the code but specification reuse which could have been lightened through “Design by Contract” to specify interfaces between modules precisely (Meyer, B., Jezequel, J, 1997). But considering the software point of view of the disaster, it is difficult to agree with the decision of reusing the code, where it dated back to 10 years. It was the period when new programming languages were introduced.

When the Ariane 4 was launched, the software used had no any problem with system while taking off and after.  They could not detect the fault due to the speed of Ariane 4 though the problem existed.

Trajectory of Ariane 5 was different from Ariane 4’s. Therefore trajectory of Ariane 5 led to make horizontal velocity which is five times higher than Ariane 4. So it asked to check the floating point value of horizontal component of the velocity vector to be less than the maximum value.

There were many programming languages in that period but C++, Java and Eiffel could have been used to overcome the issue since all were prominent and well known even that time.

Since C++ supports object oriented programming was one of the solutions that would have used in the perspective of code re-usability and it contains with innumerable libraries. But it is easy to get involved into memory management problems because of the less support for dynamic memory management, it could have come up with another disaster.

Java is fully object oriented language and it uses assertions. It gives an exception and terminates executing by default as it’s a special feature in Java. Also Java is one of the secure portable languages. Still it was not matured enough and could have slow down the speed of the program. And it does not support multiple inheritances and not based on “Design by Contract” concept.

Eiffel supports object oriented programming comprehensively. It based on the concept of “Design by Contract” with full assertion support. It concerns about the flexibility of the software and prevent the rigidness and limitations unlike in Java and C++. Other advantage of Eiffel is reusing classes. Also, it supports multiple inheritance and faster than the other languages. Therefore, Eiffel would have been the best programming language to make the problem correct. 


References


Meyer, B., Jezequel, J., (1997), Design by Contract:The Lessons of Ariane. Los Alamitos: IEEE Computer Society Press, [online] Available at: http://portal.acm.org/citation.cfm?id=619014.620625 [accessed: 29th October 2010]


Comments

Popular posts from this blog

D. S. Senanayake College - My Alma Mater

  History In 1967, Minister of Education Hon. I.M.R.A. Iriyagolla began the ground work for establishing the Boys' school in Cinnamon Gardens. It was named after the first prime minister, Hon. D.S. Senanayake of Sri Lanka. Mr. R.I.T. Alles, a teacher of Royal College, Colombo 07 became the Principle of the new school. The location in which the college stands today was at that time called the "Kumbikale", which was cleared with the help of the community and some boy scouts from Royal College. After years of hard work, D.S. Senanayake College opened her doors to youngsters on 10th February 1967. Today The first batch of 167 students was housed in a prefabricated building sheltered by woven coconut leaves. Today it accommodates more than 6500 students from Grade 01 to 13. The ratio of Student : Teacher is now 23 : 1. Currently, 275 teachers are educating students. School colors are Black and Gold where motto is "Country Before Self...

Shortcomings of Commonly Used Computer Languages

A.       Typecasting issue in C++ C++ code of type casting, which is considered as an insecured code. The same problem occurred in Ariane 5, which ended up in a crash.  According to (Soulie, 2007) , Type casting is known as converting an expression of a given type into another type. In C, type converstion can be done using,    1.       Implicit Convertion –   one type of data is automatically converted into compatible type of data.    2.       Explicit Convertion – Many conversions, specially thos that imply a different interpreation of the value. It has 4 specific casting operators (dynamic_cast, reinterpret_cast, static_cast and const_cast). Here, the conversion truncates, that is the fractional part is discared. There is a data loss, since the out put is 13, expected output was 14. Remedy – Use static_cast and add 0.5 before casting. c = static_ca...

"Hello World" in Different Languages

TRUE STORY!!! And in Binary  :  1000100111010101101011101000000111101010100011101101110111101101010010100010101010101011110101000101010101010101010100100101000101010101110101010100000010111011110110101001010001010101010101111010100010101010101010101010010010100010101010111010 101011001110111101101011101111011010100101000101010101010111101010001010101010101010101001001010001010101011101010100010100010101010101011110101000101010101010101010100100101000101010101110101010.. What the hell? :O Ref -  https://www.facebook.com/photo.php?fbid=554573284591554&set=a.241809332534619.55240.241806149201604&type=1&relevant_count=1&ref=nf