Discover millions of ebooks, audiobooks, and so much more with a free trial

Only $11.99/month after trial. Cancel anytime.

Economics-Driven Software Architecture
Economics-Driven Software Architecture
Economics-Driven Software Architecture
Ebook843 pages50 hours

Economics-Driven Software Architecture

Rating: 0 out of 5 stars

()

Read preview

About this ebook

Economics-driven Software Architecture presents a guide for engineers and architects who need to understand the economic impact of architecture design decisions: the long term and strategic viability, cost-effectiveness, and sustainability of applications and systems. Economics-driven software development can increase quality, productivity, and profitability, but comprehensive knowledge is needed to understand the architectural challenges involved in dealing with the development of large, architecturally challenging systems in an economic way.

This book covers how to apply economic considerations during the software architecting activities of a project. Architecture-centric approaches to development and systematic evolution, where managing complexity, cost reduction, risk mitigation, evolvability, strategic planning and long-term value creation are among the major drivers for adopting such approaches. It assists the objective assessment of the lifetime costs and benefits of evolving systems, and the identification of legacy situations, where architecture or a component is indispensable but can no longer be evolved to meet changing needs at economic cost. Such consideration will form the scientific foundation for reasoning about the economics of nonfunctional requirements in the context of architectures and architecting.

  • Familiarizes readers with essential considerations in economic-informed and value-driven software design and analysis
  • Introduces techniques for making value-based software architecting decisions
  • Provides readers a better understanding of the methods of economics-driven architecting
LanguageEnglish
Release dateJun 3, 2014
ISBN9780124105072
Economics-Driven Software Architecture

Related to Economics-Driven Software Architecture

Related ebooks

Software Development & Engineering For You

View More

Related articles

Reviews for Economics-Driven Software Architecture

Rating: 0 out of 5 stars
0 ratings

0 ratings0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    Book preview

    Economics-Driven Software Architecture - Ivan Mistrik

    <http://en.wikipedia.org/wiki/Meta-analysis>.

    Preface

    Ivan Mistrik

    Heidelberg, Germany

    Rami Bahsoon

    Birmingham, UK

    Rick Kazman

    Honolulu, HI, USA

    Yuanyuan Zhang

    London, UK

    In this publishing project we are editing a book titled Economics-Driven Software Architecture (EDSA). The main goal of this book is to outline some of the current thinking on the processes and practices for economics- and value-oriented software architecting. These orientations have many commonalities, and they often overlap in practice. There are many gray areas in which the expertise of more than one of these orientations is required in the planning and design of a system. Practicing software engineers, software architects, all researchers advancing our understanding and all students wishing to gain a deeper appreciation of underpinning theories, issues and practices within this domain will benefit from this book.

    Introduction

    Architects regularly make architectural design decisions but are usually unable to evaluate the economic impact of those decisions. Management, on the other hand, is often interested in product-level decisions (such as features and quality) but not in the technical details of how those decisions are reached. These differing interests lead to inconsistencies between how managers view value and how architects can enable or disable those value propositions through their design decisions. This lack of communication can result in poor decisions. Clearly, it is in the best interests of all stakeholders to make informed and technically feasible value-driven design decisions. Thus, architects need tools and techniques for applying economic-driven principles to software architecture to make better decisions and to better justify those decisions.

    Current practice in architecting software systems does not often make economic and strategic considerations explicit. Architectural design decisions tend to be driven by ways that are not connected to, and usually not optimal for, value creation. Factors such as flexibility, time to market, cost, and risk reduction often have a great impact on value creation (Sullivan et al., 2001). Such ignorance is in stark contrast to the motivation and objectives of architecture-centric approaches to development and systematic evolution (e.g., model-driven architectures, domain-specific software architectures and product lines, component-based and middleware-induced architectures), where managing complexity, cost reduction, risk mitigation, evolvability, strategic planning, and long-term value creation are among the major drivers for adopting such approaches. This urges the need for economics-driven and value-based models and metrics, which provide the architect with insights into the long-term and strategic viability, cost effectiveness, and sustainability of the architecture design decisions. We argue that these metrics and models should be in the heart of the architecting process: inception, elaboration, composition, evaluation and analysis, implementation and deployment, maintenance and evolution of architectures. Such provision is important; it assists the objective assessment of the lifetime costs and benefits of evolving systems, and helps identify legacy situations, where an architecture or a component is indispensable but can no longer be evolved to meet changing needs at economic cost. Such consideration will form the scientific foundation for reasoning about the economics of nonfunctional requirements in the context of architectures and architecting.

    Issues in economics-based and value-oriented software design

    Software design, in some cases carried out across entire industry sectors, including open-source projects, university projects, and individual contributions, acts as a complex adaptive system, strongly driven to converge economically on, and to maintain, good architecture. Today we have few tested theories or practices either of design software-intensive systems for economic value or of how to establish economic forces that promote good architecture, such as through new contracting and acquisition structures. We therefore need research on harnessing economics to promote good architecture leading to a deeper understanding of how to organize architectures and design to maximize value and of how to create economic conditions that predictably provide incentives to create and sustain valuable architectures.

    One of the questions that has arisen is how do we align architectures and industry structures to harness economic forces in the service of discovering and meeting key requirements of software-intensive systems? Another question is how do we model interaction with a social context in a way that offers guidance for how to design and support software-intensive systems? One of the most important questions focuses on how to relate the design of software-intensive systems to business goals and value objectives in general.

    Architectures create value in at least two ways. First, they can support the delivery of certain properties for which people are willing to pay. Second, they create options to make follow-on investments to adapt or evolve a design to deliver even more valuable properties. Figuring out how to put a value on these options—on the flexibility to vary or adapt a design—is a real challenge, especially when benefits are uncertain. How much should one invest in architecture? The emerging field of real options has the potential to provide an intellectual and mathematical handle on such questions. That said, traditional real options techniques (e.g., using Black–Scholes or binomial options pricing techniques) cannot be used directly because they make deep assumptions about the nature and measurability of the underlying uncertainties. These assumptions are generally not valid in the setting of design of unprecedented systems.

    The chapters in this volume address these issues, and more. In so doing, they deepen our understanding of economics-driven software architecture and highlight the potential for new tools and new ways for architecting software-intensive systems.

    Book overview

    The focus of this book is on architecting of software-intensive systems from two closely interrelated points of view: economics and value creation considerations. We have divided this book into four parts, with a general editorial chapter providing an overview of the domain of economics-driven software architecture and a conceptual framework for economics- and value-oriented software architecting.

    Part 1—Fundamentals

    In Part 1 we survey different software architecting models to deal explicitly with value-creation considerations, explore and identify areas of commonalities and differences, and discuss the role of various approaches in preparing an objective assessment of the lifetime costs and benefits of evolving systems.

    The three chapters in this part deal with economic models for product line architecture; aspects of software valuation; and the design implications of users’ values for system and software architecture.

    Architecture is the central part of product line engineering. Product line architecture should be modeled by considering the economics-related and value-based concerns so that organizations can maximize return on investments on product line technologies. Chapter 2, by T. Maruthi Padmaja and Anil Kumar Thurimella, identifies relevant approaches in software economics and value-based engineering and reviews the suitability of these approaches in the context of product line architecture. Their review provides an overview of the existing support for software economics and value-based approaches for researchers and practitioners. The approaches are assessed based on their support for adoption, domain engineering, application engineering, and decision making. Based on this review, the following open issues are determined:

    1. There is a sound support for economic calculations for making strategic decisions on software product line adoptions. However, there is no support for architecting issues (e.g., cost-benefit analysis, architecture evaluation) in these economic models.

    2. Domain engineering has been the focus of most of the approaches, and there is little focus on architectural issues in application engineering.

    The decision-making approaches for domain engineering should consider inputs from architectural design and architectural reengineering.

    Basing software technical decisions on economics has not been generally recognized as important in the software industry. However, because most software is being developed and maintained in a business context, the business consequences of technical choices must be considered. A commercial software development project, a low-cost payroll processing application targeted at small businesses, is used to introduce the basic elements of economic analysis for software projects. Development of the software in an automated test equipment (ATE) system is then used to illustrate the same elements for internally developed software. The approach is then generalized using a decision to invest in refactoring an existing customer relationship management (CRM) code base as an example. Finally, the decision to capitalize software development costs is analyzed to illustrate that it is not as good an idea as some people think it is. Using the techniques described in Chapter 3 by Steve Tockey, software professionals will be able to evaluate the business consequences of their technical alternatives and, thus, be able to make appropriate business decisions about their software projects.

    In Chapter 4, Alistair Sutcliffe argues the case for investigating users’ values as important influences on the design of software architecture. First, definitions of values in the psychological and sociological literature are reviewed, followed by a derived taxonomy of values relevant to software engineering domains, such as trust, cooperativeness, privacy, and creativity. Stakeholder values are related to nonfunctional requirements or system quality attributes. The architectural implications for user values are described by linking values to design for autonomy, monitoring/awareness and other architectural components. Implications are explained in terms of software and system (i.e., socio-technical) architecture by relating software components to operations in a system design with human factors and organizational concerns. Methods for eliciting user values in the requirements analysis process are explained, and the implications for the future of value-based software architectures are discussed. Application of the value-based requirements engineering and architecture design method is illustrated in a case study of a medical research support

    Enjoying the preview?
    Page 1 of 1