Reverse Engineering Software Ecosystems
Staff - Faculty of Informatics
On Monday October 12th, 2009 at 17h30 in the Red Building (room A21), Mr. Mircea LUNGU will defend his Ph.D. dissertation titled:
“Reverse Engineering Software Ecosystems”
The dissertation committee is composed of:
- Prof. Michele Lanza, Università della Svizzera Italiana, Switzerland (advisor)
- Prof. Mehdi Jazayeri, Università della Svizzera Italiana, Switzerland (internal member)
- Prof. Matthias Hauswirth, Università della Svizzera Italiana, Switzerland (internal member)
- Prof. Radu Marinescu, “Politehnica” University of Timisoara, Romania (external member)
- Dr. Wim De Pauw, IBM T. J. Watson Research Center, United States (external member)
- Prof. Margaret-Anne Storey, University of Victoria, Canada (external member)
Reverse engineering is an active area of research concerned with the development of techniques and tools that support the understanding of software systems. All the techniques that were proposed until now study individual systems in isolation. However, software systems are seldom developed in isolation; instead, they are developed together with other projects in the wider context of an organization. We call the collection of projects that are developed in such a context a software ecosystem. Understanding the code base, the inter-project relationships and the emergent social structure of an ecosystem is critical for the efficient functioning of the organization.
In this thesis we propose ecosystem reverse engineering as a technique for ecosystem understanding. We introduce a methodology for reverse engineering software ecosystems, we provide tools that support the methodology, and we validate the methodology and tools on multiple case studies.
Our methodology is based on analyzing the super-repository associated with an ecosystem and generating ecosystem viewpoints, visual representations that capture complementary aspects of the ecosystem.
The viewpoints can be either holistic and present the entire ecosystem as a whole, or focused and present a single component of the ecosystem in the broader context. The viewpoints are interactive and a user can navigate between them during the analysis process. One essential type of exploration is vertical navigation, which provides a bridge between of ecosystem level analysis and single-system analysis, in our case, architecture recovery.
Since architecture recovery cannot be performed in a fully automated manner, we introduce two techniques that increase the degree of automation of the process. First we annotate possible exploration paths based on the classification modules in a set of structural patterns. Second we automate the filtering of dependencies in the architectural views based on the classification of the inter-module dependencies in a set of evolution patterns.
To validate our contributions we applied our tools and techniques on a set of ecosystem case studies that belong to one industrial software house, two academic research groups, and one open-source community. At the architectural level, we validated our techniques on several well- known open source software systems.