introduction
J'écris ma thèse de doctorat sur la modélisation abstraite du delta (ADM), une description algébrique abstraite des modifications (connues sous le nom de deltas ) capables d'agir sur les produits (comme dans les «produits logiciels»). Cela peut être utilisé pour organiser un ensemble de produits connexes (une «ligne de produits») comme un produit de base simple et un ensemble de deltas appliqués conditionnellement, et ainsi permettre une plus grande réutilisation des artefacts sous-jacents.
Les détails de la modélisation delta ne sont pas vraiment importants pour ma question, mais ADM sert de bon exemple pour expliquer le problème, je vais donc présenter les concepts les plus importants.
Contexte
La structure principale d'intérêt est le deltoïde . Les produits proviennent d'un ensemble universel P . Les deltas proviennent d'un monoid ( D , ⋅ , ε ) avecopérateur de composition ⋅ : D × D → D etélément neutre ε ∈ D . L'opérateur d'évaluation sémantique [ transforme un delta «syntaxique» d ∈ D en une relation [ qui décide comment d peut modifier un produit.
Question
Comme ADM est une algèbre abstraite, la plupart de mes travaux résument la nature concrète des produits et des deltas, et un certain nombre de résultats sont prouvés sans descendre à un niveau plus concret. Ces résultats devraient se poursuivre dans un domaine plus concret, mais je ne l'ai pas encore formalisé.
Il existe des exemples et des études de cas qui fonctionnent dans un domaine concret: code source orienté objet, Code X , nombres naturels, profils de téléphonie mobile, etc. Il existe également des étapes d'abstraction intermédiaires telles que des paires clé-valeur imbriquées. Pour chaque je redéfinis (ou «affine»)( P , D ,⋅,ϵ, [ .
Je voudrais rendre cette hiérarchie explicite: (1) pour fournir une plus grande clarté au lecteur et (2) pour justifier formellement l'utilisation des résultats de niveaux plus abstraits.
Ma question: comment organiser formellement ces niveaux d'abstraction?
J'espère pouvoir raisonner avec une simple relation de raffinement sur les deltoïdes. Et je me sens comme il pourrait être défini simplement en faisant appel à la relation de sous - ensemble de P et D . Mais je n'en suis pas encore sûr. Existe-t-il des approches pour le type de problème que je décris? Publications que je devrais lire?
La hiérarchie deltoïde
Pour vous donner une meilleure idée de ce que je veux dire, voici la hiérarchie d'abstraction deltoïde que j'ai en tête:
- Résumé Deltoïde : C'est le deltoïde de base dans lequel les produits et les deltas peuvent toujours être n'importe quoi. La majeure partie de la théorie est basée sur celle-ci et la plupart des résultats sont prouvés à ce niveau.
- Deltoïde relationnel : Ici, les deltas sont des relations sur et [ est la fonction d'identité.
- Deltoïde fonctionnel : Ici, les deltas sont fonctionnels (ou «déterministes»).
- Deltoïde en nombre naturel : Il s'agit du deltoïde en béton le plus simple, créé juste pour illustrer le raffinement du deltoïde. Ici, les produits sont des nombres naturels et les deltas D = N + sont de simples séquences de nombres représentant des opérations polynomiales.
- Deltoïde de paires clé-valeur imbriquées : niveau d'abstraction intermédiaire pour toute hiérarchie dans laquelle les clés sont mappées à des valeurs ou à des sous-hiérarchies. Les deltas peuvent effectuer des modifications dans cet «arbre» à n'importe quelle profondeur.
- Delopoid OOP : Pour les représentations abstraites de programmes orientés objet. Ce sont essentiellement des paires clé-valeur imbriquées, car les programmes mappent les noms de module aux ensembles de classes, qui mappent les noms de classe aux ensembles de méthodes, qui mappent les noms de méthode aux implémentations de méthode.
- ABS Deltoid : ABS est un véritable langage de programmation orienté objet.
- Profil de téléphone Deltoïde : Ici, un produit est un mappage plat des paramètres (tels que le volume, la luminosité de l'écran, etc.) aux valeurs d'un domaine correspondant.
- Delopoid OOP : Pour les représentations abstraites de programmes orientés objet. Ce sont essentiellement des paires clé-valeur imbriquées, car les programmes mappent les noms de module aux ensembles de classes, qui mappent les noms de classe aux ensembles de méthodes, qui mappent les noms de méthode aux implémentations de méthode.
- Deltoïde relationnel : Ici, les deltas sont des relations sur et [ est la fonction d'identité.