A specification and design methodology based on data flow principles