DSLs pour le Développement Agile de Transformations

Dimension: px
Commencer à balayer dès la page:

Download "DSLs pour le Développement Agile de Transformations"

Transcription

1 DSLs pour le Développement Agile de Transformations Laurent Thiry*, Bernard Thirion*, Michel Hassenforder* Ecole Nationale Supérieure d Ingénieurs du Sud Alsace Laboratoire MIPS, Université de Haute Alsace 12, rue des frères Lumière MULHOUSE cedex * {laurent.thiry, bernard.thirion, michel.hassenforder}@uha.fr RESUME. L IDM propose des concepts et des outils pour concevoir plus simplement des applications. Une approche complémentaire aux standards existants, et qui trouve un intérêt croissant dans le cadre des logiciels complexes, est la métamodélisation fonctionnelle. Celleci profite de la puissance d expression et de la généricité des langages fonctionnels pour définir des métamodèles et des transformations de modèles. Cet article propose de montrer les intérêts d une telle approche sur une famille de Langages Spécifiques de Domaines (DSLs) dédiés au prototypage de transformations. Plus précisément, l article décrit une méthode pour construire des DSLs permettant d intégrer en entrée ou en sortie d une transformation des modèles textuels et pour extraire/ajouter une information dans un modèle. ABSTRACT. Model driven engineering community proposes the concepts and the tools to design more easily software applications. Complementary to the elements proposed, the use of a functional approach becomes more and more important in the field of complex software. More precisely, current works use the genericity of functional programming languages to describe more easily and formally metamodels and model transformations. This article proposes to show the benefits of such an approach with a set of Domain Specific Languages (DSLs) to design more quickly model transformations. The article describes a process to build DSLs that makes it possible the integration of textual models at the input or the output of a transformation, and the extraction or the add of information from/to a model. MOTS CLEF. IDM, DSL, approche fonctionnelle, transformations de modèles KEYWORDS. IDM, DSL, Functional approach, Model transformations

2 IDM' Juin Mulhouse 1. Introduction 1.1. Contexte L intérêt de l Ingénierie Dirigée par les Modèles (IDM) est qu elle propose des outils génériques devant simplifier le développement de systèmes logiciels, (Mellor et al., 2003). Ces outils sont construits autour du concept de métamodèle qui permet de définir un langage de modélisation particulier à un domaine ou d intégrer plus facilement plusieurs types de modèles (Thiry et al., 2006, Vangheluwe et al., 2003). Ils intègrent aussi le concept de transformations de modèles pour pouvoir, par exemple, relier un modèle à une plate forme technologique spécifique ; cette séparation, entre modèles métiers et aspects technologiques, permet ainsi de capitaliser plus facilement l expertise d un domaine. En particulier, l application des concepts de métamodèles et de transformations de modèles dans un cadre fonctionnel trouve un intérêt croissant dans le domaine des logiciels pour les systèmes (Mathaikutty, 2005 ; Thiry et al., 2008). Les métamodèles nécessaires pour décrire, par exemple, les aspects continus ou discrets des systèmes dynamiques sont exprimés dans un cadre fonctionnel ; des fonctions permettent alors de transformer les modèles ou de préciser la sémantique dynamique associée à ces modèles. L intérêt d un cadre fonctionnel est alors de pouvoir décrire formellement les modèles et les transformations nécessaires. Pour montrer les intérêts de cette approche, l article propose une interprétation des concepts de métamodèle et de transformation dans un cadre fonctionnel pour développer de manière agile, et prototyper plus rapidement, des transformations. Plus précisément, il montre comment le langage Haskell (Hudack et al., 2007) permet de mettre en oeuvre des Langages Spécifiques de Domaine simples, i.e. définis par quelques éléments de base associés à des combinateurs, pour les différentes parties d une transformation (Deursen et al., 2000) Principes L approche proposée pour construire des DSLs dédiés aux transformations repose sur deux principes qui consistent à: 1) décomposer une transformation t en deux, ou plusieurs, fonctions plus simples u et v (i.e. t = u. v) ; 2) généraliser les sous-fonctions sous forme d éléments simples et d opérateurs de combinaison (où combinateurs). La décomposition permet d introduire une structure (un modèle) intermédiaire devant simplifier l expression de u et v (donc aussi de t) et permettre leur réutilisation dans un contexte plus large, avec d autres transformations. La généralisation doit rendre plus génériques les fonctions utilisées et faciliter l expression d un élément de transformation. L interprétation des concepts IDM dans un cadre fonctionnel consiste alors à représenter un métamodèle par un type de données particulier et une transformation par une fonction entre deux types. Les deux principaux intérêts sont alors de 1) pouvoir mettre en oeuvre relativement facilement les concepts IDM dans un langage généraliste ; 2) disposer d un cadre formel pour les éléments spécifiés. Comme illustration des éléments détaillés dans la suite de cet article, la figure 1 présente trois transformations/interprétations possibles

3 pour un modèle d expressions arithmétiques décrits en UML et interprété dans un cadre fonctionnel (avec Haskell). Val v:int - UML - Exp parse(string):exp unparse():string unparse2():int <<instanceof>> 1:Val Add :Add left right :Add 2:Val 3:Val parse transfo "(1+2)+3" = unparse i. parse DSLs pour le Développement Agile de Transformations 2 data Exp = Val { v:: Int } Add { left,right :: Exp } Figure 1. Interprétation d un modèle UML en Haskell et exemples de transformations = - Haskell - parse = choice add val val = many digit add = seq (seq val (char '+')) exp fold f g (Val v) = f v fold f g (Add x y) = g (fold f g x) (fold f g y) unparse = fold (("PUSH "++). show) (\x y->x++y++"add") unparse2= fold id (\x y->x+y) unparse3= fold show (\x y->x++"+"++y) = Add (Add (Val 1) (Val 2)) (Val 3) unparse "PUSH 1 PUSH 2 ADD PUSH 3 ADD" unparse 2 unparse 3 "(1+2)+3" La figure 1 illustre les points importants de l approche proposée avec: - La possibilité d appliquer les éléments IDM dans un cadre fonctionnel: un métamodèle défini par une hiérarchie est interprété comme une définition de type (ici, data Exp =), les différentes (sous-)classes sont interprétées comme les constructeurs de type (ici, Val et Add), les attributs ou compositions comme les paramètres de ces constructeurs, et les opérations comme des fonctions. Un modèle correspond alors à une expression Haskell d un certain type. - La décomposition de transformations en fonctions plus simples (cf. transfo = unparse. parse, avec (.) l opérateur de composition de fonctions) et leur généralisation pour définir plus simplement d autres transformations (cf. unparse est généralisé par fold qui permet alors de définir unparse2,3). - La définition de DSLs à partir d éléments génériques ; l intégration d un modèle textuel (cf. fonction parse) est réalisée à l aide de fonctions élémentaires (char) et de combinateurs (alt, seq et many, représentés en gras ci-dessus). L article se compose de trois parties. La première partie présente l IDM avec ses concepts et les principaux outils qu elle propose. Elle introduit aussi la notion de Langage Spécifique à un Domaine (DSL). La seconde partie propose une approche dédiée au développement agile de transformations (de modèles) illustré par trois DSLs pour l intégration de modèles textuels, l extraction ou l ajout d information à un modèle, et la mise en forme d information. La dernière partie conclut en reprenant les points importants de cet article et les perspectives envisagées. 6

4 IDM' Juin Mulhouse 2. Programmation fonctionnelle et IDM 2.1. Ingénierie Dirigées par les Modèles L Ingénierie Dirigée par les Modèles (IDM) trouve son origine dans les concepts de métamodèle et de transformation de modèles (Mellor et al., 2003). Un métamodèle décrit de façon détaillée un langage de modélisation (le plus souvent visuel) et est lui-même décrit par un graphe (diagramme des classes UML, par exemple). Une transformation est une fonction pour passer d un langage de modélisation à un autre ; elle est typiquement modélisée par un ensemble de règles entre deux métamodèles. Les métamodèles et les transformations sont décrits avec des langages dédiés. En particulier, le MOF (Meta Object Facility) ou EMF-Ecore (Eclipse Modeling Framework) sont utilisés pour décrire des métamodèles, (OMG, 2006, Eclipse, 2007). ATL (Atlas Transformation Language), JET (Java Emitter Template), ou Kermeta (Muller et al., 2005) sont utilisés pour décrire des transformations (Eclipse, 2007, Triskell, 2006). Les langages précédents sont supportés par Eclipse. Il existe d autres outils possibles: GME (Karsai et al., 2003), Xactium (Clark et al., 2004), Atom3 (Vangheluwe et al., 2003), etc. A cette liste d outils IDM, il faut ajouter les modeleurs UML qui intègrent aujourd hui des mécanismes d extension pour réaliser des langages/transformations spécifiques. Une approche complémentaire aux standards précédents et proposée par cet article consiste à explorer les possibilités d utiliser un langage fonctionnel moderne, offrant des concepts et des mécanismes de généricité puissants, dans un cadre IDM. En particulier, le langage fonctionnel Haskell est bien adapté pour prototyper des outils de transformation. Les fonctions permettent de créer des modèles (i.e. des expressions d un certain type), d accéder ou de modifier ces modèles, et présentent l avantage de pouvoir être passées en paramètre ou en retour d autres fonctions. Ce dernier point est utilisé dans l article pour proposer des DSLs dédiés au prototypage de transformations. Un DSL sera défini par un groupe de fonctions élémentaires et de combinateurs (i.e. des fonctions prenant en paramètre les fonctions précédentes ou d autres combinateurs). L ensemble des fonctions définies associé à l opérateur de composition (.) spécifie alors un langage (i.e. un ensemble d expressions) Langages Spécifiques de Domaine et Haskell Le concept de Language Spécifique à un Domaine (DSL) repris par la communauté IDM est apparu très tôt dans les langages fonctionnels (Hudack et al., 2007). Un DSL correspond à un ensemble de types (de données) et de fonctions pour décrire/réaliser plus simplement une application (Deursen et al., 2000). Dans un cadre IDM, les types introduits par un DSL peuvent être interprétés comme des éléments d un métamodèle et les fonctions entre ces types comme des transformations. Le langage fonctionnel Haskell est bien adapté pour mettre en oeuvre des DSLs (Hudack, 1998) et il intègre aujourd hui plusieurs langages spécifiques pour modéliser des langages (Hutton et al., 1992), des documents (Wadler, 2003), des commandes logicielles (Thiry et al., 2006), etc. Haskell présente plusieurs avantages dans un cadre IDM dont les plus importants sont donnés par (Mathaikutty, 2005). En particulier, il repose sur des concepts peu

5 nombreux, bien formalisés, et permettant de décrire simplement une information ou un traitement complexe. Parmi ces concepts, les fonctions sont les entités de première espèce: elles sont regroupées pour définir des types (de données) éventuellement récursifs et paramétrés, et peuvent être passées en paramètre ou en retour d autres fonctions. La définition d un type est similaire à la spécification d une grammaire, i.e. un ensemble d expressions et un langage représentant les valeurs possibles pour ce type ; cf. Figure 1. Enfin, Haskell privilégie un style déclaratif: les fonctions peuvent être définies de façon compacte et intelligible par filtrages de motifs (Pattern Matching) Haskell comme métalangage Haskell (Bird et al., 1998) est un langage fonctionnel typé. Un type correspond simplement à un ensemble de fonctions (appelées constructeurs) pour construire des expressions et des valeurs pour ce type. Par exemple, le type List est défini cidessous ; de la même manière, le modèle de la figure 1 définit un arbre d expressions. Il faut noter que la plupart des langages fonctionnels intègrent le concept de liste (ou de collection) et un ensemble de fonctions facilitant leur traitement. En particulier, le type String utilisé par les langages de programmation pour représenter du texte correspond à une liste de caractères (i.e. List Char) ; toutes les fonctions sur les listes présentées plus bas sont donc applicables aux Strings et aux textes. data List a = Nil Cons a (List a) -- liste générique produit Nil = 1 produit (Cons x xs) = x * produit xs DSLs pour le Développement Agile de Transformations Cette définition générique, paramétrée par le type a, spécifie une valeur (i.e. Nil à le type List a, ce qui se note aussi Nil :: List a) et une fonction prenant en paramètre un élément de type a, et une liste de a et retournant une liste de a (Cons :: a -> List a -> List a). En fait, la fonction Cons peut être appliquée à 0 paramètre (elle se manipule alors comme une variable et peut être passée en paramètre ou en retour d autres fonctions), 1 paramètre x (dans ce cas, Cons x est une fonction qui ajoute x au début d une liste), ou 2 paramètres x et xs (l expression Cons x xs est alors une valeur de type List a, a étant le type de x). La définition de fonctions sur un type donné utilise alors le filtrage de motifs, ou pattern matching, sur les constructeurs (cf. exemple de produit ci-dessus). Dans un contexte IDM, Haskell peut être utilisé comme métalangage. Pour cela, un modèle est défini par une expression du langage ; un langage de modélisation est un type (un ensemble d expressions) ; un métamodèle est une définition de type (data T =...) ; une transformation est une fonction entre deux types et est définie par un ensemble de règles (i.e. pattern matching). A partir de cette description minimale du langage Haskell, la partie suivante propose une approche permettant de trouver les types et les fonctions pertinentes pour décrire/réaliser une transformation de modèles. Les éléments présentés sont regroupés sous la forme de DSLs pour intégrer des modèles textuels aux transformations ou pour extraire/ajouter/formater une information particulière.

6 IDM' Juin Mulhouse 3. Développement de transformations 3.1. Méthodologie utilisée Dans un contexte IDM, une transformation correspond à une fonction t entre deux langages de modélisation M et N (t :: M -> N). La première étape proposée consiste alors à décomposer t en deux, ou plusieurs, fonctions plus simples u et v (i.e. t = u. v, avec (.) la composition de fonctions). Cette règle est largement utilisée pour exprimer plus simplement des fonctions/transformations: elle permet d introduire une structure/modèle intermédiaire qui facilite les traitements. Trois illustrations de ce principe sont données par la fonction factorielle, le tri rapide (quicksort) et la compilation de programme: factoriel = produit. (enumfromto 1) quicksort = flatten. btree compile = unparse. parse La fonction enumfromto x y retourne la liste des valeurs comprises entre x et y ; la fonction produit a été donnée précédemment. La fonction btree construit un arbre binaire de recherche ; la fonction flatten donne une représentation infixe d un arbre binaire sous la forme d une liste. Ces fonctions sont données ci-dessous. La fonction parse construit un arbre syntaxique à partir d une liste de caractères et unparse donne une représentation particulière de cet arbre (ces deux fonctions sont décrites à l aide de fonctions génériques et sont réalisées avec les DSLs proposés dans la suite de l article). enumfromto x y x <= y = Cons x (enumfromto (x+1) y) otherwise = Nil data BTree a = Leaf -- arbre binaire de recherche générique Node a (BTree a) (BTree a) flatten :: BTree a -> List a flatten Leaf = Nil flatten (Node x l r) = plus l (plus (unit x) r) where plus xs ys = -- voir plus bas unit x = Cons x Nil btree :: List a -> BTree a btree Nil = Leaf btree (Cons x xs) = Node x l r where l = filter (<=x) xs r = filter (>x ) xs

7 DSLs pour le Développement Agile de Transformations La figure 2 montre une application de ces différentes fonctions. 3 enumfromto 1 Cons produit * reduction 6 1 Cons 1 * 2 Cons 2 * 3 Nil factoriel btree [5,3,4,2] Node 3 flatten 0 [2,3,4,5] Node 5 Leaf Node 3 Node quicksort Leaf 2 Leaf Leaf Figure 2. Vision IDM d algorithmes usuels (calcul de factoriel et quicksort) dans laquelle les structures sont considérées comme des modèles. La deuxième étape proposée consiste à généraliser, et à rendre plus génériques, les fonctions u et v en introduisant des paramètres. En particulier, la fonction fold cidessous est obtenue en ajoutant une fonction f et une valeur v à la fonction produit (et produit = fold (*) 1), cf. figure 1. La fonction générique fold permet alors de définir simplement la plupart des fonctions sur les listes (Hutton, 1998) ; quelques exemples sont donnés ci-dessous. Et il est possible de définir une fonction fold pour la plupart des structures usuelles (listes, arbres, graphes, etc.). Par exemple, la fonction flatten est une application de la fonction fold pour les arbres binaires. De manière analogue, il est possible de définir une fonction unfold (inverse de fold) dont les applications sont données par enumfromto ou btree. 4 Leaf fold f v Nil = v fold f v (Cons x xs) = f x (fold f v xs) plus xs ys = (fold Cons ys) xs concat = fold plus Nil a Cons b Cons Nil (fold f v) fold vue comme une transformation de modèles a b f f v filter p map f = fold f Nil where f x xs = if p x then Cons x xs else xs = fold (Cons. f) Nil Dans les exemples précédents, la fonction filter permet d extraire d une structure, et donc aussi d un modèle, des éléments qui vérifient un prédicat p :: a -> Bool. La fonction map applique une fonction f :: a -> b à tous les éléments de cette structure. La fonction plus permet de fusionner deux structures et la fonction concat est une généralisation de l opérateur binaire (.) en un opérateur n- aire. Une approche alternative pour définir les fonctions u et v consiste à définir un ensemble de fonctions élémentaires et des combinateurs pour former un DSL (Hutton, 1998). Ceci représente la troisième étape proposée par notre approche. La

8 IDM' Juin Mulhouse fonction fold et l opérateur de composition (.) sont des cas particuliers de combinateurs utilisables pour toute fonction. Comme illustration, la fonction séquence, définie par sequence = fold (.) id, permet d appliquer une liste de fonctions à un élément (i.e. sequence [f,g,h] x == f(g(h(x)))). Après cette explication de la méthode utilisée, les trois paragraphes suivants décrivent des combinateurs qui permettent l intégration de modèles textuels (basés sur le type Parser), l extraction d information (cf. type Filter) ou la mise en forme d information (cf. type Layout) DSL pour les modèles textuels (DSL1) La fonction parse précédente retourne, à partir d une liste de caractères, un élément a et une liste de caractères (Hutton et al., 1992) ; le résultat est donc une paire d éléments et est notée (x,y) dans la suite. Ce type de fonctions se définit par: type String = List Char type Parser a = String -> List (a,string) Dans la définition précédente, une fonction de type Parser retourne une liste pour pouvoir représenter les échecs d un parse ; i.e. un parse impossible retournera Nil sinon il retournera une liste de résultats. A partir de là, un parser élémentaire consiste à récupérer un caractère c et est défini par: fail = Nil char :: Char -> Parser Char char c Nil = fail char c (Cons x xs) x == c = unit (c,xs) otherwise = fail "abc" "bcd" (char 'a') (char 'a') [ ('a',"bc") ] [ ] fail Les principaux combinateurs utilisés dans le domaine du grammarware sont la composition séquentielle de parsers (seq), l alternative (alt) et la récursion (many). Avec la définition de Parser, ces combinateurs deviennent: alt p q xs = plus (p xs) (q xs) seq p f xs = concat (map g (p xs)) where g (r,xs ) = f r xs many p = alt (seq p f) unitp Nil where f x = seq (many p) (g x) g x xs = unitp (Cons x xs) unitp x xs = unit (x,xs) epsilon xs = unitp () (char 'a') "bcd" (char 'b') (char 'a') "abc" [ ] plus (alt (char 'a') (char 'b')) [ ('b',"cd") ] [ ('b',"cd") ] [ ('a',"bc") ] (seq (char 'a') (char 'b')) (char 'b') [ ('b',"c") ] Il faut noter que les éléments proposés sont compacts, entièrement définis et permettent d intégrer une description textuelle en entrée d une transformation. Comme illustration, une fonction pour parser une lettre (en BNF letter := a b.. Z ) puis un texte (string) s écriront avec les éléments proposés: letter = fold alt (map char [ a.. Z ])

9 DSLs pour le Développement Agile de Transformations string = many letter Par exemple, string abc<d> retourne unit ( abc, <d> ). Il faut noter que les éléments ci-dessus profitent de ceux déjà présentés: l alternative (alt) consiste à utiliser la somme de deux listes (plus) représentant les deux résultats possibles ; la fonction map est utilisée pour transformer des caractères x en parser de x ; fold est utilisé pour généraliser alt, etc. Les parsers sont généralement associés à un arbre (syntaxique). Par exemple, l intégration de modèles XML en entrée d une transformation consiste à définir un modèle d arbre (défini ci-dessous) puis la structure d un document XML (i.e. sa grammaire) à l aide du DSL1 (= {char, alt, seq, many}), (Wallace et al., 1999). L intérêt de cet exemple est qu il est possible d intégrer des modèles standards (UML/XMI ou EMF) en entrée des transformations ; en particulier, ils pourront être transformés à l aide des DSL 2 et 3 présentés dans la suite de cet article (la partie 3.5 présente une illustration de ce principe). data Tree a = a a (List (Tree a)) -- arbre générique La grammaire du sous-ensemble XML considéré et son interprétation avec les éléments proposés est donnée par: xml :: Parser (Tree String) xml = alt text group text = seq (many (alt letter special)) f where f x = x group = seq (char < ) f where f x = seq string g g x = seq (char > ) (h x) h x = seq (many xml) (i x xs)... i x xs = x xs La fonction parse présentée sur la figure 1 pour les expressions arithmétiques est décrite de la même manière que la fonction xml ci-dessus. L inverse de la fonction xml est alors analogue à la fonction flatten et s écrit simplement: unparse = foldt t g where foldt t g ( x) = t x foldt t g ( x xs) = g x xs t x = x g x xs = concat [ <,x, >,concat xs, </,x, > ] L intérêt d utiliser la fonction générique foldt (pour fold Tree) est qu elle permet de dériver plus facilement d autres transformations en adaptant les paramètres t et g. En particulier, pour supprimer les balises <XML> et ne garder que le texte (respectivement pour ne garder que les balises), il suffit de remplacer la définition de g par g x xs = concat xs ; cf. unparse2 ci-dessous (respectivement unparse4). D autres transformations sont bien sur envisageables (cf. compile3 par exemple). Cela dit, il est aussi possible de proposer un DSL2 spécifique pour extraire

10 IDM' Juin Mulhouse de l information d un arbre ou ajouter de nouveaux éléments. De la même manière, il est possible de proposer un DSL3 pour mettre en forme de l information et la rendre plus intelligible. Pour conclure cette présentation du DSL1 obtenu avec l approche proposée, la figure 3 donne une application des éléments précédents sur un exemple. <html> <head> <Title>Sample</Title> </head> <body> <B>Chapter</B> <I>Paragraph</I> Here </body> </html> compile 2 unparse 2 Sample, Chapter Paragraph, Here un/parse 1 head Figure 3. Illustration des transformationsi (unparsei. parse) 3.3. DSL pour l ajout et la suppression d information (DSL2) La représentation arborescente utilisée précédemment peut être associée à la notion de filtre (type Filter ci-dessous) qui est à l origine du deuxième DSL proposé. DSL2, comme DSL1, se compose d éléments simples et de combinateurs. Un filtre est défini ici par une fonction qui prend un arbre et retourne une liste d arbres (les sous-arbres par exemple). Les filtres de base (leaf, is et children) sont utilisés pour extraire une feuille, un noeud particulier ou des sous-arbres. type Filter a = Tree a -> List (Tree a) leaf, children :: Filter a leaf ( x) = unit ( x) leaf ( x xs) = fail is :: String -> Filter a is s ( x) = fail is s ( x xs) x == s = unit ( x xs) otherwise = fail children ( x) = fail children ( x xs) = xs title Sample compile 3 html B Chapter body I Paragraph (html (head (Title Sample)) (body (B Chapter) (I Paragraph) Here)) Here unparse 4 html, head, Title body, B, I Comme pour les parsers, les principaux combinateurs portent sur la composition séquentielle (and), les alternatives (or) et la récursion (deep). Ils sont définis simplement par le code suivant ; il faut noter la similitude entre les éléments de ce DSL et ceux du DSL1 (and seq, or alt, deep many). B A D C E children B [ C, ] D E

11 DSLs pour le Développement Agile de Transformations or f g t = plus (f t) (g t) and f g t = concat (map g (f t)) deep f = orelse f (and children (deep f)) where orelse f g t = case f t of fail -> g t otherwise -> f t B A D C (deep leaf) [ B, D, E ] E Ce deuxième DSL permet d exprimer des requêtes (Lammel, 2007) pour extraire une information particulière dans un arbre, et un modèle hiérarchique. En particulier, la requête pour obtenir tous les noeuds x d un arbre est donnée simplement par find x = deep (is x) qui peut aussi s écrire find = deep. is. Le DSL peut être complété par la fonction suivante qui permet d ajouter de l information à un arbre ; plus précisément, elle prend une fonction f qui transforme un arbre en un autre. tree :: (Tree a -> Tree a) -> Filter a tree f t = unit (f t) Comme illustration, le filtre suivant permet de décorer le texte d un document XML par la balise <> ; son fonctionnement est décrit sur la figure 4. complete = deep. (tree f) where f (Leaf x) = Node (unit (Leaf x)) f (Node x xs) = Node x (map f xs) La transformation de la figure 4 se compose de deux parties (cf. and): la première élimine les sous-arbres dont la racine est head (cf. notis) et la seconde décore les feuilles avec la balise (cf. complete). L intérêt de ce second DSL est qu il s intègre parfaitement au précédent. Par exemple, la fonction compile2 de la figure 3 peut se réécrire plus simplement par (deep is). xml. B A C (tree f) f (Node n cs) = Node n [Node "X" cs] B A X C html transformation html head body body title B I Here B I Sample Chapter Paragraph Here transformation = deep (and (notis "head") complete) Chapter Paragraph Figure 4. Transformation retirant/ajoutant de l information à un modèle

12 IDM' Juin Mulhouse 3.4. DSL pour la mise en forme d information (DSL3) Pour montrer la généricité de l approche proposée, un troisième exemple de DSL pour la mise en forme d information est présenté. Pour cela, un document (cf. type Layout) est défini comme une liste/séquence de textes ayant chacun une indentation (Wadler, 2003). La fonction de base est donnée par la fonction paragraph qui convertit un texte en document ; les combinateurs down et right permettent de combiner verticalement et horizontalement deux documents. Comme les DSLs 1 et 2 déjà présentés, ces fonctions sont définies entièrement et complètement (i.e. tous les éléments nécessaires à leur mise en oeuvre sont donnés dans l article) par : type Layout = List (Int,String) down tostring paragraph t = unit (0,t) paragraph A right down p q = plus p q right Nil q = q paragraph B paragraph C right p q = plus p r where pos = maximum (map size p) size (x,t) = x + length t r = map (move pos) q move p (x,t)= (x+p,t) B A C tostring :: Layout -> String La fonction transformation peut alors être améliorée en remplaçant le texte généré par des Layout puis en appliquant la transformation tostring qui donne la représentation textuelle d un document. unparse = tostring. (foldt t g) where t x = paragraph x g x xs = down (right (pre x) xs) (post x) pre x = plus < (plus x > ) post x = plus < (plus x /> ) Ce troisième DSL permet ainsi de définir des modèles de templates (similaires à ceux trouvés dans des technologies comme JET (Java Emitter Template), par exemple) décrivant des formats de présentation de données/modèles ; ces modèles de format sont utiles dans le cadre d une approche générative pour passer d un modèle à un code exécutable ou vérifiable (cf. section suivante). Le DSL1 permet alors d établir des transformations inverses pour passer d un modèle textuel concret à un modèle plus abstrait ; l exemple d arbres syntaxiques est proposé comme illustration de cet article mais d autres modèles sont envisageables avec, en particulier, des modèles de graphes. L objectif du DSL2 est alors de filtrer ou décorer la structure intermédiaire utilisée en sortie du DSL1 et en entrée du DSL3. Ainsi, le guide proposé consistant à décomposer une fonction de type transformation de modèles en deux ou plusieurs sous-fonctions puis à exprimer chacune d elles à l aide d éléments génériques composés de primitives et de combinateurs permet de construire des DSLs utilisables pour décrire une large

13

14 IDM' Juin Mulhouse DSL a été utilisé pour mettre en forme l information au format fsp utilisé par le model checker LTSA (Maggee et al., 2006) ; cf. fonction fsp dans le code suivant. trs, sts :: Filter trs = and (find "UML:StateMachine.transitions") (find "UML:Transition") uml2fsp in = do xmi <- readfile in let model = xml xmi -- Compilation transitions = trs model -- Extraction Mise en forme result = fsp transitions states -- Generation in writefile (in++.lts ) res Comme illustration, le modèle UML de la figure 5 présente un Statechart partiel pour un contrôleur de train arrivant à passage à niveau et le résultat de la transformation réalisée. 4. Conclusion Cet article propose une interprétation des concepts IDM dans un cadre fonctionnel pour développer de manière agile, et prototyper rapidement, des transformations de modèles. Pour cela, une transformation est associée à un ensemble de fonctions génériques plus simples, partitionné sous forme de Langages Spécifiques de Domaines (DSL). En effet, les fonctions proposées pour définir des transformations sont organisées en éléments simples et en combinateurs permettant de décrire les différents composants d une transformation. Les DSLs proposés définissent les éléments essentiels pour décrire/réaliser une fonctionnalité à l intérieur d une transformation avec l intégration ou la génération de modèles textuels, et le filtrage ou l ajout d information à un modèle. Chaque DSL présenté dans cet article comme illustration de l approche proposée est défini complètement: l ensemble des éléments (primitives + combinateurs) nécessaires à la mise en oeuvre des DSL est donné. L utilisation d un cadre fonctionnel permet d apporter plus d abstraction et plus de rigueur dans le développement ou l expression de transformation ; en particulier, il existe plusieurs travaux décrivant comment établir les propriétés des fonctions (calcul de complexité et optimisation, par exemple), et avec l approche proposée il est possible de profiter de ces travaux. Ce dernier point fait partie des perspectives envisagées pour nos travaux. Les deux autres directions envisagées pour la suite de ces travaux consistent à étudier comment intégrer les éléments présentés aux standards existants (i.e. pouvoir lire et manipuler des modèle Eclipse EMF, par exemple) puis à identifier les autres DSLs utiles aux transformations. Ces travaux futurs doivent apporter un point de vue complémentaire sur l IDM.

15 DSLs pour le Développement Agile de Transformations 5. Bibliographie Bird R., Scruggs T.E., Mastropieri M.A., 1998, Introduction to Functional Programming using Haskell, Prentice Hall Eds Clark T., Evans A., Sammut P., Willans J.,, An executable Metamodelling Facility for Domain Specific Language Design, in the 4th Domain-Specific Modeling Workshop, DSM 04, p Deursen A., Klint P., Visser J., 2000, Domain Specific Languages: an Annoted Bibliography, SIGPLAN Notices, Vol. 35, N 6, p Eclipse Modeling Project, 2007, EMF, JET, and ATL, Hudack P., Hughes J., Peyton-Jones S., Wadler P.A., 2007, History of Haskell: Being Lazy with Class, 3rd ACM SIGPLAN on History of Programming Languages, p Hudack P., 1998, Modular Domain Specific Languages and Tools, In the 5th International Conference on Software Reuse, IEEE Computer Society Eds, p Hutton G., 1998, A tutorial on the universality and expressiveness of fold, In Journal of Functional Programming, Vol. 9, n 4, p Hutton G., Meijer E., 1992, Monadic Parser Combinators, In Journal of Functional Programming, Vol 2, n 3, p Karsai G., Sztipanovits J., Ledeczi A., Bapty T., 2003, Model-Integrated Development of Embedded Software, Proceedings of the IEEE, Vol. 91, n 1, p Lammel R., 2007, Scrap your Boilerplate with XPath-like Combinators, In ACM SIGPLAN- SIGACT Symposium on Principles of Programming Languages, POPL 07 Magee J., Kramer J., 2006, Concurrency: State Models & Java Programs, John Wiley and Sons Eds., Chichester, UK Mathaikutty D.A., 2005, Functional Programming and Metamodeling Frameworks for System Design, PhD Thesis of the Faculty of Virginia Polytechnic Institute and State University, USA Mellor S.J., Clark A.N., Futagami T., 2003, Guest Editors Introduction: Model-driven development, IEEE Software, Vol. 20, n 5, p Muller P.A., Fleurey F., Jézéquel J.M., Weaving Executability into Object-Oriented Meta- Languages, MODELS 05, octobre 2005, Kingston Okalas D.D., Mota J.M., Thiry L., Perronne J.M., Boulanger J.L., Mariano G., 2007, A method to Model Guidelines dor Developping Railway Safety Critical Systems with UML, International Conference on Software and Data Technologies, ICSOFT 07, Barcelone, Spain Object Management, 2006, Meta Object Facility Core Specification Version 2.0, Thiry L., Thirion B., 2008, Functional (Meta)Models for the Development of Control Software, International Federation of Automatic Control world congress, IFAC 08, Seoul, 6-11 juillet, à paraître Thiry L., Perronne J.M., Thirion B., 2006, IDM pour une conception intégrée des logiciels de commande, Conférence Internationale Francophone d Automatique, CIFA 06, Bordeaux, France

16 IDM' Juin Mulhouse Triskell project (IRISA), 2006, The metamodeling language Kermeta, Vangheluwe H., de Lara J., 2003, Foundations of multi-paradigm modeling and simulation: computer automated multi-paradigm modeling, 35th Conference on Simulation: driving innovation, p Wadler P., 2003, A prettier printer, In the Fun of Programming, p Wallace M., Runciman C., 1999, Haskell and XML: Generic Combinators or Type-Based Translation?, In the 4th International Conference on Functional Programming, ACM Eds

Générer du code à partir d une description de haut niveau

Générer du code à partir d une description de haut niveau Cedric Dumoulin Générer du code à partir d une description de haut niveau Ce projet vise à fournir un environnement de développement permettant de modéliser des UI Android à un haut niveau d abstraction,

Plus en détail

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur [email protected]. Le 23 novembre 2012

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur goulwen.lefur@obeo.fr. Le 23 novembre 2012 DSL Domain Specific Language À l'aide des technologies Eclipse Modeling Le 23 novembre 2012 Goulwen Le Fur [email protected] Le but de cette session Montrer : Ce qu'est-un DSL/DSM Comment implémenter

Plus en détail

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: [email protected]

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: [email protected] itemis France 2009 All rights reserved 1 Itemis en quelques mots Spécialisé dans l

Plus en détail

Formula Negator, Outil de négation de formule.

Formula Negator, Outil de négation de formule. Formula Negator, Outil de négation de formule. Aymerick Savary 1,2, Mathieu Lassale 1,2, Jean-Louis Lanet 1 et Marc Frappier 2 1 Université de Limoges 2 Université de Sherbrooke Résumé. Cet article présente

Plus en détail

Développement d un interpréteur OCL pour une machine virtuelle UML.

Développement d un interpréteur OCL pour une machine virtuelle UML. ObjeXion Software Prototyping made easy SA au capital de 500 000 F Siret 421 565 565 00015 APE 722Z Téléphone : 03 89 35 70 75 Télécopie : 03 89 35 70 76 L embarcadère 5, rue Gutemberg 68 800 Vieux-Thann,

Plus en détail

Extensions à la formation. Laurent Pérochon, 28-30 avril 2008, RMT Modelia, modélisation conceptuelle, formation UML, INRA Castanet Tolosan

Extensions à la formation. Laurent Pérochon, 28-30 avril 2008, RMT Modelia, modélisation conceptuelle, formation UML, INRA Castanet Tolosan Extensions à la formation Diagramme de timing FinEpreuve SautBarrière CourseAvantBarrière SautMur {>2 et 10 et 2 et 10 et

Plus en détail

Ingénierie des Modèles. Méta-modélisation

Ingénierie des Modèles. Méta-modélisation Ingénierie des Modèles Méta-modélisation Eric Cariou Master Technologies de l'internet 2 ème année Université de Pau et des Pays de l'adour UFR Sciences Pau Département Informatique [email protected]

Plus en détail

REMOTE DATA ACQUISITION OF EMBEDDED SYSTEMS USING INTERNET TECHNOLOGIES: A ROLE-BASED GENERIC SYSTEM SPECIFICATION

REMOTE DATA ACQUISITION OF EMBEDDED SYSTEMS USING INTERNET TECHNOLOGIES: A ROLE-BASED GENERIC SYSTEM SPECIFICATION REMOTE DATA ACQUISITION OF EMBEDDED SYSTEMS USING INTERNET TECHNOLOGIES: A ROLE-BASED GENERIC SYSTEM SPECIFICATION THÈSE N O 2388 (2001) PRÉSENTÉE AU DÉPARTEMENT D'INFORMATIQUE ÉCOLE POLYTECHNIQUE FÉDÉRALE

Plus en détail

Etat de l art sur le développement logiciel dirigé par les modèles.

Etat de l art sur le développement logiciel dirigé par les modèles. Etat de l art sur le développement logiciel dirigé par les modèles. Samba Diaw* Rédouane Lbath* Bernard Coulette* * Université de Toulouse Laboratoire IRIT Université de Toulouse 2-Le Mirail 5, allées

Plus en détail

Introduction du test dans la modélisation par aspects

Introduction du test dans la modélisation par aspects Introduction du test dans la modélisation par aspects Jacques Klein 1 Benoit Baudry 1 Olivier Barais 1 Andrew Jackson 2 1 IRISA/INRIA Rennes Université de Rennes 1 Campus Universitaire de Beaulieu F-35042

Plus en détail

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN Les contenues de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et ne peuvent en aucun cas

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

La démarche MDA. Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)*

La démarche MDA. Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)* La démarche MDA Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)* Référence : Livrable 1.1-5 Date : Mai 2002 * : Les partenaires du projet ACCORD sont CNAM,

Plus en détail

Environnement logiciel basé sur les modèles pour la conception collaborative de produit

Environnement logiciel basé sur les modèles pour la conception collaborative de produit Environnement logiciel basé sur les modèles pour la conception collaborative de produit Mehdi Iraqi-Houssaini Laboratoire LSIS-INSM 2 cours des Arts et Métiers 13100 Aix-en-Provence, France RÉSUMÉ. Le

Plus en détail

Une méthode d apprentissage pour la composition de services web

Une méthode d apprentissage pour la composition de services web Une méthode d apprentissage pour la composition de services web Soufiene Lajmi * Chirine Ghedira ** Khaled Ghedira * * Laboratoire SOIE (ENSI) University of Manouba, Manouba 2010, Tunisia [email protected],

Plus en détail

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon [email protected] Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

RTDS G3. Emmanuel Gaudin [email protected]

RTDS G3. Emmanuel Gaudin emmanuel.gaudin@pragmadev.com RTDS G3 Emmanuel Gaudin [email protected] PragmaDev Dédiée au développement d un AGL pour le développement des applications temps réel et embarquées. Réseau de partenaires: Formations, Service,

Plus en détail

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position Plan du cours : Le problème : naviguer efficacement une structure de données Ce qui ne marche pas Ce qui marche : les de Huet Exemples Comment dériver des pour tout type de données Pour en savoir plus

Plus en détail

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes PLAN CYCLE DE VIE D'UN LOGICIEL EXPRESSION DES BESOINS SPÉCIFICATIONS DU LOGICIEL CONCEPTION DU LOGICIEL LA PROGRAMMATION TESTS ET MISE AU POINT DOCUMENTATION CONCLUSION C.Crochepeyre Génie Logiciel Diapason

Plus en détail

Génie logiciel (Un aperçu)

Génie logiciel (Un aperçu) (Un aperçu) (sommerville 2010) Laurent Pérochon INRA URH 63122 St Genès Champanelle [email protected] Ensemble d activités conduisant à la production d un logiciel Sur un échantillon de

Plus en détail

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau labsticc.univ-brest.fr/pages_perso/babau/ Ingénierie Dirigée par les Modèles Editeurs de modèles (Eclipse Modeling Tools) Jean-Philippe Babau Département Informatique, UFR Sciences, Laboratoire Lab-STICC

Plus en détail

Eclipse Process Framework et Telelogic Harmony/ITSW

Eclipse Process Framework et Telelogic Harmony/ITSW Eclipse Process Framework et Telelogic Harmony/ITSW Boris Baldassari 1 Résumé Une introduction à Eclipse Process Framework (EPF) et au processus OpenUP, et comment tirer profit de ces initiatives dans

Plus en détail

Analyse,, Conception des Systèmes Informatiques

Analyse,, Conception des Systèmes Informatiques Analyse,, Conception des Systèmes Informatiques Méthode Analyse Conception Introduction à UML Génie logiciel Définition «Ensemble de méthodes, techniques et outils pour la production et la maintenance

Plus en détail

UNE EXPERIENCE, EN COURS PREPARATOIRE, POUR FAIRE ORGANISER DE L INFORMATION EN TABLEAU

UNE EXPERIENCE, EN COURS PREPARATOIRE, POUR FAIRE ORGANISER DE L INFORMATION EN TABLEAU Odile VERBAERE UNE EXPERIENCE, EN COURS PREPARATOIRE, POUR FAIRE ORGANISER DE L INFORMATION EN TABLEAU Résumé : Cet article présente une réflexion sur une activité de construction de tableau, y compris

Plus en détail

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language Unified Modeling Language UML Salima Hassas Version Cycle de vie du logiciel Client Besoins Déploiement Analyse Test Conception Cours sur la base des transparents de : Gioavanna Di Marzo Serugendo et Frédéric

Plus en détail

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools. 1- RAD Quelle sont les avantages que apporte la méthode RAD à l entreprise? Une méthode RAD devrait, d après son auteur, apporter trois avantages compétitifs à l entreprise : Une rapidité de développement

Plus en détail

IFT2255 : Génie logiciel

IFT2255 : Génie logiciel IFT2255 : Génie logiciel Chapitre 6 - Analyse orientée objets Section 1. Introduction à UML Julie Vachon et Houari Sahraoui 6.1. Introduction à UML 1. Vers une approche orientée objet 2. Introduction ti

Plus en détail

Patrons de Conception (Design Patterns)

Patrons de Conception (Design Patterns) Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques

Plus en détail

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e P r o b l é m a t i q u e OCL : O b j e c t C o n s t r a i n t L a n g u a g e Le langage de contraintes d UML Les différents diagrammes d UML permettent d exprimer certaines contraintes graphiquement

Plus en détail

BIRT (Business Intelligence and Reporting Tools)

BIRT (Business Intelligence and Reporting Tools) BIRT (Business Intelligence and Reporting Tools) Introduction Cette publication a pour objectif de présenter l outil de reporting BIRT, dans le cadre de l unité de valeur «Data Warehouse et Outils Décisionnels»

Plus en détail

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE» MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE» Du cours Modélisation Semi -Formelle de Système d Information Du Professeur Jean-Pierre GIRAUDIN Décembre. 2002 1 Table de matière Partie 1...2 1.1

Plus en détail

SQL Parser XML Xquery : Approche de détection des injections SQL

SQL Parser XML Xquery : Approche de détection des injections SQL SQL Parser XML Xquery : Approche de détection des injections SQL Ramahefy T.R. 1, Rakotomiraho S. 2, Rabeherimanana L. 3 Laboratoire de Recherche Systèmes Embarqués, Instrumentation et Modélisation des

Plus en détail

Université de Bangui. Modélisons en UML

Université de Bangui. Modélisons en UML Université de Bangui CRM Modélisons en UML Ce cours a été possible grâce à l initiative d Apollinaire MOLAYE qui m a contacté pour vous faire bénéficier de mes connaissances en nouvelles technologies et

Plus en détail

UML est-il soluble dans les méthodes agiles?

UML est-il soluble dans les méthodes agiles? Pascal ROQUES Valtech Training UML est-il soluble dans les méthodes agiles? octobre 07 Résumé On entend beaucoup parler actuellement de deux approches ayant l'air fondamentalement opposées : l'approche

Plus en détail

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. [email protected]

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr Module BDWEB Maîtrise d informatique Cours 9 - Xquery Anne Doucet [email protected] 1 Langages de requêtes XML Concepts des langages de requêtes XML motivations caractéristiques Navigation dans les documents

Plus en détail

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e : CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE Projet 2 Gestion des services enseignants G r o u p e : B E L G H I T Y a s m i n e S A N C H E Z - D U B R O N T Y u r i f e r M O N T A Z E R S i

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

1. Plan. 1. Plan...1 2. Information essentielles...2

1. Plan. 1. Plan...1 2. Information essentielles...2 Frédéric Fondement Curriculum Vitæ détaillé 1. Plan 1. Plan...1 2. Information essentielles...2 2.1. Résumé...2 2.2. Informations essentielles...2 2.3. Titres universitaires...4 2.4. Parcours professionnel...6

Plus en détail

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration Pluquet Frédéric July, 3rd 2012 Etude de techniques efficaces de versionnement d objets pour les langages orientés

Plus en détail

Synergies entre Artisan Studio et outils PLM

Synergies entre Artisan Studio et outils PLM SysML France 13 Novembre 2012 William Boyer-Vidal Regional Sales Manager Southern Europe Synergies entre Artisan Studio et outils PLM 2012 2012 Atego. Atego. 1 Challenges & Tendances Complexité des produits

Plus en détail

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Jade. Projet Intelligence Artificielle «Devine à quoi je pense» Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges

Plus en détail

Introduction aux concepts d ez Publish

Introduction aux concepts d ez Publish Introduction aux concepts d ez Publish Tutoriel rédigé par Bergfrid Skaara. Traduit de l Anglais par Benjamin Lemoine Mercredi 30 Janvier 2008 Sommaire Concepts d ez Publish... 3 Système de Gestion de

Plus en détail

Conception, architecture et urbanisation des systèmes d information

Conception, architecture et urbanisation des systèmes d information Conception, architecture et urbanisation des systèmes d information S. Servigne Maître de Conférences, LIRIS, INSA-Lyon, F-69621 Villeurbanne Cedex e-mail: [email protected] 1. Introduction

Plus en détail

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique NOM DE L'UE : Algorithmique et programmation C++ LICENCE INFORMATIQUE Non Alt Alt S1 S2 S3 S4 S5 S6 Parcours : IL (Ingénierie Logicielle) SRI (Systèmes et Réseaux Informatiques) MASTER INFORMATIQUE Non

Plus en détail

Information utiles. [email protected]. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/ Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : [email protected] webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/

Plus en détail

Problématiques de recherche. Figure Research Agenda for service-oriented computing

Problématiques de recherche. Figure Research Agenda for service-oriented computing Problématiques de recherche 90 Figure Research Agenda for service-oriented computing Conférences dans le domaine ICWS (International Conference on Web Services) Web services specifications and enhancements

Plus en détail

Rational Unified Process

Rational Unified Process Rational Unified Process For Christiane DAVOINE-GUHUR Société GICAB - Vannes [email protected] Table des Matières 1 INTRODUCTION... 1 2 LES COMPOSANTS ET LES GRANDS PRINCIPES DU PROCESSUS...

Plus en détail

CURRICULUM VITAE. Informations Personnelles

CURRICULUM VITAE. Informations Personnelles CURRICULUM VITAE Informations Personnelles NOM: BOURAS PRENOM : Zine-Eddine STRUCTURE DE RATTACHEMENT: Département de Mathématiques et d Informatique Ecole Préparatoire aux Sciences et Techniques Annaba

Plus en détail

1 Modélisation d être mauvais payeur

1 Modélisation d être mauvais payeur 1 Modélisation d être mauvais payeur 1.1 Description Cet exercice est très largement inspiré d un document que M. Grégoire de Lassence de la société SAS m a transmis. Il est intitulé Guide de démarrage

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli [email protected] Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

Plus en détail

Utilisation de l ingénierie des modèles pour la conception collaborative de produits mécaniques

Utilisation de l ingénierie des modèles pour la conception collaborative de produits mécaniques Utilisation de l ingénierie des modèles pour la conception collaborative de produits mécaniques Mathias Kleiner Laboratoire des Sciences de l Information et des Systèmes (LSIS) - UMR CNRS 7296 Projet Ingenierie

Plus en détail

Big Data et Graphes : Quelques pistes de recherche

Big Data et Graphes : Quelques pistes de recherche Big Data et Graphes : Quelques pistes de recherche Hamamache Kheddouci Laboratoire d'informatique en Image et Systèmes d'information LIRIS UMR 5205 CNRS/INSA de Lyon/Université Claude Bernard Lyon 1/Université

Plus en détail

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués International Journal of Engineering Research and Development e-issn: 2278-067X, p-issn: 2278-800X, www.ijerd.com Volume 7, Issue 5 (June 2013), PP.99-103 Solution A La Gestion Des Objets Java Pour Des

Plus en détail

Cours en ligne Développement Java pour le web

Cours en ligne Développement Java pour le web Cours en ligne Développement Java pour le web We TrainFrance info@wetrainfrance Programme général du cours Développement Java pour le web Module 1 - Programmation J2ee A) Bases de programmation Java Unité

Plus en détail

Plateforme de capture et d analyse de sites Web AspirWeb

Plateforme de capture et d analyse de sites Web AspirWeb Projet Java ESIAL 2A 2009-2010 Plateforme de capture et d analyse de sites Web AspirWeb 1. Contexte Ce projet de deuxième année permet d approfondir par la pratique les méthodes et techniques acquises

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

Classes et Objets en Ocaml.

Classes et Objets en Ocaml. Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.

Plus en détail

SECTION 5 BANQUE DE PROJETS

SECTION 5 BANQUE DE PROJETS SECTION 5 BANQUE DE PROJETS INF 4018 BANQUE DE PROJETS - 1 - Banque de projets PROJET 2.1 : APPLICATION LOGICIELLE... 3 PROJET 2.2 : SITE WEB SÉMANTIQUE AVEC XML... 5 PROJET 2.3 : E-LEARNING ET FORMATION

Plus en détail

Curriculum Vitae 1 er février 2008

Curriculum Vitae 1 er février 2008 Curriculum Vitae 1 er février 2008 Informations générales Cédric MEUTER Nationalité belge Né à La Louvière, le 16 novembre 1979 Adresse personnelle : Adresse professionnelle : Ave Général Bernheim, 57

Plus en détail

Editing and managing Systems engineering processes at Snecma

Editing and managing Systems engineering processes at Snecma Editing and managing Systems engineering processes at Snecma Atego workshop 2014-04-03 Ce document et les informations qu il contient sont la propriété de Ils ne doivent pas être copiés ni communiqués

Plus en détail

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML. Analyse et conception objet du logiciel : Méthode de conception objet et notation UML Rémy Courdier Email : [email protected] Rémy Courdier V2.1 1 Plan du cours Introduction au Génie Logiciel

Plus en détail

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire

Plus en détail

4. SERVICES WEB REST 46

4. SERVICES WEB REST 46 4. SERVICES WEB REST 46 REST REST acronyme de REpresentational State Transfert Concept introduit en 2000 dans la thèse de Roy FIELDING Est un style d architecture inspiré de l architecture WEB En 2010,

Plus en détail

Vérification formelle de la plate-forme Java Card

Vérification formelle de la plate-forme Java Card Vérification formelle de la plate-forme Java Card Thèse de doctorat Guillaume Dufay INRIA Sophia Antipolis Cartes à puce intelligentes Java Card : Environnement de programmation dédié. Dernières générations

Plus en détail

Élasticité des applications à base de services dans le Cloud

Élasticité des applications à base de services dans le Cloud 1/40 Élasticité des applications à base de services dans le Cloud Mourad Amziani 12 Tarek Melliti 1 Samir Tata 2 1 IBISC, EA4526, Université d'évry Val-d'Essonne, Évry, France 2 UMR CNRS Samovar, Institut

Plus en détail

Méthodes d évolution de modèle produit dans les systèmes du type PLM

Méthodes d évolution de modèle produit dans les systèmes du type PLM Résumé de thèse étendu Méthodes d évolution de modèle produit dans les systèmes du type PLM Seyed Hamedreza IZADPANAH Table des matières 1. Introduction...2 2. Approche «Ingénierie Dirigée par les Modèles»

Plus en détail

Vérifier la qualité de vos applications logicielle de manière continue

Vérifier la qualité de vos applications logicielle de manière continue IBM Software Group Vérifier la qualité de vos applications logicielle de manière continue Arnaud Bouzy Kamel Moulaoui 2004 IBM Corporation Agenda Analyse de code Test Fonctionnel Test de Performance Questions

Plus en détail

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Vérification de programmes et de preuves Première partie. décrire des algorithmes Vérification de programmes et de preuves Première partie. décrire des algorithmes Yves Bertot September 2012 1 Motivating introduction A partir des années 1940, il a été compris que l on pouvait utiliser

Plus en détail

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML http://olivier-augereau.com Sommaire Introduction I) Les bases II) Les diagrammes

Plus en détail

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Chapitre VIII. Les bases de données. Orientées Objet. Motivation Chapitre VIII Motivation Le modèle relationnel connaît un très grand succès et s avère très adéquat pour les applications traditionnelles des bases de données (gestion) Les bases de données Orientées Objet

Plus en détail

TP3 : Manipulation et implantation de systèmes de fichiers 1

TP3 : Manipulation et implantation de systèmes de fichiers 1 École Normale Supérieure Systèmes et réseaux Année 2012-2013 TP3 : Manipulation et implantation de systèmes de fichiers 1 1 Répertoire de travail courant Le but de l exercice est d écrire une commande

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Propriétés du Document EMA. Résumé

Propriétés du Document EMA. Résumé Propriétés du Document Source du Document FSN OpenPaaS Titre du Document Définition et exploitation d un référentiel de processus collaboratifs : Rapport de synthèse quant aux référentiels existants Module(s)

Plus en détail

Laboratoire 4 Développement d un système intelligent

Laboratoire 4 Développement d un système intelligent DÉPARTEMENT DE GÉNIE LOGICIEL ET DES TI LOG770 - SYSTÈMES INTELLIGENTS ÉTÉ 2012 Laboratoire 4 Développement d un système intelligent 1 Introduction Ce quatrième et dernier laboratoire porte sur le développement

Plus en détail

Elaboration de processus de développements logiciels spécifiques et orientés modèles : application aux systèmes à évenements discrets

Elaboration de processus de développements logiciels spécifiques et orientés modèles : application aux systèmes à évenements discrets Elaboration de processus de développements logiciels spécifiques et orientés modèles : application aux systèmes à évenements discrets Thomas Collonvillé To cite this version: Thomas Collonvillé. Elaboration

Plus en détail

Objectif du cours. Outline. Complexité des systèmes modernes. La modélisation et UML dans les activités du Génie Logiciel...

Objectif du cours. Outline. Complexité des systèmes modernes. La modélisation et UML dans les activités du Génie Logiciel... Objectif du cours La modélisation et UML dans les activités du Génie Logiciel... ESIR2, GL (LSI) Benoit Combemale Université de Rennes 1, ESIR & IRISA (Triskell team) [email protected] Identifier

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement

Plus en détail

Cours STIM P8 TD 1 Génie Logiciel

Cours STIM P8 TD 1 Génie Logiciel Cours STIM P8 TD 1 Génie Logiciel Compléments sur UML Intervenant : Anil CASSAM CHENAI Date : 02/02/2012 Objectifs du complément Ce complément sera approfondi en parallèle de plusieurs TD/Cours. Rappels

Plus en détail

Conception fonctionnelle de services d entreprise fondée sur l alignement entre cœur de métier et système d information

Conception fonctionnelle de services d entreprise fondée sur l alignement entre cœur de métier et système d information Conception fonctionnelle de services d entreprise fondée sur l alignement entre cœur de métier et système d information Jacques Simonin* Philippe Picouet* Jean-Marc Jézéquel** * Telecom Bretagne/Institut

Plus en détail

Big Data et Graphes : Quelques pistes de recherche

Big Data et Graphes : Quelques pistes de recherche Big Data et Graphes : Quelques pistes de recherche Hamamache Kheddouci http://liris.cnrs.fr/hamamache.kheddouci Laboratoire d'informatique en Image et Systèmes d'information LIRIS UMR 5205 CNRS/INSA de

Plus en détail

Stage Ingénieur en développement logiciel/modélisation 3D

Stage Ingénieur en développement logiciel/modélisation 3D Ingénieur en développement logiciel/modélisation 3D Schlumberger recrute un(e) stagiaire ingénieur en modélisation 3D pour la plate-forme Petrel. Vous serez intégré(e) au sein d une équipe innovante, Petrel

Plus en détail

Guide de recherche documentaire à l usage des doctorants. Partie 1 : Exploiter les bases de données académiques

Guide de recherche documentaire à l usage des doctorants. Partie 1 : Exploiter les bases de données académiques Guide de recherche documentaire à l usage des doctorants Partie : Exploiter les bases de données académiques Sylvia Cheminel Dernière mise à jour : décembre 04 PANORAMA DES SOURCES DOCUMENTAIRES ACADEMIQUES...

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas [email protected] PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Document Object Model (DOM)

Document Object Model (DOM) Document Object Model (DOM) Jean-Claude Charr Maître de conférences IUT de Belfort Montbéliard Université de Franche Comté Description générale Définit un standard pour accéder aux documents structurés

Plus en détail

Architecture Reconfigurable Hétérogène à Gestion Hiérarchique Distribuée pour la Reconfiguration et la Prise de Décision

Architecture Reconfigurable Hétérogène à Gestion Hiérarchique Distribuée pour la Reconfiguration et la Prise de Décision INSTITUT D ÉLECTRONIQUE ET DE TÉLÉCOMMUNICATIONS DE RENNES Architecture Reconfigurable Hétérogène à Gestion Hiérarchique Distribuée pour la Reconfiguration et la Prise de Décision dans les systèmes de

Plus en détail

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles Laurent PY CEO, Smartesting [email protected] @py_laurent www.smartesting.com Guillaume Coquelle Testeur,

Plus en détail

Devenez un véritable développeur web en 3 mois!

Devenez un véritable développeur web en 3 mois! Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web

Plus en détail

Présentation générale de la méthode orientée objet : O.M.T. (Rumbaugh & al.)

Présentation générale de la méthode orientée objet : O.M.T. (Rumbaugh & al.) Présentation générale de la méthode orientée objet : O.M.T. (Rumbaugh & al.) Bernard ESPINASSE Professeur à l'université d'aix-marseille Plan Introduction Les modèles d'omt Le Modèle Objet (MO) Le Modèle

Plus en détail

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence É C O L E D I N G É N I E U R D E S T E C H N O L O G I E S D E L I N F O R M A T I O N E T D E L A C O M M U N I C A T I O N Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION Mentions

Plus en détail

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG 07.11.2011

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG 07.11.2011 Apache Camel & Entreprise Integration Patterns Raphaël Delaporte BreizhJUG 07.11.2011 1 Speaker CTO Zenika Ouest Consultant et formateur Responsable comité technique Architecture d'entreprise Domaine ESB

Plus en détail

Le génie logiciel. maintenance de logiciels.

Le génie logiciel. maintenance de logiciels. Le génie logiciel Définition de l IEEE (IEEE 1990): L application d une approche systématique, disciplinée et quantifiable pour le développement, l opération et la maintenance de logiciels. Introduction

Plus en détail

Intégration de produits mécatroniques au sein d un système PLM

Intégration de produits mécatroniques au sein d un système PLM Intégration de produits mécatroniques au sein d un système PLM HOUSSEM ABID 1, MADY GUILLEMOT 1, DIDIER NOTERMAN 1, PHILIPPE PERNELLE 2 1 Laboratoire DISP, INSA Lyon 69100, France {houssem.abid,mady.guillmot,didier.noterman}@insa-lyon.fr

Plus en détail

Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P

Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P EUROCOPTER SAS Groupe EADS Marignane Ecole des Mines d Alès Laboratoire de Génie Informatique et d Ingénierie de Production LGI2P Nîmes Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P Titre Domaine

Plus en détail

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude INF 1250 INTRODUCTION AUX BASES DE DONNÉES Guide d étude Sous la direction de Olga Mariño Télé-université Montréal (Québec) 2011 INF 1250 Introduction aux bases de données 2 INTRODUCTION Le Guide d étude

Plus en détail

Comparaison de trois techniques de modélisation de processus: ADONIS, OSSAD et UML

Comparaison de trois techniques de modélisation de processus: ADONIS, OSSAD et UML Olivier Glassey Jean-Loup Chappelet Comparaison de trois techniques de modélisation de processus: ADONIS, OSSAD et UML Working paper de l'idheap 14/2002 UER: Management public / Systèmes d'information

Plus en détail

W4 - Workflow La base des applications agiles

W4 - Workflow La base des applications agiles W4 - Workflow La base des applications agiles, W4 [email protected] Vous avez dit «workflow»? Processus : Enchaînement ordonné de faits ou de phénomènes, répondant à un certain schéma et

Plus en détail

Systèmes d information et bases de données (niveau 1)

Systèmes d information et bases de données (niveau 1) Systèmes d information et bases de données (niveau 1) Cours N 1 Violaine Prince Plan du cours 1. Bibliographie 2. Introduction aux bases de données 3. Les modèles 1. Hiérarchique 2. Réseau 3. Relationnel

Plus en détail

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR Mickaël Bergem 25 juin 2014 Maillages et applications 1 Table des matières Introduction 3 1 La modélisation numérique de milieux urbains

Plus en détail

GL - 2 2.1 Le Génie Logiciel

GL - 2 2.1 Le Génie Logiciel GL - 2 2.1 Le Génie Logiciel Lydie du Bousquet [email protected] En collaboration avec J.-M. Favre, I. Parissis, Ph. Lalanda 1 Rappels La production logicielle est une activité complexe de façon

Plus en détail

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation ING 01 LANGAGUE JAVA Durée : 21 heures 1090 HT / jour Dates : à définir en 2012 Concevoir et développer des programmes en langage Java Comprendre le fonctionnement de la machine virtuelle S approprier

Plus en détail