Various approaches have been proposed to the problem of assembling X-machines (also known as Eilenberg X-machines) into a communication system. In this report, these approaches are presented and unified within the stand-alone X-machine notation. The models are analysed highlighting those aspects that seem to be more relevant for specifying distributed (testable) systems. From the testing perspective, it has been proved that the Holcombe-Ipate testing approach (SMXT), developed originally for stream X-machines, can be applied to some of these communicating systems. For one of the approaches, the CXM-system, the formalism needs to be modified if the testing method will be used and these modifications are discussed. Another of these models, the CSXMS, is surveyed and all its variations are studied in order to provide the necessary conditions for testing it. A different model, the CSXMS-c, that allows a synchronous mechanism for message-passing, is also analysed. The results of this show the correct implementation of the construct and the passing of messages. A methodology for building communicating X-machines from stand-alone X-machines is also included in this report. This methodology, the MSS, is approached here by means of a modified version of the multiple-stream X machines (M-SXM). These systems, the CM-SXMS, are defined in terms of a graph, where the vertices model the components, and the edges correspond to streams that are shared between them. It seems that the CSXMS-c, CSXMS and CM-SXMS can respectively model the distributed computing models of synchronous, semi-synchronous and asynchronous message-passing. Therefore, if the SXMT can be extended and applied to all of the communicating X-machine systems, then it could be possible to test distributed algorithms with different message-passing structures, but this will require future work Keywords: X-machines, communicating X-machines, communicating stream X-machines systems (CSXMS), CSXMS testing-variant, simple CSXMS, CSXMS with channels, modular specification of systems using communicating X-machines, communicating multiple-stream X-machines systems, formal specification, distributed systems, testing.