3 ms·
The idea is quite old -- See for instance https://en.wikipedia.org/wiki/Formal_methods https://en.wikipedia.org/wiki/Formal_methods For an example see https://
by bakul 3y ago
The idea is quite old -- See for instance https://en.wikipedia.org/wiki/Formal_methods https://en.wikipedia.org/wiki/Formal_methods
For an example see https://en.wikipedia.org/wiki/Vienna_Development_Method#Bank_system_example https://en.wikipedia.org/wiki/Vienna_Development_Method#Bank...
The idea is to model the key aspects as mathematically rigorously as possible while ignoring lower level details. But even if you are not as rigorous, the process of creating such a model can help clarify things. As an example, if you are developing a file system you can abstractly define operations on it (read, write, create file, dir, etc.) and one can come up with a huge number of implementations satisfying this but as you add other requirements or constraints, quite a few choices are no longer meaningful. For example you want to implement a FS that takes advantage of NVMe SSDs, they put certain constraints. So then you need a model for an SSD (erase blocks are multiples of data blocks, write must be preceded by erase, etc. etc.). The idea is to model all this using a few abstract data types and state. You need not strive to programmatically derive an implementation from such a spec for it to be useful.