The top comment in this thread seems to imply that "NASA" approach is inherently better, especially for safety-critical applications. My view is that from the point of view of safety, the approach doesn't really matter and what matters is the results, i.e. reliability. At the same time from the point of view of development velocity iterative approach is clearly better.
In case of the sunk submarine, it seems that the company followed iterative, "SpaceX" approach, but they didn't actually iterate enough to make their sub seaworthy.