7 research outputs found

    An Approach for Guiding Developers to Performance and Scalability Solutions

    Get PDF
    This thesis proposes an approach that enables developers who are novices in software performance engineering to solve software performance and scalability problems without the assistance of a software performance expert. The contribution of this thesis is the explicit consideration of the implementation level to recommend solutions for software performance and scalability problems. This includes a set of description languages for data representation and human computer interaction and a workflow

    Metaheuristic models for decision support in the software construction process

    Get PDF
    En la actualidad, los ingenieros software no solo tienen la responsabilidad de construir sistemas que desempe~nen una determinada funcionalidad, sino que cada vez es m谩s importante que dichos sistemas tambi茅n cumplan con requisitos no funcionales como alta disponibilidad, efciencia o seguridad, entre otros. Para lograrlo, los ingenieros se enfrentan a un proceso continuo de decisi贸n, pues deben estudiar las necesidades del sistema a desarrollar y las alternativas tecnol贸gicas existentes para implementarlo. Todo este proceso debe estar encaminado a la obtenci贸n de sistemas software de gran calidad, reutilizables y que faciliten su mantenimiento y modificaci贸n en un escenario tan exigente y competitivo. La ingenier铆a del software, como m茅todo sistem谩tico para la construcci贸n de software, ha aportado una serie de pautas y tareas que, realizadas de forma disciplinada y adaptadas al contexto de desarrollo, posibilitan la obtenci贸n de software de calidad. En concreto, el proceso de an谩lisis y dise帽o del software ha adquirido una gran importancia, pues en ella se concibe la estructura del sistema, en t茅rminos de sus bloques funcionales y las interacciones entre ellos. Es en este momento cuando se toman las decisiones acerca de la arquitectura, incluyendo los componentes que la conforman, que mejor se adapta a los requisitos, tanto funcionales como no funcionales, que presenta el sistema y que claramente repercuten en su posterior desarrollo. Por tanto, es necesario que el ingeniero analice rigurosamente las alternativas existentes, sus implicaciones en los criterios de calidad impuestos y la necesidad de establecer compromisos entre ellos. En este contexto, los ingenieros se gu铆an principalmente por sus habilidades y experiencia, por lo que dotarles de m茅todos de apoyo a la decisi贸n representar铆a un avance significativo en el 谩rea. La aplicaci贸n de t茅cnicas de inteligencia artificial en este 谩mbito ha despertado un gran inter茅s en los 煤ltimos a帽os. En particular, la inteligencia artificial ha encontrado en la ingenier铆a del software un 谩mbito de aplicaci贸n complejo, donde diferentes t茅cnicas pueden ayudar a conseguir la semi-automatizaci贸n de tareas tradicionalmente realizadas de forma manual. De la uni贸n de ambas 谩reas surge la denominada ingenier铆a del software basada en b煤squeda, que propone la reformulaci贸n de las actividades propias de la ingenier铆a del software como problemas de optimizaci贸n. A continuaci贸n, estos problemas podr铆an ser resueltos mediante t茅cnicas de b煤squeda como las metaheur铆sticas. Este tipo de t茅cnicas se caracterizan por explorar el espacio de posibles soluciones de una manera \inteligente", a menudo simulando procesos naturales como es el caso de los algoritmos evolutivos. A pesar de ser un campo de investigaci贸n muy reciente, es posible encontrar propuestas para automatizar una gran variedad de tareas dentro del ciclo de vida del software, como son la priorizaci贸n de requisitos, la planifcaci贸n de recursos, la refactorizaci贸n del c贸digo fuente o la generaci贸n de casos de prueba. En el 谩mbito del an谩lisis y dise帽o de software, cuyas tareas requieren de creatividad y experiencia, conseguir una automatizaci贸n completa resulta poco realista. Es por ello por lo que la resoluci贸n de sus tareas mediante enfoques de b煤squeda debe ser tratada desde la perspectiva del ingeniero, promoviendo incluso la interacci贸n con ellos. Adem谩s, el alto grado de abstracci贸n de algunas de sus tareas y la dificultad de evaluar cuantitativamente la calidad de un dise帽o software, suponen grandes retos en la aplicaci贸n de t茅cnicas de b煤squeda durante las fases tempranas del proceso de construcci贸n de software. Esta tesis doctoral busca realizar aportaciones significativas al campo de la ingenier铆a del software basada en b煤squeda y, m谩s concretamente, al 谩rea de la optimizaci贸n de arquitecturas software. Aunque se est谩n realizando importantes avances en este 谩rea, la mayor铆a de propuestas se centran en la obtenci贸n de arquitecturas de bajo nivel o en la selecci贸n y despliegue de artefactos software ya desarrollados. Por tanto, no existen propuestas que aborden el modelado arquitect贸nico a un nivel de abstracci贸n elevado, donde a煤n no existe un conocimiento profundo sobre c贸mo ser谩 el sistema y, por tanto, es m谩s dif铆cil asistir al ingeniero. Como problema de estudio, se ha abordado principalmente la tarea del descubrimiento de arquitecturas software basadas en componentes. El objetivo de este problema consiste en abstraer los bloques arquitect贸nicos que mejor definen la estructura actual del software, as铆 como sus interacciones, con el fin de facilitar al ingeniero su posterior an谩lisis y mejora. Durante el desarrollo de esta tesis doctoral se ha explorado el uso de una gran variedad de t茅cnicas de b煤squeda, estudiando su idoneidad y realizando las adaptaciones necesarias para hacer frente a los retos mencionados anteriormente. La primera propuesta se ha centrado en la formulaci贸n del descubrimiento de arquitecturas como problema de optimizaci贸n, abordando la representaci贸n computacional de los artefactos software que deben ser modelados y definiendo medidas software para evaluar su calidad durante el proceso de b煤squeda. Adem谩s, se ha desarrollado un primer modelo basado en algoritmos evolutivos mono-objetivo para su resoluci贸n, el cual ha sido validado experimentalmente con sistemas software reales. Dicho modelo se caracteriza por ser comprensible y exible, pues sus componentes han sido dise帽ados considerando est谩ndares y herramientas del 谩mbito de la ingenier铆a del software, siendo adem谩s configurable en funci贸n de las necesidades del ingeniero. A continuaci贸n, el descubrimiento de arquitecturas ha sido tratado desde una perspectiva multiobjetivo, donde varias medidas software, a menudo en con icto, deben ser simult谩neamente optimizadas. En este caso, la resoluci贸n del problema se ha llevado a cabo mediante ocho algoritmos del estado del arte, incluyendo propuestas recientes del 谩mbito de la optimizaci贸n de muchos objetivos. Tras ser adaptados al problema, estos algoritmos han sido comparados mediante un extenso estudio experimental con el objetivo de analizar la ifnuencia que tiene el n煤mero y la elecci贸n de las m茅tricas a la hora de guiar el proceso de b煤squeda. Adem谩s de realizar una validaci贸n del rendimiento de estos algoritmos siguiendo las pr谩cticas habituales del 谩rea, este estudio aporta un an谩lisis detallado de las implicaciones que supone la optimizaci贸n de m煤ltiples objetivos en la obtenci贸n de modelos de soporte a la decisi贸n. La 煤ltima propuesta en el contexto del descubrimiento de arquitecturas software se centra en la incorporaci贸n de la opini贸n del ingeniero al proceso de b煤squeda. Para ello se ha dise帽ado un mecanismo de interacci贸n que permite al ingeniero indicar tanto las caracter铆sticas deseables en las soluciones arquitect贸nicas (preferencias positivas) como aquellos aspectos que deben evitarse (preferencias negativas). Esta informaci贸n es combinada con las medidas software utilizadas hasta el momento, permitiendo al algoritmo evolutivo adaptar la b煤squeda conforme el ingeniero interact煤e. Dadas las caracter铆sticas del modelo, su validaci贸n se ha realizado con la participaci贸n de ingenieros con distinta experiencia en desarrollo software, a fin de demostrar la idoneidad y utilidad de la propuesta. En el transcurso de la tesis doctoral, los conocimientos adquiridos y las t茅cnicas desarrolladas tambi茅n han sido extrapolados a otros 谩mbitos de la ingenier铆a del software basada en b煤squeda mediante colaboraciones con investigadores del 谩rea. Cabe destacar especialmente la formalizaci贸n de una nueva disciplina transversal, denominada ingenier铆a del software basada en b煤squeda interactiva, cuyo fin es promover la participaci贸n activa del ingeniero durante el proceso de b煤squeda. Adem谩s, se ha explorado la aplicaci贸n de algoritmos de muchos objetivos a un problema cl谩sico de la computaci贸n orientada a servicios, como es la composici贸n de servicios web.Nowadays, software engineers have not only the responsibility of building systems that provide a particular functionality, but they also have to guarantee that these systems ful l demanding non-functional requirements like high availability, e ciency or security. To achieve this, software engineers face a continuous decision process, as they have to evaluate system needs and existing technological alternatives to implement it. All this process should be oriented towards obtaining high-quality and reusable systems, also making future modi cations and maintenance easier in such a competitive scenario. Software engineering, as a systematic method to build software, has provided a number of guidelines and tasks that, when done in a disciplinarily manner and properly adapted to the development context, allow the creation of high-quality software. More speci cally, software analysis and design has acquired great relevance, being the phase in which the software structure is conceived in terms of its functional blocks and their interactions. In this phase, engineers have to make decisions about the most suitable architecture, including its constituent components. Such decisions are made according to the system requirements, either functional or non-functional, and will have a great impact on its future development. Therefore, the engineer has to rigorously analyse existing alternatives, their implications on the imposed quality criteria and the need of establishing trade-o s among them. In this context, engineers are mostly guided by their own capabilities and experience, so providing them with decision support methods would represent a signi cant contribution. The application of arti cial intelligent techniques in this area has experienced a growing interest in the last years. Particularly, software engineering represents a complex application domain to arti cial intelligence, whose diverse techniques can help in the semi-automation of tasks traditionally performed manually. The union of both elds has led to the appearance of search-based software engineering, which proposes reformulating software engineering activities as optimisation problems. For their resolution, search techniques like metaheuristics can be then applied. This type of technique performs an \intelligent" exploration of the space of candidate solutions, often inspired by natural processes as happens with evolutionary algorithms. Despite the novelty of this research eld, there are proposals to automate a great variety of tasks within the software lifecycle, such as requirement prioritisation, resource planning, code refactoring or test case generation. Focusing on analysis and design, whose tasks require creativity and experience, trying to achieve full automation is not realistic. Therefore, solving design tasks by means of search approaches should be oriented towards the engineer's perspective, even promoting their interaction. Furthermore, design tasks are also characterised by a high level of abstraction and the di culty of quantitatively evaluating design quality. All these aspects represent key challenges for the application of search techniques in early phases of the software construction process. The aim of this Ph.D. Thesis is to make signi cant contributions in search-based software engineering and, specially, in the area of software architecture optimisation. Although it is an area in which signi cant progress is being done, most of the current proposals are focused on generating low-level architectures or selecting and deploying already developed artefacts. Therefore, there is a lack of proposals dealing with architectural modelling at a high level of abstraction. At this level, engineers do not have a deep understanding of the system yet, meaning that assisting them is even more di cult. As case study, the discovery of component-based software architectures has been primary addressed. The objective for this problem consists in the abstraction of the architectural blocks, and their interactions, that best de ne the current structure of a software system. This can be viewed as the rst step an engineer would perform in order to further analyse and improve the system architecture. In this Ph.D. Thesis, the use of a great variety of search techniques has been explored. The suitability of these techniques has been studied, also making the necessary adaptations to cope with the aforementioned challenges. A rst proposal has been focused on the formulation of software architecture discovery as an optimisation problem, which consists in the computational representation of its software artefacts and the de nition of software metrics to evaluate their quality during the search process. Moreover, a single-objective evolutionary algorithm has been designed for its resolution, which has been validated using real software systems. The resulting model is comprehensible and exible, since its components have been designed under software engineering standards and tools and are also con gurable according to engineer's needs. Next, the discovery of software architectures has been tackled from a multi-objective perspective, in which several software metrics, often in con ict, have to be simultaneously optimised. In this case, the problem is solved by applying eight state-of-theart algorithms, including some recent many-objective approaches. These algorithms have been adapted to the problem and compared in an extensive experimental study, whose purpose is to analyse the in uence of the number and combination of metrics when guiding the search process. Apart from the performance validation following usual practices within the eld, this study provides a detailed analysis of the practical implications behind the optimisation of multiple objectives in the context of decision support. The last proposal is focused on interactively including the engineer's opinion in the search-based architecture discovery process. To do this, an interaction mechanism has been designed, which allows the engineer to express desired characteristics for the solutions (positive preferences), as well as those aspects that should be avoided (negative preferences). The gathered information is combined with the software metrics used until the moment, thus making possible to adapt the search as the engineer interacts. Due to the characteristics of the proposed model, engineers of di erent expertise in software development have participated in its validation with the aim of showing the suitability and utility of the approach. The knowledge acquired along the development of the Thesis, as well as the proposed approaches, have also been transferred to other search-based software engineering areas as a result of research collaborations. In this sense, it is worth noting the formalisation of interactive search-based software engineering as a cross-cutting discipline, which aims at promoting the active participation of the engineer during the search process. Furthermore, the use of many-objective algorithms has been explored in the context of service-oriented computing to address the so-called web service composition problem

    Adaptation-Aware Architecture Modeling and Analysis of Energy Efficiency for Software Systems

    Get PDF
    This work presents an approach for the architecture analysis of energy efficiency for static and self-adaptive software systems. It introduces a modeling language that captures consumption characteristics on an architectural level. The outlined analysis predicts the energy efficiency of systems described with this language. Lastly, this work introduces an approach for considering transient effects in design time architecture analyses

    An Approach for Guiding Developers to Performance and Scalability Solutions

    Get PDF
    The quality of enterprise software applications plays a crucial role for the satisfaction of the users and the economic success of the enterprises. Software applications with unsatisfying performance and scalability are perceived by its users as low in quality, as less interesting and less attractive, and cause frustration when preventing the users from attaining their goals. This book proposes an approach for a recommendation system that enables developers who are novices in software perfor
    corecore