{'fraction_non_alphanumeric': 0.019000703729767768, 'fraction_numerical': 0.0, 'mean_word_length': 5.613953488372093, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Ontology Support for Abstraction Layer Modularization

Abstraction layers have been widely used to increase the portability of a software system by hiding the implementation details of underlying resources (e.g., OS, hardware, and reusable libraries). Abstraction layers have also been adopted in Software Product Lines (SPLs), which assist in the creation of a family of products by reusing common core assets and managing variants in a family domain. An abstraction layer provides transparent and unified access to the APIs of underlying resources. Abstraction layer APIs are modularizd by generalizing the APIs of underlying resources based on semantic similarity across common resources. Thus, an abstraction layer inherently needs to handle the semantic variants of the underlying APIs. However, the lack of a systematic approach for evolving an abstraction layer in accordance with the evolution of underlying resources may restrict its usage. This paper describes an approach toward ontology-based feature modeling to build and maintain the abstraction layer in a modularized and systematic way. The combination of ontologies and feature modeling can assist in modularizing abstraction layers by identifying the semantic similarities in APIs and provide insight into the variability of the underlying resources. Keywords; Software Product Lines, Abstraction Layer, Ontology, Feature model, Model-Driven Engineering