Characterizing observability and controllability of software components
Abstract data types and software validation