34 research outputs found

    Evaluating Software Architectures: Development Stability and Evolution

    Get PDF
    We survey seminal work on software architecture evaluationmethods. We then look at an emerging class of methodsthat explicates evaluating software architectures forstability and evolution. We define architectural stabilityand formulate the problem of evaluating software architecturesfor stability and evolution. We draw the attention onthe use of Architectures Description Languages (ADLs) forsupporting the evaluation of software architectures in generaland for architectural stability in specific

    La refactorización de software basada en valor : Revisión sistemática de la literatura

    Get PDF
    El mantenimiento del producto software es una de las fases que más costos tiene a lo largo de la vida de una aplicación software. La refactorización del código fuente es una de las técnicas utilizadas para intentar mejorar la mantenibilidad. Actualmente la refactorización se basa en un enfoque de “valor neutro”, siendo difícil priorizar la gran cantidad de opciones de refactorización que puede tener un producto software. Para cubrir estas carencias, una nueva rama de la ingeniería está emergiendo, la Ingeniería del Software Basada en Valor, estableciendo que las funcionalidades de un sistema tienen diferente grado de importancia, y que algunas de ellas aportan más “valor” que otras. Este artículo presenta una revisión sistemática de la literatura sobre la refactorización basada en valor. Se identificaron 15 artículos primarios de un total de 2300. Los trabajos analizados muestran el uso de diferentes técnicas para abordar el problema de la refactorización y el valor que pueden aportar al software que será refactorizado, existiendo opiniones opuestas sobre cómo afecta las refactorizaciones a la mantenibilidad. Como conclusión de la revisión se tiene que: ningún artículo habla directamente del valor ni se cuantifica el valor que puede aportar una refactorización al software sobre el que va a ser aplicada.Sociedad Argentina de Informática e Investigación Operativa (SADIO

    La refactorización de software basada en valor : Revisión sistemática de la literatura

    Get PDF
    El mantenimiento del producto software es una de las fases que más costos tiene a lo largo de la vida de una aplicación software. La refactorización del código fuente es una de las técnicas utilizadas para intentar mejorar la mantenibilidad. Actualmente la refactorización se basa en un enfoque de “valor neutro”, siendo difícil priorizar la gran cantidad de opciones de refactorización que puede tener un producto software. Para cubrir estas carencias, una nueva rama de la ingeniería está emergiendo, la Ingeniería del Software Basada en Valor, estableciendo que las funcionalidades de un sistema tienen diferente grado de importancia, y que algunas de ellas aportan más “valor” que otras. Este artículo presenta una revisión sistemática de la literatura sobre la refactorización basada en valor. Se identificaron 15 artículos primarios de un total de 2300. Los trabajos analizados muestran el uso de diferentes técnicas para abordar el problema de la refactorización y el valor que pueden aportar al software que será refactorizado, existiendo opiniones opuestas sobre cómo afecta las refactorizaciones a la mantenibilidad. Como conclusión de la revisión se tiene que: ningún artículo habla directamente del valor ni se cuantifica el valor que puede aportar una refactorización al software sobre el que va a ser aplicada.Sociedad Argentina de Informática e Investigación Operativa (SADIO

    Using real options to select stable Middleware-induced software architectures

    Get PDF
    The requirements that force decisions towards building distributed system architectures are usually of a non-functional nature. Scalability, openness, heterogeneity, and fault-tolerance are examples of such non-functional requirements. The current trend is to build distributed systems with middleware, which provide the application developer with primitives for managing the complexity of distribution, system resources, and for realising many of the non-functional requirements. As non-functional requirements evolve, the `coupling' between the middleware and architecture becomes the focal point for understanding the stability of the distributed software system architecture in the face of change. It is hypothesised that the choice of a stable distributed software architecture depends on the choice of the underlying middleware and its flexibility in responding to future changes in non-functional requirements. Drawing on a case study that adequately represents a medium-size component-based distributed architecture, it is reported how a likely future change in scalability could impact the architectural structure of two versions, each induced with a distinct middleware: one with CORBA and the other with J2EE. An option-based model is derived to value the flexibility of the induced-architectures and to guide the selection. The hypothesis is verified to be true for the given change. The paper concludes with some observations that could stimulate future research in the area of relating requirements to software architectures

    Multi-Quality Auto-Tuning by Contract Negotiation

    Get PDF
    A characteristic challenge of software development is the management of omnipresent change. Classically, this constant change is driven by customers changing their requirements. The wish to optimally leverage available resources opens another source of change: the software systems environment. Software is tailored to specific platforms (e.g., hardware architectures) resulting in many variants of the same software optimized for different environments. If the environment changes, a different variant is to be used, i.e., the system has to reconfigure to the variant optimized for the arisen situation. The automation of such adjustments is subject to the research community of self-adaptive systems. The basic principle is a control loop, as known from control theory. The system (and environment) is continuously monitored, the collected data is analyzed and decisions for or against a reconfiguration are computed and realized. Central problems in this field, which are addressed in this thesis, are the management of interdependencies between non-functional properties of the system, the handling of multiple criteria subject to decision making and the scalability. In this thesis, a novel approach to self-adaptive software--Multi-Quality Auto-Tuning (MQuAT)--is presented, which provides design and operation principles for software systems which automatically provide the best possible utility to the user while producing the least possible cost. For this purpose, a component model has been developed, enabling the software developer to design and implement self-optimizing software systems in a model-driven way. This component model allows for the specification of the structure as well as the behavior of the system and is capable of covering the runtime state of the system. The notion of quality contracts is utilized to cover the non-functional behavior and, especially, the dependencies between non-functional properties of the system. At runtime the component model covers the runtime state of the system. This runtime model is used in combination with the contracts to generate optimization problems in different formalisms (Integer Linear Programming (ILP), Pseudo-Boolean Optimization (PBO), Ant Colony Optimization (ACO) and Multi-Objective Integer Linear Programming (MOILP)). Standard solvers are applied to derive solutions to these problems, which represent reconfiguration decisions, if the identified configuration differs from the current. Each approach is empirically evaluated in terms of its scalability showing the feasibility of all approaches, except for ACO, the superiority of ILP over PBO and the limits of all approaches: 100 component types for ILP, 30 for PBO, 10 for ACO and 30 for 2-objective MOILP. In presence of more than two objective functions the MOILP approach is shown to be infeasible

    Strategy-focused architecture investment decisions

    Get PDF
    The thesis considers how a systematic approach for evaluating architecture investments can lead to decisions that are driven by business preferences rather than by personal incentives. A decision to invest in software-architecture requires systematic evaluation of the trade-off between strategic long-term benefits of architecture on the business and short term investment. It typically is a decision that is difficult to explain and quantify. In this sense, it is not surprising that such a decision is often driven by personal incentives or strong leadership of deciders, architects and managers, leading to suboptimal decision-making process in the organization. This PhD thesis proposes a way in which to support the decision to invest in architecture by linking the architecture improvements to the business strategy and taking into consideration the human aspects. We follow the iterative study design process including several real-life case studies, multiple interviews, and an experiment. In the first case study, we investigate how practitioners make a decision on architecture investment with a focus on how the decision process can be improved in industrial practice. To support the decision process in an objective way, we propose to use arguments based on real options theory. The evaluation by practitioners disclosed that including such economics of architecture is necessary but not sufficient for decision making. To better understand the information needs for decision making we conducted field interviews on the kinds of information that architects and managers need. In a subsequent experiment we tested whether which kind of information is actually used in decision making. As expected, the professionals tend to use just a few information types for decision making. However, our results suggest that additional quantified information was used by participants with longer development experience and under time pressure. Based upon the experimental findings we propose a concept to quantify the customer value of architecture. Despite the positive evaluation, the practitioners asked for further improvements to translate the architecture changes directly to the economic value. Ultimately, based on the findings from the preceding studies we propose a comprehensive approach to support objective architecture decision making; we label it Strategy-focused Architecture (StArch). Adopting strategic management tools, strategy map and balanced scorecards, we provide step-by-step guidance to assess the economic benefits of architecture improvements aligned with the strategic business objectives

    A value and debt aware framework for evaluating compliance in software systems

    Get PDF
    Today's software systems need to be aligned with relevant laws and other prevailing regulations to control compliance. Compliance refers to the ability of a system to satisfy its functional and quality goals to levels that are acceptable to predefined standards, guidelines, principles, legislation or other norms within the application domain. Addressing compliance requirements at an early stage of software development is vital for successful development as it saves time, cost, resources and the effort of repairing software defects. We argue that the management of compliance and compliance requirements is ultimately an investment activity that requires value-driven decision-making. The work presented in this thesis revolves around improving decision support for compliance by making them value, risk and risk aware. Specifically, this thesis presents an economics-driven approach, which leverages on goal-oriented requirements engineering with portfolio-based thinking and technical debt analysis to enhance compliance related decisions at design-time. The approach is value driven and systematic; it leverages on influential work of portfolio thinking and technical to make the link between compliance requirements, risks, value and debt explicit to software engineers. The approach is evaluated with two case studies to illustrate its applicability and effectiveness

    System Engineering and Evolution Decision Support Interim Progress Report (01/01/2000-09/30/2000)

    Get PDF
    The objective of our effort is to develop a scientific basis for system engineering automation and decision support. This objective addresses the long term goals of increasing the quality of service provided complex systems while reducing development risks, costs, and time. Our work focused on decision support for designing operations of complex modular systems that can include embedded software. Emphasis areas included engineering automation capabilities in the areas of design modifications, design records, reuse, and automatic generation of design representations such as real-time schedules and software
    corecore