In the architecture and design stages, mathematical (or formal) methods and
notations are used to precisely define the behavior of the software, consistent
with its requirements, and to model its properties and attributes.
One obvious drawback to formal notation is that, being mathematically