Actually, nothing works well!
Can I quote you on that?
Maybe you AI world is in constant motion (why?) but there are many well-defined domains that are less sensitive to the chaos you seem to be describing.
And these days there is OpenCl and so on.
It's not just AI, it's almost everything except very siloed, stand-alone applications.
I've got a stack of old computers in the basement. Every one of them is still 100% usable but none of them are useful because so much has changed.
I don't see how OpenCL addresses the challenge of step #1 when designing a new piece of software. Maybe it helps during step 3
The chaos issue is only one half of the problem. Even if every chip, OS, and language were frozen in perpetuity, the four step method still would not work well.
The problem remains that often times you can't do step 1 until you've done some step 3 -- the customer needs to see the software before they can really state what their needs are. That's especially true for commercial software in which the features are cost sensitive.
Does software engineering have accurate
tools for predicting the cost and time to develop a piece of software? For hardware, there's a lot of decent cost estimation tools. But if I say I want a customer service application, how much effort does it take to predict whether the project will take exactly 4 FTE weeks versus 5 FTE weeks (which is a 20% overrun)?