When designing a distributed system, creating and maintaining design documents with diagrams is time-consuming. FizzBee, our formal methods system, simplifies this process by generating a variety of essential diagrams from a concise, Python-like specification.<p>FizzBee automatically checks your design for correctness and generates:<p>- <i>Communication/Block Diagrams</i>: Visualize the components and their interactions.<p>- <i>State Diagrams</i>: Show all possible system states and transitions.<p>- <i>Sequence Diagrams</i>: Explore how the system works interactively.<p>- <i>System Trace Diagrams</i>: Visualize detailed algorithm traces.<p>All this with less than 100 lines of code.<p>Here’s a snippet of how simple it is to model a two-phase commit:<p>```<p><pre><code> action Write:
if self.state != "init":
return
self.state = "working"
for rm in self.PARTICIPANTS:
vote = rm.Prepare()
if vote == 'aborted':
self.Abort()
return
self.prepared.add(rm.ID)
self.Commit()
</code></pre>
```<p>Try it out and see more examples at <a href="https://fizzbee.io/tutorials/visualizations/" rel="nofollow">https://fizzbee.io/tutorials/visualizations/</a>.<p>Appreciate your feedback.