ch-conclusion.tex 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. % vim:spell spelllang=fr
  2. \cleardoublepage
  3. \phantomsection
  4. \SpecialSection{Conclusion}
  5. \label{ch:conclusion}
  6. %\subsection{évolutions}
  7. %\begin{itemize}
  8. %
  9. % \item[Modularité : ] cf. resolve modulaire, j'ai un proto qui est fait, mais
  10. % pas tant de réflexion que ça
  11. %
  12. % \item[Traçabilité : ] ici je ne parle pas trop de la traçabilité liée aux
  13. % spéc mais plus la traçabilité technique/interne. Le "\%resolvelink" de
  14. % \%tracelink, + éventuellement une traçabilité type "log complet"
  15. %
  16. % \item[Expressivité : ] simplification de syntaxe (traversal, arguments,
  17. % patterns, multi sources et cibles), lien avec le travail de Christophe ?
  18. %
  19. %\end{itemize}
  20. La qualification d'outil est une étape fondamentale dans le processus de
  21. certification du logiciel. L'objectif principal de cette thèse était de
  22. contribuer à l'élaboration de méthodes et outils pour améliorer la confiance
  23. dans les outils intégrés dans les chaînes de développement critiques. Le
  24. langage {\tom} développé dans l'équipe a été le support de ces travaux.
  25. \section*{Contributions}
  26. \subsection*{Une méthode de transformation de modèles par réécriture}
  27. Dans cette thèse, nous avons présenté une méthode pour transformer des modèles
  28. en nous appuyant sur des stratégies de réécriture. Cette méthode nous permet
  29. d'exprimer aisément une transformation à partir de règles, sans aucune notion
  30. d'ordre d'application.En nous plaçant dans le cadre du langage {\tom}, nous
  31. avons fait le choix d'être à la frontière entre les langages dédiés et les
  32. langages généralistes, afin d'en tirer le meilleur des deux mondes. Nous avons
  33. donc proposé un îlot formel dédié aux transformations de modèles qui s'intègre
  34. au sein du langage généraliste {\java}. Du fait du fonctionnement de notre
  35. méthode hybride, nos transformations sont modulaires. Cette qualité est
  36. fondamentale en ingénierie du logiciel, que ce soit pour la maintenance ou la
  37. création de nouveaux outils.
  38. %Afin de rendre cette méthode accessible au plus grand nombre, nous avons exclus
  39. %L'un des objectifs était de rendre cette méthode accessible au plus grand nombre,
  40. \subsection*{Une représentation de modèles sous la forme de termes algébriques}
  41. Pour transformer des modèles selon notre méthode hybride, il est nécessaire
  42. d'opérer un changement d'espace technologique entre le monde des modèles et
  43. celui des termes. Nous avons donc établi une représentation des modèles sous la
  44. forme de termes algébriques. Cette dernière repose sur l'obtention d'un arbre
  45. de recouvrement du modèle par la relation de composition. Un outil implémente
  46. cette représentation par la génération de la signature algébrique correspondant
  47. à un métamodèle donné. Cela permet d'instancier des modèles et de les manipuler
  48. en tant que termes algébriques.
  49. \subsection*{Une traçabilité des transformations}
  50. L'exigence de traçabilité qu'impose le processus de qualification nous a
  51. conduits à proposer un îlot formel permettant de lier un élément source à
  52. des éléments cibles. Cette construction dédiée permet d'ajouter une traçabilité
  53. au sein d'une transformation écrite dans un langage généraliste tel que
  54. {\java}.
  55. \subsection*{Des outils accessibles pour améliorer la confiance dans le logiciel}
  56. Tout au long de ce travail, nous nous sommes appliqués à mettre en œuvre des
  57. outils implémentant nos travaux. Nos choix ont aussi été guidés par notre souci
  58. d'accessibilité et de diffusion. C'est pourquoi nous nous sommes appuyés sur
  59. les langages et \emph{frameworks} très utilisés et ayant déjà percé dans
  60. l'industrie. Si certains choix ont pu être remis en cause suite à nos
  61. évaluations et aux tests de performance, il n'en demeure pas moins qu'ils nous
  62. ont été très utiles pour obtenir un premier prototype opérationnel. Les outils
  63. développés doivent faciliter le développement logiciel en limitant le code
  64. écrit manuellement et en maximisant le code généré.
  65. De plus, dans cette optique d'amélioration de la confiance dans le logiciel, il
  66. est très important de diffuser des outils de production dont le code source est
  67. librement consultable, modifiable et rediffusable afin de pouvoir les vérifier,
  68. corriger, améliorer et utiliser.
  69. Par conséquent, tous nos outils sont diffusés sous licence libre. %FIXME\ttodo{??? je
  70. %laisse ?}
  71. \section*{Perspectives}
  72. Les perspectives qu'ouvre ce travail sont multiples, les chaînes de
  73. développement de systèmes critiques ayant de besoins forts pour la
  74. qualification d'outils. Différents travaux peuvent être entrepris pour
  75. étendre et prolonger les contributions de cette thèse, que ce soit au niveau de
  76. la représentation et du parcours de modèles, de l'expression et de la
  77. traçabilité des transformations ou de la généralisation des méthodes et outils.
  78. \subsection*{Stratégies paramétrées}
  79. L'une des pistes de recherche consiste à travailler sur les stratégies. Dans le
  80. chapitre~\ref{ch:usecase}, nous avons mis en avant un cas d'étude qui ne permet
  81. pas de donner la pleine mesure de nos outils. Cela s'explique par le principe
  82. de notre représentation de modèles sous la forme de termes ainsi que par leur
  83. parcours. Nous construisons un arbre de recouvrement par la relation de
  84. composition pour obtenir une vue arborescente du modèle. Ensuite, les
  85. stratégies les parcourent en suivant ces liens de composition. Bien que ce type
  86. d'utilisation couvre la majeure partie des cas, il existe des situations où la
  87. relation de composition n'est pas la relation d'intérêt de l'utilisateur, comme
  88. nous l'avons montré. Afin de remédier à ce problème, il faudrait pouvoir
  89. définir une alternative pour les stratégies de parcours en offrant la
  90. possibilité de les paramétrer par les types de liens à suivre. Un second
  91. prolongement serait alors de pouvoir paramétrer localement un parcours, en
  92. fonction d'un contexte donné.
  93. \subsection*{Modularité des transformations et réutilisation}
  94. Un aspect récurrent en génie logiciel est la modularité et la réutilisation du
  95. code. Du fait de notre approche construite sur les stratégies de réécriture,
  96. nous offrons déjà une certaine modularité des transformations et permettons la
  97. réutilisation du code de chaque transformation élémentaire. Cependant, les
  98. \emph{définitions} écrites pour une transformation donnée peuvent rarement être
  99. réutilisées directement, sans aucune modification. Un axe de travail serait
  100. donc de réfléchir à l'expression des \emph{définitions} les rendant plus
  101. génériques. Ensuite, le prototype modulaire de la phase de résolution de notre
  102. approche pourrait être affiné, étendu et simplifié afin d'accompagner chaque
  103. \emph{définition} par une \emph{stratégie de résolution élémentaire}.
  104. \subsection*{Généralisation et ouverture à d'autres technologies}
  105. Nous nous sommes appuyés sur la technologie {\emf} et le langage {\java} pour
  106. développer des outils et tester nos travaux. À terme, il serait intéressant de
  107. généraliser notre méthode de représentation et de transformation de modèles en
  108. ouvrant nos outils à d'autres langages généralistes et à d'autres technologies.
  109. %Se poserait notamment des problèmes liés au t
  110. Nous pensons notamment au langage {\ada} pour lequel nous avons mené quelques
  111. expérimentations et dont un \emph{backend} est maintenant présent dans {\tom}.
  112. Les stratégies ont été implémentées et peuvent être utilisées dans un programme
  113. {\ada}. Ce langage étant utilisé pour le développement de systèmes temps réel
  114. et embarqués pour son haut niveau de fiabilité et de sécurité, nous pourrions
  115. nous concentre sur ce langage. L'une des difficultés de la gestion de {\ada}
  116. réside dans l'absence de \emph{garbage collector}. On ne peut donc aisément
  117. implémenter toutes les fonctionnalités de {\tom} (notamment le partage maximal)
  118. qui existent avec le langage {\java}. La généralisation de nos outils nous
  119. permettrait aussi de nous ouvrir à d'autres technologies que {\emf}. Nous
  120. pensons notamment à {\kevoree} qui semble être un bon candidat, tant du point
  121. de vue fonctionnalités que performances.
  122. %pas de titre en fin de page
  123. %\clearpage
  124. \subsection*{Traçabilité : extension et usage}
  125. Nous avons fourni une traçabilité qui pourrait être étendue, d'une part à des
  126. transformations comprenant des sources multiples, d'autre part à des objectifs
  127. de détection et récupération d'erreurs. Cela demanderait de réfléchir à
  128. l'évolution du métamodèle de trace. Ensuite, cette traçabilité fournie par
  129. {\tom} pourrait être généralisée afin de dépasser le cadre de l'îlot formel
  130. dédié aux transformations de modèles. Enfin, de manière pragmatique et à court
  131. terme, nous envisageons de modifier le langage pour séparer la construction de
  132. traçabilité en deux constructions distinctes, l'une dédiée à la traçabilité
  133. interne, l'autre à la traçabilité de spécification.
  134. % vim:spell spelllang=fr