DSLs pour le Développement Agile de Transformations
|
|
|
- Dominique Marcil
- il y a 10 ans
- Total affichages :
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
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,
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 Le 23 novembre 2012 Goulwen Le Fur [email protected] Le but de cette session Montrer : Ce qu'est-un DSL/DSM Comment implémenter
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: [email protected] itemis France 2009 All rights reserved 1 Itemis en quelques mots Spécialisé dans l
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
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,
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
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]
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
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
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
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
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
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,
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
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],
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
RTDS G3. Emmanuel Gaudin [email protected]
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,
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
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
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
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
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
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
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
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
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
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
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
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
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»
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
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
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
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
Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. [email protected]
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
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
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
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
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
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
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
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
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
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
Information utiles. [email protected]. 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/
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
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...
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
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
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/
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
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é
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
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é
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
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
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.
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
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
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
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
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
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,
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
É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
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»
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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...
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à
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
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
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,
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
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
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
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
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
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
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
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
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
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
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
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
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
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
