Vues et transformations de programmes pour la modularité des évolutions. (Views and program transformations for modular maintenances)

La maintenance consomme une grande partie du cout de developpement des logiciels ce qui rend l’optimisation de ce cout parmi les enjeux importants dans le monde du genie logiciel. Dans cette these nous visons a optimiser ce cout par rendre ces maintenances modulaires. Pour atteindre cet objectif, nous definissons des transformations des architectures des programmes qui permettent de transformer le programme a maintenir vers une architecture qui facilite la tâche de maintenance voulue. Nous nous concentrons plus sur la transformation entre les architectures a proprietes de modularite duales tels que les patrons de conception Composite et Visiteur. Dans ce contexte, nous definissons une transformation automatique et reversible basee sur le refactoring entre un programme structure selon le Composite et sa structureVisiteur correspondante. Cette transformation est validee par la generation d’une precondition qui garantit statiquement sa reussite. Elle est aussi adaptee afin qu’elle prenne en compte la transformation de quatre variations du patron Composite et est validee sur le programme JHotDraw qui comporte ces quatre variations. Nous definissons aussi une transformation reversible au sein du patron Singleton afin de pouvoir beneficier de l’optimisation par l’introduction de ce patron et la souplesse par sa suppression selon les exigences de l’utilisateur du logiciel.

[1]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[2]  Meng Wang,et al.  The visitor pattern as a reusable, generic, type-safe component , 2008, OOPSLA.

[3]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[4]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[5]  Huiqing Li,et al.  Formalisation of Haskell refactorings , 2005, Trends in Functional Programming.

[6]  João M. Fernandes,et al.  Towards a catalog of aspect-oriented refactorings , 2005, AOSD '05.

[7]  Paulo Borba Refactoring and Code Generation Tools for AspectJ , 2002 .

[8]  Mel O Cinn eide Automated application of design patterns: a refactoring approach , 2001 .

[9]  Jacques Garrigue,et al.  Programming with Polymorphic Variants , 2010 .

[10]  Eelco Visser,et al.  Language Independent Traversals for Program Transformation , 2000 .

[11]  Ralph E. Johnson,et al.  A Refactoring Tool for Smalltalk , 1997, Theory Pract. Object Syst..

[12]  Martin Odersky,et al.  Independently Extensible Solutions to the Expression Problem , 2004 .

[13]  Steven P. Reiss,et al.  An empirical study of multiple-view software development , 1992, SDE 5.

[14]  Alexander Chatzigeorgiou,et al.  Design Pattern Detection Using Similarity Scoring , 2006, IEEE Transactions on Software Engineering.

[15]  Kim B. Bruce Some challenging typing issues in object-oriented languages , 2003, WOOD.

[16]  Jens Palsberg,et al.  The essence of the Visitor pattern , 1998, Proceedings. The Twenty-Second Annual International Computer Software and Applications Conference (Compsac '98) (Cat. No.98CB 36241).

[17]  Oege de Moor,et al.  JunGL: a scripting language for refactoring , 2006, ICSE.

[18]  Mads Torgersen The expression problem revisited: Four new solutions using generics , 2004 .

[19]  Oscar Nierstrasz,et al.  Traits: A mechanism for fine-grained reuse , 2006, TOPL.

[20]  Xavier Leroy,et al.  A modular module system , 2000, J. Funct. Program..

[21]  Philip Wadler,et al.  Views: a way for pattern matching to cohabit with data abstraction , 1987, POPL '87.

[22]  Gerardo Canfora,et al.  How Crosscutting Concerns Evolve in JHotDraw , 2005, 13th IEEE International Workshop on Software Technology and Engineering Practice (STEP'05).

[23]  William G. Griswold,et al.  Beyond refactoring: a framework for modular maintenance of crosscutting design idioms , 2007, ESEC-FSE '07.

[24]  Matthias Felleisen,et al.  Synthesizing Object-Oriented and Functional Design to Promote Re-Use , 1998, ECOOP.

[25]  Don Batory,et al.  Automated Software Evolution via Design Pattern Transformations , 1995 .

[26]  Stas Negara,et al.  A Compositional Paradigm of Automating Refactorings , 2013, ECOOP.

[27]  Giuseppe Pappalardo,et al.  AODP: refactoring code to provide advanced aspect-oriented modularization of design patterns , 2012, SAC '12.

[28]  Meir M. Lehman,et al.  Laws of Software Evolution Revisited , 1996, EWSPT.

[29]  Mark Harman,et al.  Tool-Supported Refactoring of Existing Object-Oriented Code into Aspects , 2006, IEEE Transactions on Software Engineering.

[30]  Martin Odersky,et al.  Extensible algebraic datatypes with defaults , 2001, ICFP '01.

[31]  Paul Klint,et al.  A Case of Visitor versus Interpreter Pattern , 2011, TOOLS.

[32]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[33]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[34]  Tijs van der Storm,et al.  RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[35]  Julien Cohen,et al.  Views, Program Transformations, and the Evolutivity Problem in a Functional Language , 2010 .

[36]  Mariano Ceccato,et al.  A qualitative comparison of three aspect mining techniques , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[37]  Ralf Hinze,et al.  Open data types and open functions , 2006, PPDP '06.

[38]  Joshua Kerievsky,et al.  Refactoring to Patterns , 2004, XP/Agile Universe.

[39]  Jacques Garrigue,et al.  Code reuse through polymorphic variants , 2000 .

[40]  Hayo Thielecke,et al.  A Type-theoretic Reconstruction of the Visitor Pattern , 2006, MFPS.

[41]  Slaviša Marković Composition of UML Described Refactoring Rules , 2004 .

[42]  Günter Kniesel,et al.  Static composition of refactorings , 2004, Sci. Comput. Program..

[43]  Andrew P. Black,et al.  The Case for Multiple Views , 2004, ICSE 2004.

[44]  Rémi Douence,et al.  Views, Program Transformations, and the Evolutivity Problem , 2010, arXiv.org.

[45]  Leon Moonen,et al.  An Integrated Crosscutting Concern Migration Strategy and its Application to JHOTDRAW , 2007, Seventh IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2007).

[46]  L. Erlikh,et al.  Leveraging legacy system dollars for e-business , 2000 .

[47]  Paul Klint,et al.  Scripting a refactoring with Rascal and Eclipse , 2012, WRT '12.

[48]  Jorma Sajaniemi Program comprehension through multiple simultaneous views: a session with VinEd , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.