Lack of systems thinking
I appreciate the many helpful and informative comments in this thread. But one thing strikes me rather forcibly: a strong tendency to place the blame here or there - on the software, no on design decisions, etc.
Surely the underlying issue is a lack of whole systems thinking. It's never enough to design an automatic subsystem to correct apparent stalling risks, or to write correct software implementing such a subsystem.
It's necessary to consider the aircraft and its human crew - and possibly even its passengers - as a single system, whose subsystems can interact in complex and sometimes unexpected ways.
One salient example that has emerged from these comments is that, even if the avionics are virtually perfect in themselves, that very fact exerts strong influence on the pilots. They may become over-confident in the automatic systems, and unsure of their own manual flying skills. They may even forget, in the heat of a sudden emergency, how to do certain vital things.