Automatically Identifying Sufficient Object Builders from Module APIs
- 1. National University of Río Cuarto
- 2. Buenos Aires Institute of Technology
Description
Various approaches to software analysis (e.g. test input generation, software model checking) require engineers to (manually) identify a subset of a module's methods in order to drive the analysis. Given a module to be analyzed, engineers typically select a subset of its methods to be considered as object builders to define a so-called driver, that will be used to automatically build objects for analysis, e.g., combining them non-deterministically, randomly, etc. This requires a careful inspection of the module and its API, since both the relative exhaustiveness of the analysis (leaving important methods out may systematically avoid generating different objects), as well as its efficiency (the different bounded combinations of methods grows exponentially as the number of methods increases), are affected by the selection. We propose an approach for automatically selecting a set of builders from a module's API, based on an evolutionary algorithm that favors sets of methods whose combinations lead to producing larger sets of objects. The algorithm also takes into account other characteristics of these sets of methods, trying to prioritize the selection of methods with less and simpler parameters. As the implementation of this evolutionary mechanism requires in principle handling and comparing large sets of objects, and this grows very quickly both in terms of space and running times, we employ an abstraction of sets of objects, called field extensions, that involves using the field values of the objects in the set instead of the actual objects, and enables us to effectively implement our mechanism. An experimental assessment on a benchmark of stateful classes shows that our approach can automatically identify sets of builders that are sufficient (can be used to create any instance of the module) and minimal (do not contain superfluous methods), in a reasonable time.
Translated Descriptions
Translated Description (Arabic)
تتطلب الأساليب المختلفة لتحليل البرامج (مثل إنشاء مدخلات الاختبار، وفحص نموذج البرنامج) من المهندسين تحديد (يدويًا) مجموعة فرعية من أساليب الوحدة من أجل قيادة التحليل. بالنظر إلى الوحدة التي سيتم تحليلها، يختار المهندسون عادةً مجموعة فرعية من أساليبها ليتم اعتبارها بناة كائنات لتحديد ما يسمى بالسائق، والتي سيتم استخدامها لإنشاء كائنات تلقائيًا للتحليل، على سبيل المثال، الجمع بينها بشكل غير حتمي وعشوائي وما إلى ذلك. وهذا يتطلب فحصًا دقيقًا للوحدة النمطية وواجهة برمجة التطبيقات الخاصة بها، نظرًا لأن كلا من الشمولية النسبية للتحليل (ترك الطرق المهمة قد يتجنب بشكل منهجي توليد كائنات مختلفة)، بالإضافة إلى كفاءتها (تنمو المجموعات المختلفة المحدودة من الطرق بشكل كبير مع زيادة عدد الطرق)، تتأثر بالاختيار. نقترح نهجًا لاختيار مجموعة من البنائين تلقائيًا من واجهة برمجة التطبيقات للوحدة، استنادًا إلى خوارزمية تطورية تفضل مجموعات من الأساليب التي تؤدي مجموعاتها إلى إنتاج مجموعات أكبر من الكائنات. كما تأخذ الخوارزمية في الاعتبار الخصائص الأخرى لهذه المجموعات من الأساليب، في محاولة لتحديد أولويات اختيار الأساليب ذات المعلمات الأقل والأبسط. نظرًا لأن تنفيذ هذه الآلية التطورية يتطلب من حيث المبدأ التعامل مع مجموعات كبيرة من الأشياء ومقارنتها، وهذا ينمو بسرعة كبيرة من حيث المساحة وأوقات التشغيل، فإننا نستخدم تجريدًا لمجموعات من الأشياء، تسمى امتدادات المجال، والتي تتضمن استخدام قيم المجال للكائنات في المجموعة بدلاً من الكائنات الفعلية، وتمكننا من تنفيذ آليتنا بفعالية. يُظهر التقييم التجريبي لمعيار الفئات ذات الحالة أن نهجنا يمكن أن يحدد تلقائيًا مجموعات البنائين الكافية (يمكن استخدامها لإنشاء أي مثيل للوحدة) والحد الأدنى (لا تحتوي على طرق زائدة عن الحاجة)، في وقت معقول.Translated Description (French)
Diverses approches de l'analyse logicielle (par exemple, la génération d'entrées de test, la vérification du modèle logiciel) nécessitent que les ingénieurs identifient (manuellement) un sous-ensemble des méthodes d'un module afin de piloter l'analyse. Étant donné un module à analyser, les ingénieurs sélectionnent généralement un sous-ensemble de ses méthodes à considérer comme des constructeurs d'objets pour définir un soi-disant pilote, qui sera utilisé pour construire automatiquement des objets à analyser, par exemple, en les combinant de manière non déterministe, aléatoire, etc. Cela nécessite une inspection minutieuse du module et de son API, car tant l'exhaustivité relative de l'analyse (omettre des méthodes importantes peut systématiquement éviter de générer des objets différents), que son efficacité (les différentes combinaisons bornées de méthodes croissent de manière exponentielle à mesure que le nombre de méthodes augmente), sont affectées par la sélection. Nous proposons une approche de sélection automatique d'un ensemble de constructeurs à partir de l'API d'un module, basée sur un algorithme évolutif qui privilégie des ensembles de méthodes dont les combinaisons conduisent à produire des ensembles d'objets plus importants. L'algorithme prend également en compte d'autres caractéristiques de ces ensembles de méthodes, en essayant de prioriser la sélection de méthodes avec des paramètres moins nombreux et plus simples. Comme la mise en œuvre de ce mécanisme évolutif nécessite en principe la manipulation et la comparaison de grands ensembles d'objets, et que cela croît très rapidement à la fois en termes d'espace et de temps de fonctionnement, nous utilisons une abstraction d'ensembles d'objets, appelés extensions de champ, qui consiste à utiliser les valeurs de champ des objets de l'ensemble à la place des objets réels, et nous permet de mettre en œuvre efficacement notre mécanisme. Une évaluation expérimentale sur un benchmark de classes stateful montre que notre approche permet d'identifier automatiquement des ensembles de constructeurs suffisants (pouvant être utilisés pour créer n'importe quelle instance du module) et minimaux (ne contenant pas de méthodes superflues), dans un délai raisonnable.Translated Description (Spanish)
Varios enfoques para el análisis de software (por ejemplo, generación de entradas de prueba, verificación de modelos de software) requieren que los ingenieros identifiquen (manualmente) un subconjunto de los métodos de un módulo para impulsar el análisis. Dado un módulo a analizar, los ingenieros suelen seleccionar un subconjunto de sus métodos para ser considerados como constructores de objetos para definir un llamado controlador, que se utilizará para construir automáticamente objetos para el análisis, por ejemplo, combinándolos de forma no determinista, aleatoria, etc. Esto requiere una cuidadosa inspección del módulo y su API, ya que tanto la exhaustividad relativa del análisis (dejar de lado métodos importantes puede evitar sistemáticamente generar diferentes objetos), como su eficiencia (las diferentes combinaciones acotadas de métodos crecen exponencialmente a medida que aumenta el número de métodos), se ven afectadas por la selección. Proponemos un enfoque para seleccionar automáticamente un conjunto de constructores de la API de un módulo, basado en un algoritmo evolutivo que favorece conjuntos de métodos cuyas combinaciones conducen a producir conjuntos más grandes de objetos. El algoritmo también tiene en cuenta otras características de estos conjuntos de métodos, tratando de priorizar la selección de métodos con parámetros menos y más simples. Como la implementación de este mecanismo evolutivo requiere en principio manejar y comparar grandes conjuntos de objetos, y esto crece muy rápidamente tanto en términos de espacio como de tiempos de ejecución, empleamos una abstracción de conjuntos de objetos, llamada extensiones de campo, que implica usar los valores de campo de los objetos en el conjunto en lugar de los objetos reales, y nos permite implementar efectivamente nuestro mecanismo. Una evaluación experimental en un punto de referencia de clases con estado muestra que nuestro enfoque puede identificar automáticamente conjuntos de constructores que son suficientes (se pueden usar para crear cualquier instancia del módulo) y mínimos (no contienen métodos superfluos), en un tiempo razonable.Files
10.1007%2F978-3-030-16722-6_25.pdf.pdf
Files
(582.3 kB)
| Name | Size | Download all |
|---|---|---|
|
md5:8acebd77a3f7ca74c90d8ac4a2b8b418
|
582.3 kB | Preview Download |
Additional details
Additional titles
- Translated title (Arabic)
- تحديد بناة الكائنات الكافية تلقائيًا من واجهات برمجة التطبيقات للوحدة
- Translated title (French)
- Identification automatique d'un nombre suffisant de constructeurs d'objets à partir des API de module
- Translated title (Spanish)
- Identificación automática de suficientes constructores de objetos a partir de las API del módulo
Identifiers
- Other
- https://openalex.org/W2929932301
- DOI
- 10.1007/978-3-030-16722-6_25
References
- https://openalex.org/W1495557642
- https://openalex.org/W1500987966
- https://openalex.org/W1720848645
- https://openalex.org/W1965194038
- https://openalex.org/W1968783153
- https://openalex.org/W1971137495
- https://openalex.org/W1971650562
- https://openalex.org/W1988537734
- https://openalex.org/W1992012690
- https://openalex.org/W2012997183
- https://openalex.org/W2047694629
- https://openalex.org/W2052602498
- https://openalex.org/W2110311336
- https://openalex.org/W2118155805
- https://openalex.org/W2126144212
- https://openalex.org/W2129538349
- https://openalex.org/W2135584970
- https://openalex.org/W2145373440
- https://openalex.org/W2157083801
- https://openalex.org/W2159292690
- https://openalex.org/W2162120832
- https://openalex.org/W2211800868
- https://openalex.org/W2546666763
- https://openalex.org/W2623293810
- https://openalex.org/W2794901250
- https://openalex.org/W2808810640
- https://openalex.org/W2810024285
- https://openalex.org/W3023540311
- https://openalex.org/W4242126179
- https://openalex.org/W4249302518
- https://openalex.org/W4301173492