The applicability of formal specification to maintenance of large-scale software