Sie sind auf Seite 1von 4

The Economics of Software Quality Practices

A Position Paper Submitted to the First Workshop on Economics-Driven Software


Engineering Research

Rajiv D. Banker
Ashbel Smith Chair in Accounting
and Information Management
School of Management
University of Texas at Dallas
Richardson, TX 75083-0688
(972) 883-4185
email: rbanker@utdallas.edu

Sandra A. Slaughter *
Graduate School of Industrial Administration
Carnegie Mellon University
314A GSIA
Tech & Frew Streets
Pittsburgh, PA 15213
(412) 268-2308
email: sandras@andrew.cmu.edu

March 15, 1999

* Please direct all correspondence and inquiries to this author.


The Economics of Software Quality Practices

Advocates of structured design, software process improvement, and other


software quality practices have argued strongly for the cost benefit analysis of investment
in software quality practices (e.g., Jones, 1997). Recent empirical studies have supported
the significance of better processes and increased investment in the initial stages of
design for improving the quality of software products, the productivity of development
and error correction (Krishnan, 1996), and the productivity of organizations that support
the development process (Slaughter, Harter, and Krishnan, 1998).

In this paper, we advance what may appear to be a rather controversial idea: that
high levels of investment in software quality practices are not economically efficient in
all situations. That is, it is optimal for organizations to selectively implement only those
quality practices that promise to yield positive returns when evaluated over the entire
software life cycle. In a resource-constrained environment, a ranking of alternative
proposals may require an assessment of both upfront and downstream costs and benefits
associated with a software quality practice. This means that organizations must be able to
estimate the economics of software quality practices in the design phase. To illustrate our
position, we consider a particular quality practice (structured design) and the economics
of its use over the software life cycle (Banker and Slaughter, 1998).

Software structure is believed to be beneficial in software maintenance.


Maintenance requires comprehension of the existing software, and structure facilitates
comprehension by decomposing functionality into smaller and more manageable
modules. However, as decomposition progresses, it becomes increasingly difficult to
minimize the inter-dependencies between modules and to sustain the functional cohesion
of a particular module. Thus, a very highly structured application can be difficult to
comprehend due to complex interfaces between modules.

Further, in software development, structured design is sometimes considered a


slow, inflexible, and time-consuming process. In practice, most software development
projects have finite resources as well as aggressive time-lines. In this context, the effort
required to implement structure in development will compete with the effort required to
implement the required functionality in a timely and cost-effective manner. This implies
that it is important to focus design efforts on highly structuring those applications where
the marginal benefit is greatest. The question then arises as to which applications will
benefit the most from higher levels of structure over the entire software life cycle.

It is likely that the benefits of structure downstream in software maintenance are


realized for applications that are highly volatile and complex. For more volatile
applications, an increased understanding of the structure is acquired through frequent
modification. This improved understanding facilitates the comprehension of the
application by helping maintainers to focus only on the part of the application that must
be modified, thereby reducing the marginal cost of enhancement. On the other hand, for
less volatile applications, maintainers are unfamiliar with the structure as they have
interacted less with the application. Thus, they must invest effort in understanding the
application structure and in making the modification. For complex applications, higher
levels of structure can decrease the effort to comprehend a very complex application, by
decomposing the data processing into smaller modules so that the functionality can be
more easily understood. However, for less complex applications, high levels of structure
are less beneficial as the application can be more easily comprehended without it. In fact,
high levels of structure can introduce complicated interfaces into these less difficult
applications and increase enhancement effort. This implies that the optimal level of
structure increases with higher levels of volatility and complexity.

We have found support for these hypotheses based on analysis of detailed


application-level detail obtained from a large retailer and a large commercial bank. An
implication of our hypotheses is that it is imperative for organizations to predict in the
design phase which applications could be expected to be more complex or more volatile
after they have been implemented. This would enable software engineers to focus their
efforts on structuring the applications where the benefit to cost comparison is most
favorable. Unfortunately, there has been relatively little research to systematically predict
ex ante in design where complexity and volatility are likely to occur in software
applications.

The general software engineering problem illustrated by this particular example is


that there is very little knowledge of the economics of software quality. That is, the
marginal costs and benefits of implementing different quality practices over the software
life cycle are not well understood. This lack of knowledge inhibits progress in improving
software processes. We believe, therefore, that significant research is needed to
understand the economics of implementing quality practices. Such research must evaluate
the cost benefit trade-offs in investing in quality practices in software design where the
returns are realized over the software life cycle. Further, research is needed to identify
the characteristics of those software components where the return to quality practices is
likely to be the greatest. Finally, we advocate research that formally examines the use of
motivational mechanisms to encourage the use of good practices where they are most
beneficial. At an individual level, software engineers may have neither the knowledge nor
the motivation to make efficient design choices. Thus, the impact of organizational
incentives in promoting or discouraging the use of optimal software practices could be
very significant (Banker and Kemerer, 1992). This suggests another important direction
for future research that would formally examine the link between economic incentives,
use of software practices, and performance.

Selected References

Banker, R.D., and Slaughter, S., “The Moderating Effects of Structure on Volatility and
Complexity in Software Enhancement,” GSIA Working Paper #1997-82, Carnegie
Mellon University, 1998.
Banker, R.D. and Kemerer, C., “Performance Evaluation Metrics for Information
Systems Development: A Principal-Agent Model,” Information Systems Research, 3:4,
1992, pp. 379-400.

Jones, C., Software Quality: Analysis and Guidelines for Success, International
Thompson Computer Press, 1997.

Krishnan, M., Cost and Quality Considerations in Software Product Management, PhD
Dissertation, Carnegie Mellon University, 1996.

Slaughter, S., Harter, D., and Krishnan, M., “Evaluating the Cost of Software Quality,”
Communications of the ACM, 41:8, August 1998, pp. 67-73.

Das könnte Ihnen auch gefallen