The software did what it was supposed to, the issue was the specification necessitated by the design change.
See e.g. https://edition.cnn.com/2019/03/22/politics/boeing-737-manua...
They did know at least two years before the first crash and decided to not do anything about it.
https://www.reuters.com/article/us-ethiopia-airplane-regulat...
I'm pretty sure that it's a reasonable assumption that an implies requirement of any type of aircraft control software is "don't fly the aircraft into the ground"