|
|
|
|
|
by wvenable
3214 days ago
|
|
Specifications and design documents are merely estimations. If you've made every single decision possible, you've written the software. If you have blueprints for a bridge and get two different companies to build it, you'll get the same bridge both times. The differences, if any, would be minor. If you give specifications and design documents to two software teams you could get radically different products that look nothing alike and it's entirely possible that neither one of them will satisfy the clients needs. |
|
Give them a specification in prose and they will have a little too much wiggle room. Such specifications are useful to a degree but I look at them like sketches on a napkin.
If you use a more formal method of mathematics as your specification then you can be more precise about the invariants that matter and model your system more faithfully. And with a good proof assistant or model checker the computer can even help you catch flaws in your design that you would never have been able to think of on your own.
It's true that the source code is a proof of something. It often helps to know whether you've built the right thing. And that it does what you think it does.