  Understanding the architecture is vital for effectively maintaining and
managing large software systems. However, as software systems evolve over time,
their architectures inevitably change. To keep up with the change, architects
need to track the implementation-level changes and update the architectural
documentation accordingly, which is time-consuming and error-prone. Therefore,
many automatic architecture recovery techniques have been proposed to ease this
process. Despite efforts have been made to improve the accuracy of architecture
recovery, existing solutions still suffer from two limitations. First, most of
them only use one or two type of information for the recovery, ignoring the
potential usefulness of other sources. Second, they tend to use the information
in a coarse-grained manner, overlooking important details within it. To address
these limitations, we propose SARIF, a fully automated architecture recovery
technique, which incorporates three types of comprehensive information,
including dependencies, code text and folder structure. SARIF can recover
architecture more accurately by thoroughly analyzing the details of each type
of information and adaptively fusing them based on their relevance and quality.
To evaluate SARIF, we collected six projects with published ground-truth
architectures and three open-source projects labeled by our industrial
collaborators. We compared SARIF with nine state-of-the-art techniques using
three commonly-used architecture similarity metrics and two new metrics. The
experimental results show that SARIF is 36.1% more accurate than the best of
the previous techniques on average. By providing comprehensive architecture,
SARIF can help users understand systems effectively and reduce the manual
effort of obtaining ground-truth architectures.
