Changes in an organization's internal and external environment impose numerous demands on management information systems (MIS). Since few MIS can be designed to fully anticipate all change, system portfolios frequently tend to become heavily weighted with older systems needing maintenance and revision. To maintain cost effectiveness, encourage system reuse, and ensure that the new system's behavior will differ from that of the old one only as intended, the former's functional design must be recovered (preferably from the old program code itself) when undertaking such maintenance and revision. We studied of how experts perform this design recovery activity by analyzing the cognitive processes of six experienced system developers engaged in the program comprehension phase of software reengineering. Results of protocol analysis indicate that subjects distributed their cognitive processes in a systematic and generally comparable fashion. Over the sample, similar transitions between two activities and patterns of three activities were observed to occur with high frequency. The most frequently occurring program comprehension transitions and patterns generally occurred within, rather than across, two activity groups: recognition and design documentation. We conclude with suggestions for further research on program comprehension and the design of computerized tools to support the software reengineering process.