Facoltà di scienze informatiche

Reverse engineering software ecosystems

Lungu, Mircea F. ; Lanza, Michele (Dir.)

Thèse de doctorat : Università della Svizzera italiana, 2009 ; 2009INFO006.

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 pro- posed 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... Plus

Ajouter à la liste personnelle
    Summary
    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 pro- posed 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 con- text 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 organiza- tion. In this thesis we propose ecosystem reverse engineering as a technique for ecosystem under- standing. We then introduce Revenge, a methodology for reverse engineering entire software ecosystems, we present in detail multiple steps of the process, we provide tools that support the methodology, and we validate both the methodology and tools on multiple case studies.Revenge is based on analyzing the super-repository associated with an ecosystem and gen- erating 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 allows zooming in on a single project in the ecosystem, and provides a bridge between ecosystem level analysis and single-system analysis, in our case, architecture recovery. The Revenge methodology includes architecture recovery as a sub- process whose goal is to generate architectural views of the individual systems when this is necessary for ecosystem understanding. Since generating architectural views can not 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 of 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. Once an architectural view of a system is obtained, it can be enriched with information that regards the interaction of the system with the entire ecosystem. 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.