Hacia una mejor experiencia de debugging en desarrollos AOP
|
|
- Gerardo Hidalgo Peña
- hace 8 años
- Vistas:
Transcripción
1 TESIS DE GRADO EN INGENIERÍA INFORMÁTICA Hacia una mejor experiencia de debugging en desarrollos AOP FACULTAD DE INGENIERÍA UNIVERSIDAD DE BUENOS AIRES TESISTA: Adrián EIDELMAN DIRECTORA: Lic. Rosa WACHENCHAUZER CO-DIRECTOR: Lic. Alan CYMENT NOVIEMBRE 2006
2 Resumen Las limitaciones que presenta la Programación Orientada a Objetos para encapsular las incumbencias transversales en un desarrollo de software han dado origen a nuevas técnicas de programación, entre las cuales se ha destacado en los últimos años la Programación Orientada a Aspectos (AOP). AOP introduce una nueva unidad de modularización denominada aspecto, que tiene el fin de encapsular estas funcionalidades transversales y mejorar así la comprensión y mantenibilidad de las aplicaciones. A partir de la introducción del aspecto como unidad de modularización, AOP a su vez incorpora nuevas fuentes de fallas y por lo tanto nuevos desafíos en lo que respecta al testing en desarrollos de este tipo. A pesar de esto, el aseguramiento de la calidad no ha sido objeto de atención dentro de la comunidad AOP y el escaso desarrollo de esta disciplina se manifiesta particularmente en una actividad: el debugging de aplicaciones. El objetivo de la presente tesis es exponer las fallas características que pueden presentarse en desarrollos AOP y las limitaciones en cuanto al soporte a las tareas de debugging que presentan en general las herramientas para desarrollos orientados a aspectos, para luego presentar una propuesta de solución y plasmar la misma dentro del framework conocido como SetPoint. Adrián Eidelman 2/148
3 Agradecimientos A Rosita y a Alan, directora y co-director de esta tesis, por su confianza y ayuda incondicional desde el primero hasta el último día de trabajo. A Rubén, por sus aportes, comentarios y sugerencias desde el viejo continente. A Silvina por su apoyo y compañía constantes durante todos estos años de carrera. A mis padres, Alicia y Mario, y mis hermanos Gabriel y Nadia. A todos aquellos que ayudaron desinteresadamente desde algún lugar del cyberespacio. A profesores, compañeros, amigos y todos los que me permitieron llegar a este momento. Adrián Eidelman 3/148
4 Tabla de Contenidos RESUMEN...2 AGRADECIMIENTOS...3 TABLA DE CONTENIDOS INTRODUCCIÓN...7 ORGANIZACIÓN DE LA TESIS LA PROGRAMACIÓN ORIENTADA A ASPECTOS...12 EL PROBLEMA DE LAS INCUMBENCIAS TRANSVERSALES...12 Ejemplificando el problema...13 UNA PROPUESTA DE SOLUCIÓN: AOP...15 Elementos distintivos del paradigma AOP...16 Otras ventajas que ofrece AOP...20 AOP vs. POO...20 RESUMEN EL PROYECTO SETPOINT...22 SETPOINT, LECTOR LECTOR, SETPOINT...22 UNA MOTIVACIÓN PARA SETPOINT: LA PARADOJA DE LA PROGRAMACIÓN AOP...23 SEMANTIC POINTCUTS Y CONCEPTOS DE LA WEB SEMÁNTICA...25 Conceptos de la Web semántica...26 Armando el rompecabezas hacia la implementación de setpoints...30 MODELO DE JOINPOINTS Y WEAVING...32 Completando el universo semántico de la aplicación...33 DECLARACIÓN DE ASPECTOS, ADVICES Y POINTCUTS...34 Pointcuts...35 Aspectos...36 Advices...37 ARQUITECTURA SETPOINT...38 RESUMEN ANTES DE CONTINUAR... QUÉ ENTENDEMOS EXACTAMENTE POR DEBUGGING?...40 BUGS, DEFECTOS Y FALLOS...40 DEBUGGING...41 DEBUGGERS...42 Estado del arte...43 ALGUNAS ACLARACIONES RELACIONADAS CON EL DEBUGGING...44 RESUMEN ESTADO DEL ARTE: INVESTIGACIONES SOBRE EL TEMA...46 TRABAJOS RELACIONADOS...46 TEMAS PENDIENTES DE INVESTIGACIÓN...48 RESUMEN DEFINICIÓN DEL PROBLEMA Y OBJETIVOS...51 POR QUÉ TESTEAR DESARROLLOS AOP ES DIFERENTE?...51 UN MODELO DE FALLAS PARA AOP...52 La naturaleza de las fallas en desarrollos AOP...53 Modelo de fallas candidato...54 DEBUGGEANDO APLICACIONES EN SETPOINT...56 Modelos de weaving...56 Información de debugging...59 Adrián Eidelman 4/148
5 Desentendimiento de las actividades propias de AOP...61 OBJETIVOS DE LA TESIS...64 RESUMEN MEJORANDO LA EXPERIENCIA DE DEBUGGING EN DESARROLLOS AOP...66 PROPIEDADES DE UNA SOLUCIÓN IDEAL DE DEBUGGING...67 Idempotencia...67 Desentendimiento...69 Intimidad...72 Dinamismo...73 Introducción de aspectos...74 Modificaciones en tiempo de ejecución...75 Aislamiento de fallas...76 Conocimiento del flujo de ejecución...77 Inmediatez...77 LA SITUACIÓN DE SETPOINT Y LAS RESTANTES PLATAFORMAS AOP...78 RESUMEN NUESTRO GRANO DE ARENA: DISEÑO E IMPLEMENTACIÓN DE LA SOLUCIÓN EN SETPOINT...82 DEFINIENDO EL ALCANCE DEL TRABAJO...82 Las propiedades a implementar...82 Debugger...83 SETPOINT V1.1: UN PRIMER ACERCAMIENTO...84 Idempotencia...85 Desentendimiento...88 Dinamismo...90 Conocimiento del flujo de ejecución...95 Síntesis de la primera experiencia...97 SETPOINT V2.0: PROPUESTA FINAL PARA ESTE TRABAJO...98 Idempotencia...98 Desentendimiento e Intimidad Conocimiento del flujo de ejecución Inmediatez Síntesis de la segunda experiencia RESUMEN UNIFICANDO CONCEPTOS: UN EJEMPLO DE APLICACIÓN DESCRIPCIÓN DE LA APLICACIÓN AOP Dimensión base y aspectos Implementación de los aspectos REALIZANDO EL DEBUGGING DE LA APLICACIÓN Debugging a nivel código fuente Controlando la dinámica de la aplicación Flujo de ejecución de aspectos Determinando el origen de la falla RESUMEN CONCLUSIONES ANEXO A EL FRAMEWORK PHOENIX VISIÓN GENERAL ARQUITECTURA DE PHOENIX MODO DUAL JERARQUÍA DE UNIDADES RESUMEN ANEXO B DIAGRAMAS DE SECUENCIA SETPOINT El algoritmo del weaver Obtención de matchpoint y política de weaving Adrián Eidelman 5/148
6 Ejecución de la RandomWeavingPolicy ANEXO C EJEMPLOS DE REPRESENTACIONES SEMÁNTICAS REPRESENTACIÓN SEMÁNTICA DE LA APLICACIÓN DOTSTACK REPRESENTACIÓN SEMÁNTICA DEL COMMON TYPE SYSTEM REFERENCIAS Adrián Eidelman 6/148
7 1. Introducción A partir de la mitad de la década de 1980 y hasta la actualidad, la POO o Programación Orientada a Objetos se ha constituido como uno de los paradigmas de programación más importantes. Las características de la POO han permitido modelar problemas complejos con gran facilidad, y hoy día el paradigma de objetos es probablemente el más utilizado a la hora de construir soluciones de software. Sin embargo, como todos los paradigmas de programación existentes, éste posee también sus puntos débiles. Este hecho ha dado lugar a la aparición de nuevas técnicas de programación, dentro de las cuales se destaca principalmente la Programación Orientada a Aspectos, también conocida como AOP por sus siglas en inglés (Aspect Oriented Programming). La Programación Orientada a Aspectos aparece como una propuesta para solucionar el problema de la separación de incumbencias transversales o crosscuting concerns, es decir, aquellas funcionalidades o cualidades del sistema que afectan a más de una clase u objeto [Kiczales et al., 1997]. Ejemplos típicos de crosscuting concerns son tracing, logging y seguridad, entre muchos otros. Generalmente, estos crosscuting concerns constituyen requerimientos no funcionales del sistema y se dispersan a lo largo de todo el código fuente 1. En la programación tradicional, ya sea mediante POO o programación procedural, la lógica principal de la aplicación se entremezcla con aspectos suplementarios o no funcionales, como los mencionados anteriormente. La propuesta de AOP se basa en permitir la modularización de estos aspectos, permitiendo a los desarrolladores construir la lógica del negocio de forma independiente a las restantes incumbencias, y luego poder relacionarlas con la ayuda automática de herramientas especialmente diseñadas para tal fin. En definitiva, lo que AOP ofrece desde la teoría- es una verdadera separación de incumbencias. Debido a la corta edad que registra la programación orientada a aspectos, y su inmadurez como técnica de desarrollo, ésta aún presenta varios desafíos que será necesario afrontar para pasar de ser una tecnología promisoria a una tecnología que se pueda utilizar en la práctica y de manera masiva a nivel industrial. Hoy 1 Algunos trabajos realizados denominan crosscuting concern a cualquier incumbencia transversal independientemente de su carácter funcional o no funcional. Consideramos que las ventajas de AOP se presentan principalmente al tomar como crosscuting concerns a los aspectos no funcionales de un sistema. Queda fuera del alcance de este trabajo entrar en una discusión sobre este tema. Adrián Eidelman 7/148
8 día, los mayores esfuerzos en investigación de este paradigma se centran en las disciplinas de análisis, diseño e implementación, y en ese sentido otras áreas de investigación han quedado relegadas. Quizás el ejemplo más concreto sea el testing. A pesar de la sabida importancia que tiene el testing en el desarrollo de soluciones informatizadas, esencial para asegurar la calidad del software, aún no se le ha prestado la atención debida en el mundo AOP y los trabajos relacionados con esta disciplina son realmente escasos. Ciertas características propias de la programación orientada a aspectos que serán abordadas a lo largo de este trabajo- hacen que las técnicas y herramientas de testing existentes en la actualidad no sean las más adecuadas para este tipo de soluciones. Encontrar técnicas y herramientas adecuadas para el desarrollo de aplicaciones AOP será sin dudas un paso fundamental e ineludible para poder construir exitosamente este tipo de soluciones. Teniendo en cuenta esta situación, con la esperanza de contribuir a la madurez de esta tecnología y conseguir herramientas prácticas que permitan desarrollar software de alta calidad, la presente tesis abordará el estudio de un tema específico dentro de la disciplina de testing: el debugging de aplicaciones. Es sabido que las herramientas modernas de debugging constituyen una parte fundamental en el desarrollo de software y seguramente son pocas las necesidades que puedan surgir al debuggear aplicaciones procedurales u orientadas a objetos y que estas herramientas no nos provean. No sucede lo mismo para AOP: las características particulares de la programación orientada a aspectos -relacionadas con la introducción del aspecto como una nueva entidad de programación, la relación e interacción entre los aspectos y los módulos tradicionales, entre otras cosas- dan lugar a nuevas fuentes de fallas en los programas, y por lo tanto resultarán en sistemas con nuevos desafíos de testing y diferentes necesidades de debugging. La gran mayoría de las herramientas AOP en la actualidad carecen de un adecuado soporte al debugging, dificultando así la tarea de diagnosticar fallas y comprender la estructura y flujo de ejecución de los programas. La posibilidad de debuggear aplicaciones AOP es crítica para la adopción de este paradigma. La intención de la presente tesis es presentar una propuesta de solución basada en propiedades de debugging que idealmente debería soportar una herramienta para desarrollos AOP, y realizar una experiencia práctica implementando aquellas Adrián Eidelman 8/148
9 funcionalidades que sean posibles de acuerdo a un análisis previo de factibilidad- dentro del framework de AOP SetPoint [Cyment & Altman, 2004] 2. Los pasos que se realizarán a lo largo del trabajo serán: 1. Se analizarán las fuentes de fallas que introduce la programación orientada a aspectos, particulares de este paradigma. 2. A partir del modelo de fallas planteado, y a los trabajos existentes sobre el tema, se presentarán las propiedades de debugging que debería brindar idealmente cualquier herramienta para desarrollos AOP. 3. En base a los dos puntos anteriores, se analizará qué facilidades de debugging ofrece hoy en día el framework para AOP SetPoint, y se establecerá una meta previo análisis de factibilidad- para mejorar la situación actual. 4. Se diseñaran y construirán las propiedades propuestas para el framework AOP SetPoint, describiendo de qué manera estas nuevas funcionalidades del framework facilitan la experiencia de debugging. 5. Finalmente, se expondrán las conclusiones del trabajo, intentando sentar las bases para nuevas técnicas de debugging para herramientas AOP. Organización de la tesis El trabajo se encuentra dividido en una serie de capítulos, los cuales se describen brevemente a continuación: 1. Introducción: presenta el problema y temas a ser tratados en el trabajo. 2. La Programación Orientada a Aspectos: realiza una introducción al paradigma AOP, sus conceptos principales y objetivos. 3. El proyecto SetPoint: introduce el proyecto SetPoint y sus características salientes, destacando aquellos que estén directamente relacionados con el tema de esta tesis. 4. Antes de continuar qué entendemos exactamente por debugging?: explica qué es el debugging y las diferentes técnicas existentes. Presenta 2 El proyecto SetPoint será descrito en profundidad más adelante en este trabajo. Adrián Eidelman 9/148
10 aclaraciones acerca de conceptos erróneos comúnmente utilizados sobre la actividad. 5. Estado del arte: Investigaciones sobre el tema: describe los trabajos de investigación relacionados con el tema abordado en la presente tesis y presenta los temas pendientes de resolución relacionados con el aseguramiento de la calidad en desarrollos orientados a aspectos. 6. Definición del problema y objetivos: describe en detalle un modelo de fallas para AOP y las limitaciones al debugging existentes en SetPoint muchas veces presentes en otras plataformas-, los cuales sientan las bases para determinar las necesidades de debugging de para una herramienta de desarrollo AOP. De acuerdo al problema planteado se definen formalmente en este capítulo los objetivos de la tesis. 7. Mejorando la experiencia de debugging en desarrollos AOP: presenta una propuesta de mejora basada en una serie de propiedades que debería brindar una solución ideal de debugging para AOP. En base a las propiedades planteadas se presenta la situación de SetPoint y otras herramientas de desarrollo, reflejando el estado de situación actual en relación al soporte de debugging. 8. Nuestro grano de arena: diseño e implementación de la solución en SetPoint: describe la implementación en SetPoint de cada una de las funcionalidades construidas para dar soporte a las propiedades alcanzadas dentro del trabajo, presentando los problemas y limitaciones encontradas. Compara la situación final de la herramienta en relación a su versión anterior. 9. Unificando conceptos: un ejemplo de aplicación: presenta mediante un ejemplo sencillo cómo se puede realizar la actividad de debugging en SetPoint haciendo uso de los avances alcanzados en este trabajo 10. Conclusiones: presenta los aspectos salientes del trabajo realizado proponiendo a la vez futuras líneas de investigación relacionadas. 11. Anexo A El framework Phoenix: introduce las características más importantes de la herramienta. 12. Anexo B Diagramas de secuencia SetPoint: presenta los diagramas de secuencia actualizados correspondientes a las actividades de weaving en SetPoint. Adrián Eidelman 10/148
11 13. Anexo C Ejemplos de representaciones semánticas: presenta ejemplos de ontologías con el fin de profundizar el concepto de pointcuts semánticos. Adrián Eidelman 11/148
12 2. La Programación Orientada a Aspectos La Programación Orientada a Aspectos como nueva técnica de programación se encuadra dentro de lo que se conoce de manera genérica como POP o Post-Object Programming [Elrad et al., 2001b]. La Programación Orientada a Objetos, a pesar de ser el paradigma de programación dominante en la actualidad, posee limitaciones que han dado origen a esta nueva generación de técnicas. Hemos mencionado que AOP propone desde la teoría una real separación de incumbencias. Ahora bien... cuál es el problema con POO? Qué es en definitiva AOP? Cómo propone solucionar el problema de las incumbencias transversales? AOP reemplaza POO? El presente capítulo intentará aclarar todas estas preguntas. El problema de las incumbencias transversales La programación orientada a objetos nos ha permitido desarrollar aplicaciones complejas: interfaces gráficas, sistemas operativos y aplicaciones distribuidas son sólo unos pocos ejemplos de lo que se ha podido construir utilizando POO. Sin embargo, el éxito en desarrollar este tipo de sistemas nos lleva a querer desarrollar sistemas aún más complejos, y es ahí donde surgen necesidades de nuevas técnicas y herramientas que nos permitan hacerlo. POO es una excelente idea, pero también tiene sus limitaciones: si uno se detiene a analizar la implementación en código de una solución, es posible observar que muchos requerimientos no se descomponen claramente en una unidad que agrupe esos comportamientos. La orientación a objetos presenta dificultades al intentar agrupar o localizar estos requerimientos [Kiczales et al., 1997; Elrad et al., 2001b], que en la generalidad de los casos tienden a ser requerimientos suplementarios o no funcionales. Por el contrario, estos requerimientos se encuentran dispersos a lo largo de todo el código, de forma transversal, generando de esta forma un código de mayor complejidad y más difícil comprensión. Adrián Eidelman 12/148
13 Ejemplificando el problema Supongamos que nos piden construir un sistema para un estudio jurídico y, como parte de éste, modelamos utilizando los conceptos de la orientación a objetoslas siguientes clases: Abogado, Pasante y Secretaria. Entre los tantos requerimientos que nos solicitan deberemos brindar la posibilidad de enviar mensajes entre estos tres actores. Una modelización posible es la que muestra la Figura 2-1. Empleado Abogado Secretaria Pasante -enviarmensaje() -enviarmensaje() -enviarmensaje() Figura 2-1: Modelo de la solución para el estudio jurídico Dado que los mensajes enviados por abogados y secretarias pueden contener información crítica, nos solicitan además que todo mensaje enviado por alguno de estos actores deberá ser encriptado previo a su envío. Por supuesto accedemos al pedido y, dentro de la operación enviarmensaje de las clases Abogado y Secretaria, agregamos la siguiente línea de código: private void Abogado.enviarMensaje(string mensaje) {... string mensajeencriptado = encriptar(mensaje);... } Por supuesto nuestro modelo no ha sido alterado, pero ahora existe una particularidad en el código: las operaciones de envío de mensaje de las clases Abogado y Secretaria incluyen la encriptación de los mismos y, como se ilustra en la Figura 2-2, esta funcionalidad de encriptación se encuentra ahora dispersa a lo Adrián Eidelman 13/148
14 largo de más de una clase. En conclusión: la encriptación, en este modelo, constituye una incumbencia transversal o crosscuting concern [Kiczales et al., 1997]. Empleado Abogado Secretaria Pasante Encriptación -enviarmensaje() -enviarmensaje() -enviarmensaje() Figura 2-2: La encriptación de datos constituye una incumbencia transversal Existe además otra característica, producida por la aparición de esta incumbencia transversal, que no hemos mencionado aún. Las clases Abogado y Secretaria, que originalmente fueron diseñadas para resolver aspectos funcionales del estudio jurídico, se entremezclan ahora con aspectos secundarios al dominio del problema, como es en este caso la funcionalidad de encriptación. En resumen, son dos los efectos no deseables producto de la existencia de incumbencias transversales: el primero de los efectos mencionados, en donde el código correspondiente a una incumbencia no es encapsulado en un único módulo sino que se dispersa en varios puntos del programa, es conocido como Code Scattering. El segundo de los efectos, en donde en un mismo módulo encontramos código correspondiente a distintas incumbencias, se conoce con el nombre de Code Tangling [Kiczales et al., 1997] (Figura 2-3). El code scattering y el code tangling producen como consecuencia un código más complejo y complicado de entender y mantener. Puede argumentarse que la solución planteada en este ejemplo puede no ser la mejor. Es cierto que existen soluciones más elegantes al problema, probablemente mediante la especialización de las clases o el uso de patrones de diseño. No es intención del presente trabajo profundizar en esta discusión, sin embargo, como se explica en diversos trabajos relacionados, el problema sigue Adrián Eidelman 14/148
15 existiendo más allá del ejemplo que se utilice [Dedecker, 2002; Cyment & Altman, 2004]. Empleado Code Tangling Abogado Secretaria Pasante Code Scattering -enviarmensaje() -enviarmensaje() -enviarmensaje() Figura 2-3: Code Scattering y Code Tangling Una propuesta de solución: AOP La programación orientada a aspectos centra su propuesta en la idea de que es conveniente construir un sistema especificando las diferentes incumbencias del problema de manera separada e independientes unas de otras, y luego utilizar mecanismos propios del entorno de desarrollo para relacionarlas de forma de obtener un programa coherente. AOP introduce para esto una nueva unidad de modularización, denominada aspecto, la cual tiene como objetivo encapsular las incumbencias transversales. Basándose en esta propuesta, existirá una dimensión base del problema y otras que la cruzan, representadas por estos aspectos [Cyment & Altman, 2004]. Si suscribimos a la idea de asociar los aspectos con requerimientos no funcionales del sistema como puede ser logging, persistencia, transaccionabilidad, entre otros- entonces la dimensión base se corresponderá con la lógica del negocio, mientras que la dimensión de aspectos conformará los requerimientos suplementarios del sistema. Si logramos modularizar por un lado al negocio, y por separado a cada una de las incumbencias transversales, entonces desde la teoría- estaremos solucionando el problema del code scattering y el code tangling. Más aún, el programador de una dimensión del problema podrá ser capaz de desentenderse de las demás dimensiones y concentrarse sólo en aquella Adrián Eidelman 15/148
16 que le interesa, propiedad que se conoce con el nombre de obliviousness [Filman & Friedman, 2000]. Volviendo por un momento al ejemplo del abogado y la secretaria, quizás la tendencia en POO hubiese sido la de agrupar las funcionalidades comunes entre las clases en este caso la funcionalidad de encriptación- y empujarlas hacia arriba en el diagrama de clases, de forma de localizar el código de encriptar exclusivamente en la clase Empleado 3. AOP en cambio intenta tomar la incumbencia como un elemento de primera clase, y expulsarla horizontalmente de la estructura de clases, tal como se ilustra en la Figura 2-4. Empleado Encriptación Aspecto de Encriptación Abogado Secretaria Pasante -enviarmensaje() -enviarmensaje() -enviarmensaje() Figura 2-4: AOP modulariza las incumbencias transversales en unidades llamadas aspectos Modularizando las incumbencias de esta forma, AOP ofrece -desde la teoría- una real separación de incumbencias. Elementos distintivos del paradigma AOP 4 Hemos visto hasta el momento qué propone AOP como objetivo principal, analizando el problema de las incumbencias transversales. Esto no aclara de todas maneras de qué forma la programación orientada a aspectos lo trata de solucionar. Intentaremos comprender, mediante la presentación de los elementos 3 Si se analiza un poco más en detalle esta solución, llegará a la conclusión que el problema de code tangling no se resuelve de esta manera. 4 No existe un real consenso dentro de la comunidad sobre si AOP es en realidad un nuevo paradigma o no. Sí existe una visión común acerca de que constituye una evolución lógica en el desarrollo de software, especialmente para desarrollos orientados a objetos. Esta discusión escapa los alcances de este trabajo, a pesar que utilizaremos el término a lo largo del mismo. Adrián Eidelman 16/148
17 distintivos del paradigma, cómo es que AOP logra modularizar estas incumbencias. JoinPoints, Pointcuts y Advices Mediante el uso de AOP podemos modularizar las incumbencias transversales de forma independiente, y así contar con una dimensión base del problema por un lado y otras dimensiones que lo cruzan por otro lado. En dónde se intersecan estos dos mundos? Los puntos en la ejecución de un programa donde es posible aplicar la lógica de un aspecto se denominan joinpoints. Cada plataforma AOP posee su definición particular de cuáles son los puntos de ejecución que pueden conformar un joinpoint, aunque generalmente éstos están constituidos por llamadas a métodos, accesos a propiedades de un objeto o creaciones de objetos. La definición de joinpoint no basta para completar el modelo. Es necesario contar con algún mecanismo que nos permita decir qué aspecto se debe aplicar en determinado joinpoint. Expresándolo de una manera un poco más formal, necesitamos poder predicar sobre los joinpoints para definir su pertenencia o no a un conjunto, y así definir los aspectos que deben ejecutarse en tales puntos del programa. La forma que tenemos de predicar sobre los joinpoints es denominada cuantificación [Filman & Friedman, 2000] y su implementación será también particular de cada plataforma. Mediante la facilidad de cuantificación que nos provea la herramienta AOP que utilicemos será posible definir una serie de joinpoints para luego aplicar aspectos sobre tal conjunto. El nombre que se le da a un conjunto definido de joinpoints es pointcut. Finalmente, se denomina advice a la entidad que permite definir qué aspecto se debe ejecutar en todos los joinpoints pertenecientes a un pointcut. A partir de estas tres entidades presentadas, la idea de cómo funciona AOP empieza a quedar un poco más clara. Trataremos de aplicar estos nuevos conceptos al ejemplo antes presentado 5 : De acuerdo a lo expresado anteriormente, tenemos una dimensión base del problema compuesta por la lógica de negocio del estudio jurídico y otra dimensión 5 El ejemplo utiliza los conceptos de forma general, sin entrar en detalles de implementación o referenciando a alguna herramienta AOP en particular. Adrián Eidelman 17/148
18 transversal compuesta por el aspecto de encriptación 6. Necesitamos, de acuerdo a lo solicitado por nuestro cliente, que los envíos de mensaje que realizan tanto un abogado como una secretaria sean encriptados previos a su transmisión. Suponiendo que contamos con una plataforma AOP en la que las llamadas a métodos pueden constituir un joinpoint deben ser contados los casos de herramientas en los cuales esto no es así, si efectivamente existe alguna que no lo permita- podríamos decidir aplicar el aspecto de encriptación a todas las llamadas al método enviarmensaje de instancias de las clases Abogado y Secretaria. Para eso debemos definir el pointcut que incluya a todos esos puntos de ejecución, por ejemplo de la siguiente manera: Pointcut mensajessensibles { todas las llamadas al método enviarmensaje de instancias de las clases Abogado o Secretaria } Resta definir un advice que indique que se debe aplicar el aspecto de encriptación en todos los joinpoints del pointcut mensajessensibles. Esto podría realizarse de la siguiente manera: Advice encriptarmensajessensibles { aplicar el aspecto Encriptación al pointcut mensajessensibles } De acuerdo a las definiciones de pointcuts, aspectos y advices que se realicen, la plataforma AOP deberá encargarse de relacionar todos estos elementos con el objetivo de obtener como resultado un sistema que funcione idénticamente a como lo haría si hubiésemos optado por mecanismos tradicionales de programación. En definitiva, esta modularización en aspectos tiene por objetivo facilitar la construcción y entendimiento del software, mientras que el resultado que deseamos obtener desde un punto de vista de la ejecución del mismo no 6 Lógicamente podrán existir más aspectos aparte del de encriptación. Se toma este solo para simplificar el ejemplo. Adrián Eidelman 18/148
19 varía con respecto a los restantes paradigmas. El proceso por el cual se combinan la dimensión base con las restantes dimensiones del problema se denomina weaving, término que en castellano significa entretejido. Weaving El weaving es el proceso que se encarga de que se ejecuten los aspectos que corresponden durante la ejecución del programa, de acuerdo a los advices que se hayan definido. Denominaremos al componente que realiza el proceso de weaving con el nombre de weaver. Lógicamente este proceso debe valerse de mecanismos automáticos provistos por la plataforma AOP, de forma que sea, en la mayor medida posible, invisible para el programador. Como ejemplifica la Figura 2-5, el proceso de weaving integra la dimensión base en este caso la lógica de negocio del estudio jurídico- con las dimensiones transversales encapsuladas en aspectos. SISTEMA DE ESTUDIO JURÍDICO Encriptación Visualización... weaving weaving weaving Logging weaving Abogados, Secretarias, Legajos, Escritos... weaving Persistencia weaving weaving weaving Caching Tracing Seguridad Figura 2-5: El proceso de weaving Adrián Eidelman 19/148
20 El proceso de weaving es un tema central no sólo a la programación orientada a aspectos, sino también en particular al debugging en plataformas AOP por lo que será abordado en mayor detalle a lo largo del trabajo. Otras ventajas que ofrece AOP Además de la claridad en el desarrollo que persigue la programación orientada a aspectos, podemos mencionar otras ventajas que ofrece esta técnica de programación: Reutilización de aspectos: el tener las incumbencias transversales modularizadas nos da la posibilidad de reutilizar la lógica de los aspectos en otros desarrollos. Esto se puede tornar sumamente complicado si las funcionalidades se encuentran dispersas a lo largo del código fuente. Utilización de aspectos en sistemas legacy: la independencia que poseen los aspectos de la dimensión base facilitan la incorporación de funcionalidades a sistemas de los cuales no se posee conocimiento y por lo tanto sería sumamente complicado modificar el código para lograrlo. Incluso en plataformas AOP que no se valen del código fuente para lograr el weaving, esto es posible de realizar precisamente sin la existencia del código. AOP vs. POO Es importante, para cerrar la idea de la programación orientada a aspectos, entender un último concepto: el objetivo de AOP no es reemplazar POO. Todo lo contrario, AOP se construye por sobre POO, tratando de conseguir la separación de las incumbencias que POO no logra modularizar. Al programar en AOP, se siguen utilizando objetos, métodos, atributos y todos los elementos distintivos de la programación orientada a objetos. Es cierto también que las ideas centrales que propone el paradigma pueden aplicarse de la misma manera a otros paradigmas como el imperativo o el funcional, sin embargo existe una relación mucho más cercana con POO, básicamente por el uso de clases y objetos o la asociación de joinpoints con llamadas a métodos, entre otros. Adrián Eidelman 20/148
UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos
2.1. Principios básicos del Modelado de Objetos UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos Hoy en día muchos de los procesos que intervienen en un negocio o empresa y que resuelven
Más detallesIntroducción. Metadatos
Introducción La red crece por momentos las necesidades que parecían cubiertas hace relativamente poco tiempo empiezan a quedarse obsoletas. Deben buscarse nuevas soluciones que dinamicen los sistemas de
Más detallesIntroducción a la Firma Electrónica en MIDAS
Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento
Más detallesCapítulo VI. Diagramas de Entidad Relación
Diagramas de Entidad Relación Diagramas de entidad relación Tabla de contenido 1.- Concepto de entidad... 91 1.1.- Entidad del negocio... 91 1.2.- Atributos y datos... 91 2.- Asociación de entidades...
Más detallesEstas visiones de la información, denominadas vistas, se pueden identificar de varias formas.
El primer paso en el diseño de una base de datos es la producción del esquema conceptual. Normalmente, se construyen varios esquemas conceptuales, cada uno para representar las distintas visiones que los
Más detallesCiclo de vida y Metodologías para el desarrollo de SW Definición de la metodología
Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología La metodología para el desarrollo de software es un modo sistemático de realizar, gestionar y administrar un proyecto
Más detallesUNIVERSIDAD DE BUENOS AIRES FACULTAD DE INGENIERÍA. Documentación de Motivación del Proyecto. JMit. Java Monitoring by Introspection Tool
UNIVERSIDAD DE BUENOS AIRES FACULTAD DE INGENIERÍA Documentación de Motivación del Proyecto JMit Java Monitoring by Introspection Tool Alumnos: 84.264 86.097 Tutor: Wachenchauzer, Rosa Graciela Indice
Más detallesElementos requeridos para crearlos (ejemplo: el compilador)
Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción
Más detalles1.4.1.2. Resumen... 1.4.2. ÁREA DE FACTURACIÓN::INFORMES::Pedidos...27 1.4.2.1. Detalle... 1.4.2.2. Resumen... 1.4.3. ÁREA DE
MANUAL DE USUARIO DE ABANQ 1 Índice de contenido 1 ÁREA DE FACTURACIÓN......4 1.1 ÁREA DE FACTURACIÓN::PRINCIPAL...4 1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA...4 1.1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA::General...4
Más detallesWorkflows? Sí, cuántos quiere?
Workflows? Sí, cuántos quiere? 12.11.2006 Servicios Profesionales Danysoft Son notables los beneficios que una organización puede obtener gracias al soporte de procesos de negocios que requieran la intervención
Más detallesSERVICE 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 detallesGeneXus BPM Suite X. Última actualización: 01 de Setiembre de 2008
Última actualización: 01 de Setiembre de 2008 Copyright Artech Consultores S. R. L. 1988-2008. Todos los derechos reservados. Este documento no puede ser reproducido en cualquier medio sin el consentimiento
Más detallesPlataforma e-ducativa Aragonesa. Manual de Administración. Bitácora
Plataforma e-ducativa Aragonesa Manual de Administración Bitácora ÍNDICE Acceso a la administración de la Bitácora...3 Interfaz Gráfica...3 Publicaciones...4 Cómo Agregar una Publicación...4 Cómo Modificar
Más detallesGUIA PROGRAMACIÓN ORIENTADA A OBJETOS
GUIA PROGRAMACIÓN ORIENTADA A OBJETOS 1. Por qué la P.O.O? R= A medida que se van desarrollando los lenguajes, se va desarrollando también la posibilidad de resolver problemas más complejos. En la evolución
Más detallesIntroducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual
Introducción Algunas de las personas que trabajan con SGBD relacionales parecen preguntarse porqué deberían preocuparse del diseño de las bases de datos que utilizan. Después de todo, la mayoría de los
Más detallesManual del Usuario. Sistema de Help Desk
Manual del Usuario Sistema de Help Desk Objetivo del Manual El siguiente manual tiene como objetivo proveer la información necesaria para la correcta utilización del sistema Help Desk. Describe los procedimientos
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso
PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Modelado de casos de uso (I) Un caso de uso es una técnica de modelado usada para describir lo que debería hacer
Más detallesModificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.
UNIVERSIDAD DE CARABOBO FACULTAD DE CIENCIA Y TECNOLOGÍA DIRECCION DE EXTENSION COORDINACION DE PASANTIAS Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere. Pasante:
Más detallesSistemas de Gestión de Calidad. Control documental
4 Sistemas de Gestión de Calidad. Control documental ÍNDICE: 4.1 Requisitos Generales 4.2 Requisitos de la documentación 4.2.1 Generalidades 4.2.2 Manual de la Calidad 4.2.3 Control de los documentos 4.2.4
Más detallesUnidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.
Unidad II Metodología de Solución de Problemas 2.1 Descripción del problema (enunciado). Este aspecto nos indica describir de manera objetiva la realidad del problema que se esta investigando. En la descripción
Más detallesIngeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007
Enunciado Se desea efectuar el testing funcional de un programa que ejecuta transferencias entre cuentas bancarias. El programa recibe como parámetros la cuenta de origen, la de cuenta de destino y el
Más detallesGestión de Configuración del Software
Gestión de Configuración del Software Facultad de Informática, ciencias de la Comunicación y Técnicas Especiales Herramientas y Procesos de Software Gestión de Configuración de SW Cuando se construye software
Más detallesPERFIL DEL PUESTO POR COMPETENCIAS Sepa cómo construirlo y evitar bajos desempeños posteriores
PERFIL DEL PUESTO POR COMPETENCIAS Sepa cómo construirlo y evitar bajos desempeños posteriores Martha Alicia Alles Es contadora pública nacional, doctora por la Universidad de Buenos Aires en la especialidad
Más detalles3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)
3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON) 3.1.1 Introducción Este método proporciona un soporte para el diseño creativo de productos de software, inclusive a escala industrial.
Más detallesBPMN Business Process Modeling Notation
BPMN (BPMN) es una notación gráfica que describe la lógica de los pasos de un proceso de Negocio. Esta notación ha sido especialmente diseñada para coordinar la secuencia de los procesos y los mensajes
Más detallesCAPÍTULO 3 Servidor de Modelo de Usuario
CAPÍTULO 3 Servidor de Modelo de Usuario Para el desarrollo del modelado del estudiante se utilizó el servidor de modelo de usuario desarrollado en la Universidad de las Américas Puebla por Rosa G. Paredes
Más detallesforma de entrenar a la nuerona en su aprendizaje.
Sistemas expertos e Inteligencia Artificial,Guía5 1 Facultad : Ingeniería Escuela : Computación Asignatura: Sistemas expertos e Inteligencia Artificial Tema: SISTEMAS BASADOS EN CONOCIMIENTO. Objetivo
Más detallesLa ventana de Microsoft Excel
Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft
Más detallesPROPÓSITO... 2 DETERMINANTES PARA UNA BUENA EXPERIENCIA DE USO...
Tabla de Contenido PROPÓSITO... 2 DETERMINANTES PARA UNA BUENA EXPERIENCIA DE USO... 2 1. LA PRESENCIA DE INFORMACIÓN Y AYUDA ÚTIL PARA COMPLETAR LOS TRÁMITES EN LÍNEA.... 2 2. LA DISPONIBILIDAD DE DIVERSOS
Más detallesK2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2
K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2 Historia de revisiones Fecha VersiónDescripción Autor 08/10/2009 1.0 Creación del documento.
Más detalles7. CONCLUSIONES Y TRABAJOS FUTUROS
7. CONCLUSIONES Y TRABAJOS FUTUROS 7.1 CONCLUSIONES El presente trabajo ha realizado un acercamiento a JBoss AOP, un framework que permite la definición y ejecución de comportamiento aspectual. Consideramos
Más detallesTABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.
TABLA DE DECISION La tabla de decisión es una herramienta que sintetiza procesos en los cuales se dan un conjunto de condiciones y un conjunto de acciones a tomar según el valor que toman las condiciones.
Más detallesDE VIDA PARA EL DESARROLLO DE SISTEMAS
MÉTODO DEL CICLO DE VIDA PARA EL DESARROLLO DE SISTEMAS 1. METODO DEL CICLO DE VIDA PARA EL DESARROLLO DE SISTEMAS CICLO DE VIDA CLÁSICO DEL DESARROLLO DE SISTEMAS. El desarrollo de Sistemas, un proceso
Más detallesDiseño orientado a los objetos
Diseño orientado a los objetos El Diseño Orientado a los Objetos (DOO) crea una representación del problema del mundo real y la hace corresponder con el ámbito de la solución, que es el software. A diferencia
Más detalles2 EL DOCUMENTO DE ESPECIFICACIONES
Ingeniería Informática Tecnología de la Programación TEMA 1 Documentación de programas. 1 LA DOCUMENTACIÓN DE PROGRAMAS En la ejecución de un proyecto informático o un programa software se deben de seguir
Más detallesMANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO
MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO Fecha última revisión: Junio 2011 INDICE DE CONTENIDOS HERRAMIENTA DE APROVISIONAMIENTO... 3 1. QUÉ ES LA HERRAMIENTA DE APROVISIONAMIENTO... 3 HERRAMIENTA
Más detallesFUNDAMENTOS DE PROGRAMACION CON C#
Capítulo 1 FUNDAMENTOS DE PROGRAMACION CON C# El lenguaje C# C# (léase, en inglés C sharp, y en español C almohadilla) es un lenguaje de programación que permite el desarrollo de aplicaciones para Internet,
Más detallesTraducción del. Our ref:
Traducción del Documento: Our ref: Secretaría del ISO/TC 176/SC 2 Fecha: 15 de octubre de 2008 A los Miembros del ISO/TC 176/SC 2 - Gestión de la Calidad y Aseguramiento de la Calidad/ Sistemas de la Calidad
Más detallesProceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:
PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes: 1. Proporcionar una guía de actividades para el trabajo en equipo. (Guía detallada para el desarrollo
Más detallesCorrespondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech
Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Resumen Todo documento XBRL contiene cierta información semántica que se representa
Más detallesGLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.
GLOSARIO Actor: Un actor es un usuario del sistema. Esto incluye usuarios humanos y otros sistemas computacionales. Un actor usa un Caso de Uso para ejecutar una porción de trabajo de valor para el negocio.
Más detallesAnálisis de los datos
Universidad Complutense de Madrid CURSOS DE FORMACIÓN EN INFORMÁTICA Análisis de los datos Hojas de cálculo Tema 6 Análisis de los datos Una de las capacidades más interesantes de Excel es la actualización
Más detallesLas Relaciones Públicas en el Marketing social
Las Relaciones Públicas en el Marketing social El marketing social es el marketing que busca cambiar una idea, actitud o práctica en la sociedad en la que se encuentra, y que intenta satisfacer una necesidad
Más detallesPRESENTACIÓN DEL PRODUCTO
PRESENTACIÓN DEL PRODUCTO esernet, s.l. Sebastián Elcano, 32 Planta 1 Oficina 22 28012 Madrid Teléfono: 91 433 84 38 -- Fax. 91 141 21 89 www.esernet.com -- esernet@esernet.com 1. Introducción 2. Descripción
Más detallesCAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar
CAPITULO 4 Requerimientos, Análisis y Diseño El presente capítulo explica los pasos que se realizaron antes de implementar el sistema. Para esto, primero se explicarán los requerimientos que fueron solicitados
Más detallesGUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES
GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES Tema: Cartas de Servicios Primera versión: 2008 Datos de contacto: Evaluación y Calidad. Gobierno de Navarra. evaluacionycalidad@navarra.es
Más detallesIngeniería del Software I
- 1 - Ingeniería del Software I Introducción al Modelo Conceptual 2do. Cuatrimestre 2005 INTRODUCCIÓN... 2 CLASES CONCEPTUALES... 3 ESTRATEGIAS PARA IDENTIFICAR CLASES CONCEPTUALES... 3 Utilizar lista
Más detallesLa interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la
Servicios web Introducción Un servicio web es un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes
Más detallesUnidad 1. Fundamentos en Gestión de Riesgos
1.1 Gestión de Proyectos Unidad 1. Fundamentos en Gestión de Riesgos La gestión de proyectos es una disciplina con la cual se integran los procesos propios de la gerencia o administración de proyectos.
Más detallesCOMPRAS CEPAS A TRAVÉS DE INTERNET PORTAL CEPAS
COMPRAS CEPAS A TRAVÉS DE INTERNET PORTAL CEPAS Es un sistema que describe las funcionalidades claves a través de Internet. Se pueden efectuar las compras, ver la trazabilidad de los pedidos y visualizar
Más detallesMANUAL DE USUARIO APLICACIÓN SYSACTIVOS
MANUAL DE USUARIO APLICACIÓN SYSACTIVOS Autor Edwar Orlando Amaya Diaz Analista de Desarrollo y Soporte Produce Sistemas y Soluciones Integradas S.A.S Versión 1.0 Fecha de Publicación 19 Diciembre 2014
Más detallesESPECIFICACIÓN DE VIDEOCLUB
ESPECIFICACIÓN DE VIDEOCLUB 1. ANÁLISIS DEL SISTEMA Nuestro principal objetivo, lo cual implica que se trata de nuestra mayor meta a conseguir, es desarrollar un sistema software que realice una gestión
Más detalles1.1 EL ESTUDIO TÉCNICO
1.1 EL ESTUDIO TÉCNICO 1.1.1 Definición Un estudio técnico permite proponer y analizar las diferentes opciones tecnológicas para producir los bienes o servicios que se requieren, lo que además admite verificar
Más detallesDiseño orientado al flujo de datos
Diseño orientado al flujo de datos Recordemos que el diseño es una actividad que consta de una serie de pasos, en los que partiendo de la especificación del sistema (de los propios requerimientos), obtenemos
Más detallesLINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN
LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN Tabla de Contenidos LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN... 1 Tabla de Contenidos... 1 General... 2 Uso de los Lineamientos Estándares...
Más detalles1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio).
1 GLOSARIO A continuación se definen, en orden alfabético, los conceptos básicos que se han abordado a lo largo del desarrollo de la metodología para la gestión de requisitos bajo la Arquitectura Orientada
Más detallesGestión de Permisos. Bizagi Suite. Copyright 2014 Bizagi
Gestión de Permisos Bizagi Suite Gestión de Permisos 1 Tabla de Contenido Gestión de Permisos... 3 Definiciones... 3 Rol... 3 Perfil... 3 Permiso... 3 Módulo... 3 Privilegio... 3 Elementos del Proceso...
Más detallesCapítulo 5. Cliente-Servidor.
Capítulo 5. Cliente-Servidor. 5.1 Introducción En este capítulo hablaremos acerca de la arquitectura Cliente-Servidor, ya que para nuestra aplicación utilizamos ésta arquitectura al convertir en un servidor
Más detallesMesa de Ayuda Interna
Mesa de Ayuda Interna Documento de Construcción Mesa de Ayuda Interna 1 Tabla de Contenido Proceso De Mesa De Ayuda Interna... 2 Diagrama Del Proceso... 3 Modelo De Datos... 4 Entidades Del Sistema...
Más detallesOrientación acerca de los requisitos de documentación de la Norma ISO 9001:2000
Orientación acerca de los requisitos de documentación de la Norma ISO 9001:2000 Documento: ISO/TC 176/SC 2/N 525R Marzo 2001 ISO Traducción aprobada el 2001-05-31 Prólogo de la versión en español Este
Más detallesIntroducción a la programación orientada a objetos
Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación
Más detallesLa Web Semántica como herramienta para e-learning
La Web Semántica como herramienta para e-learning Lidia Marina López llopez@uncoma.edu.ar Departamento de Ciencias de la Computación Universidad Nacional del Comahue Buenos Aires 1400 8300 Neuquén Tel.
Más detallesJavaScript como Orientación a Objetos
Gustavo Lacoste (gustavo@lacosox.org) October 2012 Resumen El objetivo de las siguientes notas es generar una estructura en JavaScript que nos permita reutilizar de manera limpia las funciones creadas
Más detallesServidores Donantonio
Especificación de requisitos software Tabla de contenidos Juan José Amor David Escorial Ismael Olea 1. Introducción...3 1.1. Propósito...3 1.2. Ámbito del sistema...3 1.3. Definiciones, acrónimos y abreviaturas...3
Más detallesRESULTADOS CONSULTA CIUDADANA VIRTUAL. Consulta Laboral en Línea
RESULTADOS CONSULTA CIUDADANA VIRTUAL Consulta Laboral en Línea Septiembre, 2015 1 Agradecimientos Ponemos a disposición de ustedes los resultados de la Consulta Ciudadana Virtual, efectuada en julio de
Más detallesREGISTRO DE PEDIDOS DE CLIENTES MÓDULO DE TOMA DE PEDIDOS E INTEGRACIÓN CON ERP
REGISTRO DE PEDIDOS DE CLIENTES MÓDULO DE TOMA DE PEDIDOS E INTEGRACIÓN CON ERP Visual Sale posee módulos especializados para el método de ventas transaccional, donde el pedido de parte de un nuevo cliente
Más detallesPORTAL DE INTEGRACIÓN DE BANCOS DE INFORMACIÓN DISPERSOS A TRAVÉS DE WEB SERVICES Autor: Ing. Walther Antonioli Ravetto
PORTAL DE INTEGRACIÓN DE BANCOS DE INFORMACIÓN DISPERSOS A TRAVÉS DE WEB SERVICES Autor: Ing. Walther Antonioli Ravetto Introducción: Sobre casi cualquier tema del quehacer humano que se aborde, existen
Más detallesObjetos educativos y estandarización en e-learning: Experiencias en el sistema <e-aula>
Objetos educativos y estandarización en e-learning: Experiencias en el sistema Fernández-Manjón, B.1, López Moratalla, J.2 Martínez Ortiz, I. 2, Moreno Ger, P. 2 Universidad Complutense de Madrid,
Más detallesPara representar los conjuntos, los elementos y la relación de pertenencia, mediante símbolos, tendremos en cuenta las siguientes convenciones:
2. Conjuntos 2.1 Introducción El concepto de conjunto, de singular importancia en la ciencia matemática y objeto de estudio de una de sus disciplinas más recientes, está presente, aunque en forma informal,
Más detallesGuía de los cursos. Equipo docente:
Guía de los cursos Equipo docente: Dra. Bertha Patricia Legorreta Cortés Dr. Eduardo Habacúc López Acevedo Introducción Las organizaciones internacionales, las administraciones públicas y privadas así
Más detallesINTRODUCCIÓN: Una Visión Global del Proceso de Creación de Empresas
INTRODUCCIÓN: Una Visión Global del Proceso de Creación de Empresas 1 INTRODUCCIÓN. Una visión global del proceso de creación de empresas Cuando se analiza desde una perspectiva integral el proceso de
Más detallesApuntes Recuperación ante Fallas - Logging
Lic. Fernando Asteasuain -Bases de Datos 2008 - Dpto. Computación -FCEyN-UBA 1 Apuntes Recuperación ante Fallas - Logging Nota: El siguiente apunte constituye sólo un apoyo para las clases prácticas del
Más detallesGuías _SGO. Gestione administradores, usuarios y grupos de su empresa. Sistema de Gestión Online
Guías _SGO Gestione administradores, usuarios y grupos de su empresa Sistema de Gestión Online Índice General 1. Parámetros Generales... 4 1.1 Qué es?... 4 1.2 Consumo por Cuentas... 6 1.3 Días Feriados...
Más detalles"Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios
"Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios Miguel Alfonso Flores Sánchez 1, Fernando Sandoya Sanchez 2 Resumen En el presente artículo se
Más detallesMANUAL DE USUARIO INTRANET
MANUAL DE USUARIO INTRANET Partes de la Intranet. La intranet se divide en varias partes claramente diferenciadas, que facilitan la navegación a través de la misma. A) Cabecera Es la parte estática de
Más detallesContenidos. INFORME ENCUESTA TELEFÓNICA. Curso 2009 10
ENCUESTA DE OPINIÓN DEL ALUMNADO SOBRE LA ACTUACIÓN DOCENTE DEL PROFESORADO UNIVERSIDAD DE SEVILLA Curso 2009-2010 ENCUESTA TELEFÓNICA Contenidos Introducción.... 4 El Cuestionario... 5 El muestreo...
Más detallesAdministración del conocimiento y aprendizaje organizacional.
Capítulo 2 Administración del conocimiento y aprendizaje organizacional. 2.1 La Importancia Del Aprendizaje En Las Organizaciones El aprendizaje ha sido una de las grandes necesidades básicas del ser humano,
Más detallesPlataforma Helvia. Manual de Administración Administración General. Versión 6.08.05
Plataforma Helvia Manual de Administración Administración General Versión 6.08.05 Índice de contenidos INTRODUCCIÓN... 3 ENFOQUE...3 LA ADMINISTRACIÓN GENERAL...3 ACCESO A LA ADMINISTRACIÓN GENERAL...
Más detallesCapítulo 9. Archivos de sintaxis
Capítulo 9 Archivos de sintaxis El SPSS permite generar y editar archivos de texto con sintaxis SPSS, es decir, archivos de texto con instrucciones de programación en un lenguaje propio del SPSS. Esta
Más detallesConvergencia, Interoperabilidad y. Fernando González-Llana Gerente de Cuenta AGE T-Systems
Convergencia, Interoperabilidad y Arquitecturas de Servicios Gerente de Cuenta AGE T-Systems Palabras clave Convergencia digital, Interoperabilidad, Semántica, IDABC, SOA, Módulos Comunes, Protección de
Más detallesComunicación: Herramientas Informáticas de Apoyo a la Educación: Experiencias. Autor: Ing. Hernán Mariño hernanmarino@uca.edu.ar
Comunicación: Herramientas Informáticas de Apoyo a la Educación: Experiencias. Autor: Ing. Hernán Mariño hernanmarino@uca.edu.ar Pontificia Universidad Católica Argentina Facultad de Ciencias Fisicomatemáticas
Más detallesUso de Visual C++ Pre-Practica No. 3
Pre-Practica No. 3 Uso de Visual C++ Microsoft Visual C++ 2010 es una versión de Visual Studio específica para el lenguaje de programación C++. Es un entorno de desarrollo muy completo y profesional. Por
Más detallesManual para la utilización de PrestaShop
Manual para la utilización de PrestaShop En este manual mostraremos de forma sencilla y práctica la utilización del Gestor de su Tienda Online mediante Prestashop 1.6, explicaremos todo lo necesario para
Más detallesCómo seleccionar el mejor ERP para su empresa Sumario ejecutivo
Índice completo de la Guía Índice completo de la Guía 1. Quién debe leer esta guía? 3 2. Qué es un ERP? 7 2.2. Qué es un ERP?... 9 2.3. Cuál es el origen del ERP?... 10 2.4. ERP a medida o paquetizado?...
Más detallesCONSTRUCCIÓN DEL PROCESO MESA DE AYUDA INTERNA. BizAgi Process Modeler
CONSTRUCCIÓN DEL PROCESO MESA DE AYUDA INTERNA BizAgi Process Modeler TABLA DE CONTENIDO PROCESO DE MESA DE AYUDA INTERNA... 3 1. DIAGRAMA DEL PROCESO... 4 2. MODELO DE DATOS... 5 ENTIDADES DEL SISTEMA...
Más detallesClave Fiscal. Manual del Sistema. - Administración de Relaciones -
Clave Fiscal Manual del Sistema - Administración de Relaciones - Subdirección General de Sistemas y Telecomunicaciones Página 1 de 16 Indice Indice... 1 Administración de Relaciones... 3 1. Acceso de un
Más detallescomunidades de práctica
1. Introducción CoSpace es una plataforma web diseñada para proporcionar un espacio virtual de interacción y colaboración entre formadores en comunidades virtuales. Se originó como resultado de las necesidades
Más detallesMódulo 7: Los activos de Seguridad de la Información
Módulo 7: Los activos de Seguridad de la Información Se explica en este tema cómo deben abordarse la elaboración de un inventario de activos que recoja los principales activos de información de la organización,
Más detallesMANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora
MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA Perfil Entidad Proveedora El objetivo del módulo de Gestión de Solicitudes vía Internet es facilitar el trabajo
Más detallesCONCLUISIONES Y RECOMENDACIONES
CONCLUISIONES Y RECOMENDACIONES CONTENIDO 7.1 Verificación de Hipótesis 7.2 Conclusiones 7.3 Recomendaciones Mónica Cecilia Gallegos Varela - 145 - VERIFICACIÓN DE HIPÓTESIS La hipótesis planteada al inicio
Más detallesGuía Metodológica para el diseño de procesos de negocio
Guía Metodológica para el diseño de procesos de negocio La guía desarrollada para apoyar TBA, se diseñó con base en las metodologías existentes para el desarrollo BPM, principalmente en aquellas que soportan
Más detallesLos mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:
SISTEMAS DISTRIBUIDOS DE REDES 1. SISTEMAS DISTRIBUIDOS Introducción y generalidades La computación desde sus inicios ha sufrido muchos cambios, desde los grandes equipos que permitían realizar tareas
Más detallesManual de administración Administración General V 7.08.03
Manual de administración Administración General Versión 7.08.03 Página 1 Índice de contenidos Introducción... 3 Enfoque... 3 La Administración General... 3 Acceso a la Administración General... 4 Acceso
Más detallesUn primer acercamiento a la CMDB.
Un Versión primer 1.2 acercamiento a la CMDB. 20/07/2005 Un primer acercamiento a la CMDB. Versión 1.1 1.2 18/02/05 20/02/05 Fecha Jose Autores Carlos Manuel García Viejo García Lobato http://ars.viejolobato.com
Más detallesEducación y capacitación virtual, algo más que una moda
Éxito Empresarial Publicación No.12 marzo 2004 Educación y capacitación virtual, algo más que una moda I Introducción Últimamente se ha escuchado la posibilidad de realizar nuestra educación formal y capacitación
Más detallesUNIVERSIDAD DE SALAMANCA
UNIVERSIDAD DE SALAMANCA FACULTAD DE CIENCIAS INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS Resumen del trabajo práctico realizado para la superación de la asignatura Proyecto Fin de Carrera. TÍTULO SISTEMA
Más detalles1.- INTRODUCCIÓN 2.- PARÁMETROS
1.- INTRODUCCIÓN Hemos diseñado una aplicación que facilite el envío a las entidades bancarias de las de cobro por domiciliación. La entrada de esta aplicación pueden ser, tanto ficheros cuyos formatos
Más detallesBase de datos en Excel
Base de datos en Excel Una base datos es un conjunto de información que ha sido organizado bajo un mismo contexto y se encuentra almacenada y lista para ser utilizada en cualquier momento. Las bases de
Más detallesMetodología y Framework para el Desarrollo de Aplicaciones Científicas con Computación de Alto Rendimiento a través de Servicios Web
Metodología y Framework para el Desarrollo de Aplicaciones Científicas con Computación de Alto Rendimiento a través de Servicios Web J.Corral-García, D.Cortés-Polo, C.Gómez-Martín, J.L.González-Sánchez
Más detallesResumen de las Etapas de la Conversación de Coaching
Resumen de las Etapas de la Conversación de Coaching Lic. Marta Calvo En mi trabajo como docente en la carrera de formación de coaches ontológicos he tenido la oportunidad de observar que los estudiantes,
Más detalles