800 likes | 913 Views
Définition et contrôle des politiques d’évolution dans les projets logiciels. Soutenance de Thèse Thomas Leveque. 18 Juin 2010. Jury : Jöelle Coutaz , Professeur à l’Université de Grenoble (Président e du jury)
E N D
Définition et contrôle des politiques d’évolution dans les projets logiciels Soutenance de ThèseThomas Leveque 18 Juin 2010 Jury : JöelleCoutaz, Professeur à l’Université de Grenoble (Président e du jury) Andreas Zeller, Professeur à l’Université Saarland, Allemagne (Rapporteur) Michel Riveill, Professeur à Polytech’Nice (Rapporteur) Pascal Molli, Maître de conférences à l’Université Henri Poincaré (Examinateur) Christophe Bourely, STMicroelectronics (Examinateur) Jacky Estublier, Directeur de recherche au CNRS, Grenoble (Directeur de thèse)
Plan Contexte & Problématique Etat de l’art Proposition Expérimentations & Evaluation Conclusion & Perspectives
Contexte : Grandes applications • Points durs : • Complexité de l’application • Grandes équipes • Longue durée de vie • Evolution permanente
L’ingénierie dirigée par les modèles Un début de solution… • Raisonnement à haut niveau d’abstraction • Séparation des préoccupations • Indépendant de la plate-forme Modèle A model is a simplification of a system built with an intended goal in mind. The model should be able to answer questions in place of the actual system. (BEZIVIN J., GERBÉ O.)
Tomcat TempComp Kitchen LivingRoom Contexte : Grandes applications CoolingSystem • Points durs : • Complexité de l’application • Grandes équipes • Longue durée de vie • Evolution permanente
Problématique Comment maîtriser l’évolution ? • Points durs : • Contrôler l’évolution • Comprendre l’évolution • Comprendre la structure du logiciel
Plan Contexte & Problématique Etat de l’art Proposition Expérimentations & Evaluation Conclusion & Perspectives
Gestion de l’évolution • Solution actuelle • Garder des copies immuables des fichiersdans un dépôt partagé pour gérer les versions du logiciel Objectif • Garder la maîtrise de l’évolution
B A Définition Version • Deux objets sont version l’un de l’autre s’ils • partagent des propriétés • diffèrent name = TempComp name = TempComp Partie commune price = 90€ price = 90€ author= ‘thomas’ author= ‘thomas’ Partie versionnée pollPeriod= 1s pollPeriod= 2s
Gestion de versions Versionnement • historique • logique • coopératif
V1 V2 V5 V4 V3 Versions historiques (Révisions) name = TempComp price = 90€ • Propriétés • Ordonnées • La plus récente est a priori la meilleure author= ‘thomas’ pollPeriod= 2s temps name = TempComp name = TempC name = TempComp name = TempComp price = 90€ price = 90€ price = 15 € price = 15 € author= ‘thomas’ author= ‘thomas’ author= ‘thomas’ author= ‘thomas’ pollPeriod= 10s pollPeriod= 1s pollPeriod= 10s pollPeriod= 10s
Version Windows Version Linux Version Mac Versions logiques (Variants) • Propriétés • Non ordonnées • Aucune version n’est meilleure qu’une autre name = TempComp price = 90€ author= ‘thomas’ pollPeriod= 2s name = TempComp name = TempComp price = 90€ price = 90€ author= ‘marcel’ author= ‘gerard’ pollPeriod= 1s pollPeriod= 1s
Dépôt local Dépôt local Versions coopératives 2) Modifie 2) Modifie Espace de travail Espace de travail Fusion 1) Récupèreunecopie 1) Récupèreunecopie Politique optimiste Conflits Dépôt global
Versions coopératives 1) vérouille 2) modifie 3) libère Politique optimiste Politique pessimiste Dépôt global
Outils de gestion de versions • Gestionnaire de versions • Subversion, SCCS, RCS, CVS, FineVMS, Mercurial • Gestionnaires de configurations logicielles • Clearcase, Synergy, Mae, ADAMS, Mohaldo, Adele • Outils de travail collaboratif asynchrones • Wikipedia, Celine, Google Docs
Synthèse des outils • Outils de comparaison et/ou de fusion de modèles • - EMFCompare, SiDiff, UML Diff, Delta Process…
Conclusion • Modèles mal gérés • Gestion des compatibilités limitée ou inexistante • Impact d’une modification non connue • Pas de concept d’évolution Les outils gèrent des sauvegardes de fichiers Il faut gérer l’évolution du logiciel 2004 2010 1990 2000 Ingénierie dirigée par les modèles CADSE Gestion de l ’évolution Gestion des versions
Plan Contexte & Problématique Etat de l’art Proposition Expérimentations & Evaluation Conclusion & Perspectives
Cadre de ma thèse Objectif • Gérer l’évolution des logiciels • Evolution des modèles • Modélisation de l’évolution • Identifier les stratégies d’évolution • Evolution du logiciel • Identifier les concepts d’évolution
Plan • Contexte & Problématique • Etat de l’art • Proposition • Evolution des modèles • Modélisation de l’évolution • Evolution des logiciels
Evolution des modèles Dépôt Modèle de l’application Modèles Code Source Développeur CADSE @Override publicvoid create() { super.create(); … } Code de l’application utilise Espace de travail synchronisation
CADSE : Computer Aided Domain SpecificEnvironment Développeur Projets logiciels = modèles + fichiers
CADSE • Méta-modèle de l’application • Interaction • … • Modèle pour gérer l’évolution • Modèle fonctionnel définit définit Modèle de l’application Modèle du CADSE A Développeurlogiciel Expert du domaine utilise utilise Application CADSEg CADSE A
Domaine métier : gestion de capteurs Tomcat Kitchen TempComp LivingRoom Niveaumétamodèle Niveaumodèle uses CoolingSystem monitors name = TempComp monitors pollPeriod= 2s price = 90€
Gestion des modèles TempComp CADSEGestion de capteurs utilise Stéphane gère Espace de travail Dépôt de modèles content @Override publicvoid create() { super.create(); … } @Override publicvoid create() { super.create(); … } @Override publicvoid create() { super.create(); … } @Override publicvoid create() { super.create(); … } Dépôt de fichiers @Override publicvoid create() { super.create(); … } @Override publicvoid create() { super.create(); … }
Gestion des modèles Stéphanie TempComp TempComp CADSEGestion de capteurs utilise gère Espace de travail @Override publicvoid create() { super.create(); … } @Override publicvoid create() { super.create(); … } @Override publicvoid create() { super.create(); … } @Override publicvoid create() { super.create(); … }
Gestion des modèles Stéphanie TempComp CADSEGestion de capteurs utilise gère Espace de travail Dépôt de modèles @Override publicvoid create() { super.create(); … } @Override publicvoid create() { super.create(); … } @Override publicvoid create() { super.create(); … } @Override publicvoid create() { print(“toto”); … } Dépôt de fichiers @Override publicvoid create() { super.create(); … }
Synthèse : Evolution des modèles • Evolution par élément de modèle • Réutilise des éléments de modèle • Ensemble de fichiers • Synchronisation entre modèle et code • Assure la cohérence entre modèle et code
Plan • Contexte & Problématique • Etat de l’art • Proposition • Evolution des modèles • Modélisation de l’évolution • Evolution des logiciels
Modélisation de l’évolution Objectif • Identifier et exprimer les stratégies d’évolution
CADSE • Méta modèle de l’application • Politiques d’évolution • Interaction • … • Modèle pour gérer l’évolution • Modèle fonctionnel définit définit Modèle de l’application Modèle du CADSE A Développeurlogiciel Expert de l’évolution Expert du domaine utilise utilise Application CADSEg CADSE A
Politiques d’évolution Méta modèle des applications Politiquesd’évolutionModèle <-> code Dépôt Modèle de l’application Modèles Politiquesd’évolution des versions Code Source @Override publicvoid create() { super.create(); … } Code de l’application Espace de travail
Impact d’une modification content content content content Expert de l’évolution Expert du domaine
Aucun impact TempComp Commit Métamodèle Aucun Expert de l’évolution <<shared>> <<shared>> <<shared>> <<shared>> <<shared>> content Id = 3fe45a name = TempComp Numéro de version = 3fe45a.1 price = 90 € author = ‘thomas’ name = TempComp price = 90€ Rev = 1 PC author= ‘Thomas’ author= ‘thomas’ platform= Windows pollPeriod = 2s pollPeriod= 2s PV content= c1 content= c1 Modèle Espace de travail Dépôt
Création d’une révision TempComp Commit Métamodèle Aucun Nouvelle révision Expert de l’évolution <<immutable>> content Id = 3fe45a <<immutable>> name = TempComp Numéro de version = 3fe45a.2 Numéro de version = 3fe45a.1 price = 90 € author = ‘thomas’ name = TempComp price = 90€ Rev = 1 Rev = 2 author= ‘thomas’ platform= Windows pollPeriod = 2s pollPeriod= 1s pollPeriod= 1s pollPeriod= 2s content= c1 content= c2 content= c1 content= c2 Modèle Espace de travail Dépôt
Mise à jour TempComp Commit Métamodèle Aucun Nouvelle révision Expert de l’évolution Mise à jour <<mutable>> <<immutable>> content Id = 3fe45a <<immutable>> name = TempComp Numéro de version = 3fe45a.1 price = 90 € price = 50€ author = ‘thomas’ name = TempComp price = 90€ price = 50€ Rev = 1 author= ‘thomas’ platform= Windows pollPeriod = 2s pollPeriod= 2s content= c1 content= c1 Modèle Espace de travail Dépôt
Création d’un variant TempComp Commit Métamodèle Aucun Nouvelle révision Expert de l’évolution <<immutable>> Mise à jour Nouveau variant variante <<mutable>> <<immutable>> Id = 3fe45a Id = 57ff32 content <<immutable>> name = TempComp name = TempComp price = 90 € price = 90 € Numéro de version = 57ff32.1 Numéro de version = 3fe45a.1 author = ‘thomas’ author = ‘thomas’ platform= Windows platform= Linux name = TempComp price = 90€ Rev = 1 Rev = 1 Rev = 2 author= ‘thomas’ platform= Windows platform= Linux pollPeriod = 2s pollPeriod = 2s pollPeriod = 1s pollPeriod= 2s content= c1 content= c1 content= c2 content= c1 Modèle Espace de travail Dépôt
Création d’un objet Commit Métamodèle Aucun Nouvelle révision Expert de l’évolution <<immutable>> Mise à jour Nouveau variant <<final>> Nouvel objet <<mutable>> <<immutable>> Id = 3fe45a Id = 57ff32 content <<immutable>> name = TempComp name = RainComp Numéro de version = 3fe45a.1 Numéro de version = 57ff32.1 price = 90 € price = 90 € author = ‘thomas’ author = ‘thomas’ platform= Windows platform= Windows TempComp RainComp name = TempComp name = RainComp price = 90€ Rev = 1 Rev = 1 Rev = 2 author= ‘thomas’ platform= Windows pollPeriod = 2s pollPeriod = 2s pollPeriod = 1s pollPeriod= 2s content= c1 content= c1 content= c2 content= c1 Modèle Espace de travail Dépôt
Impact d’une modification <<imm.>> content <<immutable>> content <<final>> <<immutable>> <<mutable>> <<immutable>> content <<mutable>> content Expert de l’évolution Expert du domaine
Impact de changement des relations Tomcat (Id = 3fe45a) Jetty (Id = 57ff32) TempComp Aucun Nouvelle révision Nouvel objet Mise à jour Nouveau variant uses uses= {3fe45a} uses= {57ff32} • Modification = • Ajout • Suppression Modèle
Impact d’une modification Propagation <<mutable>> content <<imm.>> <<immutable>> content <<immutable>> <<final>> <<mutable>> <<immutable>> <<mutable>> <<immutable>> content content <<mutable>> Expert de l’évolution Expert du domaine <<immutable>>
Création d’une révision Tomcat TempComp Commit Rev = 2 Rev = 3 port = 9090 port = 9085 TempComp Tomcat Nouvelle révision price = 90 € api= I1 pollPeriod: seconds Dépôt Espace de travail Rev = 1 <<immutableD>> Rev = 2 pollPeriod = 2s pollPeriod = 2s port = 9085 uses content= c1 content= c2 42
Aucun Tomcat TempComp Commit Rev = 2 Rev = 3 port = 9090 port = 9085 TempComp Tomcat Nouvelle révision uses Aucun price = 90 € api= I1 pollPeriod: seconds Dépôt Espace de travail Rev = 1 <<branchD>> pollPeriod = 2s port = 9085 uses content= c1
Mise à jour Tomcat TempComp Commit Rev = 2 Rev = 3 port = 9090 port = 9085 TempComp Tomcat Nouvelle révision Aucun price = 90 € api= I1 pollPeriod: seconds Mise à jour Dépôt Espace de travail Rev = 1 <<mutableD>> pollPeriod = 2s port = 9085 uses content= c1
Etendre les compatibilités Tomcat TempComp Commit Rev = 2 Rev = 3 port = 9090 port = 9085 TempComp Tomcat Nouvelle révision Aucun price = 90 € api= I1 pollPeriod: seconds Mise à jour Compatibilités étendues Dépôt Espace de travail Rev = 1 <<effectiveD>> pollPeriod = 2s port = 9085 uses content= c1
Interdiction Tomcat TempComp Commit Rev = 2 port = 9090 TempComp Tomcat Nouvelle révision Aucun price = 90 € api= I1 pollPeriod: seconds Mise à jour Compatibilités étendues Interdiction Dépôt Espace de travail Rev = 1 <<finalD>> pollPeriod = 2s port = 9085 uses content= c1
Propagation <<mutable>> <<immutableD>> content <<imm.>> <<effectiveD>> <<immutable>> content <<immutable>> <<final>> <<mutable>> <<immutable>> <<mutable>> <<immutableD>> content <<immutable>> content <<mutable>> Expert de l’évolution Expert du domaine <<immutable>>
Scénario : propagation Alice Commit Commit { nouvelle révision } Tomcat3 <<branchD>> … TempComp 3 TempComp 4 TempComp5 uses { nouvelle révision} <<immutableD>> pollPeriod = 2s contains CoolingSystem4 CoolingSystem3 monitors price = 90 € TempSensor 7 { Modifiée } Espace de travail <<immutable>> Dépôt TempComp 4 pollPeriod = 2s CoolingSystem 3 price = 90 € Tomcat3 TempComp 5 pollPeriod = 2s CoolingSystem 4 TempSensor 7 price = 90 €
Synthèse • Calcul automatique de la propagation • Réduit le nombre de versions • Rapatriement d’un ensemble suffisant d’éléments compatibles • Compatibilités automatisés • Information de compatibilité fiable
Synthèse • Politiques flexibles et fines • Exprimer les stratégies désirées (DataMonitor : 912 combinaisons) • Politique définie pour chaque domaine • Force l’application de la politique • Annotations sur le méta-modèle • Séparation des préocupations