Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to main content
La conformidad de arquitecturas de software es una pr actica que permite mantener la estructura arquitect onica alineada y consis-
A code smell is a symptom in the source code that helps to identify a design problem. Several tools for detecting and ranking code smells according to their criticality to the system have been developed. However, existing works assume a... more
A code smell is a symptom in the source code that helps to identify a design problem. Several tools for detecting and ranking code smells according to their criticality to the system have been developed. However, existing works assume a centralized development approach, which does not consider systems being developed in a distributed fashion. The main problem in a distributed group of developers is that a tool cannot always ensure a global vision of (smells of) the system, and thus inconsistencies among the rankings provided by each developer are likely to happen. These inconsistencies often cause unnecessary refactorings and might not focus the whole team on the critical smells system-wide. Along this line, this work proposes a multi-agent tool, called D-JSpIRIT, which helps individual developers to reach a consensus on their smell rankings by means of distributed optimization techniques.
Resumen La arquitectura de software de un sistema es un activo importante para una organizacion que desarrolla software. Para maximizar los beneficios que provee una arquitectura, esta debe estar en correspondencia con la implementacion... more
Resumen La arquitectura de software de un sistema es un activo importante para una organizacion que desarrolla software. Para maximizar los beneficios que provee una arquitectura, esta debe estar en correspondencia con la implementacion del sistema. En muchos proyectos existe cierta documentacion de la arquitectura, pero sin embargo, la informacion de mapeos entre los elementos de dicha arquitectura y su implementacion en codigo es escasa o inexistente. Este problema trae aparejadas dificultades de entendimiento de los elementos de codigo en relacion a la arquitectura originalmente disenada, lo que repercute negativamente sobre el aseguramiento de la calidad y los esfuerzos de mantenimiento del sistema. Si bien la provision manual de estos mapeos es factible, es una tarea compleja y proclive a errores, particularmente a medida que la implementacion del sistema evoluciona en el tiempo. En este contexto, las tecnicas de alineacion de ontologias se presentan como una alternativa para p...
Tanto el Desarrollo basado en Componentes como el Desarrollo de Software orientado a Aspectos son enfoque propuestos para abordar diversos problemas que surgen en el proceso de desarrollo de aplicaciones. Ambos enfoques tienen como... more
Tanto el Desarrollo basado en Componentes como el Desarrollo de Software orientado a Aspectos son enfoque propuestos para abordar diversos problemas que surgen en el proceso de desarrollo de aplicaciones. Ambos enfoques tienen como objetivo el reuso de software, ante esta situación surge la necesidad de que componentes y aspectos compartan un espacio común en el cual puedan ser publicados, recuperados y reutilizados. Los repositorios actuales parecen no proveer aspectos de manera explícita, en ocasiones los aspectos son utilizados para especificar el componente, pero no son reusables. La tarea de publicar y recuperar componentes es muy compleja, existen diversos métodos de publicación y recuperación a tal fin. En este trabajo se exploraron diferentes repositorios analizando criterios al igual que se exponen los métodos de publicación y recuperación con el fin de determinar si es posible la adaptación o extensión de los repositorios a aspectos.
  Los code smells son síntomas en el código fuente que pueden revelar problemas de diseño. Para poder solucionar un smell deben aplicarse un conjunto de refactorings que permitan restructurar el sistema. Sin embargo, al aplicar un... more
  Los code smells son síntomas en el código fuente que pueden revelar problemas de diseño. Para poder solucionar un smell deben aplicarse un conjunto de refactorings que permitan restructurar el sistema. Sin embargo, al aplicar un conjunto de refactorings en un orden determinado, pueden surgir problemas que impiden que éstos se apliquen. Por ejemplo, porque un refactoring que depende de una reestructuración realizada por otro refactoring que aún no fue aplicado, o porque un refactoring referencia un artefacto del sistema que fue modificado por un refactoring aplicado anteriormente. Por estos motivos, para aplicar un conjunto de refactorings, se deben analizar las dependencias que existen entre estos para poder establecer el orden de aplicación. En esta línea, este trabajo presenta una herramienta que identifica y soluciona los conflictos originados por dependencias entre refactorings para luego aplicar automáticamente los mismos. Los resultados, si bien son preliminares, indican que...
El Desarrollo de Software Orientado a Features (FOSD) consiste en la construcción de sistemas a partir de un conjunto de características, cada feature o característica es una unidad funcional que satisface un requisito de software. Las... more
El Desarrollo de Software Orientado a Features (FOSD) consiste en la construcción de sistemas a partir de un conjunto de características, cada feature o característica es una unidad funcional que satisface un requisito de software. Las fases son análisis del dominio, diseño e implementación del dominio, configuración y generación del producto de software, obteniendo así una Línea de Productos de Software (SPL). El presente trabajo realiza una comparación de herramientas para su implementación y, se analiza un conjunto de aplicaciones que modelan features. Resultando un espacio de estudio abierto para modelar aplicaciones para la Televisión Digital Interactiva (TVDi). Además se han encontrado diversos métodos, artefactos y patrones de diseño para el modelado de una aplicación de TVDi en particular, reflejando un estudio para el modelado de variabilidad. El objetivo principal es estudiar SPL / FOSD, empleando los Patrones de Diseño de Interacción (PDI) para el dominio de las aplicacio...
Existen diferentes enfoques de desarrollo de software, en su mayoría priorizan la calidad en el proceso y el producto obtenido. Para poder lograr esto es importante el uso de modelos de calidad apropiados para cada metodología. Estos... more
Existen diferentes enfoques de desarrollo de software, en su mayoría priorizan la calidad en el proceso y el producto obtenido. Para poder lograr esto es importante el uso de modelos de calidad apropiados para cada metodología. Estos modelos de calidad presentan factores e indicadores que describen las características del software y sus relaciones y pueden ser adaptaciones de otros o creados tomando como base los estándares existentes.Este trabajo describe y analiza algunos modelos de calidad desarrollados para las metodologías de desarrollo de software orientada a objetos, a componentes, a aspectos y los métodos ágiles, realiza una comparación según los criterios, factores y características que lo componen, niveles de abstracción y métricas para llevar a cabo la medición.
El desarrollo de aplicaciones interactivas para TV Digital (TVDi) de calidad y a escala industrial requiere estrategias específicas que se puedan aplicar al desarrollo. A partir de patrones de diseño de interacción centrados en el... more
El desarrollo de aplicaciones interactivas para TV Digital (TVDi) de calidad y a escala industrial requiere estrategias específicas que se puedan aplicar al desarrollo. A partir de patrones de diseño de interacción centrados en el usuario, se propone la construcción de una Línea de Productos de Software (SPL) para aplicaciones TVDi. Una SPL es una modalidad de desarrollo software enfocada en potenciar la reutilización y los patrones de diseño de interacción que garantizan la usabilidad de los productos. Este trabajo presenta el modelo de características de una SPL para dominio de aplicaciones interactivas de TV Digital, la cual se validó con 32 prototipos que aplican los patrones de diseño de interacción centrados en el usuario.
Research Interests:
Research Interests:
Resumen. Debido a la diversidad de los sistemas multi-agentes, el diseño de los mismos resulta cada vez más complejo. En consecuencia, los desarrolladores necesitan de metodologías y herramientas que ayuden en el desarrollo de sistemas... more
Resumen. Debido a la diversidad de los sistemas multi-agentes, el diseño de los mismos resulta cada vez más complejo. En consecuencia, los desarrolladores necesitan de metodologías y herramientas que ayuden en el desarrollo de sistemas agentes. UML ha sido propuesto como una nueva alternativa para el modelamiento de agentes, sin embargo no provee mecanismos para modelar las características propias de un agente. En este trabajo se presenta un profile UML para Sistemas de Agentes. Se ha extendido la herramienta ArgoUML con el objetivo de soportar la incorporación del profile a dicha herramienta, la cual permite que los desarrolladores especifiquen nuevos profiles y actualicen automáticamente el UML estándar, permitiendo el modelamiento de aplicaciones con estos nuevos elementos. Palabras claves. Abstract. The diversity of multi-agent systems their design is more an more complex. As consequence, developers need tools and methodologies to achieve their designs. UML has been proposed as ...
Resumen. En estos últimos años, el tratamiento de situaciones conflictivas entre aspectos aplicado en la etapa de implementación en el desarrollo de un sistema, se ha trasladado a etapas más tempranas, más precisamente a la Ingeniería de... more
Resumen. En estos últimos años, el tratamiento de situaciones conflictivas entre aspectos aplicado en la etapa de implementación en el desarrollo de un sistema, se ha trasladado a etapas más tempranas, más precisamente a la Ingeniería de Requerimientos. La resolución de conflictos en dicha etapa aún carece de un tratamiento extensivo y cuidadoso. Es por ello que este enfoque propone una amplia taxonomía de resolución como clasificación de tipos de conflictos detectados, para ser resueltos de forma clara, ordenada y diversificada. Aportando de esta manera un enriquecimiento al tratamiento de conflictos en etapas tempranas del desarrollo de software. Palabras claves: Conflictos entre aspectos tempranos, Taxonomía de conflictos entre aspectos.
Resumen. Actualmente el tratamiento de aspectos en las etapas tempranas de desarrollo de software (aspectos tempranos), es uno de los temas de investigación en la Ingeniería de Software. Durante estas etapas se intenta comenzar a... more
Resumen. Actualmente el tratamiento de aspectos en las etapas tempranas de desarrollo de software (aspectos tempranos), es uno de los temas de investigación en la Ingeniería de Software. Durante estas etapas se intenta comenzar a modularizar el sistema identificando, separando y especificando los concerns que cortan transversalmente los componentes funcionales de la aplicación, denominados aspectos candidatos. Entre estos aspectos existen posibles competencias de activación que derivan a situaciones poco deseables llamadas conflictos (conflictos tempranos). El presente trabajo propone un enfoque automatizado para detectar, analizar y resolver toda situación conflictiva que pueda surgir entre aspectos generados tempranamente.
En este trabajo se presenta un enfoque automatizado para identificar aspectos en etapas tempranas del ciclo de desarrollo de software. Para ello se desarrolla una herramienta en el contexto de ingeniería de software que sirva de soporte... more
En este trabajo se presenta un enfoque automatizado para identificar aspectos en etapas tempranas del ciclo de desarrollo de software. Para ello se desarrolla una herramienta en el contexto de ingeniería de software que sirva de soporte para identificar los diferentes concerns del sistema. En etapas posteriores estos concerns se convertirán en los elementos básicos y en los aspectos del sistema. De esta manera, se identifican los aspectos en etapas tempranas logrando la separación de concerns y reduciendo los costos de desarrollo, mantenimiento y evolución.
Research Interests:
Computational reflection has become a useful technique for developing applications that are able to observe and modify their behaviour. Reflection has evolved to the point where it is being used to address a variety of application... more
Computational reflection has become a useful technique for developing applications that are able to observe and modify their behaviour. Reflection has evolved to the point where it is being used to address a variety of application domains. This paper presents a reflective architecture that has been developed as a framework that provides a flexible reflective mechanism for the development of a wide range of applications. This architecture supports many meta-levels, where each one may contain one or more planes. A plane groups components that deal with the same functionality, and so enhances the separation of concerns in the system. The reflective mechanism permits different types of reflection, and also incorporates the runtime handling of potential conflicts between competing system components. The design and implementation of this framework are described, and an example illustrates its characteristics.
The importance of enterprise applications in current organizations makes it necessary to facilitate their maintenance and evolution along their life. These kind of systems are very complex and they have several requirements that... more
The importance of enterprise applications in current organizations makes it necessary to facilitate their maintenance and evolution along their life. These kind of systems are very complex and they have several requirements that orthogonally crosscut the system structure (called crosscutting concerns). Since many of the enterprise systems are developed with the Spring framework, can be taken advantage of the benefit provided by the aspect-oriented module of Spring in order to encapsulate the crosscutting concerns into aspects. In this way, the maintenance and evolution of the enterprise systems will be improved. However, most of the aspect refactorings presented in the literature are not directly applicable to Spring systems. Along this line, in this work we present an adaptation of a catalog of aspect refactorings, initially presented for AspectJ, to be used with Spring/AOP. Also, we conduct a case study in which two enterprise applications developed with the Spring framework are r...
Specifying good software requirement documents is a difficult task. Many software projects fail because of the omission or bad en-capsulation of concerns. A practical way to solve these problems is to use advanced separation of concern... more
Specifying good software requirement documents is a difficult task. Many software projects fail because of the omission or bad en-capsulation of concerns. A practical way to solve these problems is to use advanced separation of concern techniques, such as aspect-orientation. However, quality attributes are not completely addressed by them. In this work, we present a novel approach to uncover quality-attribute requirements. The identication is performed in an automated-fashion, relying on early aspects to guide it and using ontologies to model domain knowledge. Our tool was evaluated on two well-known systems, and contrasted with architectural documents.

And 62 more