Los objetivos del trabajo son:
- Sintetizar los modelos de calidad y métodos de evaluación orientados a productos web.
- Elaborar un método de medición y evaluación, a partir de un modelo de calidad específico para sitios web bancarios, que incluya las características propias del mencionado sector. La propuesta contemplará criterios de evaluación y medición para contribuir al avance de metodologías que permitan evaluar la calidad de productos Web.
- Aplicar el método propuesto a un caso concreto.
El desarrollo conducido por modelos o Model-Driven Development (MDD) es una aproximación a la Ingeniería de Software cuyo concepto central son los modelos y sus respectivas transformaciones. MDD brinda los principios básicos que permiten visualizar un sistema de software como un conjunto de modelos que son sucesivamente refinados hasta alcanzar uno con el suficiente nivel de detalle como para ser implementado. La Arquitectura Conducida por Modelos o Model-Driven Architecture (MDA) es la propuesta del Object Management Group (OMG) para MDD. Su objetivo fundamental es separar la especificación de la funcionalidad del sistema de la especificación de la implementación de dicha funcionalidad sobre una plataforma específica. La trazabilidad, como propiedad deseable de toda transformación de modelos, tiene un rol fundamental dentro del paradigma dado que la misma permite, entre otras cosas, la posibilidad de evaluar el impacto en fases avanzadas del ciclo de vida ante cambios en los requerimientos elicitados en etapas tempranas, y el mantenimiento de la consistencia entre los distintos modelos que guían el desarrollo. Este trabajo propone un esquema que permite la obtención de información de trazabilidad a partir de la definición de una transformación de modelos escrita en lenguaje QVT Relations mediante la utilización de una estrategia de inferencia de trazas definida ad hoc. Dicho proceso es totalmente automático y no depende de la ejecución de la transformación. Las principales contribuciones del estudio incluyen la minimización de los esfuerzos manuales en la gestión de trazabilidad, actividad tediosa y muy propensa a errores, y la independencia respecto de la implementación del motor QVT.
El testing del software es una tarea crucial y a la vez muy desafiante dentro del proceso de desarrollo de software. El testing permite encontrar errores y problemas del software contra la especificación del mismo y cumple un rol fundamental en el aseguramiento de la calidad del producto.
Entre los tipos de pruebas que se pueden realizar al software están las pruebas de unidad, carga, integración y funcionales. Cada una de ellas tiene distintos objetivos y son realizadas en diferentes etapas del desarrollo del software. En el primer tipo mencionado, se desarrollan pruebas a componentes individuales de un sistema de software. Los desarrolladores especifican y codifican pruebas para cubrir todos o al menos una parte significativa de los posibles estados/configuraciones del artefacto o unidad de software, para simular el entorno del componente y descubrir la presencia de errores o “bugs”. Dado que escribir todas esas pruebas de forma manual es costoso, las pruebas de unidad son generalmente realizadas de manera ineficiente o
simplemente dejadas de lado. El panorama es aún peor, más allá del esfuerzo, porque el testing no puede ser usado para probar la usencia de errores en el software sino tan solo la presencia. Por eso es necesario atacar el problema desde diferentes enfoques, cada uno teniendo sus fortalezas y ventajas.
Actualmente existen muchas técnicas para hacer testing de software, y la mayoría de ellos se basan en la automatización de pasos o caminos de ejecución, con valores fijos o componentes predefinidos (hard-coded) o estáticos, y condiciones específicas. En este trabajo de maestría, se presenta un enfoque para pruebas de unidad en la programación orientada a objetos, basado en la generación de objetos de manera aleatoria. El fundamento básico de este enfoque propuesto es el testing aleatorio. También se presenta una herramienta de testing de unidad que usa el enfoque dicho, y que fue escrita en un lenguaje orientado a objetos de amplia difusión.
El testing aleatorio (RT o random testing) como técnica no es nueva. Tampoco lo es la generación de valores aleatorios para pruebas. En el paradigma funcional, existe una herramienta muy conocida para probar especificaciones sobre funciones llamada QuickCheck. Ésta herramienta (escrita en Haskell) y sus ideas subyacentes son usadas como fundamento para la herramienta creada en este trabajo. La herramienta desarrollada en el presente trabajo cubre además características que existen en el paradigma orientado
a objetos de manera inherente, tales como el estado de los objetos (en particular los objetos singleton con estado), clases abstractas e interfaces, que no existen en la programación funcional pura.
La constribución de este trabajo de maestría es la presentación de una forma alternativa de realizar tests de unidad en la programación orientada a objetos (POO), basada en un trabajo anterior para el paradigma funcional. También se presenta una herramienta llamada YAQC4J que plasma esas ideas en un lenguaje orientado a objetos de amplia difusión. Finalmente se incluyen ejemplos que ilustran el uso de la herramienta, y se presenta una comparación con herramientas existentes que han intentado implementar el enfoque de testing. Este trabajo está dirigido a los desarrolladores de software interesados en conocer soluciones alternativas para el testing de unidad, y al mismo tiempo una forma complementaria a las ya existentes para pruebas de unidad.
Para poder contestar la pregunta de investigación de si es posible mejorar la estimación de esfuerzo medido en horas persona de los pequeños proyectos de software, investigamos en profundidad los diferentes métodos de estimación de productos de software basados en el juicio de expertos. Estos conocimientos nos ayudaron a resolver el problema que se presentó en una empresa multinacional cuando se planteó la necesidad de disminuir el porcentaje de error de proyectos pequeños de software para evitar la revisión del alcance. Para esto se diseñamos un método llamado MEBER que se aplicó a un conjunto de ocho proyectos típicos reales de la empresa, durante aproximadamente dos años. De esta manera podemos decir que el método es aplicable.
El presente trabajo de tesis proporciona un enfoque para la evaluación de la calidad de aplicaciones Web en el ámbito específico de e-government. Los marcos, metodologías y estándares preexistentes en la industria no aportan aplicaciones particulares a este campo, pero sí pueden ser extendidos o configurados para este medio regido por dinámicas diversas y cambiantes que no siempre pueden asimilarse a experiencias de otros dominios. La gestión de la calidad va lentamente cobrando importancia, y se resalta el rol del usuario que a través de su percepción y opiniones, nos brinda información para realizar direccionamientos hacia un mejor producto, un producto más elegido. Es por ello que se ha llevado a cabo una exhaustiva revisión del estado del arte sobre el concepto general de calidad, y su visión particular desde la Ingeniería de Software. Posteriormente se han analizado los marcos metodológicos y estrategias de M&E preexistentes de los cuales se seleccionó GOCAME para llevar adelante un caso de prueba, basándose en su solidez y numerosos casos de aplicación. Debido a la ausencia de experiencias de medición de calidad en organismos de gobierno, se planteó la necesidad de proponer un modelo de requerimientos de calidad como prototipo para M&E. Como consecuencia se presentó un marco metodológico consistente en el cual desarrollar todas las tareas involucradas en el proceso de evaluación de la calidad, en este caso calidad externa a través de la visión de expertos del dominio, y calidad en uso desde la perspectiva de usuarios reales. El modelo diseñado fue validado conceptualmente a través de la instanciación de la metodología abordada utilizando como caso de estudio una aplicación Web del organismo. Conjuntamente con las mediciones técnicas se planteó la necesidad de caracterizar a los usuarios a través de sus rasgos de preferencias fuertes que fue cruzado con sus opiniones en busca de correlaciones que fundamenten algún patrón o tendencia. Los resultados de la ejecución del plan de evaluación mostraron el estado de situación de la gestión de la calidad desarrollada por el área de IT del organismo, el cual prevé un plan de mejoras, actuación y refinamiento del modelo propuesto para continuar las mediciones extendiéndolo incluso a otras áreas de IT de organismos gubernamentales, reutilizando de esta manera la experiencia adquirida e institucionalizando un proceso de aprendizaje continuo.
Basado en un estudio exhaustivo de la realidad de las PyMEs de software, en particular en Iberoamérica, se ha desarrollado el ambiente APGestion que incluye herramientas para la Gestión de Roles, Gestión de Cambios, Gestión de Riesgos, y Gestión de V&V . Las mismas pasan a llenar el espacio encontrado en las aplicaciones Open Source, estudiadas, presentes en el mercado, las que demuestran una complejidad innecesaria para las PyMEs, pero además, no cuentan, en su gran mayoría, con las herramientas para desarrollar las prácticas en cuestión. Cada una de ellas fue realizada tomando como punto de partida las tareas propuestas por la norma ISO 29110, con un toque de simplicidad, que se evidenció, es necesario para lograr la ejecución de las practicas, acercando los usuarios a las actividades, sin dejar de lado los puntos básicos. Las herramientas creadas fueron evaluadas de manera satisfactoria por empresas de software del Distrito Informático de La Plata.
a amplia difusión del proceso de desarrollo basado en componentes, en particular en el dominio de aplicaciones geográficas, ha generado el surgimiento de una gran cantidad y variedad de componentes software orientados a satisfacer las necesidades de los desarrolladores. En este contexto, uno de los principales inconvenientes encontrados al desarrollar aplicaciones mediante reuso de componentes, consiste en la localización de aquellos más adecuados a un requerimiento o conjunto de requerimientos en particular. A esto se denomina proceso de selección de componentes, que incluye dos actividades principales: la oferta de componentes disponibles para reuso y la demanda de servicios a ser satisfechos por la interface de los componentes ofertados.
Nuestra propuesta consiste en una mejora al proceso de demanda mediante la estandarización de la especificación de requerimientos o servicios orientándolos a la búsqueda de componentes, en particular para el dominio de aplicaciones geográficas.
Para ello se trabaja sobre la normalización de los requerimientos, categorizándolos según información estándar para servicios geográficos.
Así, en esta Tesis se define en primer lugar, una Taxonomía de Servicios Geográficos. Luego, se propone una metodología para extraer conocimiento a partir de los casos de uso y categorizar esos requerimientos en clases de servicios geográficos.
Por último, se describe la herramienta ReqGIS, la cual automatiza la metodología señalada anteriormente.
El objetivo general de la tesis fue desarrollar una herramienta de diagnóstico destinada al proceso de elicitación de requerimientos que identifique el riesgo proveniente del área sociológica y psicosocial de la Organización, y su impacto sobre el proyecto de software. Asimismo, se buscó evaluar aspectos de personalidad individual, estilos cognitivos y conducta grupal de los stakeholders que pudieren impactar sobre la implementación de proyectos de software. Adicionalmente se intentó incrementar conocimiento sobre factores psicosociales como el estrés disfuncional, los conflictos y medir su influencia en las primeras etapas de los proyectos de software. Por último, mediante encuestas y entrevistas, se corroboró la utilidad de incorporar instrumentos de la psicología social al proceso de elicitación de requerimientos, como una herramienta más de análisis.
Los métodos formales han alcanzado un uso más masivo en la construcción de sistemas reales, ya que ayudan a aumentar la calidad del software y la fiabilidad. Las especificaciones formales pueden ser usadas a lo largo de todo el ciclo de vida del desarrollo de software y también este desarrollo puede ser automatizado por medio de herramientas de amplia variedad y propósito como model checking, verificación, animación, generación de datos para testing, como también refinamiento de especificaciones a implementaciones. Cuando las especificaciones se usan en etapas iniciales del proceso, se ayuda a revelar ambigüedades, omisiones, inconsistencias, errores o interpretaciones erróneas que podrían ser detectados durante pruebas costosas y en las fases de depuración.
Sin embargo, las especificaciones formales no son muy familiares para los stakeholders, cuya participación activa es crucial en los primeros estados del proceso de desarrollo de software para entender y comunicar un problema. Estas actividades son especialmente útiles en el análisis de dominio, pues su primera etapa consiste en capturar el conocimiento de un dominio en particular, lo que hace necesario disponer de un modelo que sea comprensible por los ingenieros de software y expertos del dominio.
Para contribuir a reducir esta brecha, se trabaja en la integración de una fase de análisis de dominio con el método formal de desarrollo de software RAISE, a fin de especificar una familia de sistemas para producir aplicaciones cualitativas y fiables en un dominio, promover la reutilización temprana y reducción de los costos de desarrollo.
Para llevar a cabo en forma sistemática el proceso de descubrimiento de conocimiento en bases de datos, conocido como minería de datos, es necesaria la implementación de una metodología. Actualmente las metodologías para minería de datos se encuentran en etapas tempranas de madurez, aunque algunas como CRISP-DM ya están siendo utilizadas exitosamente por los equipos de trabajo para la gestión de sus proyectos. En este trabajo se establece un análisis comparativo entre las metodologías de minería de datos más difundidas en la actualidad. Para lograr dicha tarea, y como aporte de esta tesis, se ha propuesto un marco comparativo que explicita las características que se deberían tener en cuenta al momento de efectuar esta confrontación.
Esta tesis busca encontrar una práctica metodológica que permita definir distintos niveles de pruebas que operen como garantía de refactorizaciones seguras, independientemente del alcance de las mismas. Se enmarca en el tema general de refactoring, con elementos de Test Driven Development (TDD), utilizando las prácticas recomendadas en el marco de Behavior Driven Development (BDD) y de Acceptance Test Driven Development (ATDD). La práctica de refactoring descansa fuertemente en la existencia de pruebas unitarias automatizadas, que funcionan como red de seguridad que garantiza que el comportamiento de la aplicación no varía luego de una refactorización. Sin embargo, este simple enunciado no prevé que hay ocasiones en que las pruebas dejan de funcionar al realizar las refactorizaciones, con lo cual se pierde la sincronización entre código y pruebas, y la cualidad de red de seguridad de estas últimas. Esto es especialmente cierto ante refactorizaciones estructurales y rediseños macro. Por lo tanto, y dado que el uso de pruebas como red de contención es uno de los supuestos más fuertes de la práctica del refactoring, vamos a desarrollar, como objetivo de esta tesis, una práctica metodológica para permitir definir distintos niveles de pruebas que aseguren distintos tipos de refactorizaciones, validándola con un caso de estudio y apoyándonos en una herramienta automática desarrollada en el marco de este trabajo.
El objetivo principal perseguido en esta tesis consiste en proponer un catálogo de refactorings para mejorar aspectos como usabilidad, eficiencia y eficacia de los procesos de negocio de las aplicaciones web. Mientras otras publicaciones identifican posibilidades de mejorías en los modelos de las aplicaciones web, esta tesis se focaliza en identificar problemas relacionados exclusivamente con la ejecución de los procesos de negocio y sugerir cambios para optimizar la experiencia del usuario mientras este navega por los procesos embebidos en las aplicaciones.
Este trabajo de tesis presenta lineamientos específicos para la aplicación de Ingeniería de Requerimientos Web al tratamiento de los RNF. Presenta procesos de Elicitación y Especificación de RNF Web y ofrece las plantillas diseñadas particularmente para la captura y especificación de los RNF en los procesos definidos. Si bien actualmente la Ingeniería de Requerimientos proporciona numerosas técnicas y herramientas para identificar, describir, validar y gestionar requerimientos, estos no son aplicados muy a menudo, en el desarrollo de aplicaciones Web. La madurez del proceso de ingeniería de requerimientos parece ser insuficiente, esa insuficiencia demanda nuevos enfoques o evolución de los actuales para el tratamiento adecuado de los RNF. Los RNF de los sistemas software no son un todo homogéneo, hay falta de consenso para responder a los interrogantes: ¿Qué son? ¿Cómo se clasifican dentro del contexto de desarrollo de software? y ¿Cómo se clasifican en el desarrollo de aplicaciones Web? Este trabajo parte de una revisión del estado de arte de los conceptos de RNF en la literatura de la Ingeniería de Requerimientos y establece como bases conceptuales que los RNF son requerimientos de calidad y son restricciones. Luego ofrece un análisis comparativo de seis enfoques existentes de desarrollo de aplicaciones Web para estudiar qué tratamiento aplican a los RNF, en el cual se pudo determinar que las metodologías de aplicaciones Web estudiadas: Contemplan los RNF, aunque se carece de consenso en su significado. No disponen de técnicas específicas para la elicitación de RNF, ni lineamientos uniformes para la especificación y la validación. No brindan técnicas que soporten el tratamiento de los RNF a lo largo del ciclo de vida. Hay carencia de consenso para establecer en qué fase del ciclo de vida de desarrollo se identifican los RNF. Hay RNF que no son identificados durante la fase de relevamiento y análisis. A partir de este análisis y dada la importancia de los RNF, se proponen procesos para la elicitación y especificación de los RNF Web (de calidad y restricciones), se describen las plantillas propuestas que dan soporte a los procesos y finalmente se presenta la validación de los conceptos y técnicas propuestos mediante un caso de estudio en un proyecto real.
Este trabajo tiene como objetivo desarrollar la definición de un conjunto de métricas para medir el avance y éxito de un proyecto de transición de software a locaciones offshore. El análisis se realizó por medio de una encuesta destinada a administradores de proyectos, gerentes de ingeniería y desarrolladores de software de proyectos de transición. Los resultados permitieron definir dichas métricas y desarrollar también una herramienta que permita la correcta recolección y control de las mismas durante el proceso de transición.
Con el surgimiento del desarrollo de software basado en componentes, numerosas empresas fabricantes de SIG han comenzado a comercializar distintos tipos de componentes software orientados a las necesidades de los desarrolladores SIG. Para lograr un desarrollo más eficiente, los analistas se concentran en los atributos de reusabilidad e interoperabilidad. Sin embargo, se pierde mucho tiempo y esfuerzo en encontrar aquellos componentes que satisfagan la funcionalidad que se pretende implementar. Una de las necesidades clave para facilitar esta tarea, consiste en contar con información estándar de los componentes que permita agilizar la búsqueda de composiciones de software.
Considerando que uno de los problemas en el crecimiento del desarrollo de software basado en componentes es la dificultad para localizar y recuperar componentes de software existentes, nuestra propuesta se concentra en las ventajas que el conocimiento de un dominio específico aporta a la selección de componentes. De esa manera, estándares del dominio geográfico se usan para normalizar la información y permitir el modelado de una base conceptual que derive en una búsqueda automática.
En ese contexto, esta tesis presenta un proceso para publicar información sobre componentes SIG almacenada en repositorios Web, estructurándola en base a un esquema de información normalizado y enriquecido por medio de técnicas de Procesamiento del Lenguaje Natural.
La contribución de esta tesis se centra precisamente en la presentación de un prototipo que recibiendo información de catálogos de componentes SIG publicados en la Web, normaliza y clasifica la información de manera automática. Se describen los principales elementos de la herramienta que automatiza este proceso y se evalúan los resultados experimentales de un caso de estudio.
En este trabajo se describe un método para incorporar Patrones de Seguridad en el dominio específico de una aplicación con requerimientos de seguridad. Se utiliza la relación entre un glosario de términos específicos (LEL) y los Escenarios, asociados a casos de uso, para abstraer el conocimiento de ambos dominios: el propio de la aplicación y el de la seguridad. Luego con una nueva versión de la herramienta Baseline Mentor Workbench (BMW), se puede deducir el conjunto de CRC de análisis: clases candidatas. La terna: LEL, Escenario y CRC, son los componentes del modelo que nos permiten representar un Patrón de Seguridad mediante un sub-escenario con su terminología, semántica y comportamiento específicos. La información documentada en el “template” del Patrón de Seguridad, concretamente su comportamiento estático y dinámico, colaboran para conducir y validar el análisis del dominio de la aplicación con requerimientos de seguridad. De este modo el Patrón de Seguridad no sólo se incorpora al modelo de la aplicación de forma natural y controlada, sino que conduce las decisiones a tomar sobre el diseño de la aplicación. Como toda la información sobre el modelo estático y dinámico del Patrón de Seguridad pertenece a la etapa de diseño, y se integra a un modelo contextual de una aplicación perteneciente a la etapa de elicitación y análisis de requerimientos, los elementos del Patrón de Seguridad se dice que traccionan hacia etapas más avanzadas en el proceso de desarrollo de la aplicación. La herramienta extiende el concepto de “forward traceability” sobre los requerimientos de seguridad y permite tener visibilidad entre las CRC y los requerimientos que le dieron origen, sean éstos requerimientos funcionales y de seguridad. Este trabajo se ha organizado de la siguiente manera: en el Capítulo 2 se presentan aspectos relevantes del estado del arte de la producción de software seguro; se discuten algunos temas que apuntan a desarrollar un léxico y marco conceptual apropiado y otros que son motivos de investigación y desarrollo; se revisan los adelantos hechos sobre la elicitación de requerimientos de seguridad. En el Capítulo 3 se presenta el conjunto de elementos utilizados en la descripción del método propuesto: LEL, Escenarios, CRC y Patrones de Seguridad. En este Capítulo se muestra que es factible modelar un Patrón de Seguridad con los elementos descriptos: LEL, Escenario y CRC; lo cual resulta en un valor fundamental para este trabajo. En el Capítulo 4 se describe el método de elicitación de requerimientos utilizando Patrones de Seguridad, primero una síntesis de sus etapas y luego su aplicación en la construcción de una aplicación con requerimientos de seguridad. En el Capítulo 5 se describe la herramienta construida para utilizar el método propuesto. En el Capítulo 6 se presentan métodos relacionados, complementarios al propuesto en este trabajo. En el Capítulo 7 se presentan las conclusiones de este trabajo y para finalizar, en el Capítulo 8 se mencionan posibles futuros trabajos para continuar esta línea de investigación.
La presente Investigación tiene como propósito general diseñar un modelo de priorización de requerimientos de software a partir de la segmentación de preferencias de los stakeholders. Para ello, se propone fusionar una serie de enfoques teóricos de la priorización de requerimientos, del tipo: Negociación-Cognitivo para luego integrarlos metodológicamente con algunos elementos propios de la Inteligencia Computacional (SOM de Kohonen), el Proceso de Jerarquía Analítica (AHP) y métricas de la Psicología Cognitiva (DF, VTV y RE). El Modelo propuesto, pretende establecer un Esquema General de Prioridad Implementable de Requerimientos de Usuarios (EGPIRU) que sea consensuado y validado por el total de stakeholders del caso experimental “Subsistema de Flujo de Trabajo” del Centro de Investigación en Procesos Básicos, Metodología y Educación (CIMEPB) de la Facultad de Psicología de la Universidad Nacional de Mar del Plata.
Este trabajo especifica e implementa un estudio comparativo para comprender y comparar estrategias integradas de medición y evaluación, considerando a una estrategia como a un recurso de un proyecto, desde el punto de vista del ente a valorar. El objetivo del estudio comparativo es evaluar la calidad de las capacidades de una estrategia de medición y evaluación teniendo en cuenta tres fundamentos: 1) el marco conceptual centrado en una base terminológica, 2) el soporte explícito de proceso, y 3) el soporte metodológico/tecnológico. A su vez, para diseñar el estudio tuvimos en cuenta para una estrategia aspectos de requerimientos no funcionales, de medición, de evaluación, y de análisis y recomendación. Como resultado de esta investigación hemos especificado el diseño del estudio; esto es, el árbol de requerimientos en función de características y atributos, el diseño de las métricas que cuantifican a estos atributos y su interpretación por medio del diseño de indicadores. Por otro lado, el resultado del estudio comparativo nos permitió un análisis de debilidades y fortalezas de las estrategias GQM+Strategies (Goal-Question-Metric Plus Strategies) y GOCAME (Goal-Oriented Context-Aware Measurement and Evaluation), con el fin de definir cursos de acción para mejorar nuestra estrategia, a saber: GOCAME.
El objetivo de esta tesis es estudiar, analizar, comparar y vincular distintos formalismos o herramientas de modelado utilizados tanto en la industria como en el ámbito científico para expresar requerimientos y/o propiedades de los modelos de sistemas informáticos. De esta comparación surgen las fortalezas y las debilidades de cada uno de ellos.
En los casos que sean factibles se define la traducción total o parcial de un formalismo a otro. Esto posibilitará la concepción de traductores automáticos sacando ventaja del uso generalizado de los lenguajes empleados por la industria con la posibilidad que cuentan los lenguajes formales de validar las propiedades automáticamente.
La Tesis presenta el concepto de mashup semántico, muestra el estado del arte en cuanto a metodologías existentes, presenta el problema de la integración de la información de las distintas fuentes de información con las cuales trabaja el mashup, propone una metodología para el desarrollo de este tipo de aplicación y muestra el desarrollo de un caso práctico siguiendo la metodología propuesta.
Debido a que el tema de los patrones de paralelismo está aún en desarrollo, es de esperar que a partir del presente estudio surjan fundamentos que motiven cambios en los actuales patrones, los cuales podrían ser particularizados, ampliados, reducidos o modificados para adecuarse al tipo de aplicaciones bajo consideración, por lo que otro objetivo de la tesis es brindar un aporte sobre los elementos que deberían ser tenidos en cuenta a la hora de desarrollar patrones específicos para las aplicaciones bajo estudio; en particular, un tema de vital importancia es la eficiencia en el uso de los recursos computacionales, ya que de nada sirve paralelizar una aplicación y que su performance no se vea mejorada acorde a los recursos de hardware utilizados, por lo que patrones de paralelismo específicos al dominio bajo estudio deberían tener en cuenta algún tipo de indicación al respecto de la eficiencia.
El alcance y pertinencia de los patrones de paralelismo presentados en este trabajo, ha sido corroborado sobre algunos algoritmos de cómputo científico mediante la realización de experimentos específicos, los cuales consistieron en la ejecución de programas que resulten de la aplicación de distintos patrones a cada uno de los algoritmos elegidos como ”testbed“. Sus resultados, que son presentados en el capítulo 4, permitieron constatar el alcance de la aplicación de los patrones sobre el nivel de rendimiento obtenido.
Como consecuencia de la realización de estas experimentaciones buscando mejorar los resultados de los algoritmos paralelos, surgió un aporte adicional de la tesis, el cual es la presentación de un nuevo patrón de paralelismo, en una versión preliminar, el cual ha sido denominado ”Partial Computing Pattern“, debido a que busca optimizar los cómputos en paralelo aprovechando la disponibilidad de datos parciales en tiempos inactivos de los procesadores.
La tesis está organizada en tres partes. La primera (Capítulos 2 y 3) plantea las definiciones básicas que utilizaremos en el resto del trabajo (usabilidad, diseño de interacción, capacidad en usabilidad, etc.) y revisa los métodos de desarrollo de software que proponen la inclusión del diseño centrado en usuario generadas desde el campo de HCI y desde la Ingeniería del Software. La segunda parte se compone de tres capítulos. En el primero, presentamos la versión open source del Proceso Unificado, denominada OpenUP, que es una instanciación del framework de buenas prácticas conocido como EPL (Eclipse Practice Library). En el segundo, presentamos el MMU-ISO. Cerramos esta segunda parte con un assessment de la conformidad al MMU-ISO de OpenUP con el objetivo de determinar las oportunidades de integración de usabilidad en el Proceso Unificado. Finalmente, en la tercera parte presentamos la contribución de la tesis, una nueva Práctica para agregar a la EPL, el Desarrollo Centrado en Usuario (DesCU), y ties in- stanciaciones del framework basadas en OpenUP que permitirán alcanzar los niveles 1,2 o 3 de Capacidad en Usabilidad en el marco del MMU-ISO. En el último capítulo mostramos la implementación de la Práctica DesCU y de las tres configuraciones como extensiones o plugins para el Eclipse Process Framework Composer.
El objetivo central del presente trabajo es: Desarrollar un framework de interoperabilidad para el Plan Nacional de Gobierno Electrónico que aportará políticas, especificaciones técnicas y guía de mejores prácticas, liberando de estas cuestiones a las organizaciones del sector público para que se puedan concentrar en servir al ciudadano a través de la construcción de información y servicios de valor agregado. Se abordará específicamente la interoperabilidad en la comunidad de información aeronáutica que debido a sus misiones y funciones, y por su propia naturaleza, la información que gestiona se transforma en estratégica para la seguridad aeronáutica. Asimismo deben brindar servicios a la ciudadanía en forma eficiente, evitando la duplicidad de trámites y logrando para estos casos una ventanilla única.
Se incluirá también indagar sobre el contexto nacional e internacional para los cuales se ha desarrollado un amplio trabajo de investigación cuyo análisis permitirá exponer el estado del arte. En particular, un tema relevante es el bajo nivel de madurez actual (nivel 2) en interoperabilidad en el contexto nacional. Nuestra propuesta tiene también como objetivo permitir elevar este nivel de madurez.
The motivation of this work comes from a Global Climate Model (GCM) Software which was in great need of being updated. This software was implemented by scientists in the ’80s as a result of meteorological research. Written in Fortran 77, this program has been used as an input to make climate predictions for the Southern Hemisphere. The execution to get a complete numerical data set takes several days. This software has been programmed using a sequential processing paradigm. In these days, where multicore processors are so widespread, the time that an execution takes to get a complete useful data set can be drastically reduced using this technology. As a first objective to reach this goal of reengineering we must be able to understand the source code. An essential Fortran code characteristic is that old source code versions became unreadable, not comprehensive and sometimes “ejects” the reader from the source code. In that way, we can not modify, update or improve unreadable source code. Then, as a first step to parallelize this code we must update it, turn it readable and easy to understand.
The GCM has a very complex internal structure. The program is divided into about 300 .f (Fortran 77) files. These files generally implement only one Fortran subroutine. Less than 10% of the files are used for common blocks and constants. Approximately 25% of the lines in the source code are comments. The total number of Fortran source code lines is 58000. A detailed work within the source code brings to light that [74]:
1 About 230 routines are called/used at run time. Most of the runtime is spent in routines located at deep levels 5 to 7 in the dynamic call graph from the main routine.
2 The routine with most of the runtime (the top routine from now on) requires more than 9% of the total program runtime and is called about 315000 times.
3 The top 10 routines (the 10 routines at the top of the flat profile) require about 50% of total runtime. Two of them are related to intrinsic Fortran functions.
Our first approach was using a scripting language and Find & Replace tools trying to upgrade the source code, this kind of code manipulation do not guarantee preservation of software behavior.
Then, our goal was to develop an automated tool to transform legacy software in more understandable, comprehensible and readable applying refactoring as main technique. At the same time a catalog of transformation to be applied in Fortran code is needed as a guide to programmers through this process.
El propósito de esta tesis es demostrar que es posible crear una estructura de soporte definida, que de ahora en adelante llamaremos Framework, cuyo núcleo es un conjunto de clases o librerías mediante las cuales se pueda desarrollar aplicaciones Web con navegación sensible a concerns de manera rápida, ordenada y segura. Partiendo del objetivo fundamental explicado en el punto anterior, obtenemos las siguientes contribuciones: - Dar a conocer el estado actual de los sitios y aplicaciones Web existentes, y sus principales problemas de navegación. - Brindar alternativas basadas en separación de concerns a los esquemas de navegación convencionales, para mejorar la experiencia del usuario final. - Mostrar las ventajas y desventajas de adoptar CSN. - Proponer una estructura definida para el desarrollo de aplicaciones web con CSN. - Demostrar la vialidad de migrar una aplicación existente a un esquema CSN. - Demostrar la utilización del Framework obtenido mediante la construcción de un prototipo. - Proponer nuevos trabajos en esta misma línea para mejorar el estado de la Web actual.
Objetivo General Generar un modelo que permita integrar Sensibilidad al Contexto, Folcksonomías y Ontologías a un entorno de Administración de Proyectos. Objetivos Específicos - Determinar cómo la aplicación de Sensibilidad al Contexto, Folcksonomías y Ontologías en un modelo de Administración de Proyectos, pueden ayudar a solventar los problemas reconocidos en los procesos o en su defecto, mejorar los procesos existentes. - Generar un modelo basado en las oportunidades de aplicación. - Generar un prototipo que permita verificar la utilidad del modelo diseñado.
Las expectativas que los ciudadanos, las empresas y otros grupos de interés tienen sobre el gobierno electrónico y sus aplicaciones específicas tienen un impacto en las decisiones sobre el uso de tecnologías de información y comunicación, así como en los criterios utilizados para evaluar los resultados de estas iniciativas. También las políticas existentes de e-gov revelan un entusiasmo por el potencial de las Tecnologías de la Información y las Comunicaciones (TIC) para ayudar a reformar las viejas estructuras del estado convirtiéndolas en un modelo de soporte para e-gov. Sin embargo, las relaciones y procedimientos que convierten un caso de aplicación de TICs en un ejemplo exitoso de implantación de gobierno electrónico no son muy claros. En esta tesis, abordamos la relación entre mejora de procesos software y gobierno electrónico como una forma de establecer estructuras sólidas que produzcan servicios sustentables en bien del ciudadano. A partir de casos de estudio en el dominio de una organización judicial, establecemos recomendaciones y lecciones aprendidas junto con indicadores que constituyen un abordaje sistemático y más formal en el proceso de implantación de prácticas de gobierno electrónico. En particular, exploramos el caso de mejora de procesos relacionado a la implantación de firma y notificación electrónica.
La medición de variables del medio es fundamental para la supervisión y control de ambientes y actividades de la más diversa índole. Resulta de gran utilidad en aplicaciones industriales, médicas, agrícolas, de preservación del medio natural o creación de ambientes inteligentes, entre otras. En muchas de las aplicaciones mencionadas, el seguimiento de las variables de interés debe realizarse en locaciones distantes u hostiles que hacen muy difícil el cableado y la atención periódica de los dispositivos de medición. Por estos motivos se utilizan las redes inalámbricas de sensores inteligentes (RISI) para obtener los datos necesarios.
Actualmente, la complejidad de los sistemas de software se ha incrementado. El software sufre cambios y evoluciona durante todo el ciclo de vida del desarrollo, por lo tanto es fundamental contar con un proceso de pruebas que detecte errores y fallas en la implementación en todas las etapas garantizando además la calidad del producto final. Las técnicas de validación y verificación también se pueden aplicar a los modelos de pruebas de software permitiendo automatizar la creación y ejecución de los casos de pruebas, aumentando la productividad y reduciendo los costos. El Desarrollo de software Dirigido por Modelos (en inglés Model Driven software Development, MDD) propone un nuevo mecanismo de construcción de software a través de un proceso guiado por modelos que van desde los más abstractos (en inglés Platform Independent Model, PIM) a los más concretos (en inglés Platform Specific Model, PSM) realizando transformaciones y/o refinamientos sucesivos que permitan llegar al código aplicando una última transformación. Dentro del contexto de MDD, las Pruebas de software Dirigidas por Modelos (en inglés Model-Driven Testing, MDT) son una forma de prueba de caja negra que utiliza modelos estructurales y de comportamiento para automatizar el proceso de generación de casos de prueba. Para ello, MDT utiliza un lenguaje definido con mecanismos de perfiles basado en el Perfil de Pruebas UML (en inglés UML 2.0 Testing Profile, U2TP). Este lenguaje permite diseñar los artefactos de los sistemas de pruebas e identificar los conceptos esenciales del dominio en cuestión adaptados a plataformas tecnológicas y a dominios específicos. La especificación del Perfil de Pruebas UML proporciona además un marco formal para la definición de un modelo de prueba bajo la propuesta de caja negra que incluye las reglas que se deben aplicar para transformar dicho modelo a código ejecutable. Actualmente existen herramientas basadas en técnicas de validación y verificación formal de programas y de chequeo de modelos que se enfocan principalmente en cómo expresar las transformaciones. Sin embargo, la validación y verificación en forma automática a través de una alternativa práctica como es el testing dirigido por modelos lo hacen en menor medida. El testing consiste en el proceso de ejercitar un producto para verificar que satisface los requerimientos e identificar diferencias entre el comportamiento real y el comportamiento esperado (IEEE Standard for Software Test Documentation, 1983), lo cual es más simple y no requiere tener experiencia en métodos formales comparadas con las técnicas mencionadas anteriormente. Tanto UML y sus extensiones, como el Perfil de Pruebas UML, están definidos a través de una especificación de tecnología estandarizada por OMG (en inglés Object Management Group) denominada MOF (en inglés Meta-Object Facility). MOF es un meta-metamodelo utilizado para crear metamodelos que pueden ser transformados a texto a través de herramientas que soporten la definición MOF. MOFScript [Oldevik 06] es un lenguaje textual basado en QVT (en inglés "Queries, Views and Transformations") que puede ser utilizado para realizar transformaciones de metamodelos MOF a texto. El objetivo de esta tesis es desarrollar una herramienta que permita realizar las transformaciones en forma automática de los modelos de pruebas estructurales y de comportamiento a código JUnit. Para lograr dicho objetivo, definimos el lenguaje para modelar dominios de pruebas utilizando el Perfil de Pruebas UML y las reglas formales de transformación de modelos U2TP a código de testing JUnit basadas en el lenguaje MOFScript. Esta tesis está organizada de la siguiente manera. En el capítulo 2 se introducen los conceptos del desarrollo de software dirigido por modelos. En el capítulo 3 se describen las pruebas de software dirigidas por modelos. En el capítulo 4 se definen las reglas de transformación de modelos de prueba a código JUnit. En el capítulo 5 se describe la implementación de la herramienta que permite transformar en forma automática modelos definidos con el Perfil de Pruebas UML a código JUnit, además de describir la arquitectura utilizada en el proyecto. El capitulo 6 muestra un caso de estudio del trabajo realizado desde la perspectiva del usuario final. En el capítulo 7 se detallan los trabajos relacionados. En el capítulo 8 se exponen las conclusiones finales y se citan futuros trabajos.
El objetivo del presente trabajo consiste en la realización de un estudio comparativo de metodologías y herramientas existentes, para la determinación de una técnica de especificación de requerimientos, específicamente la construcción de un esquema conceptual, realizado sobre diferentes dominios de aplicación bajo estudio. El alcance definido para efectuar las comparaciones de las diferentes metodologías y herramientas será a nivel conceptual y se define desde el establecimiento de dominios objetos de estudio, con determinación de las características a evaluar tanto para las metodologías como para las herramientas de soporte de las mismas, la recolección de las valoraciones de las características evaluadas en los diferentes dominios y el establecimiento de un método multicriterio para efectuar las comparaciones y de esta manera, determinar cuál combinación de Metodología/Herramienta reúne las mejores características para construir un Esquema Conceptual. En resumen, el objetivo del presente trabajo, es el de proveer un análisis crítico sobre la aplicación de diferentes metodologías y herramientas para la especificación de requerimientos en la obtención de un esquema conceptual cuyo modelo resultante sea una representación fiel de la realidad que se está representando.
Este trabajo primero presenta un lenguaje de alto nivel junto con un sistema de tipos que garantiza que los programas bien tipados satisfacen no-interferencia. Luego presenta un lenguaje de bajo nivel basado en Typed Assembly Language, al que denominamos SecTAL (Secure Typed Assembly Language), junto con un sistema de tipos que satisface propiedades similares. Finalmente, presenta una función de compilación junto con una demostración de que preserva la propiedad de no-interferencia.
La función de compilación ha sido implementada al igual que un chequeador de tipos para SecTAL1.
Las contribuciones pueden resumirse de la siguiente manera:
La definición de una función de compilación de un lenguaje imperativo sencillo hacia un lenguaje de bajo nivel basado en Typed Assembly Language.
La prueba de un resultado de preservación de tipado que muestra que si el programa fuente es bien tipado (y por ende seguro) también lo será el resultado de compilar el mismo.
El propósito de este trabajo es mostrar y proponer un camino posible para la transformación de una aplicación Web tradicional a RIA, haciendo uso de técnicas y herramientas para especificar el viejo y nuevo estado de la misma, dando una completa visión de los cambios arquitecturales y adaptaciones en las aplicaciones desarrolladas, con y sin patrones de diseño.
Esta tesis tiene como objetivo definir una metodología y tecnologías asociadas para desarrollar sistemas en un Centro de desarrollo de Software. La metodología fue implementada con éxito, durante el 2008, en un centro de desarrollo de reconocido prestigio, que consiguió a fin del año 2008 certificar CMMI nivel 2 [CMMI-SW, 2002]. Esto constituye una confirmación de la aplicabilidad y validez de la metodología.
El proceso de definición de la metodología será llevado a cabo utilizando los mismos principios y herramientas que se utilizan para desarrollar un sistema. Debido a que esta metodología será concebida desde su inicio para soportar una certificación, su adopción en otro centro disminuiría considerablemente los costos y tiempos que implican certificar una norma de calidad. Finalmente, al usar los mismos principios y herramientas que se utilizan para desarrollar un sistema, es de esperar que la capacitación a desarrolladores del Centro de Desarrollo sea más fácil.
La tesis propone un lenguaje específico de dominio (DSL) para modelar Sistemas Colaborativos (CSSL - Collaborative Software System Language). Este lenguaje fue diseñado como una extensión de UML usando el mecanismo de metamodelado y posee una sintaxis abstracta formalizada que permitirá entre otras cosas definir más de una sintaxis concreta a partir de ella, lo cual aumenta la legibilidad y flexibilidad del lenguaje. Finalmente se presenta una guía que facilita la construcción de Sistemas Colaborativos. Dentro del paradigma MDD (Model Driven Development) y utilizando el lenguaje CSSL se describe las etapas iniciales de un método para modelar los Sistemas Colaborativos.
En este trabajo se identifican las necesidades de un grupo de investigadores que son difíciles (algunas imposibles) de cubrir con la tecnología y herramientas actuales. Se trata de un grupo que coopera en la etapa de investigación conceptual, en la cual enfrentan la tarea de manejarse con una gran cantidad de material compartido e interrelacionado, posiblemente generado por distintas aplicaciones e incluso almacenado sobre distintas plataformas.
En esta etapa los investigadores necesitan representar y compartir distintos tipos de relaciones, las cuales constituyen en sí conocimiento agregado acerca de la interpretación del material en estudio y además proveen las conexiones para permitir consultas eficientes. Por tal motivo se realiza un análisis detallado de las actividades desarrolladas dentro del grupo y se identifican las necesidades individuales y grupales que deben ser satisfechas, así como también las características técnicas que un soporte de software debiera proveer.
Del análisis de las actividades del grupo se determina además la relación existente entre sus necesidades y una de las principales metas de la Hipermedia: almacenar y consultar eficientemente el conocimiento acumulado. La clave para que el material pueda ser consultado eficientemente está en la posibilidad de contar con las relaciones apropiadas que conecten dicho material. En la convicción de que la Hipermedia es la mejor forma de abordar el soporte para el grupo de investigación presentado, y que ésta constituye en general una forma natural para representar y compartir conocimiento, se realiza un estudio profundo de los trabajos de investigación y desarrollo de la comunidad Hipermedia.
Con el propósito de obtener una mejor interpretación del estado actual del arte, se realiza una reseña histórica de la Hipermedia que incluye las principales contribuciones. Dentro de la reseña se presenta y discute la evolución de los Sistemas, incluyendo el representante actual que más popularizó la Hipermedia, la Web. Dentro de esta discusión se destacan las virtudes y falencias de los distintos sistemas a la hora de soportar la representación y comunicación de conocimiento requerida en el grupo de investigación presentado.
La aplicación de la tecnología computacional a lo largo de ya varias décadas ha conducido a sistemas de información grandes y complejos, muchos de los cuales parecen haber alcanzado un punto límite en sus posibilidades de adecuación y evolución. Si bien este problema viene siendo advertido desde hace mucho tiempo, el crecimiento exponencial de la Web y la necesidad de mantener competitividad en un mundo dinámico y cambiante le dieron al problema una trascendencia adicional. En efecto, las organizaciones deben hacer un efectivo aprovechamiento del potencial que ofrece la Web en plazos perentorios, pero al mismo tiempo, gran parte de su conocimiento, experiencia y reglas del negocio están concentrados en estos sistemas de información que parecen inmunes a su adaptación. Por esta razón, durante los últimos años se comprueba un creciente número de experiencias de migraciones a la Web de aplicaciones distribuidas no basadas en la Web, convirtiéndose este tema en un importante campo de investigación y práctica profesional de la Ingeniería de Sistemas. Es así que se vienen presentando y ensayando diferentes propuestas, se desarrollaron productos y se dispone de amplia bibliografía para la migración de sistemas apoyados en plataformas mainframes tradicionales a entornos abiertos. Sin embargo, no hay tanta información referida a la realización de las pruebas de migración y mucho menos sobre las características de las validaciones de las aplicaciones en entornos distribuidos sobre la Web. Esta comprobación sirvió de estímulo para el trabajo que se presenta, en el que se aborda el problema de migración de sistemas a la Web desde el enfoque de testing, estudiando en especial las especificaciones de requerimientos de interfases con el usuario y funcionales. Para ello se formula una metodología para el análisis lógico y físico de las aplicaciones distribuidas a migrar a entornos Web, y se la pone en práctica aplicándola a un caso de estudio. Este caso corresponde a un sistema distribuido desarrollado mediante el uso de una metodología de análisis y diseño estructurado y la aplicación migrada a la Web fue desarrollada mediante el uso de alguna metodología basada en UML. El trabajo realizado se apoya en el conocimiento previo sobre testing de regresión, testing de caja negra y testing de interfaces gráficas con el usuario. Asimismo, dado que el ciclo de vida del testing está embebido dentro del ciclo de vida del software, el enfoque propuesto promueve la reutilización de casos de pruebas existentes, resultantes de la trazabilidad con los casos de uso planteados para el sistema distribuido, y la automatización de las pruebas unitarias, de integración y de regresión.
La arquitectura Model-Driven (Model-Driven Architecture o MDA) es un framework para el desarrollo de software definido por el Object Management Group (OMG) (MDA, 2007). Su propuesta es elevar el nivel de abstracción en el que se desarrollan sistemas complejos separando la especificación de la funcionalidad de un sistema de su implementación en una plataforma tecnológica específica. MDA promueve el uso de modelos y transformaciones de modelos para el desarrollo de sistemas de software.
El proceso de desarrollo MDA distingue cuatro clases de modelos:
- Modelo independiente de la computación (Computation Independent Model o CIM):
describe los requerimientos del sistema y los procesos de negocio que debe resolver sin tener en cuenta aspectos computacionales.
- Modelo independiente de la plataforma (Platform Independent Model o PIM): es un modelo computacional independiente de las características específicas a una plataforma de desarrollo, como por ejemplo .NET, J2EE o relacional.
- Modelo específico a la plataforma (Platform Specific Model o PSM): describe un sistema en términos de una plataforma de implementación particular.
- Modelo específico a la implementación (Implementation Specific Model o ISM): se refiere a componentes y aplicaciones que usan lenguajes de programación específicos.
Los elementos esenciales de MDA son los modelos, los metamodelos y las transformaciones.
Un modelo es una descripción o especificación de un sistema y su ambiente para algún cierto propósito. Dentro de MDA un modelo debe estar escrito en un lenguaje de forma tal de ser interpretado por una computadora.
Dentro del contexto de MDA, los metamodelos son expresados usando MOF (Meta Object Facility) que define una forma común de capturar todos los estándares y construcciones de intercambio (MOF, 2006). Los metamodelos MOF se basan en los conceptos de entidades, interrelaciones y sistemas y se expresan como una combinación de diagramas de clases UML y restricciones OCL (UML-Infrastructure, 2007; UML-Superstructure, 2007; OCL, 2006).
La transformación de modelo a modelo es el proceso de convertir un modelo en otro modelo del mismo sistema. Para expresar las transformaciones, OMG está trabajando en la definición del QVT (QueryViewTransformation) para expresar transformaciones como una extensión de MOF (QVT, 2007).
El proceso de desarrollo Model-Driven (MDD) en el contexto de MDA es llevado a cabo como una secuencia de transformaciones de modelos que incluye al menos los siguientes pasos: construir un PIM, transformar el PIM en uno o más PSMs, y construir componentes ejecutables y aplicaciones directamente a partir de un PSM. Un alto grado de automatización de PIMs a PSMs, y de PSMs a ISMs es esencial en el proceso de desarrollo de MDA. Las herramientas que llevan a cabo la automatización se basan en la definición de las transformaciones, las cuales describen como generar un modelo a partir de otro.
El éxito de esta propuesta depende de la definición de las transformaciones entre modelos y de librerías de componentes que tengan un impacto significativo sobre las herramientas que proveen soporte a MDA. Entre los posibles componentes MDA se pensó en definir componentes para patrones de diseño (Gamma y otros, 1995) dada su amplia difusión, aceptación y uso, debido a que describen soluciones a problemas de diseño recurrentes. Arnaut (2004) analiza los patrones de diseño de Gamma y otros (1995) para identificar cuales de ellos pueden ser transformados en componentes reusables en una librería Eiffel. Su hipótesis de trabajo es que “los patrones de diseño son buenos, pero los componentes son mejores”. En este caso en particular la reusabilidad está dada en términos de código, pero nos inspiró a pensar en los patrones de diseño en términos de componentes MDA.
El objetivo principal de esta tesis es presentar una técnica de especificación de refactorings alineados con MDA aplicables a sus diferentes tipos de modelos de diseño UML, es decir, a modelos independientes de la computación, modelos dependientes de una plataforma y modelos dependientes de la implementación. En particular, en este trabajo, se muestra la técnica de especificación de refactorings aplicados a modelos de diagramas de clases UML enriquecidos con anotaciones OCL en los distintos niveles de abstracción. Los refactorings se especifican como contratos OCL utilizando la técnica de metamodelado. Los metamodelos son expresados usando Meta Object Facility (MOF). Asimismo, en esta tesis, se analiza la integración de la especificación de los refactorings con técnicas formales. Se detalla la traducción de los contratos OCL de refactorings y los metamodelos MOF al lenguaje de especificación formal NEREUS.