Ingeniería inversa de eventos GUI en aplicaciones RAD mediante MDD. Óscar Sánchez Ramón Jesús Sánchez Cuadrado Jesús García Molina.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Ingeniería inversa de eventos GUI en aplicaciones RAD mediante MDD. Óscar Sánchez Ramón Jesús Sánchez Cuadrado Jesús García Molina."

Transcripción

1 Ingeniería inversa de eventos GUI en aplicaciones RAD mediante MDD Óscar Sánchez Ramón Jesús Sánchez Cuadrado Jesús García Molina Facultad de Informática Facultad de Informática Facultad de Informática Universidad de Murcia Universidad de Murcia Universidad de Murcia Resumen La migración del código de manejo de eventos de la interfaz gráca de usuario (GUI) es uno de los retos que deben afrontarse cuando se aborda la modernización de un sistema heredado desarrollado con un entorno Rapid Application Development (RAD). Esta tarea conlleva varias dicultades, pues frecuentemente implica un cambio de lenguaje de programación o tecnología, y un cambio en la arquitectura del sistema, dado que las aplicaciones desarrolladas en entornos RAD no contemplan una separación de la arquitectura en capas. En este trabajo proponemos una aproximación MDD para realizar ingeniería inversa de los eventos GUI de aplicaciones RAD, con el objetivo de obtener información acerca del código original que sea de utilidad para un posterior proceso de rediseño e ingeniería directa. 1. Introducción En la actualidad existe un gran número de aplicaciones heredadas que fueron construidas con entornos RAD (Rapid Application Development), tales como Oracle Forms 6 o Borland Delphi 5, y que están siendo migradas a plataformas más modernas. Estas migraciones son realizadas manualmente en la mayoría de los casos. Recientemente ha emergido la Modernización Dirigida por Modelos, como forma de conseguir automatizar las tareas propias de los procesos de evolución de software a través de la aplicación de las técnicas básicas del Desarrollo Dirigido por Modelos (Model Driven Development, MDD). Cuando se realiza una migración entre plataformas, es necesario considerar todos los componentes de la arquitectura software de la aplicación existente. El componente relacionado con interfaz gráca de usuario (GUI) es fundamental en la mayoría de arquitecturas, y su migración requiere considerar varios aspectos, como la disposición de los controles grácos (layout) y el manejo de eventos. El primer aspecto se ha tratado en un trabajo previo [1], y este trabajo se centrará en el segundo aspecto en el contexto de la migración de aplicaciones RAD. Las tecnologías de desarrollo de GUI utilizan modelos de eventos para permitir la interacción del usuario con la aplicación (por ejemplo, en Java la librería Swing usa el Modelo de Delegación de Eventos). En el caso de la tecnología RAD, el modelo de eventos es simple y normalmente y los manejadores de evento se asocian directamente a los componentes. Sin embargo, cada entorno dene un conjunto de eventos propios, y el lenguaje y las facilidades de que se dispone para denir las acciones asociadas son dependientes de la tecnología. Una característica de los entornos RAD es que el código de los eventos puede interaccionar directamente con una base de datos, sin necesidad de invocar a funciones de la lógica de negocio que se encarguen de dicha tarea. Esto supone un problema cuando pretendemos abordar la modernización de este código, dado que hoy en día es una práctica habitual separar las aplicaciones en capas con el n de facilitar el mantenimiento, legibilidad y extensibilidad de la aplicación.

2 DECLARE DECL n Number; DECL val VARCHAR2(50); BEGIN n := 1; SELECT value INTO val FROM mappings Refinamiento DECLARE DECL n Number; DECL val VARCHAR2(50); BEGIN n := 1; SELECT value INTO val FROM mappings M2M Código Fuente (PL/SQL) T2M Modelo de Código (PL/SQL) M2M Modelo Abstracto de Eventos Usuario Patrones conformes al DSL Repositorio de patrones (patrones Forms) M2M Figura 1: Arquitectura para realizar ingeniería inversa de eventos de GUI Es deseable, por tanto, analizar los eventos de GUI y disponer de una representación de los mismos que sea independiente de entornos, lenguajes y tecnologías, que pueda ser fácilmente estructurada en capas, y que en denitiva contenga toda la información que sea posible deducir del código fuente con el objetivo de automatizar los procesos de generación de nuevas aplicaciones en la mayor medida posible. Por tanto, el propósito de este trabajo es mostrar una aproximación de Modernización Dirigida por Modelos para aplicar ingeniería inversa de los eventos de aplicaciones RAD destinada a facilitar la migración a otras plataformas, lo que nos permitirá la automatización total o parcial del proceso. Se propone una representación independiente del lenguaje para el código de manejo de eventos, y un DSL para establecer la correspondencia entre patrones código y tal representación. También, se describen varias usos de esta representación al automatizar la ingeniería inversa. La sección 2 se muestra una visión general de la arquitectura de modelos para realizar el proceso de ingeniería inversa. La sección 3 muestra el metamodelo empleado para representar la información extraída de los eventos, en la sección 4 se describe el DSL de patrones, y en la sección 5 se describen varios ejemplos de aplicación. Las secciones 6 y 7 nalizan presentando respectivamente el trabajo relacionado, y las conclusiones y trabajo futuro. 2. Visión general de la arquitectura La arquitectura de modelos propuesta para realizar el proceso de ingeniería inversa del código de manejo de eventos en aplicaciones RAD se muestra en la Figura 1. Aunque esta arquitectura esta orientada a la extracción del comportamiento de los eventos de Oracle Forms y PL/SQL, el esquema puede ser generalizado para otras tecnologías RAD. En primer lugar, partimos de código de la aplicación RAD original, código PL/SQL de Oracle Forms en nuestro caso. El código se inyecta en un modelo que lo representa mediante una transformación texto a modelo(t2m ), y que conformará con un metamodelo de la sintaxis abstracta de PL/SQL. El segundo paso consiste en obtener el modelo abstracto de eventos, que se utiliza para: i) representar el código fuente de forma independiente a lenguajes y tecnologías, mediante acciones habituales en los entornos RAD (como por ejemplo leer de la interfaz o escribir en base de datos), y ii) eliminar detalles que son superuos para analizar el comportamiento de los eventos. La obtención de un modelo abstracto de eventos a partir del modelo de código PL/SQL se consigue mediante una transformación modelo a modelo (M2M). Como explicaremos más adelante, a su vez esta

3 0..n 0..n RADVariable 1 ModelRoot RADReadable 1 0..n 0..n in 0..1 out 0..n 1 EventDefinition + targetelement 0..n 1 0..n RADAction UIVar DBVar TempVar PredefinedVar ReadFromDB WriteToUI ManipulateData ControlFlow Figura 2: Metamodelo abstracto de eventos transformación se obtiene automáticamente a través de otra transformación modelo a modelo que toma como entrada un modelo que representa un conjunto de patrones que establecen reglas para construir el modelo abstracto de eventos a partir del modelo de código. La siguiente etapa del proceso consiste en renar el modelo abstracto de eventos. El objetivo es inferir información adicional acerca de los eventos, y representarla de forma explícita en el propio modelo abstracto de eventos. A partir del modelo renado es posible realizar diversas tareas de reingeniería, como generar informes y visualizaciones, restructurar el código o generar esqueletos de código (automatización parcial de la migración). La infraestructura se está desarrollando en la plataforma Eclipse, utilizado Ecore como lenguaje de metamodelado, Gra2MoL [3] para inyectar código PL/SQL en modelos, y RubyTL [4] para realizar las transformaciones modelo a modelo. 3. Representación de los eventos a alto nivel El modelo abstracto de eventos se utiliza para representar los eventos GUI a alto nivel. Tiene dos características principales: permite representar las acciones de los eventos con independencia de lenguajes y tecnologías, y omite detalles que no son relevantes para analizar el comportamiento del evento (por ejemplo cuál es la funcionalidad concreta de una operación de tratamiento de enteros), con lo cuál se simplica el posterior análisis de los mismos. En la Figura 2 se muestra de forma simplicada el metamodelo al que conforman los modelos abstractos de eventos. Principalmente distinguimos dos elementos en el metamodelo: variables (RADVariable) y acciones (RADAction). Las primeras son los datos que el evento maneja, mientras que las segundas son primitivas que utilizan esos datos. En base a la proveniencia de los datos tendremos los siguientes tipos de variables: Variables temporales (TempVar), que son variables locales a los eventos y que se utilizan para almacenar datos que resultan de lecturas y manipulaciones de datos. Variables predenidas (Predened- Var), son variables globales que tienen una semántica predenida en un entorno o tecnología. Variables de interfaz (UIVar), que representan los controles de la interfaz gráca. Variables de base de datos (DBVar), que representan un recurso que permite interaccionar con una base de datos, como puede ser un origen de datos. Igualmente, distinguimos diferentes tipos de primitivas para representar acciones. En el

4 Primitiva ReadFromUI WriteToUI WriteToVar ReadFromDB ModifyUI ManipulateData SelectionFlow ShowMessage Invoke Signicado Lee un valor de un control de la GUI Modica un valor de un control de la GUI Escribe un valor en una variable temporal Lee valores de base de datos Modica atributos grácos de los controles de la GUI Realiza una operación sobre datos, por ejemplo, la obtención de una subcadena en base a una cadena Control de ujo selectivo Muestra una ventana modal emergente Invoca a una función o procedimiento Cuadro 1: Primitivas semánticas cuadro 1 se muestran algunas de las primitivas identicadas. Las primitivas se aplican sobre una o más variables de entrada, y si se trata de una operación de escritura, tendrán una variable de salida asociada (referencia out). Además, como se observa en el metamodelo, la entrada de una primitiva (dependencia in entre RADAction y RADReadable) puede ser otra primitiva, lo que permite componer las primitivas para expresar acciones más complejas de un modo más compacto, esto es, sin necesidad de utilizar variables temporales para almacenar el resultado de otras primitivas. Esta representación mantiene, en cierta medida, la estructura del código original lo que facilitará análisis de grano grueso. Otras representaciones más atómicas (como SSA [9] [10]) son útiles para análisis de grano no, y serán consideradas en futuros trabajos. Estas primitivas conforman un subconjunto básico suciente para comprender la funcionalidad del evento a alto nivel. Sin embargo, si en fases posteriores del proceso de modernización pretendemos generar código a partir de los eventos, necesitamos anar más en la especicación de algunas de las primitivas para incluir información más detallada. Por ejemplo, sería necesario modelar las condiciones de las primitivas de control, o la funcionalidad de las primitivas de manipulación de datos. Con el objetivo de representar toda la información del sistema original, en un futuro se evaluará la posibilidad de relacionar el metamodelo abstracto de eventos con el metamodelo de la tecnología fuente, ya sea mediante un metamodelo propio que represente el código de forma independiente de la plataforma, o utilizando un metamodelo estándar como KDM [7] para este n. El elemento ModelRoot actua como raíz del metamodelo, y contiene los eventos (EventDefinition), así como las variables globales a los éstos, de modo que las variables de interfaz, las de base de datos y las predenidas puedan ser reutilizadas. La metaclase EventDenition tiene un nombre, un tipo de evento, está asociada al elemento targetelement que dispara el evento (normalmente un control de la interfaz), y contienen las variables y acciones que denen el comportamiento a realizar cuando se activa el evento. 4. Abstracción de código mediante un DSL de patrones Para obtener el modelo abstracto de eventos a partir del modelo de código fuente, la aproximación directa sería crear una transformación modelo a modelo. Sin embargo, este enfoque presenta dos problemas fundamentales: a) el codigo de la transformación sería muy verboso, b) incorporar nuevos casos de análisis implicaría modicar la transformación. Para superar estas desventajas, se ha diseñado un DSL para establecer correspondencias entre patrones de código PL/SQL y primitivas del modelo abstracto de eventos. La dinámica consiste en aplicar los patrones sobre el código de los manejadores de eventos del sistema heredado, de modo que para ca-

5 «from PL/SQL» Statement source 1..n FormsPattern target 1..n «from SemanticActions» RADAction «from PL/SQL» Statement GenericStatement «from PL/SQL» Expression GenericExpression +vargroup: string «from PL/SQL» Variable GenericVariable +id: string +pattern: RegExpr «Datatype» OpType AND OR «from EventAbstractMM» RADVariable RegExpr GenericVariable +id: string GenericVarGroup +id: string SimpleRegExpr +not: boolean +expr: string CompositeRegExpr +operator: OpType 1..n Figura 3: Metamodelo de la sintaxis abstracta del DSL de patrones. da patrón concordado se genera un fragmento de código de primitivas de alto nivel. Cuando existan varios patrones posibles, se informará al desarrollador para que seleccione una de las alternativas, siendo por tanto un proceso semiautomático. Con el objetivo de denir los patrones de forma concisa, se pretende que una sola sentencia del DSL empareje con un trozo de modelo de sintaxis abstracta mediante el uso de comodines (por comodin entendemos un elemento que permite emparejar una parte cualquiera del modelo de código). Además, se ha decidido extender la propia sintaxis de PL/SQL para facilitar la escritura de los patrones, pues es menos verboso que utilizar la sintaxis abstracta. Para facilitar la extensibilidad se ha denido un repositorio de patrones (escritos con el DSL). Así, es posible incorporar de un modo sencillo nuevos patrones que sean dependientes de las convenciones de las empresas de desarrollo, sin necesidad de modicar las transformaciones. Se observa que tanto el DSL y el repositorio de patrones son dependientes de la tecnología origen del proceso de modernización. En el futuro se pretende separar la compilación de los patrones de la sintaxis concreta utilizada, con el n de usar el mismo compilador con diferentes lenguajes. El DSL de denición de patrones podría ser generado automáticamente a partir de la gramática, lo que evitaría tener que realizar un DSL manualmente para cada tecnología origen. La sintaxis abstracta del DSL corresponde al metamodelo que aparece en la Figura 3. El metamodelo hace corresponder un conjunto de sentencias PL/SQL con un conjunto de primitivas. Este metamodelo tiene referencias cruzadas con el metamodelo de PL/SQL, de modo que las metaclases Statement, Expression y Variable representan sentencias, expresiones y variables de PL/SQL respectivamente. En ocasiones ocurre que para denir los patrones necesitamos especicar que algunos elementos de un trozo de código no son relevantes. Por esta razón, las metaclases Generic- Statement, GenericExpression y GenericVariable han sido denidas para actuar como comodines al expresar los patrones. Generic- Variable puede tener un identicador (id) para referirse a la misma variable en otra parte del

6 Patrón PL/SQL (parte izquierda) IF GenericExpression(varGroup=V) THEN statements END SELECT - INTO GenericVariable(id=X, pattern=:*.* AND NOT :system.*) FROM - WHERE GenericExpression(varGroup=V) GenericVariable(id=X, pattern=not :*) := GenericVariable(id=Y) GenericVariable(pattern=':*.*' and not ':system.*') Primitivas (parte derecha) SelectionFlow(GenericVarGroup(id=V)) { statements } WriteToUI(ReadFromDB( GenericVarGroup(id=V)), GenericVariable(id=X)) WriteToVar(GenericVariable(id=Y), GenericVariable(id=X)) UIVar Cuadro 2: Ejemplos de reglas del DSL de patrones, con la sintaxis de PL/SQL. patrón y/o en la parte derecha de la regla (nótese que con id no nos estamos reriendo al nombre de un variable concreta del código PL/SQL). Mediante el atributo pattern también es posible especicar aquellas variables cuyo nombre cumple con una determinada expresión regular. La metaclase GenericExpression reemplaza a cualquier expresión, y utiliza el atributo vargroup para especicar el identicador del grupo de variables que se usan en la expresión (de manera que pueda utilizarse en la parte derecha de la regla). Respecto al metamodelo abstracto de eventos se denen dos tipos nuevos, GenericVarGroup y GenericVariable que representan a las variables y grupos de variables respectivamente, que se han identicado en el modelo PL/SQL. En el cuadro 2 se muestran algunos de los patrones establecidos para la tecnología Oracle Forms. Para facilitar la comprensión de los mismos se utiliza una sintaxis más verbosa que corresponde directamente con el metamodelo del DSL. El primer patrón transforma una sentencia IF en una sentencia de control de ujo de selección (SelectionFlow). El elemento GenericExpression se utiliza para representar cualquier expresión, pues no nos interesa un tipo de expresión en concreto, aunque sí que nos interesan el conjunto de variables que se utilicen en dicha expresión, a las cuales identicaremos como V. El segundo patrón representa una consulta SELECT de base de datos que escribe en una variable. De momento no estamos interesados en almacenar el nombre de la tabla y los atributos, razón por la cuál en el patrón se especica un guión para ignorarlos. Se especica que la variable (que identicaremos por X ) en la que se almacene el resultado de la consulta debe concordar con un patrón, que concretamente es un patrón que dene las variables que se reeren a controles GUI. Por esta razón, este patrón se traduce como una lectura de base de datos (ReadFromDB) que se escribe en una variable de interfaz (WriteToUI). El tercer patrón traduce una asignación de una variable de cualquier tipo a una variable local. El cuarto patrón se utiliza para resolver variables de interfaz. Cuando se aplica un patrón, puede ocurrir que la parte derecha de la regla se reera a GenericVarGroup o Generic- Variable. En estos casos es necesario aplicar otras reglas para resolver estas partes. Por ejemplo, es necesario traducir los tipos GenericVariable del modelo abstracto de eventos en tipos de variables concretas (UIVar, Temp- Var,...). Por esta razón es necesario especicar patrones (como por ejemplo el cuarto patrón) para resolver estos casos. Vamos a ilustrar el proceso de aplicación de los patrones mediante un ejemplo. En el entorno Oracle Forms 6 se pueden asociar disparadores PL/SQL a la ejecución de un conjunto predeterminado de eventos. A continuación se muestra el código de un disparador asociado al evento WHEN_VALIDATE_ITEM del campo de texto USERNAME, que se ejecuta cuando se produce un cambio en el campo de texto.

7 1 DECLARE 2 name VARCHAR2 (50) ; 3 BEGIN 4 name := : USER_DATA. USERNAME ; 5 IF name IS NOT NULL THEN 6 SELECT INTO : USER_DATA. 7 FROM User WHERE username = name ; 8 END IF ; 9 END ; En la línea 4 se copia el contenido del campo de texto USERNAME a la variable local name. Se comprueba que esta cadena de caracteres no sea nula (línea 5), y de ser así se obtiene el valor de la la de la tabla de datos User cuyo nombre de usuario (username) coincida con el valor de la variable name. El valor obtenido de base de datos se almacena en el campo de texto . El efecto del código es el siguiente. Cuando un usuario introduce el nombre de usuario en el campo de texto USERNAME, la aplicación busca la dirección de correo electrónico asociada a dicho usuario, y la muestra en el campo de texto . Si aplicamos el conjunto de patrones denidos en el cuadro 2 al modelo PL/SQL antes descrito, se obtiene el siguiente modelo. Por simplicidad se han omitido algunos detalles de las primitivas, como la información relativa a la base de datos de la primitiva ReadFromDB, o la condición del SelectionFlow. Para cada conjunto de primitivas, se indica la línea o líneas que las originaron mediante la aplicación de los patrones y reglas. 1 WriteToVar (: USER_DATA. USERNAME, name ) /* línea 4 */ 2 SelectionFlow ( name ){ /* línea 5 */ 3 WriteToUI ( ReadFromDB (name ), : USER_DATA. ) /* líneas 6 y 7 */ 4 } planteamos dos posibles usos de esta representación que tienen como objetivo inferir información implícita: la búsqueda de dependencias entre variables y la categorización de fragmentos de código. Las dependencias entre variables de interfaz (que representan controles) pueden ser una fuente de información útil en el proceso de comprensión del comportamiento de los eventos. En las interfaces de usuario frecuentemente ocurre que un cambio en el valor de un control de la interfaz afecta a otro control. Por ejemplo, imaginemos una casilla de veri- cación que cuando es marcada, habilita una lista desplegable que antes estaba deshabilitada. En este ejemplo, los controles vendrían representados por variables de interfaz, de modo que existiría una dependencia entre la variable asignada a la casilla de vericación y la variable que representa la lista desplegable. Esta información puede ser interesante para determinar dependencias entre eventos, pues un evento E 1 que estuviese asociado a una variable de interfaz V 1 podría activar la ejecución de otro evento E 2 asociado a la variable de interfaz V 2 si V 2 depende de V 1. Es posible asociar automáticamente categorías a fragmentos de código a partir de la información de grano no sobre variables y acciones obtenida en el modelo abstracto de eventos. En la actualidad estamos diseñando un algoritmo que recorre el modelo buscando secuencias de sentencias que tienen la misma naturaleza(ui, base de datos, etc.) y las agrupa. Esta información puede ser a su vez utilizada para dividir la aplicación original en capas, ya que cada fragmento de código de cierta naturaleza puede ser asignado a la UI, al controlador, o a la lógica de negocio. 5. Usos del modelo abstracto de eventos El modelo abstracto de eventos pretende ser una representación de información sobre los eventos adecuada, que está implícita en el código fuente y que puede ser de utilidad en una fase posterior de ingeniería directa para crear un nuevo sistema. A continuación 6. Trabajo relacionado En el trabajo [2] se presenta una herramienta comercial que migra aplicaciones Oracle Forms a la plataforma.net. Los eventos de la plataforma origen para los cuales existe una correspondencia con semántica similar en la plataforma destino se migran directamente, mientras que el resto deben ser asistidos por

8 el usuario. En [5] se aborda la evolución de sistemas heredados a sistemas SOA en tres capas. En esta propuesta los fragmentos de código original se anotan manualmente según el aspecto con que se relaciona (interfaz, lógica de negocio o datos). La arquitectura presentada permitirá automatizar estas anotaciones, como se comenta en la sección anterior. En [6] se propone la reingeniería inversa de interfaces de usuario con el objetivo de realizar pruebas de interfaz. En este trabajo se utiliza un modelo de ujo de eventos que representa todos las caminos de ejecución de eventos posibles a partir de las ventanas de la aplicación. La reingeniería se centra en deducir las relaciones entre ventanas originadas por eventos. Existen numerosos trabajos relativos al estudio del ujo de datos [8], [9] que se utilizan en la optimización de código por parte de compiladores. Estos trabajos proponen el análisis estático de código, más especícamente Single Static Assignment Form (SSA) así como otras técnicas, con el objetivo de eliminar código redundante y optimizar la asignación de variables. En [10] se utiliza SSA para obtener un grafo de ventanas, que es un grafo que representa las relaciones entre las ventanas de una GUI. Estos trabajos guardan cierta relación con las etapa de simulación y con el análisis de variables, sin embargo en nuestro caso, el análisis que realizamos es más sencillo y está orientado especícamente al código de eventos de GUI. 7. Conclusiones y trabajo futuro En este trabajo hemos presentado una aproximación para analizar el código de los eventos de la GUI de aplicaciones RAD. Como resultado de este análisis se obtiene una representación de alto nivel con información útil para la comprensión de dichos eventos. La información recopilada puede ser utilizada posteriormente para efectuar un proceso de ingeniería directa con el objetivo de generar un nuevo sistema o de reingeniería para modicar el sistema existente. Se evaluará la posibilidad de representar el sistema original completo mediante KDM [7], de modo que el modelo abstracto de eventos mantenga referencias al modelo KDM. Como trabajo futuro, se espera probar el proyecto con casos de estudio reales. Como fruto de dicho trabajo, se incorporarán nuevas primitivas de alto nivel y se renará y ampliará el conjunto de patrones identicados e incluidos en el repositorio estándar. Se modicará también la arquitectura para que sea independiente de la tecnología origen en la medida de lo posible. También sería posible realizar generadores de DSLs de denición de patrones a partir de gramáticas. Agradecimientos Este artículo ha sido parcialmente nanciado por la Consejería de Universidades, Empresa e Investigación (proyecto 129/2009) y la Fundación Séneca (proyecto 08797/P1/08). Referencias [1] O. Sánchez Ramón, J. Sánchez Cuadrado, and J. García Molina. Model-Driven Reverse Engineering of Legacy Graphical User Interfaces. In Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering, ASE'10, [2] L. F. Andrade, J. Gouveia, M. Antunes, M. El-Ramly, and G. Koutsoukos. Forms2net - Migrating Oracle Forms to Microsoft.NET. In GTTSE, pages , [3] J. L. Cánovas Izquierdo and J. G. Molina. A Domain Specic Language for Extracting Models in Software Modernization. In ECMDA-FA '09: Proceedings of the 5th European Conference on Model Driven Architecture - Foundations and Applications, pages 8297, Berlin, Heidelberg, Springer-Verlag. [4] J. S. Cuadrado and J. G. Molina. Modularization of Model Transformations Through a Phasing Mechanism. Software and System Modeling, 8(3):325345, 2009.

9 [5] R. Heckel, R. Correia, C. M. P. Matos, M. El-Ramly, G. Koutsoukos, and L. F. Andrade. Architectural Transformations: From Legacy to Three-Tier and Services. In Software Evolution, pages [6] A. M. Memon. An Event-Flow Model of GUI-Based Applications for Testing: Research Articles. Software Testing Verication and Reliability, 17(3):137157, [7] OMG. Knowledge Discovery Meta-Model (KDM) v [8] B. K. Rosen. Data Flow Analysis for Procedural Languages. J. ACM, 26(2): , [9] B. K. Rosen, M. N. Wegman, and F. K. Zadeck. Global Value Numbers and Redundant Computations. In POPL '88: Proceedings of the 15th ACM SIGPLAN- SIGACT symposium on Principles of programming languages, pages 1227, [10] S. Staiger. Reverse Engineering of Graphical User Interfaces Using Static Analyses. In WCRE '07: Proceedings of the 14th Working Conference on Reverse Engineering, pages , 2007.

Utilidad de las transformaciones modelo-modelo en la generación automática de código

Utilidad de las transformaciones modelo-modelo en la generación automática de código Utilidad de las transformaciones modelo-modelo en la generación automática de código Javier Luis Cánovas Izquierdo, Óscar Sánchez Ramón, Jesús Sánchez Cuadrado, Jesús García Molina Facultad de Informática

Más detalles

Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado

Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado 1. Introducción Unified Modeling Languaje Fuente: Booch- Jacobson-Rumbauch y diversos sitios Internet, entre otros:

Más detalles

La Necesidad de Modelar. Diseño de Software Avanzado Departamento de Informática

La Necesidad de Modelar. Diseño de Software Avanzado Departamento de Informática La Necesidad de Modelar Analogía Arquitectónica Tiene sentido poner ladrillos sin hacer antes los planos? El modelo, los planos, ayuda a afrontar la complejidad del proyecto. Cuál es el lenguaje adecuado

Más detalles

Administración de Variabilidad en una línea de producto basada en modelos

Administración de Variabilidad en una línea de producto basada en modelos Administración de Variabilidad en una línea de producto basada en modelos Kelly Garcés Carlos Parra Hugo Arboleda Andres Yie Rubby Casallas Universidad de los Andes, Bogotá k-garces @uniandes.edu.co Universidad

Más detalles

Migración de datos automática a partir de la información de los esquemas conceptuales 1

Migración de datos automática a partir de la información de los esquemas conceptuales 1 Migración de datos automática a partir de la información de los esquemas conceptuales 1 J.Pérez 1, J.A.Carsí 1, I.Ramos 1, V.Anaya 1, J.Silva 1, Departamento de Sistemas Informáticos y Computación Universidad

Más detalles

Ingeniería inversa de GUIs

Ingeniería inversa de GUIs Ingeniería inversa de GUIs Existen numerosos sistemas en funcionamiento que fueron desarrollados en los años 90 utilizando entornos RAD (Rapid Application Development), tales como Delphi, Visual Basic

Más detalles

Un caso de estudio para la adopción de un BPMS

Un caso de estudio para la adopción de un BPMS Un caso de estudio para la adopción de un BPMS Javier Luis Cánovas Izquierdo, Óscar Sánchez Ramón, Jesús García Molina, Carlos Castillo Alarcón Grupo de Tecnología del Software Universidad de Murcia Índice

Más detalles

MCGEN: UN ENTORNO PARA LA GENERACIÓN AUTOMÁTICA DE COMPILADORES DE MODELOS ESPECÍFICOS DE DOMINIO

MCGEN: UN ENTORNO PARA LA GENERACIÓN AUTOMÁTICA DE COMPILADORES DE MODELOS ESPECÍFICOS DE DOMINIO XV Jornadas de Ingeniería del Software y Bases de Datos JISBD 2006 José Riquelme - Pere Botella (Eds) CIMNE, Barcelona, 2006 MCGEN: UN ENTORNO PARA LA GENERACIÓN AUTOMÁTICA DE COMPILADORES DE MODELOS ESPECÍFICOS

Más detalles

Arquitectura de Aplicaciones

Arquitectura de Aplicaciones 1 Capítulo 13: Arquitectura de aplicaciones. - Sommerville Contenidos del capítulo 13.1 Sistemas de procesamiento de datos 13.2 Sistemas de procesamiento de transacciones 13.3 Sistemas de procesamiento

Más detalles

CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA

CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA PROGRAMACIÓN DIDACTICA ANUAL Parte específica del módulo: 0485. Programación Departamento de Familia Profesional de Informática Curso: 2014-15

Más detalles

INDICE Programación Introducción Capitulo 21 BASIC Capitulo 22. COBOL Capitulo 23 DELPHI Capitulo 24. FORTRAN Capitulo 25.

INDICE Programación Introducción Capitulo 21 BASIC Capitulo 22. COBOL Capitulo 23 DELPHI Capitulo 24. FORTRAN Capitulo 25. INDICE Programación Introducción 706 Capitulo 21 BASIC 711 Introducción 711 Sintaxis 713 Procedimientos y control de flujo 713 Tipos de datos 714 Disponibilidad y variantes del dialecto 714 Capitulo 22.

Más detalles

Una Arquitectura para una Herramienta de Patrones de Diseño

Una Arquitectura para una Herramienta de Patrones de Diseño Una Arquitectura para una Herramienta de Patrones de Diseño José Sáez Martínez 1, Jesús García Molina, Pedro J. Jiménez García Departamento de Informática, Lenguajes y Sistemas. Campus de Espinardo C.P.

Más detalles

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle: PL/SQL (Procedural Language/Structured Query Language) PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar con otro tipo de instrucciones y elementos propios de los

Más detalles

Modelado de la variabilidad en arquitecturas multicapa

Modelado de la variabilidad en arquitecturas multicapa Modelado de la variabilidad en arquitecturas multicapa José García-Alonso, Joaquín Guillén, Javier Berrocal, and Juan Manuel Murillo Escuela Politécnica, Universidad de Extremadura, Avd. de la Universidad

Más detalles

Cómo usar MDE para obtener Modelos de Simulación a partir de Modelos de Negocio

Cómo usar MDE para obtener Modelos de Simulación a partir de Modelos de Negocio Cómo usar MDE para obtener Modelos de Simulación a partir de Modelos de Negocio M. Teresa García 1, Mercedes Ruiz 1 y Cristina Vicente-Chicote 2 1 Departamento de Lenguajes y Sistemas Informáticos Universidad

Más detalles

Definición y ejecución de métricas en el contexto de ADM

Definición y ejecución de métricas en el contexto de ADM Definición y ejecución de métricas en el contexto de ADM Javier Luis Cánovas Izquierdo, Belén Cruz Zapata, Jesús García Molina Universidad de Murcia {jlcanovas, b.cruzzapata, jmolina@um.es Resumen La Modernización

Más detalles

4 o Ingeniería Informática

4 o Ingeniería Informática Esquema del tema 1. Introducción 4 o Ingeniería Informática II26 Procesadores de lenguaje Estructura de los compiladores e intérpretes 2. Etapas del proceso de traducción 3. La interpretación 4. La arquitectura

Más detalles

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz Compiladores y Lenguajes de Programación Maria de Guadalupe Cota Ortiz Organizaciones que rigen las normas para estandarización de Lenguajes de Programación IEEE (Instituto de Ingenieros Eléctricos y Electrónicos)

Más detalles

DISEÑO DE COMPONENTES DE SOFTWARE *

DISEÑO DE COMPONENTES DE SOFTWARE * DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP * Resumen del capítulo 10 de libro de [Pressman 2010] V:18-11-2008 (c) P. Gomez-Gil, INAOE.

Más detalles

Perfil UML para el desarrollo de aplicaciones WAP

Perfil UML para el desarrollo de aplicaciones WAP Perfil UML para el desarrollo de aplicaciones WAP Ricardo Soto D., Mauricio Camara J. Escuela de Ingeniería Informática, Pontificia Universidad Católica de Valparaíso, Chile E-mail: ricardo.soto@ucv.cl,

Más detalles

DISEÑO DE UN CURSO INTERACTIVO Y ADAPTATIVO DE PROCESADORES DE LENGUAJES

DISEÑO DE UN CURSO INTERACTIVO Y ADAPTATIVO DE PROCESADORES DE LENGUAJES Alfonseca, M., Carro, R.M., Pulido, E. and Rodríguez, P. (2000): Diseño de un curso interactivo y adaptativo de procesadores de lenguajes. Proceedings of JENUI 2000: VI Jornadas sobre la Enseñanza Universitaria

Más detalles

Generación de código para Hibernate desde modelos UML

Generación de código para Hibernate desde modelos UML Generación de código para Hibernate desde modelos UML Alejandro Nogueiro Mariscal Ingeniería Técnica en Informática de Sistemas, Universidad de Cádiz 24 de Septiembre 2012 1 / 35 Índice 1 Motivación y

Más detalles

Hacia la Integración de Técnicas de Pruebas en Metodologías Dirigidas por Modelos para SOA

Hacia la Integración de Técnicas de Pruebas en Metodologías Dirigidas por Modelos para SOA Hacia la Integración de Técnicas de Pruebas en Metodologías Dirigidas por Modelos para SOA Antonio García Domínguez Inmaculada Medina Bulo Mariano Marcos Bárcena Universidad de Cádiz Escuela Superior de

Más detalles

Análisis del Sistema de Información

Análisis del Sistema de Información Análisis del Sistema de Información ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 2 ACTIVIDAD ASI 1: DEFINICIÓN DEL SISTEMA... 6 Tarea ASI 1.1: Determinación del Alcance del Sistema... 6 Tarea ASI 1.2: Identificación

Más detalles

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente En este capítulo definimos los requisitos del modelo para un sistema centrado en la mejora de la calidad del código fuente.

Más detalles

Programación orientada a

Programación orientada a Programación orientada a objetos con Java Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Presentar los conceptos de la programación

Más detalles

Programación Orientada a Objetos Analista Programador Universitario Plan 2008 Año 2010

Programación Orientada a Objetos Analista Programador Universitario Plan 2008 Año 2010 INTRODUCCION Los objetos usados en aplicaciones JAVA mantienen su estado y comportamiento mientras la aplicación se halle en ejecución. Generalmente se necesita mantener el estado y comportamiento de los

Más detalles

Tema 1. Bases de datos activas

Tema 1. Bases de datos activas Tema 1. Bases de datos activas Diseño de Sistemas de Bases de Datos Merche Marqués 18 de marzo de 2002 Índice 1. Introducción 1 2. El modelo evento condición acción 1 2.1. Definición y uso de disparadores

Más detalles

Mejora en la Administración de Procesos de Desarrollo de Software Tipo SPEM Automatizados Bajo Workflow

Mejora en la Administración de Procesos de Desarrollo de Software Tipo SPEM Automatizados Bajo Workflow Mejora en la Administración de Procesos de Desarrollo de Software Tipo SPEM Automatizados Bajo Workflow Fabio A. Zorzan 1 y Daniel Riesco 2 Resumen Esta línea de investigación pretende aportar a la mejora

Más detalles

PROCESOS SOFTWARE. Según esta estrategia, todo proceso debe planificarse, implantarse y evaluarse, para luego actuar sobre él.

PROCESOS SOFTWARE. Según esta estrategia, todo proceso debe planificarse, implantarse y evaluarse, para luego actuar sobre él. PROCESOS SOFTWARE MOTIVACIÓN? Con independencia de la metodología o modelo implementado, es común la estrategia para la mejora continua de la calidad, basada en el Círculo de Deming o Plan, Do, Check,

Más detalles

Gerencia de Procesos de Negocio (Business Process Management, BPM). Lic. Patricia Palacios Zuleta

Gerencia de Procesos de Negocio (Business Process Management, BPM). Lic. Patricia Palacios Zuleta Gerencia de Procesos de Negocio (Business Process Management, BPM). Lic. Patricia Palacios Zuleta (Business Process Management, BPM). La Gerencia de los Procesos del Negocio: Se define como: "integración

Más detalles

DESARROLLO WEB EN ENTORNO SERVIDOR

DESARROLLO WEB EN ENTORNO SERVIDOR DESARROLLO WEB EN ENTORNO SERVIDOR CAPÍTULO 7: Programación de servicios Web Marcos López Sanz Juan Manuel Vara Mesa Jenifer Verde Marín Diana Marcela Sánchez Fúquene Jesús Javier Jiménez Hernández Valeria

Más detalles

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL.

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL. 2.6.1.- Concepto de vista. Una vista es una tabla derivada de otras tablas (básicas o virtuales). Una vista se caracteriza porque: Se considera que forma parte del esquema externo. Una vista es una tabla

Más detalles

Patrones de Diseño. Ezequiel Postan. 1 Libro e índice. 2 Introducción

Patrones de Diseño. Ezequiel Postan. 1 Libro e índice. 2 Introducción Patrones de Diseño Ezequiel Postan 1 Libro e índice Gamma, E., Helm, R., Johnson, R., Vlissides, J., Patrones de diseño, Addison-Wesley, 2003. Páginas 2-69: Introducción. Composite. Strategy. Decorator.

Más detalles

AUTOMATIZACION DE PROCESOS DE DESARROLLO DE SOFTWARE DEFINIDOS CON SPEM

AUTOMATIZACION DE PROCESOS DE DESARROLLO DE SOFTWARE DEFINIDOS CON SPEM AUTOMATIZACION DE PROCESOS DE DESARROLLO DE SOFTWARE DEFINIDOS CON SPEM Fabio A. Zorzan y Daniel Riesco Resumen Esta línea de investigación propone una alternativa para lograr la automatización de la gestión

Más detalles

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros La sentencia INSERT permite agregar nuevas filas de datos a las tablas existentes. Está sentencia

Más detalles

Introducción a los Tipos Abstractos de Datos

Introducción a los Tipos Abstractos de Datos Página 1 de 8 Introducción a los Tipos Abstractos de Datos Introducción: Concepto de abstracción Abstracción funcional y abstracción de datos Construcción de tipos abstractos de datos Especificación de

Más detalles

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN Tipos de datos SQL admite una variada gama de tipos de datos para el tratamiento de la información contenida en las tablas, los tipos

Más detalles

Bienvenidos a la presentación: Introducción a conceptos básicos de programación.

Bienvenidos a la presentación: Introducción a conceptos básicos de programación. Bienvenidos a la presentación: Introducción a conceptos básicos de programación. 1 Los programas de computadora son una serie de instrucciones que le dicen a una computadora qué hacer exactamente. Los

Más detalles

%& %)& '$!%*+ $, %%%&$ %%

%& %)& '$!%*+ $, %%%&$ %% OBJETIVO!!"#$$ %& '(%"#% (% %& %)& '$!%*+ $, %%%&$ %% REQUERIMIENTOS SOFTWARE VERSIÓN LINK Java Development Kit (JDK) 6 http://java.sun.com NetBeans 6.1 http://www.netbeans.org MySQL 5.0 http://dev.mysql.com/

Más detalles

Enlaces relacionados: http://otn.oracle.com/tech/pl_sql/index.html

Enlaces relacionados: http://otn.oracle.com/tech/pl_sql/index.html 1.INTRODUCCION PL/SQL (Procedural Language ó Programming Language, según distintas fuentes, aunque la oficial es la primera) es el lenguaje utilizado por Oracle como extensión al SQL, y que nos va a permitir

Más detalles

- Bases de Datos - - Diseño Físico - Luis D. García

- Bases de Datos - - Diseño Físico - Luis D. García - Diseño Físico - Luis D. García Abril de 2006 Introducción El diseño de una base de datos está compuesto por tres etapas, el Diseño Conceptual, en el cual se descubren la semántica de los datos, definiendo

Más detalles

Universidad de Murcia. Facultad de Informática. Proceso de Modernización de los Datos de un Sistema de Información aplicando técnicas DSDM.

Universidad de Murcia. Facultad de Informática. Proceso de Modernización de los Datos de un Sistema de Información aplicando técnicas DSDM. Universidad de Murcia. Facultad de Informática. Proyecto Fin de Carrera. Proceso de Modernización de los Datos de un Sistema de Información aplicando técnicas DSDM. Francisco Moya Arnao. Proyecto dirigido

Más detalles

BOA, un framework MDA de alta productividad

BOA, un framework MDA de alta productividad BOA, un framework MDA de alta productividad Padrón Lorenzo, J. 1, Estévez García A. 1, Roda García J.L. 2, García López F. 2 1 Open Canarias SL, Santa Cruz Tenerife, España http://www.opencanarias.com

Más detalles

Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa.

Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa. BASES DE DATOS Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa. La creación de una base de datos debe ser realizada cuidadosamente procurando

Más detalles

PROGRAMACIÓ DIDÁCTICA: Secuanciación, Temporalización y Unidades Didácticas

PROGRAMACIÓ DIDÁCTICA: Secuanciación, Temporalización y Unidades Didácticas Departamento de Informática PROGRAMACIÓN DIDÁCTICA Curso 11-12 1 CONSEJERÍA DE EDUCACIÓN I.E.S. NERVIÓN Departamento de Informática CICLO FORMATIVO: TÉCNICO SUPERIOR EN DESARROLLO DE APLICACIONES MULTIPLATAFORMA.

Más detalles

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK. Introducción Java surgió en 1991 dentro de la empresa Sun Microsystems como un lenguaje de programación sencillo y universal destinado a electrodomésticos. La reducida potencia de cálculo y memoria de

Más detalles

>> Programación Visual (GUI)

>> Programación Visual (GUI) >> Programación Visual (GUI) Nicolás Álvarez S. nalvarezs@vtr.net Juan Monsalve Z. jmonsalve@elo.utfsm.cl Tópicos a tratar Por qué programación visual?. GUIs & IDEs. Delphi. Ejemplos. Por qué programación

Más detalles

Convirtiendo arboles de expresión lambda en diferentes strings.

Convirtiendo arboles de expresión lambda en diferentes strings. Convirtiendo arboles de expresión lambda en diferentes strings. Por: Horacio Aldo Tore, escrito en abril del 2010 en Buenos Aires Argentina Objetivo: Exponer en forma práctica con un ejemplo, como un mismo

Más detalles

Grupo de Procesadores de Lenguajes - Línea: Código Móvil Seguro

Grupo de Procesadores de Lenguajes - Línea: Código Móvil Seguro Grupo de Procesadores de Lenguajes - Línea: Código Móvil Seguro Francisco Bavera Martín Nordio Jorge Aguirre Marcelo Arroyo Gabriel Baum Ricardo Medel Resumen En el último tiempo Proof-Carrying Code (PCC)

Más detalles

http://www.cem.itesm.mx/extension/ms

http://www.cem.itesm.mx/extension/ms Diplomado Programación orientada a objetos con Java y UML Las empresas necesitan contar con sistemas de información modernos, ágiles y de calidad para alcanzar sus objetivos y ser cada vez más competitivos

Más detalles

Ingeniería de Software en SOA

Ingeniería de Software en SOA Ingeniería de Software en SOA ECSDI LSI-FIB-UPC cbea Curso 2014/2015 ECSDI (LSI-FIB-UPC cbea) Ingeniería de Software en SOA Curso 2014/2015 1 / 51 Índice 1 Directrices para la IS en SOA 2 Modelo de referencia

Más detalles

IBM Rational Software Architect/Modeler

IBM Rational Software Architect/Modeler IBM Software Group IBM Rational Software Architect/Modeler Arquitectura y Diseño de Aplicaciones UML 2.0 Ana López-Mancisidor - IBM Software Development Tools Ana.lopez@es.ibm.com 2004 IBM Corporation

Más detalles

Instituto Superior Politécnico José Antonio Echeverría Facultad de Ingeniería Informática

Instituto Superior Politécnico José Antonio Echeverría Facultad de Ingeniería Informática Instituto Superior Politécnico José Antonio Echeverría Facultad de Ingeniería Informática COMPONENTE PARA LA TRANSFORMACIÓN A ESTÁNDARES DE MODELOS DE PROCESOS DE NEGOCIO. MODELOS DE LA BPMS BONITA Informe

Más detalles

IVista: es la interfaz con la que el Presentador se comunica con la vista.

IVista: es la interfaz con la que el Presentador se comunica con la vista. Capítulo 3 MODELO DE DISEÑO 3.1 Arquitectura Modelo-Vista-Presentador La arquitectura Modelo-Vista-Presentador (MVP) [11] separa el modelo, la presentación y las acciones basadas en la interacción con

Más detalles

ADMINISTRACIÓN DE BASE DE DATOS

ADMINISTRACIÓN DE BASE DE DATOS SQL SERVER T-SQL QUERY s es ADMINISTRADOR GRÁFICO SGBD Elementos objetos Tablas Procedimientos Triggers Funciones Usuarios Permiso Roles Contraseñas Programas DTS (Data Transfer System) Exportación e Importación

Más detalles

UNIDAD DE TRABAJO 3: PROGRAMACIÓN DE BASES DE DATOS TEMA 8: INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN

UNIDAD DE TRABAJO 3: PROGRAMACIÓN DE BASES DE DATOS TEMA 8: INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN UNIDAD DE TRABAJO 3: PROGRAMACIÓN DE BASES DE DATOS TEMA 8: INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN 8.1. INTRODUCCIÓN AL SQL PROCEDIMENTAL Casi todos los grandes Sistemas Gestores de Datos incorporan

Más detalles

Curso de introducción a Oracle Application Express. Disertante: A.S. Ezequiel Portela

Curso de introducción a Oracle Application Express. Disertante: A.S. Ezequiel Portela Curso de introducción a Oracle Disertante: A.S. Contenidos Sobre el Curso... 4 Qué es APEX?... 4 Introducción al Curso... 4 Requisitos... 5 Modalidad... 5 Módulo 1: Fundamentos de Oracle SQL y PLSQL...

Más detalles

Aplicaciones Distribuidas con Visual Studio 2005

Aplicaciones Distribuidas con Visual Studio 2005 Aplicaciones Distribuidas con Visual Studio 2005 24.10.2006 Servicios Profesionales Danysoft Ahora los arquitectos en.net disponen de una versión de Visual Studio especialmente creada para atender sus

Más detalles

1. Generación automática de documentación (javadoc)

1. Generación automática de documentación (javadoc) Índice 1. Generación automática de documentación (javadoc)... 1 1.1 Introducción... 1 1.2 La herramienta Javadoc... 1 1.3 Comentando el código Java... 1 2 Guía de estilo de Java... 5 2.1 Clases... 6 2.2

Más detalles

Especificación de requisitos para servicios cloud dirigido por valor

Especificación de requisitos para servicios cloud dirigido por valor Escola Tècnica Superior d Enginyeria Informàtica Universitat Politècnica de València Especificación de requisitos para servicios cloud dirigido por valor Trabajo Fin de Grado Grado en Ingeniería Informática

Más detalles

WebRatio. Otro camino para el BPM. Web Models s.r.l. www.webratio.com contact@webratio.com 1 / 8

WebRatio. Otro camino para el BPM. Web Models s.r.l. www.webratio.com contact@webratio.com 1 / 8 WebRatio Otro camino para el BPM Web Models s.r.l. www.webratio.com contact@webratio.com 1 / 8 El BPM El BPM (Business Process Management) no es solo una tecnología, además a grandes rasgos es una disciplina

Más detalles

Práctica de Integración de Sistemas Aplicación Web.NET: Sitio de Comentarios de Eventos Deportivos

Práctica de Integración de Sistemas Aplicación Web.NET: Sitio de Comentarios de Eventos Deportivos Práctica de Integración de Sistemas Aplicación Web.NET: Sitio de Comentarios de Eventos Deportivos 1. Introducción Curso académico 2009-2010 La práctica de Integración de Sistemas consiste en el diseño

Más detalles

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008 Base de Datos I SQL PROCEDURAL Triggers y Stored Procedures Ing. Gustavo A. Correa Reina UNCPBA 2008 SQL Procedural Posibilita el uso de código procedural conjuntamente con sentencias SQL que son almacenadas

Más detalles

PREMISA: Un PRoceso para la Evolución y ModernIzación de Sistemas Aplicación a Red.es. Tesis Doctoral. Jueves 14 de Junio de 2012

PREMISA: Un PRoceso para la Evolución y ModernIzación de Sistemas Aplicación a Red.es. Tesis Doctoral. Jueves 14 de Junio de 2012 PREMISA: Un PRoceso para la Evolución y ModernIzación de Sistemas Aplicación a Red.es Tesis Doctoral Jueves 14 de Junio de 2012 Autor: Directores: Jorge Moratalla Collado Dra. Valeria de Castro Dr. Marcos

Más detalles

Construcción y adaptación de Lenguajes de Dominio Específico por usuarios finales

Construcción y adaptación de Lenguajes de Dominio Específico por usuarios finales Construcción y adaptación de Lenguajes de Dominio Específico por usuarios finales Santiago Jácome G. Universidad de las Fuerzas Armadas ESPE, Ecuador Universidad Autónoma de Madrid, España psjacome@espe.edu.ec

Más detalles

Indizen Labs imade. Marco de Desarrollo Aplicaciones de Indizen

Indizen Labs imade. Marco de Desarrollo Aplicaciones de Indizen Indizen Labs imade Marco de Desarrollo Aplicaciones de Indizen Índice de contenidos Indizen Labs Introducción a imade Metodología imade Arquitectura imade Herramientas imade Indizen Labs Indizen Labs Son

Más detalles

MÓDULO 1: FUNDAMENTOS DE BPM, GOBIERNO Y ORGANIZACIÓN POR PROCESOS

MÓDULO 1: FUNDAMENTOS DE BPM, GOBIERNO Y ORGANIZACIÓN POR PROCESOS MÓDULO 1: FUNDAMENTOS DE BPM, GOBIERNO Y ORGANIZACIÓN POR PROCESOS DIA 1 Hacia una gestión eficaz de la Organización Negocio: Funciones Procesos vs. Funciones de Negocio Tipos de Proceso: Principal, Soporte,

Más detalles

Prácticas: Introducción a la programación en Java. Informática (1º Ingeniería Civil) Curso 2011/2012

Prácticas: Introducción a la programación en Java. Informática (1º Ingeniería Civil) Curso 2011/2012 Prácticas: Introducción a la programación en Java Informática (1º Ingeniería Civil) Índice Introducción a Java y al entorno de desarrollo NetBeans Estructura de un programa Tipos de datos Operadores Sentencias

Más detalles

Teoría de Lenguajes - Segundo Obligatorio - 2014

Teoría de Lenguajes - Segundo Obligatorio - 2014 Teoría de Lenguajes Segundo Obligatorio 2014 El propósito del obligatorio es construir un programa que reconozca tiras de un lenguaje que se describirá a continuación. Para esto se utilizará la herramienta

Más detalles

Componente para la transformación a estándares de modelos de procesos de negocio. Modelos de la BPMS Oracle

Componente para la transformación a estándares de modelos de procesos de negocio. Modelos de la BPMS Oracle Instituto Superior Politécnico José Antonio Echeverría Facultad de Ingeniería Informática Componente para la transformación a estándares de modelos de procesos de negocio. Modelos de la BPMS Oracle Informe

Más detalles

PROGRAMACIÓN BÁSICA DE LA COMPUTADORA. 1 Introducción. Tabla 1: Instrucciones MIPS

PROGRAMACIÓN BÁSICA DE LA COMPUTADORA. 1 Introducción. Tabla 1: Instrucciones MIPS PROGRAMACIÓN BÁSICA DE LA COMPUTADORA 1 Introducción Un sistema de computadora total incluye tanto circuitería (hardware) como programación (software). El hardware consta de los componentes físicos y todo

Más detalles

Un ejemplo teórico de trigger podría ser éste:

Un ejemplo teórico de trigger podría ser éste: 9. TRIGGERS EN LA BASE DE DATOS Un trigger (disparador sería la traducción técnica) es un bloque PLSQL que se ejecuta implícitamente cuando ocurre un evento y pueden ser de base de datos o de aplicación.

Más detalles

Desarrollo de Software guiado por los modelos

Desarrollo de Software guiado por los modelos Desarrollo de Software guiado por los modelos Rubby Casallas rcasalla@uniandes.edu.co Universidad de los Andes (57) 1 3394949 Bogotá 1 1 Objetivo de la charla Presentar los conceptos básicos del enfoque

Más detalles

INTERPRETACIÓN DINÁMICA DE MÚLTIPLES LENGUAJES DE DOMINIO ESPECÍFICO

INTERPRETACIÓN DINÁMICA DE MÚLTIPLES LENGUAJES DE DOMINIO ESPECÍFICO INTERPRETACIÓN DINÁMICA DE MÚLTIPLES LENGUAJES DE DOMINIO ESPECÍFICO Héctor A. FLOREZ FERNANDEZ Facultad Tecnológica, Universidad Distrital Francisco Jose de Caldas haflorezf@udistrital.edu.co Bogotá,

Más detalles

Guía práctica de SQL

Guía práctica de SQL Guía práctica de SQL Francisco Charte Ojeda Agradecimientos Introducción Qué es SQL? Aplicaciones de SQL Intérpretes de SQL Tipos de RDBMS Cómo usar este libro Convenciones tipográficas 1. El modelo relacional

Más detalles

Arquitectura para análisis de información. Zombi es una arquitectura que proporciona de manera integrada los componentes

Arquitectura para análisis de información. Zombi es una arquitectura que proporciona de manera integrada los componentes Capítulo 4 Arquitectura para análisis de información propuesta 4.1 Arquitectura Zombi es una arquitectura que proporciona de manera integrada los componentes necesarios para el análisis de información

Más detalles

ENTORNO PARA LA PLANIFICACION DE LA PRODUCCION DE SISTEMAS DE FABRICACION FLEXIBLES

ENTORNO PARA LA PLANIFICACION DE LA PRODUCCION DE SISTEMAS DE FABRICACION FLEXIBLES ENTORNO PARA LA PLANIFICACION DE LA PRODUCCION DE SISTEMAS DE FABRICACION FLEXIBLES Mercedes E. Narciso Farias, Miquel Angel Piera i Eroles Unidad de Ingeniería de Sistemas y Automática. Universidad Autónoma

Más detalles

Iván Ruiz Rube Departamento de Ingeniería Informática Escuela Superior de Ingeniería Universidad de Cádiz

Iván Ruiz Rube Departamento de Ingeniería Informática Escuela Superior de Ingeniería Universidad de Cádiz Procesadores de Lenguajes 2 Metamodelado Curso 2013-2014 Iván Ruiz Rube Departamento de Ingeniería Informática Escuela Superior de Ingeniería Universidad de Cádiz 01/11/13 PL2 - Metamodelado 1 Contenidos

Más detalles

Estrategia de modernización de aplicaciones Oracle Forms y Reports

Estrategia de modernización de aplicaciones Oracle Forms y Reports Abril 2014 Mariana Contardi Experta en de aplicaciones de Oracle Forms en atsistemas Estrategia de de aplicaciones Muchos clientes se plantean la pregunta de qué hacer con las aplicaciones Forms y que

Más detalles

Programación en Capas.

Programación en Capas. Programación en Capas. Ricardo J. Vargas Del Valle Universidad de Costa Rica, Ciencias de Computación e Informática, San José, Costa Rica, 506 ricvargas@gmail.com Juan P. Maltés Granados Universidad de

Más detalles

Metodología de Ingeniería del Software para el desarrollo y mantenimiento de sistemas de información del Gobierno de Extremadura

Metodología de Ingeniería del Software para el desarrollo y mantenimiento de sistemas de información del Gobierno de Extremadura Metodología de Ingeniería del Software para el desarrollo y mantenimiento de sistemas de información del Gobierno de Extremadura Página 1 de 23 Índice del Documento 1.- Introducción... Página 4 2.- Propuesta

Más detalles

Tema 5: El Lenguaje Unificado de Modelado. Departamento de Lenguajes y Sistemas Informáticos II www.kybele.urjc.es

Tema 5: El Lenguaje Unificado de Modelado. Departamento de Lenguajes y Sistemas Informáticos II www.kybele.urjc.es Tema 5: El Lenguaje Unificado de Modelado Departamento de Lenguajes y Sistemas Informáticos II Contenidos Introducción Diagramas de UML Modelado de la parte estática Modelado de la parte dinámica Las 4+1

Más detalles

Los paquetes tienen dos partes: una especificación y un cuerpo que están almacenados por separado en la base de datos.

Los paquetes tienen dos partes: una especificación y un cuerpo que están almacenados por separado en la base de datos. 8. PAQUETES DE BASE DE DATOS Los paquetes nos van a permitir agrupar conceptos PL/SQL como pueden ser tipos, procedimientos y funciones. Por ejemplo: una paquete de Contabilidad podrá contener procedimientos

Más detalles

La complejidad de los automatismos y la necesidad de especificar con precisión las tareas => útiles simbólicos de representación

La complejidad de los automatismos y la necesidad de especificar con precisión las tareas => útiles simbólicos de representación PROGRAMACIÓN DEL AUTÓMATA Tiene una serie de pasos: Determinar qué debe hacer el sistema de control y en qué orden Identificar entradas y salidas al autómata Representar mediante un modelo el sistema de

Más detalles

Patrones para persistencia (I) Ingeniería del Software II

Patrones para persistencia (I) Ingeniería del Software II Patrones para persistencia (I) Ingeniería del Software II 1 Patrones para la construcción del esquema relacional En todos los ejemplos realizaremos transformaciones del siguiente diagrama de clases: Figura

Más detalles

HERRAMIENTAS Y ENTORNOS DE PROGRAMACIÓN

HERRAMIENTAS Y ENTORNOS DE PROGRAMACIÓN HERRAMIENTAS Y ENTORNOS DE PROGRAMACIÓN Tema 2. Tecnologías CASE Escuela Superior de Informática 1 Tema 2. Tecnologías CASE. Tecnologías CASE (~ 4 horas) Introducción. Conceptos, Objetivos, Herramientas

Más detalles

Desarrollo Dirigido por Modelos de Procesos de egocio Colaborativos: Análisis de herramientas para la transformación de modelos

Desarrollo Dirigido por Modelos de Procesos de egocio Colaborativos: Análisis de herramientas para la transformación de modelos Desarrollo Dirigido por Modelos de Procesos de egocio Colaborativos: Análisis de herramientas para la transformación de modelos Maximiliano Vanzetti CIDISI, Universidad Tecnológica acional-frsf, Lavaisse

Más detalles

Introducción. El curso se compone de dos módulos:

Introducción. El curso se compone de dos módulos: Introducción El programa de certificación ORACLE en Java SE, ofrece el nivel de certificación Oracle Certified Professional, Java SE 7 Programmer y está diseñado para personas que poseen una base sólida

Más detalles

CEP/ESP: Procesamiento y correlación de gran cantidad de eventos en arquitecturas SOA

CEP/ESP: Procesamiento y correlación de gran cantidad de eventos en arquitecturas SOA CEP/ESP: Procesamiento y correlación de gran cantidad de eventos en arquitecturas SOA Víctor Ayllón 1 y Juan M. Reina 1 1 Novayre {vayllon, jmreina}@novayre.es Abstract. El matrimonio entre ESP/CEP y las

Más detalles

HERRAMIENTAS DE DESARROLLO

HERRAMIENTAS DE DESARROLLO CONTENIDO 3.1 Estudio de herramientas para el desarrollo de Servicios Web 3.2 Compatibilidad de Herramientas integradas a.net 3.3 Ventajas y desventajas de la integración de código.net MONICA CECILIA GALLEGOS

Más detalles

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO Introducción:...1 Service Oriented Architecture...2 Elementos de una Service Oriented Architecture...2 Application frontends...2 Servicios...2 Contrato:...3

Más detalles

Capitulo III. Diseño del Sistema.

Capitulo III. Diseño del Sistema. Capitulo III. Diseño del Sistema. Para el desarrollo del sistema en la presente tesis se utilizo el paradigma orientado a objetos utilizando el lenguaje Java en su versión 1.2. Por medio de este lenguaje

Más detalles

BASES DE DATOS. Ivon Tarazona Oriana Gomez

BASES DE DATOS. Ivon Tarazona Oriana Gomez BASES DE DATOS Ivon Tarazona Oriana Gomez Introducción Introducción Ventajas e (Unified Modeling Language) Es un lenguaje usado para especificar, visualizar y documentar los diferentes aspectos relativos

Más detalles

PRINCIPIOS PARA LA APLICACIÓN DEL ESTÁNDAR ISA S95. Libardo Steven Muñoz, Fabian Yesid Vidal, Oscar Amaury Rojas A

PRINCIPIOS PARA LA APLICACIÓN DEL ESTÁNDAR ISA S95. Libardo Steven Muñoz, Fabian Yesid Vidal, Oscar Amaury Rojas A PRINCIPIOS PARA LA APLICACIÓN DEL ESTÁNDAR ISA S95 Libardo Steven Muñoz, Fabian Yesid Vidal, Oscar Amaury Rojas A Grupo de I+D en Automática Industrial - Universidad del Cauca Calle 5 No 4-50, Popayán,

Más detalles

TÈCNICO EN PROGRAMACIÒN DE SOFTWARE SERVICIO NACIONAL DE APRENDIZAJE, SENA Material de Apoyo Plataforma.NET LA PLATAFORMA.NET

TÈCNICO EN PROGRAMACIÒN DE SOFTWARE SERVICIO NACIONAL DE APRENDIZAJE, SENA Material de Apoyo Plataforma.NET LA PLATAFORMA.NET LA PLATAFORMA.NET La plataforma.net de Microsoft está diseñada para que se puedan desarrollar componentes software utilizando casi cualquier lenguaje de programación, de forma que lo que escribamos en

Más detalles

OMG UML 2.0 Marcando un hito en el desarrollo de software Resumen Keywords Historia del Surgimiento

OMG UML 2.0 Marcando un hito en el desarrollo de software Resumen Keywords Historia del Surgimiento OMG UML 2.0 Marcando un hito en el desarrollo de software Resumen A través de este artículo se ofrece un panorama amplio y de alto nivel sobre la especificación y los diferentes diagramas del Lenguaje

Más detalles

WEBBER: USO DE COMPONENTES PARA LA ARMONIZACIÓN DE CONTENIDOS Y METADATOS

WEBBER: USO DE COMPONENTES PARA LA ARMONIZACIÓN DE CONTENIDOS Y METADATOS WEBBER: USO DE COMPONENTES PARA LA ARMONIZACIÓN DE CONTENIDOS Y METADATOS Autores: Introducción Diego R. López RedIRIS diego.lopez@rediris.es El trabajo necesario para mantener un servidor de información

Más detalles

Vicente Pelechano. Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia

Vicente Pelechano. Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia Vicente Pelechano Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia Contenido Qué es el Metamodelado?. Sintaxis Abstracta Metaniveles vs. Niveles de Abstracción MOF

Más detalles

2.1 Ingeniería de Software

2.1 Ingeniería de Software Capítulo 2 Marco Teórico Se pretende desarrollar un software que pueda ser aplicado como una herramienta útil para la administración de una empresa. Es necesario tener en cuenta que, en todo desarrollo

Más detalles