Algebra of Communicating Processes