A review of twenty formal specification notations