|
|
|
|
|
by bassp
518 days ago
|
|
It’s not all or nothing! I work on a very “product-y” back end that isn’t fully specified, but I have formally specified parts of it. For instance, I property-based-tested a particularly nasty state machine I wrote to ensure that, no matter what kind of crazy input I called an endpoint with, the underlying state machine never made any invalid transitions. None of the code around the state machine has a formal spec, but because the state machine does, I was able to specify it. In the process, I found some very subtle bugs I’d have never caught via traditional unit testing. |
|
State machines are quite common, in aerospace software, where the requirements even specify the states and transitions. If you can formally verify them, I believe, you absolutely should, as often there can be a lot of subtlety going on there, especially if you have a distributed system of state machines sending messages to one another.