  Software architecture refers to the high-level abstraction of a system
including the configuration of the involved elements and the interactions and
relationships that exist between them. Source codes can be easily built by
referring to the software architectures. However, the reverse process i.e.
derivation of the software architecture from the source code is a challenging
task. Further, such an architecture consists of multiple layers, and
distributing the existing elements into these layers should be done accurately
and efficiently. In this paper, a novel approach is presented for the recovery
of layered architectures from Java-based software systems using the concept of
ego networks. Ego networks have traditionally been used for social network
analysis, but in this paper, they are modified in a particular way and tuned to
suit the mentioned task. Specifically, a dependency network is extracted from
the source code to create an ego network. The ego network is processed to
create and optimize ego layers in a particular structure. These ego layers when
integrated and optimized together give the final layered architecture. The
proposed approach is evaluated in two ways: on static versions of three
open-source software, and a continuously evolving software system. The
distribution of nodes amongst the proposed layers and the committed violations
are observed on both class level and package level. The proposed method is seen
to outperform the existing standard approaches over multiple performance
metrics. We also carry out the analysis of variation in the results concerning
the change in the node selection strategy and the frequency. The empirical
observations show promising signs for recovering software architecture layers
from source codes using this technique and also extending it further to other
languages and software.
