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.