Many modern software systems are often large, distributed, written in more than one programming language, and developed using pre-built components. This paper presents the results of the first phase of a project to develop an environment that supports the comprehension of distributed systems. The environment has a layered architecture consisting of three subsystems: data gathering, data repository, and modeling/visualization. The first phase of the project focuses on the design and implementation of the data gathering and data repository subsystems. The key requirements of the environment are to support: (a) static and dynamic analysis, (b) multiple languages, (c) distributed systems, and (d) component-based models. 1 Motivation Modern software systems are often large, distributed, written in more than one programming language, and developed using distributed component-based frameworks such as CORBA/CCM [27, 28], EJB [36], and DCOM/COM+ [23]. The comprehension of distributed systems...