The development of software in the presence of uncertainty is a well-developed discipline, a well developed academic topic, and a well-developed practice with numerous tools, database, and models in many different SW domains.
Economics is the study of how resources (people, time, facilities, money) are used to produce and distribute commodities and how services are provided in society. Engineering economics is a branch of microeconomics dealing with engineering related economic decisions. Software Engineering Foundations: A Software Science Perspective, Yingxu Wang, Auerbach Publications.
Software engineering economics is a topic that addresses the elements of software project costs estimation and analysis and project benefit-cost ratio analysis. As well these costs, and the benefits of expending those costs produce tangible and many times the intangible value. The time-phased aspects of developing software for money, means we need to understand the scheduling aspects of producing this value.
All three variables in the paradigm of software development for money - time, cost, and value - are random variables. This randomness comes from the underlying uncertainties in the processes found in the development of the software. These uncertainties are always there, they never go away, they are immutable.
Economic Foundations of Software Engineering
There are fundamental principles and methodologies utilized in engineering economics and their applications in software engineering that form the basis of decision making in the presence of uncertainty. These formal economic models include the cost of production and market models based on fundamental principles of microeconomics. The dynamic values of money and assets, patterns of cash flows, can be modeled in support of management's need to make decisions in the presence the constant uncertainties associated with software development
Economic analysis methodologies for engineering decisions include project costs, benefit-cost ratio, payback period, and rate of return can be rigorously described. This is the basis of any formal treatment of economic theories and principles. Software engineering economics is based on elements of software costs, software engineering project costs estimation, economic analyses of software engineering projects, and the software maintenance cost model.
Economics is classified into microeconomics and macroeconomics. Microeconomics is the study of behaviors of individual agents and markets. Macroeconomics is the study of the broad aspects of the economy, for example employment, export, and prices on a national or global scope.
A universal quantitative measure of commodities and services in economics is money.
Engineering economics is a branch of microeconomics. There are some basic axioms of microeconomics and engineering economics.
- Demand versus supply. Demand is the required quantities for a product or service. It is also the demand for labor and materials needed to produce those products and services. Demand is a fundamental driving force of market systems and the predominant reason for most economic phenomena. The market response to a demand is called supply.
-
Supply is the required quantities for a product or service that producers are willing and able to sell at a given range of prices. This also extends to the labor and materials needed to produce the product and services to meet the demand.
Demands and supplies are the fundamental behaviors of dynamic market systems, which form the context of economics. Not enough Java programmers in the area, cost for Java programmers goes up. Demand for rapid production of products, cost of skilled labor, special tools and processes goes up. COBOL programmers in 1998 to 2001 could ask nearly any price for their services. FORTRAN 77 programs here in Denver can get exorbitant rates to help maintain the Ballistic Missile Defense System when a local defense contractor was awarded the maintenance and support contract for Cobra Dane.
Making Decisions in the Presence of Uncertainty
Making decision is about Opportunity Costs
Opportunity Costs are those cost resulting from the loss of potential gain from the other alternatives then the one alternative chosen by the decision maker.
Every time we make a decision involving multiple choices we are making an opportunity cost based decisions. Since most of the time, these costs in the future and are uncertainty, we need to estimate those opportunity costs as well as the probability that our choice is the right choice to produce the desired beneficial outcomes.
Here's an example from a tool we use, Palisade software's Crystal Ball. There are similar plugins for Excel (RiskAmp is affordable for the individual).
Another useful tool in the IT decision making world is Real Options. Here's a simple introduction to RO's and decision making.
- The Stakes — The stakes are involved in the decision, such as costs, schedule, delivered capabilities and those impacts on business success or the meeting the objectives.
- Complexity — The ramifications of alternatives are difficult to understand the impact of the decision without detailed analysis.
- Uncertainty — Uncertainty in key inputs creates uncertainty in the outcome of the decision alternatives and points to risks that may need to be managed.
- Multiple Attributes — Larger numbers of attributes cause a larger need for formal analysis.
- Diversity of Stakeholders — Attention is warranted to clarify objectives and formulate performance measures when the set of stakeholders reflects a diversity of values, preferences, and perspectives.
Reducible and Irreducible Uncertainty
All project work is probabilistically driven by underlying statistical processes that create uncertainty. [2] There are two types of uncertainty on all projects. Reducible (Epistemic) and Irreducible (Aleatory).
Aleatory uncertainty arises from the random variability related to natural processes on the project - the statistical processes. Work durations, productivity, variance in quality. Epistemic uncertainty arises from the incomplete or imprecise nature of available information - the probabilistic assessment of when an event may occur.
There is pervasive confusion between these two types of uncertainties when discussing the impacts on these uncertainties on project outcomes, including the estimates of cost, schedule, and technical performance.
All The World's a NonLinear, Non-Stationary Stochastic Process, Described by 2nd Order non-Linear Differential Equations.
In the presence of these conditions - and software development is - we need to understand several things for success. What are the coupled dynamics? What are the probabilistic and statistical processes that drive these dynamics? And how can we make a decision in their presence?
Predictive Analytics of Project Behaviors
In the presence of uncertainty, the need to predict future outcomes is critically important. One of the professional societies I belong to has a presentation o this topic. Here's a small sample of a mature process for estimating future outcomes given past performance. If you back up the URL to http://www.iceaaonline.com/ready/wp-content/uploads/2015/06/ You'll see all the briefings on the topic of cost, schedule, and performance management used in the domains I work.
[1] Risk Informed Decision Making Handbook, NASA/SP-2010-576 Version 1.0 April 2010.
[2] "Risk-informed decision-making in the presence of epistemic uncertainty," Didier Dubois, Dominique Guyonnet, International Journal of General Systems, Taylor & Francis, 2011, 40 (2), pp.145-167.