Mémoire de maîtrise (2024)
|
|
Accès restreint: Personnel autorisé jusqu'au 5 mars 2026 Conditions d'utilisation: Tous droits réservés Demander document |
Résumé
Model-Driven Engineering (MDE) simplifie les systèmes complexes en utilisant des abstractions de haut niveau, représentant formellement les applications du domaine à travers des modèles conceptuels tels que les diagrammes de classes Unified Modeling Language (UML). Bien que ces modèles rationalisent le processus de conception architecturale, ils ne parviennent souvent pas à capturer toutes les spécifications et contraintes logicielles nécessaires, nécessitant une langue plus précise et contraignante. Object Constraint Language (OCL) comble cette lacune en fournissant une méthode formelle pour exprimer des règles explicites et assurer l’intégrité des modèles de domaine UML. Cependant, l’expression manuelle des spécifications en langage naturel en contraintes OCL est difficile, surtout pour les concepteurs de logiciels novices, en raison de la complexité et de la syntaxe et des sémantiques inconnues de l’OCL. La rédaction de contraintes OCL peut être chronophage et exige une expertise, surtout pour les modèles de domaine volumineux et complexes, ce qui freine l’adoption pratique de l’OCL dans notre communauté de modélisation. Les techniques traditionnelles de transformation basées sur des règles ont montré une direction prometteuse pour automatiser la génération d’OCL à partir des spécifications en langage naturel. Cependant, la définition des règles de transformation nécessite une expertise technique approfondie pour extraire et mapper les éléments UML à partir des spécifications et construire la contrainte OCL. Cet effort manuel rend difficile l’adaptation et la mise à l’échelle de telles techniques en fonction des changements dans les spécifications logicielles. Avec l’avènement des Large Language Models (LLMs), les solutions basées sur des réseaux neuronaux offrent désormais une direction prometteuse pour traiter les requêtes en langage naturel afin de comprendre et de traduire automatiquement les spécifications en contraintes OCL. Les systèmes habilités par les LLMs, tels que GitHub Copilot et ChatGPT, ont été entraînés sur de vastes quantités de code, leur permettant de faciliter diverses tâches de développement logiciel. En tirant parti des capacités émergentes des LLMs, nous pouvons exploiter leur potentiel en concevant soigneusement des techniques de prompt engineering. Cette thèse explore le potentiel du prompt engineering pour faciliter le développement d’OCL en utilisant des LLMs de pointe en concevant des prompts précis et riches en contexte pour générer des contraintes OCL naturelles, syntaxiquement valides et sémantiquement correctes. Par conséquent, nous proposons deux techniques de prompt innovantes, UML-Augmentation et PathOCL, qui contextualisent les informations nécessaires des modèles de domaine UML pour que les LLMs expriment des contraintes OCL valides et correctes. La technique de prompt UML-Augmentation est née de la nécessité d’incorporer le modèle de domaine UML comme contexte pour que le LLM exprime précisément les contraintes OCL. Les expériences utilisant Codex ont révélé que la fourniture de contexte pertinent a entraîné une augmentation d’environ 5 fois et 4 fois des scores de validité et de correction, respectivement, par rapport aux prompts sans contexte. En exploitant le successeur LLM, GPT-4, nous avons observé des scores de validité similaires mais une légère augmentation de la correction, soulignant des améliorations potentielles des capacités de raisonnement. La technique de prompt PathOCL, inspirée de l’approche de résolution de problèmes des concepteurs de logiciels expérimentés, réduit la taille du contexte en se concentrant sélectivement sur des sous-ensembles pertinents de classes UML. PathOCL a démontré des améliorations significatives des scores de validité et des scores de correction comparables à UMLAugmentation. PathOCL a également réduit la taille du contexte des prompts de près de moitié lors de la mise à l’échelle des modèles de classes UML. Cependant, pour obtenir des scores optimaux, il a fallu tester les prompts avec différentes classes UML, mettant en évidence un compromis entre la réduction du contexte et l’efficacité globale de la technique PathOCL. Des enquêtes supplémentaires ont révélé quatre erreurs de syntaxe courantes rencontrées par les LLMs lors de la génération. L’erreur la plus fréquente concernait la référence à des éléments UML qui étaient soit non définis, soit non conformes à leurs définitions dans le contexte de la classe. Les autres erreurs comprenaient des contraintes qui ne respectaient pas la grammaire OCL, provoquant des erreurs d’analyse, ainsi que des contraintes qui n’étaient pas alignées avec le modèle de classe UML en raison de l’utilisation incorrecte d’itérateurs et de désaccords entre les paramètres de fonction. De plus, nous avons évalué la ressemblance du style d’écriture des LLMs avec celui des concepteurs de logiciels. Les résultats suggèrent que le LLM Codex présente une remarquable similarité de style, avec une amélioration observée lors de la fourniture d’exemples few-shot. Enfin, nous avons comparé les coûts d’inférence et la scalabilité des prompts associés à l’utilisation des techniques UML-Augmentation et PathOCL. Les résultats indiquent que la technique PathOCL est rentable pour un seul prompt, car elle réduit la taille du contexte de près de moitié lors de la mise à l’échelle du modèle de classe UML. Dans cette thèse, nous avons mené une série d’expériences empiriques abordant une gamme de questions de recherche. Ces expériences ont conduit à des conclusions clés soulignant le potentiel d’une optimisation supplémentaire des techniques de prompt et des LLMs spécialisés pour rationaliser le développement d’OCL. Les deux techniques de prompt proposées représentent une avancée significative vers la facilitation des LLMs pour une génération efficace d’OCL.
Abstract
Model-Driven Engineering (MDE) simplifies complex systems by using high-level abstractions, formally representing domain applications through conceptual models like Unified Modeling Language (UML) class diagrams. While these models streamline the architectural design process, they often fail to capture all necessary software specifications and constraints, requiring a more precise and constraining language. Object Constraint Language (OCL) addresses this gap by providing a formal method to express explicit rules and ensure the integrity of UML domain models. However, the manual expression of natural language specifications into OCL constraints is challenging, especially for novice software designers, due to the complexity and unfamiliar syntax and semantics of OCL. Writing OCL constraints can be time-consuming and demands expertise, especially for large and complex domain models, hindering the practical adoption of OCL in our modeling community. Traditional rule-based transformation techniques have shown a promising direction toward automating OCL generation from natural language specifications. However, defining transformation rules requires extensive engineering expertise to extract and map the UML elements from the specification and construct the OCL constraint. This manual effort makes it difficult for such techniques to scale and adapt to changes in software specifications. With the advent of Large Language Models (LLMs), neural-based solutions now offer a promising direction in processing natural language prompts to understand and translate specifications to OCL constraints automatically. LLM-enabled systems, such as GitHub Copilot and ChatGPT, have been trained on vast amounts of code, enabling them to facilitate various software development tasks. By leveraging the emergent capabilities of LLMs, we can harness their potential by carefully designing prompt engineering techniques. This thesis explores the potential of prompt engineering to facilitate OCL development using state-of-the-art LLMs by designing precise and contextually rich prompts to generate natural, syntactically valid, and semantically correct OCL constraints. Therefore, we propose two novel prompting techniques, UML-Augmentation and PathOCL, which contextualize necessary information from UML domain models for the LLMs to express valid and correct OCL constraints. The UML-Augmentation prompting technique originated from the necessity of incorporating the UML domain model as context for the LLM to express OCL constraints accurately.
| Département: | Département de génie informatique et génie logiciel |
|---|---|
| Programme: | génie informatique |
| Directeurs ou directrices: |
Mohammad Hamdaqa |
| URL de PolyPublie: | https://publications.polymtl.ca/59015/ |
| Université/École: | Polytechnique Montréal |
| Date du dépôt: | 05 mars 2025 14:30 |
| Dernière modification: | 11 avr. 2025 07:24 |
| Citer en APA 7: | Abukhalaf, S. (2024). Effective Prompt Augmentation Techniques for OCL Generation from Natural Language Specifications [Mémoire de maîtrise, Polytechnique Montréal]. PolyPublie. https://publications.polymtl.ca/59015/ |
|---|---|
Statistiques
Total des téléchargements à partir de PolyPublie
Téléchargements par année
Provenance des téléchargements
