Hi, welcome back. This is a fun lesson.
Last lesson, we talked about design patterns and
how a complex design can be built of existing patterns.
When you do this,
you need to understand what you're reusing and what its limitations are.
This was the problem in 1996 with
the launch failure of the first Ariane Five launch vehicle.
You can see it blow up at this web,
at this YouTube address.
The rocket was built by the French and launched from Kourou in French Guiana.
Shortly into launch, less than two minutes,
the launch vehicle veered off path and was destroyed by range safety.
The problem was traced back to a reused design for an inertial measurement unit,
which worked fine on the Ariane Four series of launch vehicles.
Ariane Five was much more powerful and was capable
of accelerations much higher than the Ariane Four.
However, the design of the inertial measurement unit hadn't been adjusted for this,
and when the launch acceleration exceeded what the IMU could measure,
it shut itself down.
Without the IMU, there is no vehicle attitude control.
Without adequate attitude control,
the engines couldn't gimbal to keep the pointy end of the rocket up.
You could see how it pitched over shortly before it was destroyed.
Not that the French have a monopoly on this sort of thing.
In 1999, three years later,
NASA lost their Mars Climate Orbiter,
for an interesting reason.
Well, it descended too quickly into the Martian atmosphere and burned up.
But it did that because thruster force was calculated in pounds of force,
English units, and the navigation software expected the answer in newtons, metric units.
Of course, the reason why this happened has a number
of explanations, from the superficial,
it wasn't tested well enough,
to the deep down,
overtly aggressive culture at NASA.
Somewhere in the middle was the fact that each piece of software that played in
the disaster had been designed for a different purpose and was reused.
The software worked fine in its original situation,
but the reuse spelled disaster because mindless reuse is inappropriate.
The lesson, as you can expect,
design patterns and reuse are fine,
but be careful about what you're reusing.
Next time, we'll talk about another reuse you can't
overlook: languages and operating systems.