Starliner issues to date have been design flaws.
Not true. More misinformation
So incorrect initialization of the MET timer and erroneous thruster mapping tables were part of the original functional spec? Fascinating.
incorrect initialization of the MET timer is a input error. Also, software errors are not design flaws
Emphasis mine.
No, it is was NOT an input error. ULA's Atlas V gave the correct inputs.
The INcorrect initialization of the MET timer was in fact a design error, just as GreyBeardEngineer had correctly indicated.
The software requirement for MET initialization was that Starliner would initialize its MET timer by "grabbing the time from Atlas during the terminal count phase".
Unfortunately, when those requirements were translated into the design of the software, PART of this particular requirement was overlooked. Boeing's software design team failed to properly translate the part,
about grabbing during the terminal count phase, into the design of the software.
The result was that the Starliner OBC software grabbed the time from Atlas (per the first part of the requirement), but failed to do so in the "terminal count phase". Instead, Starliner grabbed the time from Atlas upon activation of the Starliner OBC, almost 12 hours before launch. (Mind you: almost 12 hours before launch is not "terminal count phase". Atlas V terminal count phase is usually polled for around L-30 minutes, with terminal count phase actually entered around L-4 minutes).
This is a poster-boy example of how many software errors come into existence. Translating software design into functional software (in other words: coding) is prone to producing software errors in itself.
But translating software requirements into software design (in other words: desigining the software) is an even bigger source of software errors. The latter is what happened. And that is a software design error. Nothing more, nothing less.
Starliner was supposed to grap the MET initial time less than 5 minutes before launch, but actually grabbed the MET initial time almost 12 hours before launch.
Now, that was bad in itself. But what was even worse is that the software quality team, managed to overlook this design error not once, but at least twice.A good software development process is equipped with activities to catch errors early. Once such activity is to review the software design. It is is intended to determine to what extent the software design correctly captures the required functionality. Basically: it checks if the software requirements are correctly translated into software design.
That review is when Boeing's software team first overlooked that the "grab during terminal count" requirement had not been translated correctly into the software design.
OK, then came coding, which resulted in functional software. Starliners software package is big, so it is tested first in separate functional blocks. Once those are found to be OK, the software is tested as an integrated whole. And if said software package deals with other systems withing a chain a systems, an integrated end-to-end test is usually performed as well.
It is this integrated end-to-end test where Boeing's software team managed to screw up its testing for a second time.
Instead of simulating the entire routine in one go - from waking up Boeing's OBC around 12 hours prior to launch, all the way to Starliner docking at the ISS (a full 3 day timeline) - Boeing chose to cut up the end-to-end test in temporal blocks. The first block (from activation of Starliner's OBC) until T-0/L-0) ended at the moment of launch.
And now comes the error: the next temporal block (from T-0/L-0) to 12 hours after launch, DID NOT USE the frozen state of variables from the first temporal block.
Had they done so, the second temporal block would have started with the MET timer already running over 11 hours ahead of schedule. The integrated end-to-end test would then have exposed that error.
But that is not how Boeing's software team chose to test that next block. At the start of that next temporal block,
they reset all variables to values that they EXPECTED to be the start values for that next block. So, that next temporal test block started with a MANUALLY set initial value for the MET timer.
Needless to say that THAT manually set value was a correct value. It was not 11 hours early. And that is how the integrated end-to-end testing managed to miss the software design error for a second time.