!" ! #" ! " # $ $ ! % & " % % * ########################################################$ '##################################################( ' ####################################################) " + % #############, &% &% " % % % . + ! % ' ################################################ / ############################################################ #################################################### (%$ ) 0 2 2 2 2 1 & " ################################################################### 1 * ############################################# ########################################################## ################################################## ######################################################## 3 4 #################################################### " ################################################ / ############################################ ######################################################################### * %+ , $ $ $ ( ( ( ) ) 5 - , ! * % ! %* .% / 6 72 . ! / 8 8 8 8 8 1 6 % % % % %* % ###################################################### ################################################################### ######################################################### ############################################################### % %* " " " " : $ % % % ! ! $ $ $ $ 0 % ( ( ( ) ) ) ####################################### " 9 ##################################### " 9 ###################################### - ########################################### " ####################################### ############################################################## !! 1( 2 ; 6 ' ##################################################################### , ######################################################################## , ############################################################### , ! & # % 2% $ % %3 & 0 5 7 8 & " ###################################################################3$ & ' ##############################################3( 2 & '##########################################3( & ' ######################################3) ##########################################################35 / " & ' ##########################################3, % " &< -' ##################################################3, =9 &+ .'######################################################! . ######################################################! 2" 9 &2 ' ##################################################! " + . ################################################!3 " . ########################################!3 " % " #########################################!! 0 % 0 $ *# 2 % 9 2 7 7 - " 9 / 2 2 % 0! 4 ' 6 % ( " $ 4 7 8 $ " !9 ######################################################!) " ###################################################!5 ########################################################!5 9 > ######################################################$ ########################################################$ ########################################################$3 $ 7 $ " 8 &! )* 9 !0 6 ( 4 &9 " ###################################################################$) / / ##############################################################$5 0 ######################################################################$5 /% ###############################################################$, 1 ? ################################################################( #######################################################################( / ##################################################################( " ############################################( /42 9 ###############################################################( @ A ############################################################(! 9 % $ 7 $ 4 4 00 + .###################################################################(( . ########################################################(, < - ##################################################################) 9 *# / % 9 2 2 2 2 % / " % 7 $ " 9 #####################################################) / " ##################################################) ###########################################################)3 ##############################################################)3 % #########################################################)! #############################################################)$ 9! + 2 $ & : 4 ' )* , %7 % 9& ! (+ 9: % % &% ' #########################################################)5 &% '#########################################################5 % &% 3' #############################################5 9 " &% !' #####################################################5 &% $' ##########################################################5 / " &% (' ###################################5 ; &% )' #####################################################5 +B &% 5' #################################################53 &% ,' ###########################################################5$ 9 " &% '########################################5( 6 4 &% ' ###############################################5) 6 7&% ' ##############################################################55 2 &% 3' #############################################################5, + 7 " &% !' ###########################################################5, 2 &% $'###################################5, 2 " 9 9 &% (' #################################################, 8 &% )'#####################################################, : % %7 C 0. 1 2 % ' ########################################################, ################################################################, " ################################################################,3 * ./ -( ; )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" ," 7 % % + " ! 2 7 & 2 7 0 2 7 9 % : % ' (%$ - % 2 2 2 ! = $ & % 0 2 7 9 ) : 4 % ' + " 7 % ! & 0 9 : ' - ! & 0 9 : ' !! ! ! !! !& !0 !9 !: !' && & & &! && &0 &9 % 7 $ % % %+ , 4 % % % % % % % % 4 % % *< %% 3 7 %% -5 3 7 + ,3 7 5 5 )3 7 5 % % % 7 % %7 7 % )> . ? @ > ! 3 + , % % %* % $ * 7 1 % % %% 3 5 % 7 % 7 8> . ?0@ % % 4 % %% 7 7 $ 7 % % $ 3A 5 B" 328C5 C% % % $ 6 % %3 5 6 %7 " %3 # 5 C 7 %7 41, " 7 8 2 7 * D 84 % " 7 7 7 % $ %% 7 $ E%6 28C 7 $ % " F" 7 7 7 $ CE%6 7 7 3 5 ,% % $ % CE%6 %7 G % 7 $ ,% " .% $ % " . $ % ,% % * $ * $ $ % $ 7 $ %7 7 % 4 > ? @ / 4 * % 4 F " 7 $ % 8 6. H "% / 7 7 % %7 7 * 4 " % 7 =7 % 7 % %% 4 4 %7 7 %7 * $ % , D B 7 4 %7 7 %% % % % ! & 0 9 : ' ! & 0 0 9 : ' : ! 0 9 9 : ' !! ! !! !& !9 !9 !: !: !' &&& & & & & &! &! &: &' &' 0 0 0& 0& 00 09 09 0: 0: 0' )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" )" &: &' 00 0 0 0! 0& 00 09 0: 0' 99 9 9 9! 9& 90 99 9: 9' :: : %7 7 %% " " 2 = "% F" 7 ,% %% * = "% % $ 4 5 % 7 7 $ " . % 7 7 7 %7 % % # % 7 % %3 7 % % % % % %7 % % 3 85 4 % A 3 7 85 " 2% %7 % 7 8> . C 6 % % 6 %7 " I %7 " % 4 " % 7 7 % 7 7 % % % 7 %% 7 $ 5 3 ?0@ % 4 7 5 8 28C 3 7 7 85 % " %3 3 7 85 ". 28C 3 4 28C 7 4 5 5 3 7 85 0' 99 9 9 9 9 9! 9! 9! 9& 9& 9: 9' ::! :& :0 :9 :: :: :' '' ' 9 > / 1 Introducción 1.1 + Contexto ! D ,, E " 1 * 0E 1 E ? 2< : + D E &1 *' % 7 - 1 * - " E " * F 1 / @ E E @ A 21C./E D " E + % " - % 7 9> F E - F - E F / F 7 % - 7 " " % " % @ E 9> &. .' 1 *E 9 " " E F 9 9> F < J 9> " . : + $ / F 9 " @ E F 21C./E &2 .' E 9 9 7 " E 0 @ E % E 7 9 F - 7 E / - 9 7 7 &% * G 9 'E : %7 .* % $ " % % E % + : / / 9 7 &% * / E " 9 'E 9 % " : % 'E F : " &!*0 ' 9 + > F E E : : : E @ D $ : > 0 : 9 &% 7 - 9 E 9 : > 9 " B 7 " H /E > $ % D : : " ! : # / 9 > / + > : D 9 / E B - - 9 1.2 + Objetivo del Proyecto / 7 B % G $ E D E " 1.3 : : - F - : - - /E - / 9 F : Método de Trabajo + - " B 2 E F F F> F F : - " : " E &: GI I@@@ /E 9 9I I' + J E E !E (E 5E 3 K " " + - 9 / 9> / J K 6 /E &' J ,KE B : : - 7 " F : + E & + B F 7 9 " @ A > /E F " ( : / -L @ &' >F ) )E - 7 : 1 9 9 " / 7 9 D " 1 * > " ( * # : > 6 : - . + , J3K L J$K 6 ( : - & E " / E J ,K 1 B E M B H : : J K -L ( " N : / >B E E 9 > / 3 -L " - E 7 9 / F 1 : " 0 H : : 6 / E " J 3E !E $E (E )K - E + : 9 : " 9 H 7 F 7 " ( 7 0 J K / " 9 " 1.4 Organización del Documento + B 7. + 7 7. - " /E 9 + 7 7. / F " E E: : F 6 /E 0E : 7. + 7. F $ 6 -L 1 : 7. / " 1 7 0 " : - & : B " / : 1 % > " " 7 9: F E 9H - " E - " F > ( E : / E " 79 7. E 9 -L : : : % - 2 34( " + : : - ! : - 7. L B + : 1 /( * / + @ " - : : - H / H E 7. 9 " ' > 9 > / ! 2 Presentación de MDA 2.1 9H Introducción 1 *E 9>E - / 9 @ AE " " 9 ," 7 < - 0 7 B 9 E @ $ FL ) 5 F /Q F @ A F @ E - E 9 ++ 9 / )" % OP L 21C./E 1 *E / - " E 9 D : " / E E % E " E E F / - G - F E - F E 9 E " 0 - / 7 : GI I @@@ 9 9I + E 6 # I 9 7 E 7 E 9 > / /9 $ 9 E @ / G % &( $ % F %* 9> $ &( * F % 9> K $ $ " ( % % ' 2 - 7 - 4 9> " 9 % * F " 9 + : B * (% 'E F " E % % 7 % % " " 9 7 M 7 NE 6 0 9 /E F 9 F H % )" 2.2 % % % Modelos en MDA Introducción a los modelos " + : : * 9 F L 9 /E % %* 0 9 7 9 = F + % %F % " E M N B " / %> / + ,E /E 9 F >F 9 F : M 9 F N 9 F F F> 0 : F F 9 9 > / ( 0E E % > % + 0 1 2 7 L / 0 EF F /E + 76 tipoTarjetaCredito = {"VISA", "MasterCard", "American Express"} tipoPago = {"Tarjeta de Credito", "Contra reembolso", "Transf erencia bancaria"} estado = {"Pendiente", "Entregado", "Anulado"} Cliente clienteID : String nombre : String +cliente nif : String email : String 1 login : String password : String +pedidos 0..n Pedido pedidoID : String fecha : Date direccion : String localidad : String provincia : String codigoPostal : Integer tipoPago : String tipoTarjetaCredito : String numeroTarjetaCredito : Long fechaCaducidad : Date estado : String / total : Single +pedido LineaPedido lineaPedidoID : String unidades : Integer +lineasPedido 1..n 1 0..n calcularPrecioPedido() : Single +animal 1 Categoria categoriaID : String +categoria nombre : String descripcion : String 1 )" + " +animales 0..n Animal animalID : String nombre : String descripcion : String precio : Single urlFoto : String % %+ , PIM (Platform Independent Model)3 F E + H F - - / > 9 > • E 9> G + E - H E E " 3 + 9> % /J K F : : L -L 9 % = 8 &2 - E / 'E 9 > / • ) " E 0 9 - ! % 9 9 + 3 Cliente Item id fecha n )" E % Pedido nombre edad 1 dni 2 -L ! 2 nombre cantidad precio 1..n 7 % " % % + , PSM (Platform Specific Model) 2 ) > F 9 - >F F % + % % F E E " 9 F D " E % > % % E : E % " 0 9 $ -L - % % % 9 0 + E + .! 2 G : D +. % B B 9 - L " % 0 F > & " UML & 9 ' & " ( * % % : E F $ - <<EJBEntity>> ! & !E % <<EJBEntity>> : : 9 - % H- H- " & ' 6 $ &1 / ( * 'E F D " % 9 1 /: - " - E ( * 1 / " Perfiles $ E H J)K 9 > / 5 )" 8 F & 2 7 F 4 % - 9 % 4 %E % Generación de puentes de comunicación. + % 0 %* • • $ - 4 2 % E9 % • E9 G % F F % % % : : 9 E " Transformación & 9 (' % -L $ - / - E E: 9 % E 9 " 9 F 9 + % : F % % $ % " 9 F " + 7 + " / 0 : Herramientas de D F F Transformaciones de Modelos ( 9 3'E B / > % % M " E 9 + N 9 > / , Generación de puentes de comunicación. Ejemplo de desarrollo con varios PSMs + 9 9 2 9 F % E % F 9 / > F % % F + % E " 9 7 % " 9 + 9 7 L 1 % $ 6 9 4 1 4 1 & " 1 ( (% E -L E ( ( 9 76 6 6 4 & 4 - > % 8 * & "7 : / * 8 : ( $ 8 & "7 $ : ; )" 2.3 0 2 7 % % 4 % Desarrollo tradicional vs. Desarrollo con MDA + > &' J ,K 7 /E ( + 9 F 9 - ( & : /F - R H +.R < -' E F 9 > / 0 : " B > > Problemas del desarrollo tradicional > C / 3 ! $ ( 0 9 @ 9 9 G F D 2 % " 9 ) F 7 )" H @ 9 % D : % % *< : : : F : 9 @ 9 @ 9 / - H + E 0 " E 9 9 E G DT' F S 7 : " 9 E E > 7 " " 9 F 9 - >E G E 9 H - E " 9 O+ & F >F 9 FL " 9 E 7 Q0 0 F 9 > / F - + F @ E D 9> 9> @ B 9 " & E N'E - F F F 2 : - E 9> + 7 9 E 0 7 E M -9 > -- F E % E -L = B E " - E 9 $ : @ : F + " F - " @ E E = > - B ' 9 " 9 E 9 " E - F D 9 " 9 ) F F F 9 9 + & F F 7 9> F - 0 F " F & /E L 9 9 Beneficios del MDA / " B " / - B 4 9 G% $ + G / & E 9 F > 7 9 ) : + + - - % % % E " E S % " E 0 7 9 % F > 7 % B % : " 9 - ' E M : D F N - : " > 9 > / G% 4 $G + /E % / L : % G $G0 % EF 4 - 9 F " EF 9 F 1 E 4 G $G 2 @ - " 9 % " 0 9 E " E % " : E " 9 . F F 7 " % F : : : 9 % 7 % = E F /9 2 "9 E " EF / 9> + -L : / 9>E 7 % % -L % 9 % E % D E F % " 9 / B % >E 9 % E El nuevo proceso de desarrollo / " 0 F 6 % - F % %E F % %G %E 7 %7 % M 9 % MG % F G E9 9 % + F 9 F " - E : F E - 9 - -L F F 0 D E * : @ 9 9 % 9 & $E * 9 " % % F " ' $G 7 " - 0 9 9 " 9 H F 9 > / 3 D E M F " 9 9 N E 9H /E H E @ * 0 % %* % 9 5 / ; 9 % F : @ " 9 /E F - % " )" E F " / + % % : 2.4 9 E : E " - % % F B : % E- E - % Visión Alternativa de MDA " / - J K 9 / - . 0 EF =7 % @ - " " G 7 9> : $ - C " /E 9 , 9 > / ! - : @ # $ E 9 D 7 F 9 F : / : 7 " 9 " + 9 " 9 3 2% F % 0 % 9 F : : 9> 0 9 F " 9 -L " - E : 9 > " 9 F ' (%$ 7 + " )" > : E 9 > / $ 3 Fundamentos de MDA 3.1 Metamodelado y MOF + B B FL FL / Introducción + F 9 / >E 9 " 9 9 % 9 E . - E 0 9 F 0 + 9 F F 1 * Las cuatro capas de modelado del OMG + 1 * F + 7 - 9> "B % 1 * M " /F > + 9 E E % + 2 -E N : - E E > E F B 7 L 6 6 ! < & $ 7 , )" - % % %% 3 7 -5 & 9 8 $ =* > 9 > / 7 4% % H @ E 2 ( EF 0 9 > + 7 L 9 E 8 $ =* 7 ? 76 8 & / 6 7 76 = 6 ? Articulo codigo : int titulo : String descripcion : String precioAlquiler : float diasAlquiler : int Cliente nombre : string direccion : string telefono : int )" 2 0 % %% 3 7 5 0 7 / 9 > E + E 2 7 - + 8 7 L / 1 / 1 /6 ! 9 1 / UML Class name : String )" + 2 0 % + ,3 7 > E 0 7 H + > E 3E 4 UML Attribute name : String 5 9 L 7 9 > / 1 *E 1 1 2 1 9 E E + ,% F B F 7 L / 9 1 / ) 3 + E * ! + / + )" %$ > H + 3 * 0 7 2 % ) 0 MOF Attribute name MOF Class name + % 1 3 F 0E ) + F 9 5 % )3 7 5 7 % D E 9 !E F 1 * 3E "F F 9 > F )% %. % 9 ! " B 1 * % E - G 7 2 U U + U + 3U 4 2 /9 N 2 M2 M - N + M 9 + 7 9 + - VM = V!5!, ()3 N M =N 02 N 0 M 1 2 N 1 Importancia del Metamodelado en MDA + 9 E * -9 + " -9W / F E % F : F H " E - 0 % E 9 " % %* $> 9 "E 9 " 9 > / )" 5 ! = $ % % % 7 % MOF / 1 *F E 1 ) 7 B * " : 9 % 9 &./ E - " " * % - G • 9 0 & % %G % 1 /99 E " ' 1 + F • K # $G 1 /99 * : • : 9 0 % 7 " 1 /99 - > 0 %G - E 0 % E 9 > / 1 /99& , 99 0 • % B " %G 7 / & F E - 9" • F - % 1 /99 E 1 /99 + * - ! 1 *E 1 $ '5 4 E " 0 - %G 0 + 9 1 E > 3 F " 1 )" 5 = : 9 & % %7 3E F 1 7 % E )> . > ? @ 9 9 > / 0 " 1 9 -L " & G 4 F - * - " 1 % % ? 0 5 ' S F -L ? 9 ' + : 1 -L E @ % &@ / > E 1 - 1 - 7 - 3.2 : E & / 9 * Perfiles UML E 6 $ + - 6 +B B " 0 G o - B 0 % F 0 E B - - F - * <<nombre-estereotipo>> 1 o 0 F " > * E L B o ! 0E F L M- L 3 + 9 9H F " 9 " " 120 B " " " F - & NE " D * - F 'E &V'E ( & 0 F ' " 9 0 9 > / )" % 0 2 7 > ! - F L *1 / - 7 E + , 3 - F 0 2 0 " > > E F 0 E 0 " 9> - " • / % " >- F B " B E " • /D • /D B E 7 " " F " 9 /D B H 21C./E 9> > 3.3 9 : E + . 2RRE F OCL ! - / B ! &120' - 9 " E E E E /9 120 + G - + + +B / J $K 4 % G • • 7 EF 9> * " 9 9 5 - " 9 B 120E B > F " 9 > 0 H / B " A E - - F F $ context Compañia inv: self.numeroDeEmpleados > 50 + 9 9 " : " $ " E F - 0 - context Persona::ganancias(d : Date) : Integer post: result = 5000 + H " & 9 $' 0 " " F " & - 'F L context Persona::getConyugeActual() : Persona pre: self.estaCasado = true body: self.matrimonios->select( m | m.finalizado = false ).conyuje / " E 120 " G 9 E " " F -L B E 9 0 B B " 120 = 9 " 120 - E 9 1 * P;6E 9 > / 3 4 Transformaciones de Modelos 4.1 Definiciones de Transformación * $ %* % " 9 • $ " 9H J KE 1 % " G %* % " E M 6 * 7 % 3 9H 15 * * (% ' ( N + E % 9 % + & 0E - E E 9 " E ' E 6 2 -L % E 9 7 %G ? ( (% 7 <<ComponentSegment>> & ) • " 9 $ ( * ( (% %* 7 * B 8 < C $ A $ > % % % > & " & " B C ( = 6 $ % 3 F 15 - E + 9 % % % " E > % 2 7 G ( 6 0 % 0 % " * & "7 (% D * E " " *6 % L 9 E + 7 9 > % E & E 7 & "& $ ( 9 7 - % $ B F $ E 9 > / ! % - 9E " " > E - 9 /> E F 9 > 9 " E " % " > > F % E F FL - 9 - - FL " 9 % - 0 FL % 4.2 Características Deseables de las Transformaciones % 9 J ,K " &' - % F B / + % /E F > + - F - > > E %* %> 0 E E # - B ) %% 9 Ajustar las Transformaciones + F F - > 9 F + 9 : - " " G • G " - + FL FL " E • B- E F % 9 + > G M3 FC * • L % 9 " F % 9 9 %G " E - F - ' $G - > > D % - <<persistent>> 7 % L + 7 %* %* " E E B M - N H- & " " % G <H,> > 9 E % 9 E > 1 9 > / $ 9 " " " 0 - L 0 " Trazabilidad 0 9 F 9 : F /E F 9 9 -L 7- > > % % + - 9 0 7" 9 " H - F -H F 7: 9 % : : F - : " % -L H " " 0 % F " 9 Consistencia Incremental = E 9 EL " 9 9 E F F - 2 FL + B - - B E F 9 E 9 E " - " F 9H 7 " - -L 7 " 9 - E B + 9 > Bidireccionalidad 0 F + 0 / - E F E - F 9 G H " " " " + > : : E 9 : F " - E F " - 9 % 9 > / ( E 9 " 4.3 " : + - E " 9 E 9 9 9 Herramientas de Transformación = 9 / " @ AG 0 " 9E " > E : F " - " " E " 9 - @ + / 0 9 : : / / 9 L " " 9E E / + : E9 : E EF " Herramientas de transformación de PIM a PSM % : - : 0 : &;L % : % F E + B : La herramienta OptimalJE F 9 3$' Herramientas de transformación de PSM a código + % / " 9 % & 9 " " &% " 9' 0 " 9 : : : " 7 + F 9 " - E 9 ' 2/ + : F F " % &% " 9 F F % " " 9E " 9' Herramientas de transformación de PIM a código 1 % : % % " $ > F F " 9 + % " 9E F 9 E F E > B % % 0 : B > E F 9 > / % Herramienta ArcStylerE ) 9 9 $)' La " 9 &;L Herramientas de transformación ajustables 0 = : / - > * F ! + E : 9 : E 9 : 9 ,'E L - " 9 > > > : &;L 9 P;6 : - 9 % EF 0E " 0 + 0 > 9 : -L -9 : " : - Herramientas de definición de transformaciones H : > F E - : F - : : - 0 9 H > 0 " 9 " : % &P6;' E >F 9 9 F Otras herramientas 0 : /E " H F 7" 4&' + J ,K 9 F /E " G 2 + % &'E C $ " 7 &% " E ) D % $ " & " " / F E B 9 " 9 " 9 B 0 : E F 9 : : % G 9 > / o / 7 5 9 E o * =7 % : " 9 F : 7 : % + - B F : B F % 8 ( " 9 - : F 2 9 0 9 + F - 9 * % 9 " : >F %* * ) E 2/ + 9 =7 % 0 B E % 0 B * B " 9 ? 2 : % %E %* %E F - / )" 0 H : > 9 ) % : 0 2/ + - E 2/ + 9 : : E " 9 " : 9 > 4.4 / , QVT 2 $7 # 3 * &P;6' 1 + F 9 : EF 1 E G 9 9 9 7 - - 0 H 0 /E "B > B E - B P;6 - 2 34( J )K Consultas 2 120 9 J $K 4 4 4 E 9 2 0 = +B : " 2 34( > " - G 7 9 B 9 7 9 120 : Vistas 2 34( F " " = E 7 E " F Transformaciones 0 J )K / 0 9 E 5 B 0 9 • = % 7 % %* %G = %G - E F - 9 : F 6> " : F 7 9 > / )" • 3 : 4 % % %* % 1G E / * E 2 7 L / 9 F , 6 * 6 5 >7 8 8 * 6 3 * 5 6 )" 0 = 5$ < * 5 ' + 2 34( E $ * 7 -L 1 9 $ 1 1 06 , % 1 0 5 B - X F " 2 7 G 1 ! * 8 8 * ' 9 relation IncrementoSabiduria { domain { (Persona)[nombre = n, edad = a, sabiduria = w1] when a + 1 < 13 or a + 1 > 19 } domain { (Persona)[nombre = n, edad = a + 1, sabiduria = w2] } when { w2 > w1 } } 9 > / % 7 3 ! 6 A 7 ' ?I A >7 6 (Persona)[nombre = n, edad = a + 1, sabiduria = w2] 8 A < / ?+ $ ' 8 ! 9 > / 3 5 Criterios para Evaluar Herramientas MDA + 9 - : " / " ( : F : " - " : - - " /E 1 - F J K F : -> : -> : - / : 9> E: 9 " E 9 D / " - G % " % % 0 : F % % &% ' 0 : F F F 9> " % 3 % 0 &% : 7 % ' 9 E 6 F 9 " % H M % $ - % -L 9 " E N > 9 0 : E D : % ! " " B " : % ( / " 0 : " B F % ) % 5 ; > 9H E +B : F % 0 : % - % , " % 9 B % " 0 : D " % E % " 9E B % 9 " 0 : : E 9 6 -L M " 9 % - E % - N 9 > % / 6 33 4 % % % % % 6 7- 9 9 % 3 2 E - /E " E % ! + 7 " 0 : 2 / % 7 0E 9 ? 9 E % DE 9 - B B 1 " 0 : E E 7 E % $ E % " 9 % E % % E - % ( 2 " 9 9 0 " 9 F 9% ) 8 " 9 / " E : /G : E 9H " 9E 9 E - : - E 9 E : " % EB - E ! G $ % 7 $ > 3 ! 5.1 . +B Caso de Estudio. Tienda de animales (Pet Store) % : " : E 7 3 > - > ( ++ J ,KE 9> " : : F % L 7 L + - > / : < 9 E < - 9 " G 9 I " + @ : F " B > > F 9 > / / 2 C 2 3! " - 9 > 7 " 7 % E E / " - F 9G F > L E - 0 ' 9 > & E9 > -L " - 2 E E " E F 9 9 tipoTarjetaCredito = {"VISA", "MasterCard", "American Express"} tipoPago = {"Tarjeta de Credito", "Contra reembolso", "Transf erencia bancaria"} estado = {"Pendiente", "Entregado", "Anulado"} Cliente clienteID : String nombre : String +cliente nif : String email : String 1 login : String password : String +pedidos 0..n Pedido pedidoID : String fecha : Date direccion : String localidad : String provincia : String codigoPostal : Integer tipoPago : String tipoTarjetaCredito : String numeroTarjetaCredito : Long fechaCaducidad : Date estado : String / total : Single +pedido +lineasPedido 1..n 1 LineaPedido lineaPedidoID : String unidades : Integer 0..n calcularPrecioPedido() : Single +animal 1 Categoria categoriaID : String +categoria nombre : String descripcion : String 1 )" + > - " % - 7 - %% 0..n 3 5 " F F " - = % % +animales : : FL 9 /E - Animal animalID : String nombre : String descripcion : String precio : Single urlFoto : String E 9 D " " 9 9 > / 3$ 6 La herramienta OptimalJ 0 : &% : 7 7 'E 7 /F & 9 % 8 22 ++ / 0 " 7 " ( * & " 3 6.1 # ' F : 8 - & , 7/ ' - -L " 3 " : E >F " 3 " Arquitectura de OptimalJ Introducción 1 1 E 0E ? . E @ A /: E ? 0E < 0E ++ 9> 9 G o & F 'G 9 E % " o $ & 7 'G & ++' 2 9> % " o 'G " 9 $ " 3 " E9 " / E1 G % " o % G ". &3 5 % &% o +F " $ ' 7 " &% $ &% ' " 9 'G " &% ' 'G : 9 > / 3( % : + I " 1 o G & % F o E 'G E % $ & 7 E o " $ " & % 'G " 9E 9 - - 'G F + 7 * - J K F 1 )" 7 % % 7 % +B 7 8> . ?0@ " "B Modelo del Dominio (Domain Model) + 1 + % % % & 7 4 ' G % 7 % % %3 + " % % " " , 5 9 " 0 + - F - 9 > /F > 1 / E 3) E E( E + 9 ( )" 4 + %3 4 % % - E E " + & 5 ) ! % . E E 9 & & E 7 " 9 3 'E " H + >E - ' " E " ' )" 4 % # 9 > / 35 0 F 9 + .E B- " F F : : % 1 & % 9 F 7 - % E ' 7 F B E " % B " -L 2 - 9 " E + &# ( " " L ' 0 &( : " L " E - + # F " )" ! 0 %% >E 7 7 H 0 D $ 7 0 7 E- >F % - D 7 E E 3 " 9 ! " 9 ! ' % E H D - G 9 > / 3, Modelo de Aplicación (Application Model) 7 E1 $ & 7 : ". F ++ + + " % " - 9 $E % 9 'E B" % G % C% - "B )" % & $ 3A + " E 9H • 8 • : • % $ 3A 5 " ++ G : G 5 : • 5 9 < @- G G " 7 8 : G 5 L " " : H F> " ++ % ++ J !K F E 9 > • / 3 ( ! 8 : G " " % & " 9 $ + 9 ?? 5 ' % F < - 9 E 2 -L " 9 6 &# $ " ( =" # 9 ' F 9 < &+ .' " B" + 328C5 & " E " 9 & E E - +. $ ' + E -$ / F -H F E " +. )" 2 &+ .' J)K 9 E 1 E 5 9> + . J)K L - 0 9> +.9 L 9 D B" 328C5 E E E & L 5 E L E " ' < - 9 > 0 / 9 ! ( % 9 +. 9 +. 6 E -H F & 9 E F -L F 9 & calcularPrecioPedido()' findByCliente()E findByFechas()' E L C% L % 0 ++ 0 B : % E - " H - E " - E 1 9 C% % ". + % - 1 - 0 4 + 9 F ) E - E E - )" E E ( 9 C% % Modelo de Código (Code Model) 79 " E1 / % + " 9 9 9 " 7 " $ " : $ "9 9 &+ .'E - " &< -' 7 + E " E : 9 9 9 9 > / ! 9 + .E + " 9 6 F = E . -L F 9 1 ++ + " 9 9 " E " 9 " 9 9 1 < - 1 " 9 9 : E % ? 0E P0 H 6 %7 E1 D 9 E " 9 % + " 9 = 6 % " 9 9 % 2 " E 2 " L 7 L & : 9 B E - F 5 *5 calcularPrecioPedido() ( 8 8 8 6 < = ( $ = = ! >7 * $ 6 6 7 7 = 5 " 6 8 E 7 6 8 8 )" : % $ 6 % - %3 5 6 %7 " %3 # 5 6 9 > / 1 !3 -L " 9 7 " 9 9 9 " F : Implementación del modelo de EJB 0 +. 9 1 E +. 6 +. 1 + .G • • • 9 E - 9 & "G +. & " 5 G & " & " -$ G & "-$ • 9 • F +. & " " H & "& G H & " 8G - - H - & " 4 D E F 9 J$ F 9 G +. % > 6 0 L + % 7 H • +. -L " & % 'E & ' + 9 " ++ % " 7 %7 " E 1 28C -L Implementación del Modelo de Base de Datos + " - - F 9 1 I - - " P0 - . 1 P0E F .2 & -L , % P0 9 - E1 $' 0 : -L 9 9 1 +. 9 : ++ -L 9 & /C'E F ++ % E ! & /1' 9 - 9E + . 9 > / " E F 9 !! 7 F 9 )" % 1 7 " - ' C 7 "% - %7 41, " : % % 7 E 8 F % ) : " . 1 E F Implementación del Modelo de Presentación 0 " " E % + " E 9 " 0 1 % " % " E @ -86 0 # E 9 .1CC/C 1 2/C " &< -' < - % % 9 &+ .' +. B + E $ E 7 - +. 2 + .E - 9 < 0++CE 2C+/CE " " 9 9 > / 1 7 D J KE ;2 7 " % D -L < -&: % !$ " 4; F "9 B - 9 E % 9 ' + 9 " < -- : $ % 5 - " : " F F = - E : " D 7 < - 3 )" 1 4 DE D : : - F - 2 E F " % @ < -E B -L F " 9 < -E + 7 H & 5 % 9 + $ & • 0 0 - EF G 2 : • 0 * < J) & ;2' 0 F H %E 2 " " 42 9 - 7 % 9 1 " - F *D 9 84 % " 8 -L F 7 86 0 Y < - : 7 7 % $ F 9 > / 1 -L +. !( % % % EF - 84 % - " 9 6.2 Construcción de la Aplicación Pet Store con OptimalJ + " 0 1 - + 9 E - " &% 9 : 9 7 E % " G < -E 9 + .E - 9 $ ( E 9 ) " 9 L - % - E " E " E " 9 E : F F H E F : 7 " " 9 G • % % • 6 • • * + • E % E E 9 " -H F " F Z % 'E F / 9 % % % + Z B % E%6 E -H F 9 >E 7@ -9 E -H F : E -H F E % F 9L * - %E % =E % " % % E + - % % 9 F" % E : F -L F " G7 %%< • • - % %6 E E % % " $ E " @: - " : 7 &# ' F 9 3 E -H F = - 1 " L + .( E F " " 9 9 + - " " 9 -9 - 9 E - - 9 > / )" 6.3 %% !) 7 $ E%6 28C Interfaz de la aplicación generada + 1 7 0 : " G3 / " E9 9 " * . < -E E 9 " < -E E "B Comprobación de seguridad 0 " E - " 9 9 1 " " 4 % G G % G 9 " B " @ 4 3 E + -L " )" @ 7 $ % " 9 > / !5 Página principal de la aplicación 6 " E 9 )" 0 9 33 F" 7 9 " EF " 7 7 2 $ E F +. Mantenimiento de Animal / F E -H F E )" + ! CE%6 7 9 B 1 1 G 9 G ) ) " 9 7 3 9 9 3! 5 G " " " .G 9 G 9 -H F -H F 9 > - I 9 > / + [\Y : !, > E F - " &' > [\Y % E 9 3$ - )" + 9 E / 9 3( 9 >% E 7 [NY -9 B -9 * : - % " % 2 & ,% 9 [#Y E 9 E 0"9 E H 9 > / )" $ 0 $ % ; E E % H : * D E 7 % 6 - " % -L 9 > F E " 0 9 -H F E + .E F > [\Y & > )" 0 5 E L 9 CE%6 Mantenimiento de Categoría 9 3)E -H F ' [#Y & %7 +.; > G " % 7 $ ' 9 > / / $ " 9 > 9 -H F / 9 > - " &' 9 >E 9 > &: 9 )" 0 3, > 9 > 9 >E 9 > %@' + 9 ?( : ,% " " 35 " .% 9 > )" % H E &1 ) E E ' $ % 9 " .' L 9 " . -H F - -H F 9 I 3) " Mantenimiento de Cliente + " E - E I " &1 -H F ) : ' F / D > -H F 9 0 > / 9 ! 9 ! $ 9 )" " !- $ )" + 9 9 9 ! 7 - ! " / " E % ,% % -L E 9 > / )" $3 ! * $ * $ Mantenimiento de Pedido + 9 >F F F> + 9 % B 9 - " 9 *5 1 !3 : F & % ( 5 E E % H / E /F > - EF 9 " 3 ! ' - - F > 9 9 F - " !! F E > E F F % : % E % - " 9 > / )" )" 6.4 $! ! $ !! % $ 7 Evaluación de OptimalJ + : 1 9H Criterios para Evaluar Herramientas MDAE & 9 3 ' 0 9 " G B 9 - 9 > / 7 $$ $ % % ! % 1 % % % 3 % E L - 3 &. B- E " E + 9 % E + . < -' + < 9 " % E & ++' / % ! 9 " ! D 0 % 9 E % - +. >E : : - % 9 > E - >/ E " < -E 21C./ : F % $ % ( - ! / 1 B >? + ( * * & " - 9E % ) ; 3 M " N & 5 0 : : E - E % % EF " + - % 5 9 . +B " % " 9 % 2 " % E " &< -'E B F -> E - : B7 " % , ! 1 : H E " " 9 & % ! 9 " 9 2 0 : 9 " " 9 / : 9 B E % E - % % " 9E % 9 + 9 % : : - 6 4 " 7 " 5 / 6 6 M N " 9 E 7 % % % E " 9 E 6 7- 3 1 % F 9 % E +. % F " " 9 9 % 3 > / 2 3 $( 9 0 : E -E 9 E DE + 7 " ! 2 F 1 / 0 IB % $ 9 >? / F E / 1 2 9 " 9 3 + " 9 9 9- % D F 8 3 : - " 9 = E " 9 " 9 - " 9 / " + " F E1 + : -L &6 E - 9 % ) -L : % % ( " E = 9 % ! " E 9 ' + .& . 7 ' - & I % .'E 9 > / $) 7 La Herramienta ArcStyler $ % ! J K @ : "B " F F : /E : E 7 ( " / 9H B 0 " 7 7.1 Arquitectura de ArcStyler $ )* 8 , 7, -7 Introducción / " - : " 9 4 F " E E 9 E . > : 0 F " " 9 / 9 9 : M -L / " N 4 > E L " F 9 / B ++E + .E =+6E E 4 < -E / -L H % / @ 9 9 - : E % * E / /42 & ' -L 9 - E /% 24 1 ' 0 9 !$ & 0 " E / 3 / 9 / 9 : : : : B F 9 > /CI+/C 9 L - E 0 F 0 1 F : G 9 > / $5 : /=6 9 " 9 )" !& $ %7 7 % 4 F / J 5K E 9 > ? @ D 9> E : 4 &' E $ : " 9E MDA en ArcStyler + B - " / 7 / + , 2 - E+ , 9 / / !E H 9 : / " !( : / : 9 0 : 0E 0 " ! 9 : : 0 / / + " : ( - " 9 % E " AE E : F ? 0 F 9 > / )" $, !0 / 4 * % / ( * B B 9 Perfiles UML / + 1 / F * 0G • • • + 6 )" !9 * % 4 / 9 > / 2 ( E - > F E F & 9 F 0 9 - ' 0 * 0 0 9 F E !) % * F * 9 9 > / * 0 + .E / 2 " * > ) O / E ) E 0E ? MOF & 9 5'E O 2 1 F ? 0 " / ? % B ? / E B : ? 8 + & 2%' % * 9 " $( ? - E 7 + 9 " E " " " / L B" > 9 : + - + E 9 F + / 9 H F " E / : F 9 H F D 7 -L - Marcas MDA % : F 9 F E + : - 7 + E O " : 9 F D " > 9 Q 0 " H F ' + F 4 " F & > 9 > / ( 2 M : E N E + E: B - 0 F 9 !5 9 /42 +. 9 9 4 4 " 4 ( G 3$ G / % * - G 9 E & & $' 9 G /42 G 4 - > /F > ; " - E 9 - & 9 (E " ( F ' & * ' )" : : - 9E 0 !: F " 7 B " 0 F E 0 E D - E " 0 & 3E E/ 4 > F + F % F : % 2 $ " !E F : " 0 F 'E 9 > / ( 0 E 9 " E " G 6 + ; F 9 H > 2 F F %* $ % Transformación & 9 3' / " & $ ' J K " 9 Definiciones de F & %F 7 ' " - Funciones de transformación de modelos 0 * " 9 % M $ F H %* N " : 9 E " E : 9 "9 : > E - E " 9 E : " B F " ? 0 0 9 E E > 9 E 4 " " 0 " 9 : NE " F 9" 9 " 1 " E % " + " / E " " 9 - > 6 : 9H 9 9 : 9 < -& % E 86 0'E E / M / : : > " > F FL " MDA-Cartridges % " / E : 9 1 % 9 7 " F E B F 7 " 0 9 4 F 9 > / / (3 " # / % " 9 +. F : E " E F F / +. F G 35 4 " 53 " " 9 2/C/6 + 9 - 9 - /42 - / - E/ B )" !' 8 6. E !, 2 E B "% " E / 4 4 9 9 H 9 : 4 / 0 / 21C./E =+6E + . 9 5 E E : " / B 4 : % - M: N " F 9 4 4 F % -L E 4 ; : F 4 B 9 % !, E 7 +. : 9 > / (! E : * J (K - E 7 F> Framework Accessor + @ A / " + - / " E " E 9 E + 9 " 9> ( E 9 " 9E / + % : + : E 0 + 9 H 4 - 4 F & ;2' + " ;2 + - - F 7 B B " 9 "9 9 "B ;2E E F > - + 9 0E - 4 E 9 % - D / % =+6 0 F 7 E ;2 C 6 F E : : / 9 E $ 7 - 7 7 9> < - + 0E L $ A %E 9</C F : " F " 0 % + B % + , 9 + 9 0G • 4 ) G F • . ) " 9 2 B 9 & 7 ' E : G - 9 " 7 > - & 9 > / )" &- / ($ 7 7 % %7 9 7 * 4 ( 9 - $ E F 9 + 9 E / 9 E K 1 K EF K + $ )" & " % 7 9- E F - 2 7 1 0 - " E " 1 |RE|::vistaLogin::root::nuevoUsuario 7E % : E 9 > / (( - " 9 6 9 -L $ E 7 EF 1 " 9 79 " 9 % E " |RE|::vistaNuevoUsuario::root::aceptar 7 D 9 )" + 7 % @ A $ F B- 7.2 & =7 % %% " E E 9 F Construcción de la aplicación Pet Store con ArcStyler + B " ( / 9 9 + " 9 E 9 9 4 9> " 9 : " H " E 7 E " E " / / % J !K Modelo EJB % 9 + ." " +. : 9 ( L?&A 4,:'E !, / E: " " E <<ComponentSegment>> % " • 7 & ' 2 H 7 " G +. " +. 7: E " 9 +. " 0E 4 /42 : 9 0 9 9 > • • • • • • / 7 7G 7G & & " &" ' % ' ' & " 2 -$ () ' . - +. & -9 ' 9 & -9 4 - 9 )" % & 9 9 $3 <<ComponentSegment>> < 05 &+ . I E + : 4 F 9 &! 0 9 : / 4 + .E / & F ' )" ' %7 : " E E - E : E E M ' N 9 2 > / 7 G / 0 (5 MH & "??N) , 4 6 ( *( 6 7 % F / + .E & 9 : ' 0 9 " )" && 7 7 %7 9 E/ : / 9 E * $ % " 9 : : A /=6 - BE : ? 0 )" &0 , D B $$ " 9 2 " 9 ' +. + .E / $- $ 9 & & * 7 4 9 > / : : /=6 (, 9 E : . 9 / " 9 9 E E - < -0 9 - + 9 E E $( : Modelo de Base de Datos / F E F + . &<0 5' 1 E > / - B +. + B - + .E +. % % - - 9E K Q < 05E 7 - - $) )" % & E +. 3 - " O2" 9 B > K H &9 %7 ' & & 1 6 'E )" &: 7 %% % % % E E 3$ 'E & 9 %7 #K ' $5 7 %% % 9 > / ) Modelo Web 0 < : + Framework Accessor F % " ( : @ A 4 9 (!' % 7 &;L < -E 9 3 < -: " % : = " E B + F E F B E L 9 $, )" &' + 9 " % %7 " % % " % " F E - > + F 9 + F > 9 % 9> @ A ( " E &/ G ' 7 " & F : " G / E G 9 ( G 7 " E 2 9 0 ( + 9 9 ( 9 ( ' :> 9 > " / 3 ) Interfaz de la aplicación generada & 9 EF ) ' )" 7.3 0- " % % 4 5 Interfaz de la aplicación generada + - 79 " ( Acceso del usuario al sistema / 7 M " E - E : C 9 6 B / % - D M )" 3 ( C 0 2 %% 9 E 9 > / ) -L 9 + 9 * % 9 F : * )" 2 - " 9 ( " E 0 = "% % - " 9 Página Principal de la Aplicación 7 - DE " 9 9 > 9 > 9 > (3 + 9 - " - " 7 )" 0 " " F" 7 9 7 9 7 $ 9 > % / E )3 7F 9 : " E 9 C9 ; ; F * - 7 9 " &- " % &- " ( ' 7 &- " G ' ' Consulta de Animales 7 9 >E 9 >E 9 (! - E E 2 D 9 - " A % " E F " E > : F 9 - " " )" 0! , % % " . Carro de la compra 2 7F D E &- " [4[' E 9 & 2 - " ($ E 3 F> &- " & ' 9 9 D &- " [O.' ' 9 > / % E )! - - " )" * 0& ( 7 Confirmación de Pedido / - " * " ( " 9 )" % : 9 E 9 - " 9 E ((E 9 00 * $ 7 9 2 F )" 09 = "% - " % - " ( 7 ()E 9 F 9 9 9 > / )$ Consulta de Pedidos - " 9 ( 9 () * (3 7F 0 7 9 (5 9 - " & > /= 0/ 1' )" 6 -L % / 0 % " 0' % 7 Evaluación de ArcStyler " : $ 9H Criterios para Evaluar Herramientas MDA $ % ! % / % 9 % # (, 7 % % F )" 7.4 %7 > - " 9 0: % / + 0 9 =1 % % E % B > 9 > / )( 9 % 3 % ! " 9 0 : & E + .E < -E 21C./E 2/C/6 & 4 E 0 : F H E < -/ + .E 9 F " - 9E " 9 M 9 N F 9 " / -L B > ? 0 " /42 9 B B + /42 9 =+6E 53 % ! 9 " % $ % ( / ! ! " ' / 'E E9 - " F % ) ; +B 2/C/6E : E 2 /42 9 0 F : + . < -/ E 9 9 " " 9E : E > F % 5 +B ! % , 3 0 B &+ . < -/ E E ' 2 F < -/ &+ . 0 4 ' 7 " E " 9 +. % 3 9 " / + F = - - - 9 " 9 9 E % 6 0 : 9 + .E 9 J (K = E 4 % 6 7- & / % ! + ! 7 " ! E " 9 E %' / 9 L @ A 7 : F E - 2 E " 9 % 3 " 9 " 9 " 9 : " E E 9 " 9 0 : 9 E DE -E " & . 'E F / 6 -L F E F : / " : - 9E " 9 G 9 : % + B 9 9 - 9 > / )) /G 0 9 E? - 1 1 / E 7 % $ 2 ! 0 " E 9 % ( 2 9 " 9 ! B- + " 9 9 : - > " 9E - 9- / F 7 : " : " 9 B % ) 8 3 / 9 E/ : &3 ' : K3 F - E I % 9 E > : +. E : / : . " &" : &( " ': + 9 + ' F > / F : E : - F 9 > / )5 8 OptimaJ frente a ArcStyler. Estudio comparativo 6 : " B > $ E 9 Herramientas MDA & 9 3 ' F - : % E B H : L E / 9 E : $ 8.1 : " Criterios para Evaluar F E * F % Aspectos MDA Soporte para PIMs (P01) 6 - 1 / + & 1 " E % ' + - > " " & % $'E F F G - / E F - )" 9- % %3 7 85 - 9 > + / 9 ), ) / ( -L % " E + % F " 7 * * 8 de Transformación & 9 ( <<ComponentSegment>>E F " % 9 F L % / E + 9 ) L E % 9 % F F 9 ) ; F +. % / E F L L -H F E % E +. = E L - > B > E : % H L -H F * "$0 5 <> + + L -H F + .F - > 9 % / " % > " = E 3 F E : F F -L <<find>> E 4 5 % H : % F F F : E +. 2 % 1 Definiciones % ( E H 9 + .E )" 1 - 0 E 8 + 3' 0 / : F 1 >E E F " % 2 D F E H >+ % 9 9 > / 5 Soporte para PSMs (P02) + > " 9 % % 1 F 9 H 4 % 4 % 4 % 9 % % F % E9 % +. 9> < - %I B B% F > -H F < - L 5 F E E E % 9 + .E - / L 4 % 9 E E % % 7. % + 9 % " 9 E/ " E 9 5 E " 9 2 L % > G / F / % F ) )" L / " 9E % + .' & - L -H F % E F > L Permitir varias implementaciones (P03) % / + " E B 9 1 / 1 9 < -'E 7 * 8 22 ] 1 0 H + .E 9 < : E D : : % > " F & 9 H " + .E " " < - 9 B 21C./ + E - 9 # F - E 9 > / + 5 > / 1 E < -E 'E / :6 =+6E - %I ' / &+ .E &2/C B = 4 F + E : E 9 E B > 4 / + - 4 / 9> : &% F B ! D + / 'E " EF : " L 1 : F / Integración de modelos (P04) 2 : E : E1 ++ B +. 9 " G F < 0 : < 7< H - F +. 9 - 9E % H / 9 - 9 + .E +. " +. E " / - E 4 F M 7 N " 9 7 9 9 E F - 4 : 9 " & " ( 9H F " 9 " 9 M 9 N & 4 9 : : 1 < F 7 9 D + .E / +. E ' + " G * L B 7G 7G F 9 " 9 +. E E 7 -H F +. 7% E F " 9 E 9 > / 5 K - 1 E - G getVistaNuevoUsuarioRepresenter().getRoot().SetDni(“nuevoValor”); + " 9 M 9 L 1 E N 7G 7 > E 7E M + .E + " 9 7 F - +. N > " 9 Interoperabilidad (P05) C : > B F ? : / - : > E - : Acceso a la definición de las transformaciones (P06) 2 " * & % & " ' % 6 % 8 = 1 EF - E : 1 E 9>' E > % D " G3 / < F " " F " 9 & 9 " * E 9 " " F " E M " F D " F F - N " H / / 9 B E 2/C/6 > / -L 2/C/6 : B F 9 E 7 > 7 > " E 9 2 > : H F " E E F 9 9 + 8 -> F - Verificador de modelos (P07) % " &% ' " 9 9 E " F 9 9 > / 9 9 F " 53 " % " 9 1 " F " % E • • • • % - E J!K % 9 : +. 7E E G +. 0 " & " +. L L 9 -H F 5 - +. " L ejbRemove() • + L +. ejbRemove() / -L E : 2 &: F " - 9H E F 4 F :/ L' E - - 9 4 " : " - - / E : - 9 " " 9E % F E < -/ B E 9 " 9 " 9 F E > " F Expresividad de los modelos (P08) + F E B " B- : - F 0 : B F 1 9 E )3 9 9 % E < < M OP L 7 9 " 9 $ 0 : < < + 1 . +. = 9 " < -E - N 1 Q0 7 9 " % 9 > / 5! < - !E 7F < F " G3 / E " 9 )" . 9 . : E 9 - A F / F 9 * E 9 " 9 9 3 7 5 > H 85 & E F : F 9 " 2 9 " E F E " E - 9 " < -E & : " 9 9 > 9 > D 9H F E 9 " 9 : < -E + : E : E / + B 7 ! 1 - 1 + 9 * ' / /G B" E F L %E < - E < - 9 % F )! 9 9 " 9 > + / 5$ @ A >E E E 7 )" 9! E " 2% E %7 3 4 5 Modelo Web & 9 ) ' % % % " + B + 9> 9 2 9> 9 F D > @ A E " 9 E D 9 Uso de patrones (P09) / D - > " 9 F " " 9E 7 - 1 7 9H 7 % " / % " E 7 E E % 7 % 7 % 7 " $ &% ". 'E &% 7 % 7 ' $ 9 > / 5( % " 9 + " / ++ " 9E " 9 9 1 7 7 % E 9 $ "E * J K " 0 " E &+ .' 6 " % 0 F " " " &< -' 0P " : F B- : & 9 35' 9 : )$ B )" / 9& % 1 7 8> . L 1 D F 7 F " 9 5 & E B La ventaja principal E F 9 F F + .E - ?0@ 2 4 E " J (E )K E " 0 +. Soporte para la regeneración de modelos (P10) 1 9 B % % E9 0 " / 7 % - 9 E % % % 9 " " " 9E F 9 - F - F : 9 E - 7 F 9 - 6 % 9 1 / % E " 9 " 9E 6 %7 " % 6 9 + - F - F 9 )( 9 9 > / / % 9 5) E >F &% ' " 1 9 F " 9E " F F 1 F %7 " % + B " 9 9 9 9 + 9 )) / E : " " 9 7 7 - F F> 9 9 : 9 F " E 9 )" 90 C 6 % % 6 %7 " % 7 8 Transformaciones intra-modelo (P11) 1 7 7 - % % 9 E 7 +. < -= E: 7 % -L F + / : 4 % > E H 9 L E - " 4 + J (K + @ A E F 7F 9 " E F > 9 - 9 9 B 9 > / 55 )" 99 I %7 " % 4 Trazabilidad (P12) 2 : M NF : " 9 " 9 H E % 1 9 - " 9 & : 9 & % " 9E ' F & )" 0 9: " " 9 E ' E " 9 E - E ' E ' 0 9 )5 +. % 7 28C 3 7 / 9 - E 9 " * % & - 7= E % % 7 F 9 : H F E 85 " 9 E 9 > / 0 9 9 5, ), " E F )" 9' 7 % % " %3 4 5 Ciclo de vida (P13) 1 7 9 / : G E DE -L " E F B / " 9 B : : / " " E % - " E E B = - " 9 F 1 " E 9 / F 9 E 9 F % 6 1 / 7 /G • • • 0 9 1 C ? - / 7 & L -L 9( ' Control y refinamiento de las transformaciones (P15) + 1 " 9 - E E F " E9 : Estandarización (P14) " -E - E 9 > / - % & , E 5' " B > 9 & $'E - & )" + / E + " E F & 9 5 ' + F F &$ ' ' :- 7 7 - 9E > B E9 - E % 3 7 85 + % " E 4 F L L 9> + . 9 " " 3$ G / % 5 - E 6 + .E G * & G ( F & 9 G $' -L E - &2 %E . % /42 9' G & * ' + : 9 9 9 " E 9 F 1 : : + F * 8 Definiciones de Transformación & 9 3' / * 8 * 8 1 E - 9E 7 B 9 * F " 9 8 F Calidad del código generado (P16) / - : 9 > " 9 B : 9 = 1 E F E 9 > / , 7 " 9 F 9- F ". 28C 3 4 7 )" : % % 7 5 Herramientas de soporte (P17) 2 E1 &3 %I / F & ' = E +. / >E " 9E ' : E 9 E +.& " "'E 9 " 9 : : / EF : /=6 E / F F 6 - 9 > / 8.2 Otros aspectos / F 9 -L , /E B : 2 "B Rendimiento y estabilidad 6 1 / F 9 7 : 87 " % ; / ! : 6 % : . $ E - E E % - @ - C/ - $ + F / E . C/ - - G 0 : / &1 / +. ' 9 7 - +. " %I % / F / % 7 -L / E - E : " 9 E F : + 9 F % " E 9 % % " 9 F : F 9 " E 9 E : : +.+ % " E F 7 L Facilidad de uso 9 9 1 : / % @ F E > F E = 7 % " % " # 1 H &# " > - : > E1 : 'E F + E 9> 9 5 % 9 > 1 & / 1 + " E ,3 F " B : " E % 7 9 " " . F - F 7 - 7 > )" + : : %% $ 7 > 28C / : E : /=6 : 7 - 2 7 3 7 7 H @ A F " 9 E F " 9 E E " 9 7 B " " ' 85 -L E F E @ A 1 E @ A / F I : F - EF : I 1 < -G 9 " 9 9 % E / - < -E : F 1 9 % & 'E 9 F - E : F E : F 7 7 $ " - E % F 1 0 / F B : F 9 - Documentación / : 9> E 1 B " " 7 9 > 6 / ,! EF F -L 7 % . - % & % % E 9 : # - 9 # < -E + < - " : 7 D>' F * % 9 E - F : F E 4 " 6 " E 9 +. E 6 7 -L / F 7 9 7 M : B E 7 %$ : / F 9 : : 7 : : 9 9 E> 4 E - : E > H N + 9 > / ,$ 9 Conclusiones y Trabajo Futuro / @ A + - 7 : F : : : 8 E : " 9 E 9 - 9E " D E 4 - 8 E F 9 : E 9 F E F 1 E F 1 % % F / " 9 F B / > E/ E D : D 4 1 ++ " 9 > - 9 E " E - = /E + / % E % F B F% 9 @ A F E E 4 7 : 9 B B / " E D + E ++E 9 9 F - 1 / - % " > 9> B9 : >F 6 1 % : " E9 " F F D + E E B > / : E 9 > : : , \ " 9 " 9 F " E F E " 7 7 E E + " " " / @ + / NE : - / F / M B- : 9 E / % : 9 G + " 6 % F + : % : / & 4 ' " 9 > / ,( + * E < J @ A / 9 / % E 7 + 1( > G 9 7 + , /G B + 9 9 " B * 9 9 " " 7 " 8 " 9 > / ,) Bibliografía . 9 E %E : . C :E * E / . @ E @ C E - 9:E * 2 @ E ! 2 @ E1 +, $ 2 @ E1 + ,93 ( 2 @ E 5 http://javacentral.compuware.com/demos/mda.html : * 5 A E , +, E0*E0^ S _ 7 ), E E . !E http://javacentral.compuware.com/ 3 ) !E 3 E 3 ` : 5 3 E& " $ & 3E < E0 / ; E1 % 8 ( * 1 / ! http://www.lcc.uma.es/~av/Publicaciones/04/UMLProfiles-Novatica04.pdf * E+E E ( ,,!E / 8 - E CE 5 http://convergentarchitecture.com 3 ! 1- E $ H,I, 1- E $ ( 1E H, 3 $ 1- E $ ( 1- E $ ) 1$ E $ H, 1- E H, 5 $ , ` E/E < E< 2 % - : 9 ! http://www.arcstyler.com/ * 0 $ $ L?* 4< $ 1 3 Q * * 4 H, * $ $ H, $ 3 * "& : 3 $ * 3 < . 3 H, &' E 3 E &' 3E / 4< 9 > / ` 9a 2 & & * E A E E A E 5 * E ! 1( 9 * E $ 1- 9 * E 1 /) , ( % E 3 5 , ! 0 5 < $< E / > 0> * * 7 3 5 * 9 2 E8 0( 3 5 4 P;64% 3 * ( * ?,? 9 E # 3 1?H 5 3 E 3 3 ) 3 9 0 ,5 3 7 & 0) ,2 $N # N 3 E CE 5 E1 * = E ( ! http://java.sun.com/developer/releases/petstore/ = ?H 6: E R )( 2 5 E * & & * 3 @ * < > 5 3 )&& 1 7 8