The design and evaluation of appropriate SoftwareArchitectures is key to the effective development, management, evolution, and reuse of software systems. However, current software engineering practice has generally led to architectural designs that are informal, ad hoc, and difficult to analyse and maintain. One consequence is that most existing systems have little or no documented architectural information, and the information that does exist is often an inaccurate representation of the implemented architecture. All too often, architectural information about an unfamiliar system needs to be extracted directly from the implemented software artifacts. This is a very demanding process commonly referred to as ArchitectureExtraction. Although architecture recovery can be significantly facilitated with the help of current ReverseEngineering techniques and tools, many issues remain to be properly addressed, particularly regarding recovery of the runtime abstractions (client, servers, communication protocols, etc.) that are typical to the design of distributed systems. X-ray is a static reverse engineering approach to aid programmers in recovering the runtime architecture of existing distributed systems. X-ray comprises three domain-based static analysis techniques developed to facilitate the identification of implemented executable components and their potential runtime interconnections. The first technique---component module classification---is used to identify which compilation modules of the source constitute the code for each implemented executable component. The second technique---syntactic pattern matching---is used to help in the identification of code constructs that might implement potential runtime interaction features. The third and last technique---structural reachability analysis---is used to facilitate association of features identified via the syntactic pattern matching technique, to individual components. These three techniques are supported by a proof-of-concept recovery prototype that integrates several new and ``off-the-shelf'' tools. To highlight the benefits of X-ray, the dissertation presents a detailed account of two successful applications of the prototype to help recover a static approximation of the runtime architecture of publicly available distributed systems, including a 160,000 line distributed programming environment. Nabor das Chagas Mendonça http://www.doc.ic.ac.uk/~ndcm/ N. C. Mendonça and J. Kramer. An approach for recovering distributed system architectures. _[[Automated Software Engineering]]_ 8(3/4):311-354, 2001.