639 research outputs found

    Automatización de un proceso de refactorización para la separación de concerns

    Get PDF
    La separación de concerns es una problemática importante de la ingeniería de software que influye en la modificabilidad de los sistemas. Si bien se han presentado prácticas arquitecturales que buscan solucionar esta problemática, existen concerns que son ortogonales a los módulos de un sistema (llamados crosscutting concerns) y no pueden ser modularizados por estas prácticas o por paradigmas de programación como el orientado a objetos. Con el objetivo de proveer mejores mecanismos de separación de concerns ha surgido la Programación Orientada a Aspectos (POA) la cual encapsula en un nuevo componente, llamado aspecto, los crosscutting concerns. Por esta razón, con el objetivo de aprovechar los beneficios de la POA ha surgido la necesidad de migrar los sistemas legados orientados a objetos a la orientación a aspectos. En este trabajo se propone la utilización de modelos de Markov con el fin de determinar el orden en el cual el código orientado a objetos debe ser migrado y para identificar las reestructuraciones a ser aplicadas durante el proceso de migración.Sociedad Argentina de Informática e Investigación Operativ

    Un enfoque para automatizar la refactorización de casos de uso

    Get PDF
    Llevar a cabo las actividades de captura y modelamiento de requerimientos no es una tarea sencilla. Ésta requiere realizar un análisis profundo de las necesidades de los clientes y demanda cierto grado de experiencia de los analistas. Para comunicar satisfactoriamente los requerimientos, se deben aprovechar los instrumentos provistos por las técnicas de especificación (por ejemplo, relaciones entre casos de uso) de forma tal que se evite la redundancia y se promueva el reuso y abstracción de comportamiento. En la práctica, estos instrumentos no son utilizados tanto como deberían y es necesario que los analistas revisen los documentos periódicamente para preservar la calidad de los requerimientos. Desafortunadamente, inspeccionar los documentos manualmente es una tarea compleja y ardua. Por ello, en este artículo presentamos un enfoque semi-automático que permite encontrar defectos en las especificaciones de casos de uso y solucionarlos por medio de refactorizaciones. El enfoque implementa heurísticas avanzadas para localizar los defectos (por ej., comportamientos duplicados) y mecanismos que agilizan su resolución. El enfoque fue evaluado en sistemas reales, obteniendo resultados preliminares prometedores.Sociedad Argentina de Informática e Investigación Operativa (SADIO

    Refactorización Orientada a Aspectos de Aplicaciones Empresariales

    Get PDF
    La importancia de las aplicaciones empresariales en las organizaciones de hoy en día, hace que sea necesario facilitar su mantenimiento y evolución a lo largo de su existencia. Este tipo de aplicaciones de gran complejidad cuentan con diversas funcionalidades y requerimientos que cortan transversalmente su estructura, para lo cual otros mecanismos de mo dularización más allá de la orientación a objetos resultarían convenientes. Dado que muchas de las aplicaciones empresariales se implementan utilizando el framework Spring puede utilizarse el módulo de AOP que este provee para obtener una mejor separación de los concerns. Con este objetivo, en este trabajo se presentan dos casos de estudios en los cuales se refactorizan los crosscutting concerns de dos aplicaciones empresariales con el prop ósito de encapsularlos en asp ectos. Con el fin de simplificar la tarea de refactorizacion un conjunto de refactorings, inicialmente presentados para AspectJ fueron adaptados para ser utilizados con Spring/AOP.Sociedad Argentina de Informática e Investigación Operativ

    Un enfoque para automatizar la refactorización de casos de uso

    Get PDF
    Llevar a cabo las actividades de captura y modelamiento de requerimientos no es una tarea sencilla. Ésta requiere realizar un análisis profundo de las necesidades de los clientes y demanda cierto grado de experiencia de los analistas. Para comunicar satisfactoriamente los requerimientos, se deben aprovechar los instrumentos provistos por las técnicas de especificación (por ejemplo, relaciones entre casos de uso) de forma tal que se evite la redundancia y se promueva el reuso y abstracción de comportamiento. En la práctica, estos instrumentos no son utilizados tanto como deberían y es necesario que los analistas revisen los documentos periódicamente para preservar la calidad de los requerimientos. Desafortunadamente, inspeccionar los documentos manualmente es una tarea compleja y ardua. Por ello, en este artículo presentamos un enfoque semi-automático que permite encontrar defectos en las especificaciones de casos de uso y solucionarlos por medio de refactorizaciones. El enfoque implementa heurísticas avanzadas para localizar los defectos (por ej., comportamientos duplicados) y mecanismos que agilizan su resolución. El enfoque fue evaluado en sistemas reales, obteniendo resultados preliminares prometedores.Sociedad Argentina de Informática e Investigación Operativa (SADIO

    Método para el aprendizaje de entornos y lenguajes de programación basado en prototipado ágil

    Get PDF
    Este artículo describe un método de enseñanza para el aprendizaje de un lenguaje de programación y entornos de desarrollo asociados. Este procedimiento de aprendizaje está basado en el desarrollo de un proyecto de cierta complejidad a partir de prototipos incrementales de baja complejidad. El método se inspira en principios del proceso de Desarrollo Rápido de Aplicaciones y de la metodología Desarrollo Ágil de Software. Para alcanzar un efectivo aprendizaje se emplean técnicas como programación en pareja, integración continua, refactorización, etc. Los alumnos, de tercer curso de ingeniería informática, cuentan con una base previa en metodología de la programación orientada a objetos y con un dominio medio de algún otro lenguaje de programación. Este método evita el estudio exhaustivo de los elementos y estructuras del lenguaje de programación, así como de su API. El aprendizaje se basa en el desarrollo guiado y supervisado de prototipos de complejidad incremental, quedando en manos de los grupos alumnos el perfeccionamiento de los prototipos y su integración en un proyecto único. En todo el proceso se introduce el uso de herramientas CASE para la definición y seguimiento de requisitos, el diseño rápido y su ágil desarrollo y prueba. La experiencia se ha desarrollado en la asignatura Herramientas y Entornos de programación durante 3 cursos en la Escuela Superior de Informática de Ciudad Real de las Universidad de Castilla-La Mancha.SUMMARY - This paper describes an educational method for programming languages and tools. The learning process is based on the development of a project integrating incremental simple prototypes. The method combines principles of rapid application development (RAD) and Agile Software Development methodology. Some learning techniques are used such as pair programming, continuous integration, and refactoring. The students of computer engineering (undergraduates in their third-year), had knowledge in object-oriented methodology and they mastered some other programming language. This method avoids the exhaustive study of the elements and structures of the programming language and its APIs. The learning process is based on the supervised development of prototypes with incremental complexity. Students have to improve these prototypes and integrate them into a whole project. Throughout the process we introduce the use of CASE tools for defining and monitoring requirements, the rapid design and agile development and testing. The experience has been developed in the course Programming Tools and Environments during three years at the School of Computer Science in Ciudad Real (University of Castilla-La Mancha, Spain)Peer Reviewe

    BUENAS PRÁCTICAS, UNA SOLUCIÓN PARA UN MEJOR DESARROLLO DE SOFTWARE

    Get PDF
    Este articulo tiene como objetivo principal dar a conocer una serie de buenas prácticas planteadas para un mejor desarrollo de software, basadas en las metodologías agiles más representativas se han propuesto unos valores, unas características, unos roles, unas prácticas y un ciclo de vida para el desarrollo de un proyecto de software, con lo cual se busca abarcar todo el proceso desde que surge una necesidad por parte de un cliente, hasta el momento en se tiene la seguridad de que el cliente está totalmente satisfecho con el producto. Estas prácticas planteadas buscan comprometer al equipo de trabajo e integrarlo al proyecto de una manera beneficiosa para las personas participantes, ya que pueden estar desde el inicio hasta la fase final del proyecto cumpliendo un rol u otro específicamente, logrando con esto reducción de tiempo, costos y otros

    Un enfoque para automatizar la refactorización de casos de uso

    Get PDF
    Llevar a cabo las actividades de captura y modelamiento de requerimientos no es una tarea sencilla. Ésta requiere realizar un análisis profundo de las necesidades de los clientes y demanda cierto grado de experiencia de los analistas. Para comunicar satisfactoriamente los requerimientos, se deben aprovechar los instrumentos provistos por las técnicas de especificación (por ejemplo, relaciones entre casos de uso) de forma tal que se evite la redundancia y se promueva el reuso y abstracción de comportamiento. En la práctica, estos instrumentos no son utilizados tanto como deberían y es necesario que los analistas revisen los documentos periódicamente para preservar la calidad de los requerimientos. Desafortunadamente, inspeccionar los documentos manualmente es una tarea compleja y ardua. Por ello, en este artículo presentamos un enfoque semi-automático que permite encontrar defectos en las especificaciones de casos de uso y solucionarlos por medio de refactorizaciones. El enfoque implementa heurísticas avanzadas para localizar los defectos (por ej., comportamientos duplicados) y mecanismos que agilizan su resolución. El enfoque fue evaluado en sistemas reales, obteniendo resultados preliminares prometedores.Sociedad Argentina de Informática e Investigación Operativa (SADIO

    Modelo para el tratamiento de la deuda técnica orientado a la evolución de los componentes para que las aplicaciones sean sostenibles a largo plazo

    Get PDF
    La Deuda Técnica es un fenómeno habitual del proceso de construcción de software, la cual es reconocida como un conjunto de malas prácticas y decisiones incorrectas en la fase de construcción de software, aceptada generalmente como efecto colateral en proyectos de software donde puede existir presiones de cronograma y con entregas continuas de valor a corto plazo. Ciertos aspectos de este fenómeno son conocidos de forma general, lo que sigue sin conocerse en profundidad, es cómo la deuda técnica se manifiesta y afecta específicamente los procesos de software, y cómo las técnicas de desarrollo de software empleadas acomodan o mitigan la presencia de esta deuda (Holvitie et al., 2018). La deuda técnica ha ganado visibilidad en los últimos años debido al interés en los proyectos de software que usan marcos de desarrollo ágil, los cuales detallan la responsabilidad que tienen los equipos de desarrollo en producir código de calidad, y que en su afán de entregar software funcionando en el menor tiempo posible, renuncian a actividades relacionadas con la producción de código de calidad, como son, el uso de buenas prácticas de codificación, definiciones de diseños y arquitecturas incompletas, poca cobertura de pruebas y documentación, entre otros, que a largo plazo acumulan una gran cantidad de deuda técnica que se vuelve perjudicial para el éxito de los proyectos. Parte de este estudio es comprender los antecedentes, dimensiones, atributos y consecuencias de la deuda técnica, para así poder proponer un modelo de referencia para el tratamiento de la deuda técnica, y cómo puede éste ser adaptado como parte de un proceso de madurez similar a los existentes en desarrollo de software general. El entendimiento de las causas para lograr que las aplicaciones puedan ser sostenibles a largo plazo, será el principal enfoque para la selección de las principales técnicas para el tratamiento de la deuda técnica definidas en la literatura, las tecnologías y herramientas que serán útiles para registrar y hacer las mediciones de deuda técnica, especificar qué actividades y ejemplos claros de cómo deberían ser implementadas según el modelo por parte de los equipos de desarrollo, contribuyendo a reducir y gestionar la deuda técnica en las aplicaciones. El modelo propuesto debe proporcionar un enfoque útil para comprender y gestionar la deuda técnica con fines prácticos, que involucre futuras líneas de investigación.Technical Debt is a common phenomenon of the software construction process, the quality is recognized as a set of bad practices and incorrect decisions in the software construction phase, normally accepted as a side effect in software projects where there may be schedule difficulties and with continuous deliveries of short-term value. Certain aspects of this phenomenon are generally known, what remains unknown in depth, is how technical debt manifests and specifically affects software processes, and how the software development techniques used accommodate or mitigate the presence of this debt (Holvitie et al., 2018).Technical debt has gained visibility in recent years due to interest in software projects that use agile development frameworks, which detail the responsibility that development teams have in producing quality code, and that in their eagerness to deliver software functioning in the shortest possible time, they give up activities related to the production of quality code, such as the use of good coding practices, definitions of incomplete designs and architectures, little evidence and documentation coverage, among others, that over term accumulate a large amount of technical debt that becomes detrimental to the success of the projects. Part of this study is to understand the background, dimensions, attributes and consequences of technical debt, in order to propose a reference model for the treatment of technical debt, and how it can be adapted as part of a maturity process similar to those existing in general software development. Understanding the causes to ensure that applications can be sustainable in the long term will be the main approach for the selection of the main techniques for the treatment of technical debt defined in the literature, the technologies and tools that will be useful for recording and make the measurements of technical debt, specify what activities and clear examples of how they should be implemented according to the model by the development teams, contributing to reduce and manage the technical debt in the applications. The proposed model should provide a useful approach to understand and manage technical debt for practical purposes, which involves future lines of research.Magíster en Ingeniería de SoftwareMaestrí

    Métodos ágiles para el desarrollo de software

    Get PDF
    Un método de desarrollo de software ágil es aquel capaz de adaptarse a los cambios, especialmente de los requisitos, según el feedback constante y temprano del cliente. El objetivo es minimizar el tiempo y el coste de realizar un proyecto de software, pero manteniendo la calidad. Todo esto se traduce en un ímpetu por las pruebas continuas, preferentemente automatizadas, y la integración continua para crear versiones de forma seguida para poderlas mostrar al cliente y recoger su opinión. Los métodos ágiles comparten un sustrato: el manifiesto ágil y los 12 principios ágiles, donde no se detallan trucos de programación sino recomendaciones para las personas dedicadas al proyecto. Se trata más de una manera de actuar, a alto nivel, que de prácticas específicas a bajo nivel, que se dejan a la elección de los propios programadores y su experiencia. En primer lugar, se dará una perspectiva concisa de los métodos predecesores. Seguidamente, se analizarán los 14 métodos ágiles más comunes, detallando el proceso con sus fases, las prácticas, papeles, workproducts o artefactos que se generan en cada fase, etc. También se mostrarán herramientas software que ayudan a adoptar prácticas ágiles o el método completo. Se verán las estadísticas sobre los puntos débiles de los métodos pesados y sus consecuencias, especialmente el Chaos Report (1994), y la mejora que ha supuesto la aplicación de prácticas o métodos ágiles desde entonces. Como conclusiones, se resumirán las muchas similitudes entre los diferentes métodos. También se discutirán ventajas e inconvenientes de las prácticas ágiles, muchas de ellas basadas en la experiencia y el sentido común, pero que pocas veces seaplican todas juntas para lograr una gestión rápida y adecuada

    Desarrollo de un framework con una arquitectura basada en microservicios para el UP-Grade del Sistema de Planificación de Recursos Empresariales de la UCSM

    Get PDF
    La tecnología se encuentra en constante evolución, y constantemente podemos ver que surgen nuevas maneras de hacer software que buscan estar mejor preparadas para el entorno de alto crecimiento que estamos viviendo. Sin embargo, muchas organizaciones han decidido mantener sistemas con tecnologías antiguas y presentan una alta resistencia al cambio. Esto en consecuencia genera una mayor cantidad de riesgos, además de generar un mayor costo de mantenimiento. Es por estos motivos que en el presente trabajo se busca proponer un framework para realizar la refactorización y mejora del backend de un sistema, tomando como caso de estudio el ERP de la Universidad Católica de Santa María
    corecore