4 ms·
I call bullshit on you too. Software is impossible to get correct for the vast majority of cases because there is no specification, nobody even knows or agrees
by jgeada 7y ago
I call bullshit on you too. Software is impossible to get correct for the vast majority of cases because there is no specification, nobody even knows or agrees what the specification should be or whether there is even such a thing in the first place. Writing the software is as close as we're ever going to discover a fuzzy description of what the system should be, and the vast majority of the times people change their minds about what they really wanted once they get their hands of that iteration of the implementation. Repeat ad nauseum.
The notion that most(*) any non-trivial program can be formally specified is a myth that largely exists in educational institutions or research institutions disconnected from the realities of production software engineering, and has no basis in real life. Yes, there are a handful of exceptions for extremely constrained control problems in avionics, and even those turn out to have errors in the specification.
- mtrycz2 7y agoGiven all of the comments on here, I think I might have not stated the central point clearly enough. It isn't about getting things 100% correct 100% of the time. No engineering does that. What we like to call "software engineering" isn't actually engineering, and more like a craft than anything. Actual engineering in software is possible. I take issue with calling our field software engineering. It's a buzzword.
- al_ak 7y agoYet formal correctness is about "getting things 100% correct 100% of the time" to the greatest extent possible (you can mathematically prove the "correctness" of a program using formal methods, but it still has to run on actual hardware and you're assuming there are no bugs in your tooling).