What I fail to understand how the same industry which is against "Waterfall"[1]/BDUF[2] is pushing formal methods?<p>There are so many low-hanging fruits to try before using heavyweight formal methods, which will give you a much better ROI:<p><pre><code> Informal methods:
- thinking before coding
- writing stuff down
- using pen and paper
- HDD - Hammock-Driven Development
- taking a walk, taking a shower
- talking to yourself, talking to people, talking to computer, talking to rubber duck[3]
- design reviews
Lightweight formal methods:
- Decision Tables
- Business Rules
- FSM and StateCharts
- PBT (Property-based Testing)
- DbC (Design-by-Contract)
- Functional Programming with Algebraic Type Systems
- purpose-built problem-specific DSLs
- ABM (Agent-based modeling) and simulations
</code></pre>
--<p>EDIT: Specifically for "Crypto" projects, modeling, simulations, and even Reinforcement Learning probably a better fit than formal specification tools like TLA+/Alloy.<p>It's a huge work to formally specify even a small "smart contract"[4].<p>I don't think that formal specification can model implicit state like the one present in EVM, DApps/JS, and off-chain / out-of-band entities like crypto "Exchanges"[5].<p>Instead of trying to formally specify a "smart contract" written in Turing-complete Solidity and compiled to Forth-like EVM opcodes, it's probably better to write contracts in purpose-built non-Turing-complete financial DSLs with the 1st-class citizen concepts of money, user accounts and transactions.<p>--<p>[1] So called "Waterfall", most people are calling any SDLC with an upfront design phases - "Waterfall", like for example Rational Unified Process (RUP) - which is iterative with overlapping phases.<p>[2] Big Design Up Front<p>[3] RDD - Rubber-duck Debugging<p>[4] which is actually an Agent with a wallet, not a contract in legal or even SW development sense<p>[5] better called unlicensed Broker-Dealers