Economics-Driven Software Architecture
By Ivan Mistrik and Rick Kazman
()
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
Related to Economics-Driven Software Architecture
Related ebooks
Just Enough Research: Second Edition Rating: 0 out of 5 stars0 ratingsLow Code A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsSoftware Architect Rating: 0 out of 5 stars0 ratingsAgile Software Development in the Large: Diving into the Deep Rating: 0 out of 5 stars0 ratingsSaaS: Everything You Need to Know About Building Successful SaaS Company in One Place. Rating: 0 out of 5 stars0 ratingsDesign Sprint A Complete Guide - 2021 Edition Rating: 4 out of 5 stars4/5Integration Architecture Rating: 5 out of 5 stars5/5The API-First Transformation Rating: 0 out of 5 stars0 ratingsIoT Platform A Complete Guide - 2021 Edition Rating: 0 out of 5 stars0 ratingsHybrid Cloud Architecture A Complete Guide - 2021 Edition Rating: 0 out of 5 stars0 ratingsWireframing A Complete Guide - 2021 Edition Rating: 0 out of 5 stars0 ratingsSoftware Factory A Complete Guide - 2021 Edition Rating: 0 out of 5 stars0 ratingsA Modern Enterprise Architecture Approach: Enterprise Architecture Rating: 4 out of 5 stars4/5Serverless A Complete Guide - 2021 Edition Rating: 0 out of 5 stars0 ratingsData Hubs A Complete Guide - 2021 Edition Rating: 0 out of 5 stars0 ratingsDigital Banking Transformation A Complete Guide - 2021 Edition Rating: 0 out of 5 stars0 ratingsAI And IoT A Complete Guide - 2021 Edition Rating: 0 out of 5 stars0 ratingsInfrastructure As Code A Complete Guide - 2021 Edition Rating: 0 out of 5 stars0 ratingsStrategy Design Pattern A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsPrivacy And Blockchain A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsSaaS Platform Security Management A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsObservability Services A Complete Guide - 2019 Edition Rating: 0 out of 5 stars0 ratingsPayment Solutions A Complete Guide Rating: 0 out of 5 stars0 ratingsSOA Governance A Complete Guide - 2019 Edition Rating: 0 out of 5 stars0 ratingsEnterprise Solutions Architecture Second Edition Rating: 0 out of 5 stars0 ratingsSolution Architectures The Ultimate Step-By-Step Guide Rating: 0 out of 5 stars0 ratingsSaaS A Complete Guide - 2019 Edition Rating: 0 out of 5 stars0 ratingsDigital Transformation Best Practices A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsOpenID Connect A Clear and Concise Reference Rating: 0 out of 5 stars0 ratings
Software Development & Engineering For You
Python For Dummies Rating: 4 out of 5 stars4/5Engineering Management for the Rest of Us Rating: 5 out of 5 stars5/5How Do I Do That in Photoshop?: The Quickest Ways to Do the Things You Want to Do, Right Now! Rating: 4 out of 5 stars4/5PYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5Hand Lettering on the iPad with Procreate: Ideas and Lessons for Modern and Vintage Lettering Rating: 4 out of 5 stars4/5How Do I Do That In InDesign? Rating: 5 out of 5 stars5/5Level Up! The Guide to Great Video Game Design Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Android App Development For Dummies Rating: 0 out of 5 stars0 ratingsPhotoshop For Beginners: Learn Adobe Photoshop cs5 Basics With Tutorials Rating: 0 out of 5 stars0 ratingsHow to Write Effective Emails at Work Rating: 4 out of 5 stars4/5Beginning Programming For Dummies Rating: 4 out of 5 stars4/5Adobe Illustrator CC For Dummies Rating: 5 out of 5 stars5/5Software Engineering: Architecture-driven Software Development Rating: 4 out of 5 stars4/5iPhone Application Development For Dummies Rating: 4 out of 5 stars4/5JavaScript Beginners Learn Java Script Programming Language, Basics Concept & Practice by Example Rating: 4 out of 5 stars4/5Good Code, Bad Code: Think like a software engineer Rating: 5 out of 5 stars5/5Grokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5Modern C++ for Absolute Beginners: A Friendly Introduction to C++ Programming Language and C++11 to C++20 Standards Rating: 0 out of 5 stars0 ratingsOneNote: The Ultimate Guide on How to Use Microsoft OneNote for Getting Things Done Rating: 1 out of 5 stars1/5Ry's Git Tutorial Rating: 0 out of 5 stars0 ratingsLearning R Programming Rating: 5 out of 5 stars5/5Tiny Python Projects: Learn coding and testing with puzzles and games Rating: 5 out of 5 stars5/5DevOps For Dummies Rating: 4 out of 5 stars4/5Lua Game Development Cookbook Rating: 0 out of 5 stars0 ratingsComputer Programming Languages for Beginners Rating: 0 out of 5 stars0 ratingsReversing: Secrets of Reverse Engineering Rating: 4 out of 5 stars4/5
Reviews for Economics-Driven Software Architecture
0 ratings0 reviews
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