Wednesday, October 23, 2013

Software engineering in the context of production economics



Software engineering in the context of production economics

                        I.            Introduction
The information technology industry driven mainly by software engineering has quickly gained grounds around the world in the recent years, imposing incontestably itself as one of the fastest growing industries and an essential economical growth catalyst to reckon with in the future. In an attempt to better comprehend the concept of software engineering in the context of production economics, it is crucial to define and deduce the relationship between the following key terms: production, economics, software engineering and its sub disciplines, and finally to provide an overview of economic analysis techniques and their applicability to software engineering and management mainly in the field of software quality, software cost estimation, business process reengineering, software architecture, software requirement, software marketing and project management.
                     II.            Definitions
Production:  In economics, production is the act of creating output, a goods or service which has value and contributes to the utility of individuals [1].  At the same time any effort directed toward the realization of a desired product or service is a "productive" effort and the performance of such act is production. The relation between the amount of inputs used in production and the resulting amount of output is called the production function. In general the production can be divided into three stages:
§   Primary producers directly extract natural resources.
§  Secondary producers process resources to turn them into intermediate goods.
§  Tertiary producers provide final goods or services to the consumer.
Economics:  the study of how people make decisions in resource-limited situations. This definition of economics fits the major branches of classical economics very well.
Macroeconomics: the study of how people make decisions in resource-limited situations on a national or global scale. It deals with the effects of decisions that national leaders make on such issues as tax rates, interest rates, and foreign and trade policy.
Microeconomics:  the study of how people make decisions in resource-limited situations on a more personal scale. It deals with the decisions that individuals and organizations make on such issues as how much insurance to buy, which word processor to buy, or what prices to charge for their products or services [2]. 
Economic principles: usually mentioning the term economy strikes some fears and complexities in the mind of common people but when broken into small ideas or principles it becomes easy and simple. Here are the nine principles of economics:
§  People choose: economics is about choosing from alternative ways to use scarce resources to accomplish goals.
§  Every choice/action has a cost:  “There is no such thing as a free lunch” to an economist, it is really not the economic way of thinking.
§  Benefit/cost analysis is useful:  Every choice we make involves benefit/cost analysis either implicitly or explicitly; it is the primary tool of economic reasoning.
§  Incentives matter: Incentives motivate people to action.
§  Exchange benefits the traders: The Principle of Exchange states that two parties with equal information will voluntarily exchange only if they gain more than they give.
§  Markets work with competition, information, incentives, and property rights: “Market failures” usually occur when one of the four conditions does not exist. When they do exist, markets are efficient.
§  Skills and knowledge influence income: Applying the Principle of Exchange, employers will hire workers if the employers expect to gain more than they give.
§  Monetary and fiscal policies affect people’s choices.
§  Government policies have benefits and costs.
Software engineering: is concerned with developing and maintaining software systems that behave reliably and efficiently, are affordable to develop and maintain, and satisfy all the requirements that customers have defined for them. It can be divided into 10 sub disciplines as follow:
§  Software requirements
§  Software configuration management
§  Software design
§  Software engineering management
§  Software construction
§  Software engineering process
§  Software testing
§  Software engineering tools and methods
§  Software maintenance
§  Software quality
                 III.            Software engineering economics
From what precede, we see that the microeconomics branch of economics deals more with the types of decisions we need to make as software engineers or managers at each step of those sub-disciplines of software engineering in order to obtain an economically viable output or product. Clearly, we deal with limited resources. There is never enough time or money to cover all the good features we would like to put into our software products. Throughout the software life cycle, there are many decision situations involving limited resources in which software engineering economics techniques provide useful assistance. Taking the example of the following five (05) parameters of software production processes: t1= time spent in producing, t2=time spent in learning, t3=time spent in waiting, t4=time spent in getting instruction and t5= time spent in fixing produced materials or previous works. If in a firm we hire programmers with complementary capabilities, t1 will decrease sharply however hiring programmers with duplicate capabilities suddenly increases t3, t4 and t5. Therefore taking into account the effect of each action taken on these five parameters may allow a software firm to avoid the diseconomy of scale.
       Fig 1: Economy/Diseconomy of scale
  Fig 2: Basic production economy
                    As shown in [2], the opportunity to improve software project management decision making through improved software cost estimation, planning, data collection, and control brings us back full circle to the original objectives of software engineering economics: to provide a better quantitative understanding of how software people make decisions in resource-limited situations.
          Finally we can say the a  judicious use production economics techniques and principles in software engineering may improve the software development productivity, optimize decisions making and make informed tradeoffs of our investments in this ever growing and challenging field.
References:
[1] Kotler, P., Armstrong, G., Brown, L., and Adam, S. (2006) Marketing, 7th Ed. Pearson Education Australia/Prentice Hall.
[2] Barry W. Boehm. Software Engineering Economics. Prentice-Hall, Englewood Cliffs, NJ, 1981.

1 comment: