25 resultados para BioArray Software Environment
Resumo:
ImageJ es un programa informático de tratamiento digital de imagen orientado principalmente hacia el ámbito de las ciencias de la salud. Se trata de un software de dominio público y de código abierto desarrollado en lenguaje Java en las instituciones del National Institutes of Health de Estados Unidos. Incluye por defecto potentes herramientas para editar, procesar y analizar imágenes de casi cualquier tipo y formato. Sin embargo, su mayor virtud reside en su extensibilidad: las funcionalidades de ImageJ pueden ampliarse hasta resolver casi cualquier problema de tratamiento digital de imagen mediante macros, scripts y, especialmente, plugins programables en lenguaje Java gracias a la API que ofrece. Además, ImageJ cuenta con repositorios oficiales en los que es posible obtener de forma gratuita macros, scripts y plugins aplicables en multitud de entornos gracias a la labor de la extensa comunidad de desarrolladores de ImageJ, que los depura, mejora y amplia frecuentemente. Este documento es la memoria de un proyecto que consiste en el análisis detallado de las herramientas de tratamiento digital de imagen que ofrece ImageJ. Tiene por objetivo determinar si ImageJ, a pesar de estar más enfocado a las ciencias de la salud, puede resultar útil en el entorno de la Escuela Técnica Superior de Ingeniería y Sistemas de Telecomunicación de la Universidad Politécnica de Madrid, y en tal caso, resaltar las características que pudieran resultar más beneficiosas en este ámbito y servir además como guía introductoria. En las siguientes páginas se examinan una a una las herramientas de ImageJ (versión 1.48q), su funcionamiento y los mecanismos subyacentes. Se sigue el orden marcado por los menús de la interfaz de usuario: el primer capítulo abarca las herramientas destinadas a la manipulación de imágenes en general (menú Image); el segundo, las herramientas de procesado (menú Process); el tercero, las herramientas de análisis (menú Analyze); y el cuarto y último, las herramientas relacionadas con la extensibilidad de ImageJ (menú Plugins). ABSTRACT. ImageJ is a digital image processing computer program which is mainly focused at the health sciences field. It is a public domain, open source software developed in Java language at the National Institutes of Health of the United States of America. It includes powerful built-in tools to edit, process and analyze almost every type of image in nearly every format. However, its main virtue is its extensibility: ImageJ functionalities can be widened to solve nearly every situation found in digital image processing through macros, scripts and, specially, plugins programmed in Java language thanks to the ImageJ API. In addition, ImageJ has official repositories where it is possible to freely get many different macros, scripts and plugins thanks to the work carried out by the ImageJ developers community, which continuously debug, improve and widen them. This document is a report which explains a detailed analysis of all the digital image processing tools offered by ImageJ. Its final goal is to determine if ImageJ can be useful to the environment of Escuela Tecnica Superior de Ingenierfa y Sistemas de Telecomunicacion of Universidad Politecnica de Madrid, in spite of being focused at the health sciences field. In such a case, it also aims to highlight the characteristics which could be more beneficial in this field, and serve as an introductory guide too. In the following pages, all of the ImageJ tools (version 1.48q) are examined one by one, as well as their work and the underlying mechanics. The document follows the order established by the menus in ImageJ: the first chapter covers all the tools destined to manipulate images in general (menu Image); the second one covers all the processing tools (menu Process); the third one includes analyzing tools (menu Analyze); and finally, the fourth one contains all those tools related to ImageJ extensibility (menu Plugins).
Resumo:
Un plan para organizar las enseñanzas de la ingeniería del software en las titulaciones de informática de la URJC. Nowadays both industry and academic environments are showing a lot of interest in the Software Engineering discipline. Therefore, it is a challenge for universities to provide students with appropriate training in this area, preparing them for their future professional practice. There are many difficulties to provide that training. The outstanding ones are: the Software Engineering area is too broad and class hours are scarce; the discipline requires a high level of abstraction; it is difficult to reproduce real world situations in the classroom to provide a practical learning environment; the number of students per professor is very high (at least in Spain); companies develop software with a maturity level rarely over level 2 of the CMM for Software (again, at least in Spain) as opposed to what is taught at the University. Besides, there are different levels and study plans, making more difficult to structure the contents to teach in each term and degree. In this paper we present a plan for teaching Software Engineering trying to overcome some of the difficulties above.
Resumo:
El entorno espacial actual hay un gran numero de micro-meteoritos y basura espacial generada por el hombre, lo cual plantea un riesgo para la seguridad de las operaciones en el espacio. La situación se agrava continuamente a causa de las colisiones de basura espacial en órbita, y los nuevos lanzamientos de satélites. Una parte significativa de esta basura son satélites muertos, y fragmentos de satélites resultantes de explosiones y colisiones de objetos en órbita. La mitigación de este problema se ha convertido en un tema de preocupación prioritario para todas las instituciones que participan en operaciones espaciales. Entre las soluciones existentes, las amarras electrodinámicas (EDT) proporcionan un eficiente dispositivo para el rápido de-orbitado de los satélites en órbita terrestre baja (LEO), al final de su vida útil. El campo de investigación de las amarras electrodinámicas (EDT) ha sido muy fructífero desde los años 70. Gracias a estudios teóricos, y a misiones para la demostración del funcionamiento de las amarras en órbita, esta tecnología se ha desarrollado muy rápidamente en las últimas décadas. Durante este período de investigación, se han identificado y superado múltiples problemas técnicos de diversa índole. Gran parte del funcionamiento básico del sistema EDT depende de su capacidad de supervivencia ante los micro-meteoritos y la basura espacial. Una amarra puede ser cortada completamente por una partícula cuando ésta tiene un diámetro mínimo. En caso de corte debido al impacto de partículas, una amarra en sí misma, podría ser un riesgo para otros satélites en funcionamiento. Por desgracia, tras varias demostraciones en órbita, no se ha podido concluir que este problema sea importante para el funcionamiento del sistema. En esta tesis, se presenta un análisis teórico de la capacidad de supervivencia de las amarras en el espacio. Este estudio demuestra las ventajas de las amarras de sección rectangular (cinta), en cuanto a la probabilidad de supervivencia durante la misión, frente a las amarras convencionales (cables de sección circular). Debido a su particular geometría (longitud mucho mayor que la sección transversal), una amarra puede tener un riesgo relativamente alto de ser cortado por un único impacto con una partícula de pequeñas dimensiones. Un cálculo analítico de la tasa de impactos fatales para una amarra cilindrica y de tipo cinta de igual longitud y masa, considerando el flujo de partículas de basura espacial del modelo ORDEM2000 de la NASA, muestra mayor probabilidad de supervivencia para las cintas. Dicho análisis ha sido comparado con un cálculo numérico empleando los modelos de flujo el ORDEM2000 y el MASTER2005 de ESA. Además se muestra que, para igual tiempo en órbita, una cinta tiene una probabilidad de supervivencia un orden y medio de magnitud mayor que una amarra cilindrica con igual masa y longitud. Por otra parte, de-orbitar una cinta desde una cierta altitud, es mucho más rápido, debido a su mayor perímetro que le permite capturar más corriente. Este es un factor adicional que incrementa la probabilidad de supervivencia de la cinta, al estar menos tiempo expuesta a los posibles impactos de basura espacial. Por este motivo, se puede afirmar finalmente y en sentido práctico, que la capacidad de supervivencia de la cinta es bastante alta, en comparación con la de la amarra cilindrica. El segundo objetivo de este trabajo, consiste en la elaboración de un modelo analítico, mejorando la aproximación del flujo de ORDEM2000 y MASTER2009, que permite calcular con precisión, la tasa de impacto fatal al año para una cinta en un rango de altitudes e inclinaciones, en lugar de unas condiciones particulares. Se obtiene el numero de corte por un cierto tiempo en función de la geometría de la cinta y propiedades de la órbita. Para las mismas condiciones, el modelo analítico, se compara con los resultados obtenidos del análisis numérico. Este modelo escalable ha sido esencial para la optimización del diseño de la amarra para las misiones de de-orbitado de los satélites, variando la masa del satélite y la altitud inicial de la órbita. El modelo de supervivencia se ha utilizado para construir una función objetivo con el fin de optimizar el diseño de amarras. La función objectivo es el producto del cociente entre la masa de la amarra y la del satélite y el numero de corte por un cierto tiempo. Combinando el modelo de supervivencia con una ecuación dinámica de la amarra donde aparece la fuerza de Lorentz, se elimina el tiempo y se escribe la función objetivo como función de la geometría de la cinta y las propietades de la órbita. Este modelo de optimización, condujo al desarrollo de un software, que esta en proceso de registro por parte de la UPM. La etapa final de este estudio, consiste en la estimación del número de impactos fatales, en una cinta, utilizando por primera vez una ecuación de límite balístico experimental. Esta ecuación ha sido desarollada para cintas, y permite representar los efectos tanto de la velocidad de impacto como el ángulo de impacto. Los resultados obtenidos demuestran que la cinta es altamente resistente a los impactos de basura espacial, y para una cinta con una sección transversal definida, el número de impactos críticos debidos a partículas no rastreables es significativamente menor. ABSTRACT The current space environment, consisting of man-made debris and tiny meteoroids, poses a risk to safe operations in space, and the situation is continuously deteriorating due to in-orbit debris collisions and to new satellite launches. Among these debris a significant portion is due to dead satellites and fragments of satellites resulted from explosions and in-orbit collisions. Mitigation of space debris has become an issue of first concern for all the institutions involved in space operations. Bare electrodynamic tethers (EDT) can provide an efficient mechanism for rapid de-orbiting of defunct satellites from low Earth orbit (LEO) at end of life. The research on EDT has been a fruitful field since the 70’s. Thanks to both theoretical studies and in orbit demonstration missions, this technology has been developed very fast in the following decades. During this period, several technical issues were identified and overcome. The core functionality of EDT system greatly depends on their survivability to the micrometeoroids and orbital debris, and a tether can become itself a kind of debris for other operating satellites in case of cutoff due to particle impact; however, this very issue is still inconclusive and conflicting after having a number of space demonstrations. A tether can be completely cut by debris having some minimal diameter. This thesis presents a theoretical analysis of the survivability of tethers in space. The study demonstrates the advantages of tape tethers over conventional round wires particularly on the survivability during the mission. Because of its particular geometry (length very much larger than cross-sectional dimensions), a tether may have a relatively high risk of being severed by the single impact of small debris. As a first approach to the problem, survival probability has been compared for a round and a tape tether of equal mass and length. The rates of fatal impact of orbital debris on round and tape tether, evaluated with an analytical approximation to debris flux modeled by NASA’s ORDEM2000, shows much higher survival probability for tapes. A comparative numerical analysis using debris flux model ORDEM2000 and ESA’s MASTER2005 shows good agreement with the analytical result. It also shows that, for a given time in orbit, a tape has a probability of survival of about one and a half orders of magnitude higher than a round tether of equal mass and length. Because de-orbiting from a given altitude is much faster for the tape due to its larger perimeter, its probability of survival in a practical sense is quite high. As the next step, an analytical model derived in this work allows to calculate accurately the fatal impact rate per year for a tape tether. The model uses power laws for debris-size ranges, in both ORDEM2000 and MASTER2009 debris flux models, to calculate tape tether survivability at different LEO altitudes. The analytical model, which depends on tape dimensions (width, thickness) and orbital parameters (inclinations, altitudes) is then compared with fully numerical results for different orbit inclinations, altitudes and tape width for both ORDEM2000 and MASTER2009 flux data. This scalable model not only estimates the fatal impact count but has proved essential in optimizing tether design for satellite de-orbit missions varying satellite mass and initial orbital altitude and inclination. Within the frame of this dissertation, a simple analysis has been finally presented, showing the scalable property of tape tether, thanks to the survivability model developed, that allows analyze and compare de-orbit performance for a large range of satellite mass and orbit properties. The work explicitly shows the product of tether-to-satellite mass-ratio and fatal impact count as a function of tether geometry and orbital parameters. Combining the tether dynamic equation involving Lorentz drag with space debris impact survivability model, eliminates time from the expression. Hence the product, is independent of tether de-orbit history and just depends on mission constraints and tether length, width and thickness. This optimization model finally led to the development of a friendly software tool named BETsMA, currently in process of registration by UPM. For the final step, an estimation of fatal impact rate on a tape tether has been done, using for the first time an experimental ballistic limit equation that was derived for tapes and accounts for the effects of both the impact velocity and impact angle. It is shown that tape tethers are highly resistant to space debris impacts and considering a tape tether with a defined cross section, the number of critical events due to impact with non-trackable debris is always significantly low.
Resumo:
El uso de la computación en la nube ofrece un nuevo paradigma que procura proporcionar servicios informáticos para los cuales no es necesario contar con grandes infraestructuras y sobre todo, con las complejidades de costos, seguridad y mantenimiento implícitas. Si bien se ha posicionado en los últimos años como una plataforma innovadora en el ámbito de la tecnología de consumo masivo y organizacional, también puede ser tópico de investigación importante en ciertas áreas de interés como el desarrollo de Software, presentando en ese campo, una serie de ventajas y retos estimulantes que pueden ser explorados. Este trabajo de investigación, sigue con dicho sentido, el objetivo de exponer la situación actual sobre el empleo de la computación en la nube como entorno de desarrollo de Software, sectorizando a través de su capa PaaS, el modelo conceptual de trabajo, las perspectivas recientes, problemas e implicaciones generales del uso de ésta como herramienta plausible en proyectos de desarrollo de Software. El análisis de los diferentes temas abordados, tiene la intención en general, de proporcionar información objetiva, crítica y cuantitativa sobre la concentración de la investigación relacionada a PaaS, así como un marco de interpretación reciente que aporte una perspectiva referencial para futuras investigaciones asociadas.---ABSTRACT---The use of cloud computing offers a new paradigm to provide computer services for which it is not necessary to have large infrastructure and especially with the complexities of cost, safety and maintenance implied. While it has positioned itself in recent years as an innovative platform in the field of technology and massive organizational consumption, can also be an important research topic in certain areas of interest including, the development of Software, presenting in this field, a series of advantages, disadvantages and stimulating challenges that can be explored. This research, following with that sense, try to present the current situation related to the use of cloud computing as a software development environment, through its sectorized PaaS layer, showing the conceptual working model, actual perspectives, problems and general implications of using this as a possible tool in Software development projects. The analysis of the different topics covered, intends in a general form, provide objective, critical and quantitative information about the concentration of research related to PaaS, and a recent interpretation framework to provide a referential perspective for future related researches.
Resumo:
One of the objectives of the European Higher Education Area is the promotion of collaborative and informal learning through the implementation of educational practices. 3D virtual environments become an ideal space for such activities. On the other hand, the problem of financing in Spanish universities has led to the search for new ways to optimize available resources. The Technical University of Madrid requires the use of laboratories which due to their dangerousness, duration or control of the developed processes are difficult to perform in real life. For this reason, we have developed several 3D laboratories in virtual environment. The laboratories are built on open source platform OpenSim. In this paper it is exposed the use of the OpenSim platform for these new teaching experiences and the new design of the software architecture. This architecture requires the adaptation of the platform to the needs of the users and the different laboratories of our University. We will explain the structure of the implemented architecture and the process of creating and configuring it. The proposed architecture is decentralized, each laboratory is housed in different an educational center. The architecture adds several services, among others, the creation and management of users automated, communication between external services and platforms in different program languages. Therefore, we achieve improving the user experience and rising the functionalities of laboratories.
Resumo:
Comprender y estimular la motivación resulta crucial para favorecer el rendimiento de los estudiantes universitarios y profesionales de diversos ámbitos de conocimiento, como el de la Ingeniería del Software. Actualmente, este sector está demandando soluciones científico-tecnológicas para trabajar de una manera práctica y sistemática sobre elementos motivacionales como la satisfacción por el estudio y el trabajo, el aprendizaje activo o las relaciones interpersonales. El objetivo de esta Tesis Doctoral es definir y validar soluciones para evaluar y mejorar la motivación de los estudiantes y profesionales en Ingeniería del Software. Para ello, se han creado instrumentos, metodologías y tecnologías que se han aplicado con un total de 152 estudiantes y 166 profesionales. Esta experiencia empírica ha servido para mejorar de manera continua dichas aportaciones, así como para comprobar en un entorno real su validez y utilidad. Los datos recogidos revelan que las soluciones provistas han resultado eficaces para comprender y estimular la motivación tanto en el ámbito académico como en el profesional. Además, a raíz de los datos recogidos se han podido explorar aspectos de interés sobre las características y particularidades motivacionales asociadas a la Ingeniería del Software. Por tanto, esta Tesis Doctoral resulta de interés para las universidades y empresas de este sector sensibilizadas con el desarrollo motivacional de sus estudiantes y trabajadores. Abstract It is crucial to understand and encourage the motivation of students and professionals in order to enhance their performance. This applies to students and professionals from diverse fields such as Software Engineering. Currently this sector is demanding scientific–technological solutions to work on motivational elements in a pragmatic and systematic way. Such elements are among others study and work satisfaction, active learning or interpersonal relationships. This Doctoral Thesis objective is to establish and validate solutions to evaluate and improve the motivation in the Software Engineering field. To achieve this goal, resources, methods and technologies have been created. They have been applied to 152 students and 166 professionals. This empirical experience served to, on one hand, enhance in a continuous way the provided contributions, and on the other hand, to test in a real environment their validity and utility. The collected data reveal that the provided solutions were effective to understand and encourage motivation both in the academic and in the professional area. In addition, the collected data enable to examine interesting aspects and motivational special features associated with Software Engineering. Therefore this Doctoral Thesis is relevant to universities and firms from this field which are aware of the significance of the motivational development of their students and employees.
Resumo:
This article presents a case study about the TSPi benefits in a software project under a Small Settings environment. An adapted process based on the TSPi was defined. The pilot project had a schedule and budget restricted. The process began collecting historical projects data in order to get a measure repository. The project was launched defining the following goals: increase the productivity, reduce the test time and improve the product quality. Finally, the results were analysed and the goals were verified.
Resumo:
La Ingeniería de Pruebas está especializada en la verificación y validación del Software,y formalmente se define como: “Proceso de desarrollo que emplea métodos rigurosos para evaluar la corrección y calidad del producto a lo largo de todo su ciclo de vida” [3]. Este proceso comprende un conjunto de métodos, procedimientos y técnicas formalmente definidas las cuales, usadas de forma sistemática, facilitan la identificación de la mayor cantidad de errores y fallos posibles de un software. Un software que pase un proceso riguroso de pruebas es un producto de calidad que seguramente facilitará la labor del Ingeniero de Software en la corrección de futuras incidencias, algunas de ellas generadas tras la implantación en el entorno real. Este proceso constituye un área de la Ingeniería del Software y una especialidad por tanto, de la misma. De forma simple, la consecución de una correcta Verificación y Validación del Software requiere de algunas actividades imprescindibles como: - Realizar un plan de pruebas del proyecto. - Actualizar dicho plan y corregirlo en caso necesario. - Revisar los documentos de análisis de requisitos. - Ejecutar las pruebas en las diferentes fases del desarrollo del proyecto. - Documentar el diseño y la ejecución de las pruebas. - Generar documentos con los resultados y anomalías de las pruebas ya ejecutadas. Actualmente, la Ingeniería de Pruebas no es muy reconocida como área de trabajo independiente sino más bien, un área inmersa dentro de la Ingeniería de Software. En el entorno laboral existe el perfil de Ingeniero de Pruebas, sin embargo pocos ingenieros de software tienen claro querer ser Ingenieros de Pruebas (probadores o testers) debido a que nunca han tenido la oportunidad de enfrentarse a actividades prácticas reales dentro de los centros de estudios universitarios donde cursan la carrera. Al ser un área de inherente ejercicio profesional, la parte correspondiente de la Ingeniería de Pruebas suele enfocarse desde un punto de vista teórico más que práctico. Hay muchas herramientas para la creación de pruebas y de ayuda para los ingenieros de pruebas, pero la mayoría son de pago o hechas a medida para grandes empresas que necesitan dicho software. Normalmente la gente conoce lo que es la Ingeniería de Pruebas únicamente cuando se empieza a adquirir experiencia en dicha área en el ejercicio profesional dentro de una empresa. Con lo cual, el acercamiento durante la carrera no necesariamente le ha ofrecido al profesional en Ingeniería, la oportunidad de trabajar en esta rama de la Ingeniería del Software y en algunos casos, NOVATests: Metodología y herramienta software de apoyo para los Ingenieros de Prueba Junior 4 los recién egresados comienzan su vida profesional con algún desconocimiento en este sentido. Es por el conjunto de estas razones, que mi intención en este proyecto es proponer una metodología y una herramienta software de apoyo a dicha metodología, para que los estudiantes de carreras de Ingeniería Software y afines, e ingenieros recién egresados con poca experiencia o ninguna en esta área (Ingenieros de Pruebas Junior), puedan poner en práctica las actividades de la Ingeniería de Pruebas dentro de un entorno lo más cercano posible al ejercicio de la labor profesional. De esta forma, podrían desarrollar las tareas propias de dicha área de una manera fácil e intuitiva, favoreciendo un mayor conocimiento y experiencia de la misma. ABSTRACT The software engineering is specialized in the verification and validation of Software and it is formally defined as: “Development process which by strict methods evaluates and corrects the quality of the product along its lifecycle”. This process contains a number of methods, procedures and techniques formally defined which used systematically make easier the identification of the highest quantity of error and failures within a Software. A software going through this rigorous process of tests will become a quality product that will help the software engineer`s work while correcting incidences. Some of them probably generated after the deployment in a real environment. This process belongs to the Software engineering and therefore it is a specialization itself. Simplifying, the correct verification and validation of a software requires some essential activities such as: -Create a Test Plan of the project - Update this Test Plan and correct if necessary - Check Requirement’s specification documents -Execute the different tests among all the phases of the project - Create the pertinent documentation about design and execution of these tests. - Generate the result documents and all the possible incidences the tests could contain. Currently, the Test engineering is not recognized as a work area but an area immerse within the Software engineering. The professional environment includes the role of Test engineer, but only a few software engineers have clear to become Test engineers (testers) because they have never had the chance to face this activities within the university study centers where they take study of this degree. Since there are little professional environments, this area is focused from a theoretical way instead of a more practical vision. There are plenty of tools helping the Test engineer, but most of them are paid tools or bespoke tools for big companies in need of this software. Usually people know what test engineering is by starting working on it and not before, when people start acquiring experience in this field within a company. Therefore, the degree studied have not approach this field of the Software engineering before and in some cases the graduated students start working without any knowledge in this area. Because of this reasons explained, it is my intention to propose this Project: a methodology and a software tool supporting this methodology so the students of software engineering and similar ones but also graduated students with little experience in this area (Junior Test Engineers), can afford practice in this field and get used to the activities related with the test engineering. Because of this they will be able to carry out the proper tasks of this area easier, enforcing higher and better knowledge and experience of it.
Resumo:
Las metodologías de desarrollo ágiles han sufrido un gran auge en entornos industriales durante los últimos años debido a la rapidez y fiabilidad de los procesos de desarrollo que proponen. La filosofía DevOps y específicamente las metodologías derivadas de ella como Continuous Delivery o Continuous Deployment promueven la gestión completamente automatizada del ciclo de vida de las aplicaciones, desde el código fuente a las aplicaciones ejecutándose en entornos de producción. La automatización se ve como un medio para producir procesos repetibles, fiables y rápidos. Sin embargo, no todas las partes de las metodologías Continuous están completamente automatizadas. En particular, la gestión de la configuración de los parámetros de ejecución es un problema que ha sido acrecentado por la elasticidad y escalabilidad que proporcionan las tecnologías de computación en la nube. La mayoría de las herramientas de despliegue actuales pueden automatizar el despliegue de la configuración de parámetros de ejecución, pero no ofrecen soporte a la hora de fijar esos parámetros o de validar los ficheros que despliegan, principalmente debido al gran abanico de opciones de configuración y el hecho de que el valor de muchos de esos parámetros es fijado en base a preferencias expresadas por el usuario. Esto hecho hace que pueda parecer que cualquier solución al problema debe estar ajustada a una aplicación específica en lugar de ofrecer una solución general. Con el objetivo de solucionar este problema, propongo un modelo de configuración que puede ser inferido a partir de instancias de configuración existentes y que puede reflejar las preferencias de los usuarios para ser usado para facilitar los procesos de configuración. El modelo de configuración puede ser usado como la base de un proceso de configuración interactivo capaz de guiar a un operador humano a través de la configuración de una aplicación para su despliegue en un entorno determinado o para detectar cambios de configuración automáticamente y producir una configuración válida que se ajuste a esos cambios. Además, el modelo de configuración debería ser gestionado como si se tratase de cualquier otro artefacto software y debería ser incorporado a las prácticas de gestión habituales. Por eso también propongo un modelo de gestión de servicios que incluya información relativa a la configuración de parámetros de ejecución y que además es capaz de describir y gestionar propuestas arquitectónicas actuales tales como los arquitecturas de microservicios. ABSTRACT Agile development methodologies have risen in popularity within the industry in recent years due to the speed and reliability of the processes they propose. The DevOps philosophy and specifically the methodologies derived from it such as Continuous Delivery and Continuous Deployment push for a totally automated management of the application lifecycle, from the source code to the software running in production environment. Automation in this regard is used as a means to produce repeatable, reliable and fast processes. However, not all parts of the Continuous methodologies are completely automatized. In particular, management of runtime parameter configuration is a problem that has increased its impact in deployment process due to the scalability and elasticity provided by cloud technologies. Most deployment tools nowadays can automate the deployment of runtime parameter configuration, but they offer no support for parameter setting o configuration validation, as the range of different configuration options and the fact that the value of many of those parameters is based on user preference seems to imply that any solution to the problem will have to be tailored to a specific application. With the aim to solve this problem I propose a configuration model that can be inferred from existing configurations and reflect user preferences in order to ease the configuration process. The configuration model can be used as the base of an interactive configuration process capable of guiding a human operator through the configuration of an application for its deployment in a specific environment or to automatically detect configuration changes and produce valid runtime parameter configurations that take into account those changes. Additionally, the configuration model should be managed as any other software artefact and should be incorporated into current management practices. I also propose a service management model that includes the configuration information and that is able to describe and manage current architectural practices such as the microservices architecture.
Resumo:
Hoy en día, existen numerosos sistemas (financieros, fabricación industrial, infraestructura de servicios básicos, etc.) que son dependientes del software. Según la definición de Ingeniería del Software realizada por I. Sommerville, “la Ingeniería del Software es una disciplina de la ingeniería que comprende todos los aspectos de la producción de software desde las etapas iniciales de la especificación del sistema, hasta el mantenimiento de éste después de que se utiliza.” “La ingeniería del software no sólo comprende los procesos técnicos del desarrollo de software, sino también actividades tales como la gestión de proyectos de software y el desarrollo de herramientas, métodos y teorías de apoyo a la producción de software.” Los modelos de proceso de desarrollo software determinan una serie de pautas para poder desarrollar con éxito un proyecto de desarrollo software. Desde que surgieran estos modelos de proceso, se investigado en nuevas maneras de poder gestionar un proyecto y producir software de calidad. En primer lugar surgieron las metodologías pesadas o tradicionales, pero con el avance del tiempo y la tecnología, surgieron unas nuevas llamadas metodologías ágiles. En el marco de las metodologías ágiles cabe destacar una determinada práctica, la integración continua. Esta práctica surgió de la mano de Martin Fowler, con el objetivo de facilitar el trabajo en grupo y automatizar las tareas de integración. La integración continua se basa en la construcción automática de proyectos con una frecuencia alta, promoviendo la detección de errores en un momento temprano para poder dar prioridad a corregir dichos errores. Sin embargo, una de las claves del éxito en el desarrollo de cualquier proyecto software consiste en utilizar un entorno de trabajo que facilite, sistematice y ayude a aplicar un proceso de desarrollo de una forma eficiente. Este Proyecto Fin de Grado (PFG) tiene por objetivo el análisis de distintas herramientas para configurar un entorno de trabajo que permita desarrollar proyectos aplicando metodologías ágiles e integración continua de una forma fácil y eficiente. Una vez analizadas dichas herramientas, se ha propuesto y configurado un entorno de trabajo para su puesta en marcha y uso. Una característica a destacar de este PFG es que las herramientas analizadas comparten una cualidad común y de alto valor, son herramientas open-source. El entorno de trabajo propuesto en este PFG presenta una arquitectura cliente-servidor, dado que la mayoría de proyectos software se desarrollan en equipo, de tal forma que el servidor proporciona a los distintos clientes/desarrolladores acceso al conjunto de herramientas que constituyen el entorno de trabajo. La parte servidora del entorno propuesto proporciona soporte a la integración continua mediante herramientas de control de versiones, de gestión de historias de usuario, de análisis de métricas de software, y de automatización de la construcción de software. La configuración del cliente únicamente requiere de un entorno de desarrollo integrado (IDE) que soporte el lenguaje de programación Java y conexión con el servidor. ABSTRACT Nowadays, numerous systems (financial, industrial production, basic services infrastructure, etc.) depend on software. According to the Software Engineering definition made by I.Sommerville, “Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use.” “Software engineering is not just concerned with the technical processes of software development. It also includes activities such as software project management and the development of tools, methods, and theories to support software production.” Software development process models determine a set of guidelines to successfully develop a software development project. Since these process models emerged, new ways of managing a project and producing software with quality have been investigated. First, the so-called heavy or traditional methodologies appeared, but with the time and the technological improvements, new methodologies emerged: the so-called agile methodologies. Agile methodologies promote, among other practices, continuous integration. This practice was coined by Martin Fowler and aims to make teamwork easier as well as automate integration tasks. Nevertheless, one of the keys to success in software projects is to use a framework that facilitates, systematize, and help to deploy a development process in an efficient way. This Final Degree Project (FDP) aims to analyze different tools to configure a framework that enables to develop projects by applying agile methodologies and continuous integration in an easy and efficient way. Once tools are analyzed, a framework has been proposed and configured. One of the main features of this FDP is that the tools under analysis share a common and high-valued characteristic: they are open-source. The proposed framework presents a client-server architecture, as most of the projects are developed by a team. In this way, the server provides access the clients/developers to the tools that comprise the framework. The server provides continuous integration through a set of tools for control management, user stories management, software quality management, and software construction automatization. The client configuration only requires a Java integrated development environment and network connection to the server.