TY - GEN
T1 - Using static analysis to support variability implementation decisions in C++
AU - Masri, Samer A.L.
AU - Nadi, Sarah
AU - Gaudet, Matthew
AU - Liang, Xiaoli
AU - Young, Robert W.
N1 - Publisher Copyright:
© 2018 Association for Computing Machinery.
PY - 2018/8/20
Y1 - 2018/8/20
N2 - Eclipse OMR is an open-source C++ framework for building robust language runtimes. The OMR toolkit includes a dynamic Just-In-Time (JIT) compiler, a garbage collector, a platform abstraction library, and a set of developer tooling capabilities. To support the diverse languages and architectures targeted by the framework, OMR's variability implementation uses a combination of buildsystem variability and static polymorphism. That is, all implementation classes that depend on the selected language and architecture are decided at compile time. However, OMR developers now realize that the current variability design decision, specifically the static polymorphism implementation, has its drawbacks. They are considering using dynamic polymorphism instead of static polymorphism. Before making such a fundamental design change, however, it is crucial to collect function information and overload/override statistics about the current variability in the code base. In this paper, we present OMRStatistics, a static analysis tool that we built for OMR developers to help them collect this information. Specifically, OMRStatistics (1) visualizes the class hierarchy from OMR's current static polymorphic implementation, (2) visualizes the function overloads and overrides with their respective locations in the source code, (3) collects important information about the classes and functions, and (4) stores all the collected information in a database for further analysis. Our tool OMRStatistics allows OMR developers to make better design decisions on which variability extension points should be switched from static polymorphism to dynamic polymorphism.
AB - Eclipse OMR is an open-source C++ framework for building robust language runtimes. The OMR toolkit includes a dynamic Just-In-Time (JIT) compiler, a garbage collector, a platform abstraction library, and a set of developer tooling capabilities. To support the diverse languages and architectures targeted by the framework, OMR's variability implementation uses a combination of buildsystem variability and static polymorphism. That is, all implementation classes that depend on the selected language and architecture are decided at compile time. However, OMR developers now realize that the current variability design decision, specifically the static polymorphism implementation, has its drawbacks. They are considering using dynamic polymorphism instead of static polymorphism. Before making such a fundamental design change, however, it is crucial to collect function information and overload/override statistics about the current variability in the code base. In this paper, we present OMRStatistics, a static analysis tool that we built for OMR developers to help them collect this information. Specifically, OMRStatistics (1) visualizes the class hierarchy from OMR's current static polymorphic implementation, (2) visualizes the function overloads and overrides with their respective locations in the source code, (3) collects important information about the classes and functions, and (4) stores all the collected information in a database for further analysis. Our tool OMRStatistics allows OMR developers to make better design decisions on which variability extension points should be switched from static polymorphism to dynamic polymorphism.
KW - Build path variability
KW - C++
KW - Clang plugin
KW - Dynamic polymorphism
KW - Software variability analysis
KW - Static analysis
KW - Static polymorphism
UR - http://www.scopus.com/inward/record.url?scp=85055470453&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85055470453&partnerID=8YFLogxK
U2 - 10.1145/3233027.3233043
DO - 10.1145/3233027.3233043
M3 - Conference contribution
AN - SCOPUS:85055470453
T3 - ACM International Conference Proceeding Series
SP - 236
EP - 245
BT - PDC 2018
A2 - Light, Ann
A2 - Lee, Yanki
A2 - Lee, Yanki
A2 - Garde, Julia
A2 - Botterweck, Goetz
A2 - Nadi, Sarah
A2 - Kanstrup, Anne Marie
A2 - Borba, Paulo
A2 - Vines, John
A2 - Berger, Thorsten
A2 - Mannisto, Tomi
A2 - Teli, Maurizio
A2 - Brandt, Eva
A2 - Bodker, Keld
A2 - Benavides, David
PB - Association for Computing Machinery
T2 - 22nd International Systems and Software Product Line Conference, SPLC 2018
Y2 - 10 September 2018 through 14 September 2018
ER -