Design of software based on formal, precise and verifiable interface specifications for software components