CSP distributed programming model offers formal bases that allow the development of high quality and secure distributed software for multicomputers. However, the model imposes restrictions that make it complicated t o reuse software components developed with languages that-follow the model. This problem i s mainly due t o each component in the application interacting with each other according t o a static communication channel structure. This fact complicates the reuse of a component in a different context f r o m the original.In this work, a methodology for designing distributed software i s presented. This methodology allows t o build distributed applications in a structured m a n n e r by layering instances of highly parameterized components. Also, a notation t o describe such components supporting the presented methodology i s proposed. This methodology, together with the aforementioned notation, can be easily implemented in any programming language that follows the CSP model.