Software_Development_Patterns_and_Anti_Patterns_Capers_Jones
Software_Development_Patterns_and_Anti_Patterns_Capers_Jones
and Antipatterns
Software Development Patterns
and Antipatterns
Capers Jones
First edition published 2022
by CRC Press
6000 Broken Sound Parkway NW, Suite 300, Boca Raton, FL 33487-2742
and by CRC Press
2 Park Square, Milton Park, Abingdon, Oxon, OX14 4RN
© 2022 Taylor & Francis Group, LLC
CRC Press is an imprint of Taylor & Francis Group, LLC
The right of Capers Jones to be identified as author of this work has been asserted
by him in accordance with sections 77 and 78 of the Copyright, Designs and Patents
Act 1988.
Reasonable efforts have been made to publish reliable data and information, but the
author and publisher cannot assume responsibility for the validity of all materials or
the consequences of their use. The authors and publishers have attempted to trace
the copyright holders of all material reproduced in this publication and apologize
to copyright holders if permission to publish in this form has not been obtained. If
any copyright material has not been acknowledged please write and let us know so
we may rectify in any future reprint.
Except as permitted under U.S. Copyright Law, no part of this book may be reprinted,
reproduced, transmitted, or utilized in any form by any electronic, mechanical, or
other means, now known or hereafter invented, including photocopying, microfilm-
ing, and recording, or in any information storage or retrieval system, without written
permission from the publishers.
For permission to photocopy or use material electronically from this work, access
www.copyright.com or contact the Copyright Clearance Center, Inc. (CCC), 222
Rosewood Drive, Danvers, MA 01923, 978-750-8400. For works that are not avail-
able on CCC please contact [email protected]
Trademark notice: Product or corporate names may be trademarks or registered
trademarks and are used only for identification and explanation without intent to
infringe.
ISBN: 978-1-032-02912-2 (hbk)
ISBN: 978-1-032-01722-8 (pbk)
ISBN: 978-1-003-19312-8 (ebk)
DOI: 10.1201/9781003193128
Typeset in Garamond
by SPi Technologies India Pvt Ltd (Straive)
Contents
v
vi ◾ Contents
Index�������������������������������������������������������������������������������������������467
Appreciation and
Acknowledgments
xv
Preface
This book is divided into two sections. The first section discusses harm-
ful patterns and practices that tend to cause schedule delays, cost over-
runs, and poor quality. The observations and data about these harmful
patterns came from consulting studies and benchmarks carried out for
clients of Namcook Analytics LLC who wanted to improve their software
development practices and patterns.
The second section of the book shows optimal patterns that have
proven to be successful for large systems. The successful patterns origi-
nated in companies and organizations that build large mission-critical
software systems such as IBM, AT&T, ITT, Nippon Electric, NASA, and
the Internal Revenue Service (IRS).
Software has been a troubling topic since it first started. There are
seven chronic problems that have plagued software from the beginning:
xvii
xviii ◾ Preface
xix
WORST-CASE 1
PATTERNS OF
SOFTWARE
DEVELOPMENT
DOI: 10.1201/9781003193128-1
Chapter 1
Challenges of Software
Project Management
DOI: 10.1201/9781003193128-2 3
4 ◾ Software Development Patterns and Antipatterns
5
6 ◾ Software Development Patterns and Antipatterns
(Continued)
12 ◾ Software Development Patterns and Antipatterns
Dr. Larry Putnam (inventor of SLIM), Dr. Jerry Weinberg (author of The
Psychology of Computer Programming), Bill Gates of Microsoft, Donald
Knuth (pioneer of computer algorithms), Admiral Grace Hopper of the
Navy (inventor of COBOL), Ken Thompson (co- developer of UNIX),
Linus Torvalds (developer of Linux), and many more.
Usually these events lasted for about half a day of technical topics, and
then had either a lunch or a reception for the guests based on whether
it was a morning event or an afternoon event. At the reception or lunch,
the audience could meet and chat informally with the visiting experts.
Challenges of Software Project Management ◾ 13
Because the guest experts were world famous, these corporate semi-
nars were attended by top software executives as well as software engi-
neers and technical staff. This was a good method for bringing together
all levels of a company to focus on critical software issues.
Having attended a number of these, they were usually very enjoyable
and it was good to meet famous software researchers such as Admiral
Grace Hopper face to face.
Needless to say this kind of event usually takes place in fairly large
companies since they are expensive. However these seminars were also
valuable and benefitted both the executives and technical staffs of IBM,
ITT, AT&T, Microsoft, and other companies that have them.
(Continued)
18 ◾ Software Development Patterns and Antipatterns
Both kinds of tools are useful for large and complex software proj-
ects and are generally used concurrently by project office personnel.
An average software project using both parametric estimation tools and
project management tools would be a significant project of over 1,000
function points in size. Small projects below 100 function points are
often estimated informally and use only normal corporate cost account-
ing tools rather than sophisticated project management tools.
Project offices are a useful and valuable software structure. They usually
contain from 3 to more than 10 people based on the size of the project
being controlled. Among the kinds of personnel employed in software
project, offices are estimating specialists, metric specialists such as certi-
fied function point counters, quality control specialists, and standards
specialists.
Project offices usually have several parametric estimation tools avail-
able and also both general and specialized project tracking tools. Shown
in Table 1.7 are samples of some of the kinds of tools and information
that a project office might utilize in a technology company for a major
software application
As can be seen, software project offices add knowledge and rigor
to topics where ordinary project managers may not be fully trained or
highly experienced.
(Continued)
22 ◾ Software Development Patterns and Antipatterns
Poor quality is also a key factor in cost driver #12 or litigation for
breach of contract. The author of this book has worked as an expert wit-
ness in 15 lawsuits. Poor software quality is an endemic problem with
breach of contract litigation. In one case against a major ERP company,
the litigation was filed by the company’s own shareholders who asserted
that the ERP package quality was so bad that it was lowering stock values!
If you can’t measure a problem, then you can’t fix the problem either.
Software quality has been essentially unmeasured and therefore unfixed
for 50 years. A very useful quality metric developed by IBM around 1970
is that of “defect potentials.”
Software defect potentials are the sum total of bugs found in require-
ments, architecture, design, code, and other sources of error. The
approximate U.S. average for defect potentials is shown in Table 1.9
using IFPUG function points version 4.3.
Challenges of Software Project Management ◾ 25
Note that the phrase “bad fix” refers to new bugs accidentally intro-
duced in bug repairs for older bugs. The current U.S. average for bad-fix
injections is about 7%, i.e. 7% of all bug repairs contain new bugs. For
modules that are high in cyclomatic complexity and for “error prone
modules,” bad-fix injections can top 75%. For applications with low cyc-
lomatic complexity, bad fixes can drop below 0.5%.
Defect potentials are of necessity, measured using function point
metrics. The older “lines of code” metric cannot show requirements,
architecture, and design defects not any other defect outside the code
itself. As of today, function points were the most widely used software
metric in the world. There are more benchmarks using function point
metrics than all other metrics put together.
Successful and effective software quality control requires the follow-
ing 15 technical factors:
The bottom line is that poor software quality is the main weakness of
the software industry. But poor software quality can be eliminated by
better education for project managers and technical staff, and by using
quality methods of proven effectiveness. The good news is that high
quality is faster and cheaper than poor quality.
Cost per defect metrics penalize quality and makes the buggiest soft-
ware look cheapest. There are no ISO or other standards for calcu-
lating cost per defect. Cost per defect does not measure the
economic value of software quality. The urban legend that it costs
100 times as much to fix post-release defects as early defects is not
true and is based on ignoring fixed costs. Due to fixed costs of
writing and running test cases, cost per defect rises steadily because
fewer and fewer defects are found. This is caused by a standard
rule of manufacturing economics: “if a process has a high percent-
age of fixed costs and there is a reduction in the units produced, the
cost per unit will go up.” This explains why cost per defects seems
to go up over time even though actual defect repair costs are flat
and do not change very much. There are of course very troubling
defects that are expensive and time consuming, but these are com-
paratively rare.
Defect density metrics measure the number of bugs released to cli-
ents. There are no ISO or other standards for calculating defect
Challenges of Software Project Management ◾ 27
that they won’t since the costs of adding SNAP are painfully
expensive. As a rule of thumb, non-functional requirements are
about equal to 15% of functional requirements, although the range
is very wide.
Story point metrics are widely used for agile projects with “user sto-
ries.” Story points have no ISO standard for counting or any other
standard. They are highly ambiguous and vary by as much as 400%
from company to company and project to project. There are few if
any useful benchmarks using story points. Obviously story points
can’t be used for projects that don’t utilize user stories so they are
worthless for comparisons against other design methods.
Technical debt is a new metric and rapidly spreading. It is a brilliant
metaphor developed by Ward Cunningham. The concept of “tech-
nical debt” is that topics deferred during development in the inter-
est of schedule speed will cost more after release than they would
have cost initially. However there are no ISO standards for techni-
cal debt and the concept is highly ambiguous. It can vary by over
500% from company to company and project to project. Worse,
technical debt does not include all of the costs associated with
poor quality and development short cuts. Technical debt omits can-
celed projects, consequential damages or harm to users, and the
costs of litigation for poor quality.
Use case points are used by projects with designs based on “use
cases” which often utilize IBM’s Rational Unified Process (RUP).
There are no ISO standards for use cases. Use cases are ambiguous
and vary by over 200% from company to company and project to
project. Obviously use cases are worthless for measuring projects
that don’t utilize use cases, so they have very little benchmark data.
This is yet another attempt to imitate the virtues of function point
metrics, only with somewhat less rigor and with imperfect count-
ing rules as of 2015.
Velocity is an agile metric that is used for prediction of sprint and
project outcomes. It uses historical data on completion of past
work units combined with the assumption that future work units
will be about the same. Of course it is necessary to know future
work units for the method to operate. The concept of velocity is
basically similar to the concept of using historical benchmarks for
estimating future results. However as of 2017, velocity had no ISO
standards and no certification.
There are no standard work units for velocity and these can be story
points or other metrics such as function points or use case points, or
Challenges of Software Project Management ◾ 29
even synthetic concepts such as “days per task.” If agile projects used
function points, then they could gain access to large volumes of histori-
cal data using activity-based costs, i.e. requirements effort, design effort,
code effort, test effort, integration effort, documentation effort, etc. As
long as agile continues to use quirky and unstandardized metrics with-
out any certification exams, then agile productivity and quality will con-
tinue to be a mystery to clients who will no doubt be dismayed to find
as many schedule delays and cost overruns as they had with waterfall.
As already stated in other chapters, there are 11 primary metrics and
10 supplementary metrics that allow software projects to be measured
with about 1% precision.
The only software metrics that allow quality and productivity to be
measured with 1% precision are these 11 primary software metrics and
10 supplemental metrics:
Lines Use-
Function of Story Case
Points Code Points Points
Software Metric Attributes
ISO standard? Yes No No No
OMG standard? Yes No No No
Professional associations? Yes No No No
Formal training? Yes No No No
Certification exam? Yes No No No
Automated counting? Yes Yes No No
Required by governments? Yes No No No
Good for productivity? Yes No Yes No
Good for quality? Yes No No No
Good for estimates? Yes No Yes No
Published conversion rules? Yes No No No
Accepted by benchmark Yes Yes No No
groups?
Used for IT projects? Yes Yes Yes Yes
Used for web projects? Yes Yes Yes Yes
Used for cloud projects? Yes Yes Yes No
Used for embedded projects? Yes Yes No No
Used for systems software? Yes Yes No No
Used for telecom software? Yes Yes No No
Used for defense software? Yes Yes No No
Productivity Measures
Activity-based costs? Yes No No No
Requirements productivity? Yes No No No
Design productivity? Yes No No No
Challenges of Software Project Management ◾ 31
(Continued)
Lines Use-
Function of Story Case
Points Code Points Points
Coding productivity? Yes Yes No No
Testing productivity? Yes Yes No No
Quality assurance Yes No No No
productivity?
Technical writer productivity? Yes No No No
Project management Yes No No No
productivity?
Net productivity of projects Yes Yes Yes Yes
Quality Measures
Requirements defects? Yes No No No
Architecture defects? Yes No No No
Design defects? Yes No No No
Document defects? Yes No No No
Coding defects? Yes Yes No No
Bad fix defects? Yes Yes No No
Net quality of projects? Yes Yes Yes Yes
As can be seen, function point metrics are the only metrics that can
be used for all software activities and for both quality and productivity
analysis. This chapter uses IFPUG function points version 4.3, but other
function point variations such as COSMIC, FISMA, and NESMA function
points would produce similar but slightly different results.
Table 1.10 Gaps and Omissions Observed in Data for a Software Chart of
Accounts
Completeness of
Activities Performed Historical Data
1 Requirements Missing or Incomplete
2 Prototyping Missing or Incomplete
3 Architecture Missing or Incomplete
4 Project planning Missing or Incomplete
5 Initial analysis and design Missing or Incomplete
6 Detail design Incomplete
7 Design reviews Missing or Incomplete
8 Coding Complete
9 Reusable code acquisition Missing or Incomplete
10 Purchased package acquisition Missing or Incomplete
11 Code inspections Missing or Incomplete
12 Independent verification and validation Complete
13 Configuration management Missing or Incomplete
14 Integration Missing or Incomplete
15 User documentation Missing or Incomplete
16 Unit testing Incomplete
17 Function testing Incomplete
18 Integration testing Incomplete
19 System testing Incomplete
20 Field testing Missing or Incomplete
21 Acceptance testing Missing or Incomplete
22 Independent testing Complete
23 Quality assurance Missing or Incomplete
24 Installation and training Missing or Incomplete
25 Project management Missing or Incomplete
Total project resources, costs Incomplete
34 ◾ Software Development Patterns and Antipatterns
(Continued)
36 ◾ Software Development Patterns and Antipatterns
developed by Dr. Tom Love and Dr. Brad Cox at the ITT Advanced
Technology Group. When Alcatel acquired the ITT telecom research
labs, the ownership of Objective C was transferred to Dr. Love at his
new company.
(Continued)
38 ◾ Software Development Patterns and Antipatterns
(Continued)
40 ◾ Software Development Patterns and Antipatterns
Garmus, David; and Herron, David; Measuring the Software Process: A Practical
Guide to Functional Measurement; Prentice Hall, Englewood Cliffs, NJ;
1995.
Gilb, Tom; and Graham, Dorothy; Software Inspections; Addison Wesley,
Reading, MA; 1993; ISBN: 10-0201631814.
Glass, R.L.; Software Runaways: Lessons Learned from Massive Software Project
Failures; Prentice Hall, Englewood Cliffs, NJ; 1998.
Harris, Michaael; Herron, David; and Iwanicki, Stacia; The Business Value of IT:
Managing Risks, Optimizing Performance, and Measuring Results; CRC
Press (Auerbach), Boca Raton, FL; 2008; ISBN: 13-978-1-4200-6474-2; 266
pages.
Hill, Peter; Jones Capers; and Reifer, Don; The Impact of Software Size on
Productivity; International Software Standards Benchmark Group (ISBSG),
Melbourne, Australia, September 2013.
Humphrey, Watts; Managing the Software Process; Addison Wesley, Reading,
MA; 1989.
International Function Point Users Group (IFPUG); IT Measurement – Practical
Advice from the Experts; Addison Wesley Longman, Boston, MA; 2002;
ISBN: 0-201-74158-X; 759 pages.
Jacobsen, Ivar, Griss, Martin; and Jonsson, Patrick; Software Reuse - Architecture,
Process, and Organization for Business Success; Addison Wesley Longman,
Reading, MA; 1997; ISBN: 0-201-92476-5; 500 pages.
Jacobsen, Ivar et al; The Essence of Software Engineering; Applying the SEMAT
Kernel; Addison Wesley Professional, Reading, MA; 2013.
Johnson, James et al; The Chaos Report; The Standish Group, West Yarmouth,
MA; 2000.
Jones, Capers; The Technical and Social History of Software Engineering;
Addison Wesley, Boston, MA; 2014.
Jones, Capers; and Bonsignour, Olivier; The Economics of Software Quality;
Addison Wesley, Boston, MA; 2011.
Jones, Capers; Software Engineering Best Practices; McGraw Hill, New York;
2009; ISBN: 978-0-07-162161-8660.
Jones, Capers; Applied Software Measurement; 3rd ed.; McGraw Hill, New York;
March 2008; ISBN: 978-0-07-150244-3; 668 pages.
Jones, Capers; Estimating Software Costs; McGraw Hill, New York; 2007; ISBN
13-978-0-07-148300-1.
Jones, Capers; Program Quality and Programmer Productivity; IBM Technical
Report TR 02.764; IBM, San Jose, CA; January 1977.
Jones, Capers; “Sizing Up Software”; Scientific American Magazine; Vol. 279,
No. 6; December 1998; pp 104–109.
Jones, Capers; Software Assessments, Benchmarks, and Best Practices; Addison
Wesley Longman, Boston, MA; 2000; 659 pages.
Jones, Capers; Conflict and Litigation Between Software Clients and Developers;
Version 6; Software Productivity Research, Burlington, MA; June 2006a; 54
pages.
Jones, Capers; “Software Project Management Practices: Failure Versus Success”;
Crosstalk; Vol. 19, No. 6; June 2006b; pp 4–8.
Challenges of Software Project Management ◾ 43
Wiegers, Karl A.; Creating a Software Engineering Culture; Dorset House Press,
New York, NY; 1996; ISBN: 0-932633-33-1; 358 pages.
Wiegers, Karl E.; Peer Reviews in Software – A Practical Guide; Addison Wesley
Longman, Boston, MA; 2002; ISBN: 0-201-73485-0; 232 pages.
Whitehead, Richard; Leading a Development Team; Addison Wesley, Boston,
MA; 2001; ISBN: 10-0201675267; 368 pages.
Yourdon, Ed; Outsource – Competing in the Global Productivity Race; Prentice
Hall PTR, Upper Saddle River, NJ; 2004; ISBN: 0-13-147571-1; 251 pages.
Yourdon, Ed; Death March – The Complete Software Developer’s Guide to
Surviving “Mission Impossible” Projects; Prentice Hall PTR, Upper Saddle
River, NJ; 1997; ISBN: 0-13-748310-4.
points, Mark II function points, and several other function point variants.
Fortunately the data in variant metrics is identified. It would be statisti-
cally invalid to include attempt to average IFPUG and COSMIC data, or to
mix up any of the function point variations.
http://www.iso.org. This is the web site for the International Organization
for Standardization (ISO). The ISO is a non-profit organization that spon-
sors and publishes a variety of international standards. As of 2007 the ISO
published about a thousand standards a year, and the total published to
date is approximately 17,000. Many of the published standards affect soft-
ware. These include the ISO 9000-9004 quality standards and the ISO
standards for functional size measurement.
http://www.namcook.com. This web site contains a variety of quantitative
reports on software quality and risk factors. It also contains a patented
high-speed sizing tool that can size applications of any size in 90 seconds
or less. It also contains a catalog of software benchmark providers which
currently lists 20 organizations that provide quantitative data about soft-
ware schedules, costs, quality, and risks.
http://www.PMI.org. This is the web site for the Project Management Institute
(PMI). PMI is the largest association of managers in the world. PMI per-
forms research and collects data on topics of interest to managers in every
discipline: software, engineering, construction, and so forth. This data is
assembled into the well known Project Management Body of Knowledge
or PMBOK.
http://www.ITMPI.org. This is the web site for the Information Technology
Metrics and Productivity Institute. ITMPI is a wholly-owned subsidiary of
Computer Aid Inc. The ITMPI web site is a useful portal into a broad
range of measurement, management, and software engineering informa-
tion. The ITMPI web site also provides useful links to many other web
sites that contain topics of interest on software issues.
http://www.sei.cmu.edu. This is the web site for the Software Engineering
Institute (SEI). The SEI is a federally-sponsored non-profit organization
located on the campus of Carnegie Mellon University in Pittsburgh, PA.
The SEI carries out a number of research programs dealing with software
maturity and capability levels, with quality, risks, measurement and met-
rics, and other topics of interest to the software community.
http://www.stsc.hill.af.mil/CrossTalk. This is the web site of both the Air
Force Software Technology Support Center (STSC) and also the CrossTalk
journal, which is published by the STSC. The STSC gathers data and per-
forms research into a wide variety of software engineering and software
management issues. The CrossTalk journal is one of few technical journals
that publish full-length technical articles of 4,000 words or more. Although
the Air Force is the sponsor of STSC and CrossTalk, many topics are also
relevant to the civilian community. Issues such as quality control, estimat-
ing, maintenance, measurement, and metrics have universal relevance.
Chapter 2
Wastage
Lost Time and Money Due to Poor
Software Quality
Introduction
When the work patterns of software development and maintenance
projects are analyzed, a surprising hypothesis emerges. Software quality
is so poor that productivity is much lower than it should be. Poor qual-
ity shows up in three major software economic problems: (1) cancelled
projects that are never released due to poor quality; (2) schedule delays
due to poor quality extending test duration; and (3) excessive work
on finding and fixing bugs, which often exceeds 60% of total software
effort.
The amount of software effort spent on software projects that will
be canceled due to excessive error content appears to absorb more than
20% of the U.S. software work force. In addition, about 60% of the U.S.
software engineering work time centers on finding and fixing errors,
which might have been avoided. Finally, software schedules for major
applications are about 25% longer than they should be due to poor qual-
ity expanding testing intervals.
Out of a full software engineering working year, only about 48 days
are spent on code development. About 53 days are spent on finding and
fixing bugs in current applications. About 16 days are spent on canceled
projects. About 15 days are spent on inspections and static analysis.
DOI: 10.1201/9781003193128-3 47
48 ◾ Software Development Patterns and Antipatterns
About 13 days are spent on bug repairs in legacy code, i.e. 97 days per
year are essentially “wastage” spent on bugs that might have been pre-
vented or removed inexpensively. No other major occupation appears to
devote so much effort to canceled projects or to defect repairs as does
software engineering.
Note that the corona virus of 2020 changed software engineering due to many
factors such as working from home and the elimination of group activities
such as inspections or staff meetings, unless they are done via Zoom or
remotely. No doubt software productivity will decline and quality will become
worse, but it is premature to know the actual losses that will accrue.
Table 2.2 shows the kind of work pattern that software engineering
needs to meet ever-growing business demands for new kinds of reliable
software. The development schedule drops from 16.23 calendar months
to 4.71 calendar months. High severity bugs drop from 39 to 2. These
improvements are urgently needed to place the future of software engi-
neering on a sound economic basis. It is obvious that software engineer-
ing needs to shift work away from defect repairs and failing projects and
put more effort into effective development. Table 2.2 raises annual code
development up to 119 work days per year in 2028 compared to only 48
work days per year in 2020.
Table 2.3 shows a side-by-side comparison between the 2020 and
2030 assumptions with 85% reuse for 2030.
As can be seen, there are major differences in the two scenarios due
mainly to the assumption of 85% reuse circa 2030.
Tables 2.1, 2.2, and 2.3 show individual projects of 1,000 function
points in size. It is also interesting to scale up the results to national
levels. Table 2.4 shows the approximate U.S. software work force and
the number of workers on projects that will be canceled and never deliv-
ered, mainly due to poor quality.
The data on the percent of projects cancelled within each size range
is taken from the author’s book on Patterns of Software Systems Failure
and Success ( Jones 1995) and updated using data from the more recent
book, The Economics of Software Quality ( Jones and Bonsigour, 2012)
plus newer data from client studies done through mid-2017 as published
in two new books from 2017: Software Methodologies: A Quantified
Comparison (2016); Software National and Industry Comparisons
(2017).
Very few small projects are canceled, but a majority of large systems
are terminated without being completed. Although many reasons are
associated with cancelled projects, the root cause for most is that they
overran both budgets and schedules due to excessive error content. The
52 ◾ Software Development Patterns and Antipatterns
delays and overruns are mainly due to poor quality, which stretches out
testing far beyond expectations.
The next topic of interest is to quantify the staffing associated with
six size plateaus, in order to determine the amount of software effort
that appears to be wasted on projects that do not reach completion.
Table 2.4 shows the approximate numbers of U.S. software person-
nel assigned to the projects within each of the six main size plateaus.
Obviously large systems, some of which have hundreds of software
engineers, absorb the bulk of the available software personnel.
Table 2.4 shows that the software industry has major problems trying
to develop applications >10,000 function points in size. In these larger
size ranges, cancellations are a major economic problem, and the proj-
ects that are not canceled, all run late and exceed their budgets. Less
than 5% of major systems have satisfactory conclusion.
Indeed for large systems that are outsourced, it looks like about
5% end up in court for breach of contract litigation. It is professionally
embarrassing to have the same percentage of lawsuits as we have suc-
cessful project outcomes!
Tables 2.1, 2.2, 2.3, and 2.4 present a troubling picture. Because can-
celled projects are more frequent for large applications than for small,
Table 2.3 Comparison of the 2020 and 2030 Assumptions with 85% Reuse
2020 2030 Difference
Activities Work Days Work Days Work Days
Regular weekends 104 104 0
Testing and defect repairs 53 8 −45
New code development 48 119 71
Meetings and status tracking 24 24 0
Producing paper documents 21 21 0
(Continued)
54 ◾ Software Development Patterns and Antipatterns
more than 22% of the available software personnel in the United States
are working on projects that will not be completed!
1. Reusable requirements.
2. Reusable architecture.
3. Reusable design.
4. Reusable code.
5. Reusable project plans and estimates.
6. Reusable test plans.
7. Reusable test scripts.
56 ◾ Software Development Patterns and Antipatterns
Among the author’s clients that use Agile, the average value for DRE
ranges about 92%–94%. This is certainly better than the 85% to 90%
industry average, but not up to the 99% actually needed to achieve opti-
mal results.
Methods with stronger quality control than Agile include personal
software process (PSP), team software process (TSP), and the rational
unified process (RUP) which often top 97% in DRE) (Applied Software
Measurement, Jones, 2008).
Some but not all agile projects use “pair programming” in which two
programmers share an office and a work station and take turns cod-
ing while the other watches and “navigates.” Pair programming is very
expensive but only benefits quality by about 15% compared to single
programmers. Pair programming is much less effective in finding bugs
than formal inspections, which usually bring 3–5 personnel together to
seek out bugs using formal methods. Critical inspection combined with
static analysis has higher defect removal than pair programming at costs
below 50% of pair programming.
Agile is a definite improvement for quality compared to waterfall
development but is not as effective as the quality-strong methods of TSP
and the RUP.
Average projects usually do not predict defects by origin and do not
measure DRE until testing starts, i.e. requirements and design defects
are under reported and sometimes invisible.
A recent advance since 1984 in software quality control now fre-
quently used by average as well as advanced organizations is that of
static analysis. Static analysis tools can find about 55%–65% of code
defects, which is much higher than most forms of testing.
Many test stages such as unit test, function test, regression test, etc.
are only about 35% efficient in finding code bugs, or find one bug out
of three. This explains why 6–10 separate kinds of testing are needed.
The kinds of companies and projects that are “average” would
include internal software built by hundreds of banks, insurance compa-
nies, retail and wholesale companies, and many government agencies at
federal, state, and municipal levels.
Average quality control has DRE levels from about 85% for large sys-
tems up to 96% for small and simple projects.
Table 2.5 shows the ranges in DRE noted from a sample of 1,000
software projects. The sample included systems and embedded soft-
ware, web projects, cloud projects, information technology projects, and
also defense and commercial packages.
As can be seen, high DRE does not occur often. This is unfortunate
because projects that are above 95.00% in DRE have shorter schedules
and lower costs than projects below 85.00% in DRE. The software indus-
try does not measure either quality or productivity well enough to know
this.
However, the most important economic fact about high quality is:
Projects > 97% in DRE have shorter schedules and lower costs than
projects < 90% in DRE. This is because projects that are low in DRE
have test schedules that are at least twice as long as projects with high
DRE due to omission of pre-test inspections and static analysis!
Table 2.6 shows DRE for four application size plateaus and for six
technology combinations.
As can be seen, DRE varies by size and also by technology stack. A
combination of inspections, static analysis, and formal testing has the
highest DRE values for all sizes.
The DRE metric was first developed by IBM circa 1970. It is normally
calculated by measuring all defects found prior to release to customers,
and then customer-reported defects for the first 90 days of usage (The
Economics of Software Quality, Jones and Bonsignour, 2012).
As of 2020, DRE measures were used by dozens of high-technology
companies, but were not widely used by government agencies or
other industry segments such as banks, insurance, and manufacturing.
However, DRE is one of the most useful of all quality measures. Namcook
suggests that all companies and government agencies use “defect poten-
tials” and “defect removal efficiency” on all projects. The phrase “defect
potentials” also originated in IBM circa 1970 and is the sum total of bugs
that originate in requirements, architecture, design, code, documents,
and “bad fixes” or new bugs found in bug repairs themselves.
Formal testing implies certified test personnel and mathematical test
case design such as use of “design of experiments.” Informal testing
implies untrained uncertified developers.
Note that the corona virus will eliminate group inspections in the same room,
and will probably switch to Zoom inspections.
Table 2.7 shows the schedules in calendar months for the same combina-
tions of application size plateaus and also for technology combinations.
As can be seen from Table 2.6, high quality does not add time to
development. High quality shortens schedules because the main rea-
son for schedule delays is too many bugs when testing starts, which
stretches out test schedules by weeks or months (Estimating Software
Costs, Jones, 2007).
Note: Namcook Analytics’ Software Risk Master (SRM) tool can pre-
dict the results of any combination of defect prevention methods, pre-
test defect removal methods, and testing stages. SRM can also predict
the results of 57 development methods, 79 programming languages, and
the impact of all five levels of the CMMI.
Since one of the major forms of “wastage” involves canceled projects,
Table 2.8 shows the impact of high quality on project cancellation rates.
Since many cancelled projects are above 10,000 function points in size,
only data for large systems is shown in Table 2.8.
As can be seen from Table 2.8, poor quality control and lack of pre-
test inspections and static analysis is a major cause of cancelled projects.
Table 2.9 shows the impact of quality control on software out-
source litigation. The author of this book has been an expert witness
in 15 breach of contract cases and has provided data to other testifying
experts in about 50 other cases. In fact data from the author’s book The
Economics of Software Quality ( Jones and Bonsignour, 2011) is used in
many lawsuits, sometimes by both sides, because there is no other use-
ful published source of quality data.
As can be seen, poor quality control on outsourced projects has an
alarmingly high probability of ending up in court either because the
projects are cancelled or because of major errors after deployment that
prevent the owners from using the software as intended.
Table 2.10 shows the kinds of industries that are most likely to
be found in each of the five levels of quality control. In general, the
industries with the best quality tend to be those that build complex
physical devices such as medical equipment, aircraft, or telephone
switching systems.
Note that the corona virus of 2020 has delayed court proceedings and is caus-
ing physical changes in court room structures such as plastic walls protecting
the judge, witnesses, and attorneys. Jurors will no longer sit in a jury box side
by side but probably will use Zoom from external locations elsewhere in the
courthouse.
The industries that bring up the bottom with frequently poor quality
control include state, municipal, and federal civilian government groups
(military software is fairly good in quality control), and also stock trad-
ing software. For that matter, tax software is not very good and there are
errors in things like property tax and income tax calculations.
Table 2.10 shows trends but the data is not absolute. Some govern-
ment groups are better than expected, but not very many. Namcook has
data on over 70 industry sectors.
The final table in this chapter is taken from Chapter 7 of the author’s
book The Economics of Software Quality with Olivier Bonsignour; Jones
2011 as the co-author. Table 2.11 shows the approximate distribution of
excellent, average, and poor software quality by application size.
64 ◾ Software Development Patterns and Antipatterns
The impact of the corona virus on software engineering cannot yet be pre-
dicted in mid-2020. No doubt there will be an impact due to the elimination of
staff meetings and face to face events such as inspections. Possibly Zoom or an
equivalent can substitute but the author’s experience with Zoom is that it is not
yet an effective substitute for live meetings and especially for meetings where
documents need to be shared and reviewed. The author of this book has never
tried Zoom for software code inspection but he doubts if it will be easy.
Chapter 3
Introduction
The software industry has a bad and justified reputation for poor quality
and low reliability. A key reason for poor quality is that quality measure-
ments are embarrassingly bad. Metrics such as cost per defect and lines
of code distort reality and conceal software quality. Software measures
omit important data, use hazardous metrics, and are not sufficient to
show the effectiveness of various quality control methods such as static
analysis, inspections, and testing.
Software quality depends upon two important variables. The first
variable is that of “defect potentials” or the sum total of bugs likely to
occur in requirements, architecture, design, code, documents, and “bad
fixes” or new bugs in bug repairs. The second important measure is
“defect removal efficiency (DRE)” or the percentage of bugs found and
eliminated before release of software to clients.
The metrics of defect potentials and defect removal efficiency (DRE)
were developed by IBM circa 1970 and are widely used by technology
companies and also by insurance companies, banks, and other compa-
nies with large software organizations.
Poor software quality is an endemic problem of the software indus-
try. Many large systems are canceled due to poor quality. Almost all
large systems run late and are over budget due to poor quality. There
DOI: 10.1201/9781003193128-4 67
68 ◾ Software Development Patterns and Antipatterns
are many lawsuits for poor quality. There are billions of dollars wasted
by software customers due to customer damages caused by poor quality.
There are also rapidly increasing numbers of cyber-attacks most due to
poor software quality. Why do these endemic problems occur?
An important root cause is that most software quality companies
are “one-trick-ponies” that only care about one subject. Some quality
companies sell automated testing, some sell static analysis, some sell
automated proofs, or whatever; no company sells a full suite of soft-
ware quality tools and methods that encompass all sources of software
defects and all forms of software defect removal.
Effective quality control needs a synergistic combination of defect
prevention, pre-test defect removal, and formal testing with certified test
personnel. Worse, most quality companies have zero empirical data as to
the efficacy of their tools and methods. They make vast claims of better
quality but provide no case studies or validated results.
Software quality data should be based on function point metrics
because function points can show defects from all sources such as
requirements, design, etc. Table 3.1 shows approximate U.S. averages
for defect potentials for poor-quality and high-quality software projects.
If drugs and pharmaceutical products were released to the public
with as little validation as software quality tools, the U.S. death rate
would probably be twice what it actually is today.
Following is a list of 56 software topics that include defect origins,
defect prevention methods, and defect removal stages that run from
early requirements to post-delivery for a large system of a nominal
10,000 function points and 1,500 SNAP points in size in Java.
All of these 56 quality control factors are important for large systems
in the 10,000 function point size range. The problem today is that no
known software quality company sells more than one or two of these 56
quality methods or even knows about the others!
Few quality companies and even fewer of their clients know about
the other factors! A narrow focus on testing and basic ignorance of the
suite of effective software defect prevention and defect removal meth-
ods is an endemic and chronic problem of the software industry.
If a reader wanted to learn about all 56 quality factors, he or she
would probably need a dozen courses from at least half a dozen soft-
ware quality training companies because none of them cover the full
spectrum of effective quality tools and methods or even know about
them!
None of the major international standards such as ISO and IEEE stan-
dards on software quality are fully adequate because none of them ask
for quantitative quality data and all ignore basic software quality factors
such as defect potentials and DRE.
Root Causes of Poor Software Quality ◾ 69
(Continued)
70 ◾ Software Development Patterns and Antipatterns
Worse, these courses even from major quality companies would lack
quantitative data on defect potentials, DRE, bad-fix injections, error-
prone modules, or any other of the critical topics that quality profes-
sionals should know about. The software industry is running blind due
to the widespread lack of quantitative quality data.
Software quality data is available from some benchmark organiza-
tions such as Davids Consulting, Gartner Group, Namcook Analytics
LLC, TIMetricas, Q/P Management Group/QSM, and several others. But
the combined set of clients for all current quality benchmark organiza-
tions is less than 50,000 customers in an industry employing close to
20,000,000 people on a global basis.
Software quality data can be predicted by some parametric software
estimation tools such as Software Risk Master (SRM), KnowledgePlan,
SEER, SLIM, and COCOMO, but the combined market for all of these
parametric tools is less than 25,000 customers in an industry employing
almost 20,000,000 people on a global basis.
In other words, even companies that offer accurate quality data have
comparatively few clients who are interested in that data, even though
it could save companies and governments billions of dollars in reduced
defect repairs and reduced cyber-attack recovery costs!
It is professionally embarrassing about how unsophisticated software
quality education is compared to medical school curricula for training
physicians.
You probably could not take courses on this set of 56 topics from
any university because their curricula tend to deal only with a few of the
more common methods and concentrate primarily on testing. I have yet
to see a university with quantitative data on software defect volumes,
severity levels, origins, or effective defect removal methods with quan-
titative results.
You might take some courses from non-profit associations such as
the American Society for Quality (ASQ), the Society for Information
Management (SIM), or the Project Management Institute (PMI). But no
single organization in 2016 covers more than a small fraction of the
total intellectual content of effective software quality control. None of
the software non-profit organizations have quantitative data on defect
volumes, severity levels, or DRE.
To illustrate the kind of quality education that is needed, Table 3.2
shows a sample curriculum for software quality assurance testing and
Table 3.3 shows a sample curriculum for software test training.
In today’s world, software quality assurance has an expanding role
in cyber defenses and cyber-attack recovery. Software quality assurance
Root Causes of Poor Software Quality ◾ 73
(Continued)
74 ◾ Software Development Patterns and Antipatterns
(Continued)
76 ◾ Software Development Patterns and Antipatterns
personnel need much more knowledge on security topics than they did
30 years ago.
Today software testing has become a barrier to cyber-attacks so spe-
cial attention is needed for testing software security flaws.
Between software quality assurance training and software test per-
sonnel training, there is a need to expand on both university curricula
Root Causes of Poor Software Quality ◾ 77
The sad thing about poor software quality is that all three of these
problems are treatable conditions that could be eliminated in less than
10 years if one or more major software companies became proactive in
(1) effective quality metrics and measures, (2) fact-based education with
quantitative data, and (3) expanded quality control that encompassed
effective quality measures, effective defect prevention, effective pre-test
defect removal, and effective formal testing.
The author’s hope is that vaccinations and effective treatments for
poor software quality will be developed soon such as vaccinations for
smallpox and polio were developed, and antibiotics were developed for
many bacterial infections. Dozens of companies worked toward a vac-
cine for COVID-19 which are now available and still expanding in 2021.
There are still untreatable medical conditions, but overall medicine
has made huge advances in prevention and control of hundreds of for-
merly serious and common diseases. Software has not yet made any
major advances in quality control although some modern methods such
as static analysis hold promise.
Black, Rex; Managing the Testing Process: Practical Tools and Techniques
for Managing Hardware and Software Testing; Wiley; 2009; ISBN: 10-
0470404159; 672 pages.
Boehm, Barry; Software Engineering Economics; Prentice Hall, Englewood
Cliffs, NJ; 1981; 900 pages.
Brooks, Fred; The Mythical Man-Month, 1974 rev ed.; Addison-Wesley, Reading,
MA; 1995.
Chelf, Ben; and Jetley, Raoul; Diagnosing Medical Device Software Defects Using
Static Analysis; Coverity Technical Report, San Francisco, CA; 2008.
Chess, Brian; and West, Jacob; Secure Programming with Static Analysis;
Addison Wesley, Boston, MA; 2007; ISBN: 13:978-0321424778; 624 pages.
Cohen, Lou; Quality Function Deployment – How to Make QFD Work for You;
Prentice Hall, Upper Saddle River, NJ; 1995; ISBN: 10-0201633302; 368 pages.
Crosby, Philip B.; Quality Is Free; New American Library, Mentor Books, New
York, NY; 1979; 270 pages.
Charette, Bob; Software Engineering Risk Analysis and Management; McGraw
Hill, New York, NY; 1989.
Charette, Bob; Application Strategies for Risk Management; McGraw Hill, New
York, NY; 1990.
Constantine, Larry L; Beyond Chaos: The Expert Edge in Managing Software
Development; ACM Press; 2001.
DeMarco, Tom; Peopleware: Productive Projects and Teams; Dorset House, New
York, NY; 1999; ISBN: 10-0932633439; 245 pages.
DeMarco, Tom; Controlling Software Projects; Yourdon Press, New York, NY;
1982; ISBN: 0-917072-32-4; 284 pages.
Everett, Gerald D.; and McLeod, Raymond; Software Testing; John Wiley & Sons,
Hoboken, NJ; 2007; ISBN: 978-0-471-79371-7; 261 pages.
Ewusi-Mensah, Kweku; Software Development Failures; MIT Press, Cambridge,
MA; 2003; ISBN: 0-26205072-2 276 pages.
Flowers, Stephen; Software Failures: Management Failures; Amazing Stories
and Cautionary Tales; John Wiley & Sons; 1996.
Gack, Gary; Managing the Black Hole: The Executives Guide to Software
Project Risk; Business Expert Publishing, Thomson, GA; 2010; ISBN: 10:
1-935602-01-9.
Gack, Gary; Applying Six Sigma to Software Implementation Projects; http://
software.isixsigma.com/library/content/c040915b.asp.
Galorath, Dan; and Evans, Michael; Software Sizing, Estimation, and Risk
Management: When Performance is Measured Performance Improves;
Auerbach; Philadelphia, PA; 2006.
Garmus, David; and Herron, David; Function Point Analysis – Measurement
Practices for Successful Software Projects; Addison Wesley Longman,
Boston, MA; 2001; ISBN: 0-201-69944-3; 363 pages.
Gibbs, T. Wayt; “Trends in Computing: Software’s Chronic Crisis”; Scientific
American Magazine, Vol. 271, No. 3, International edition; September
1994; pp 72–81.
Gilb, Tom; and Graham, Dorothy; Software Inspections; Addison Wesley,
Reading, MA; 1993; ISBN: 10: 0201631814.
Root Causes of Poor Software Quality ◾ 81
Harris, Michael D.S., Herron, David; and Iwanacki, Stasia; The Business Value of
IT; CRC Press, Auerbach Publications; 2009.
Hill, Peter R. Practical Software Project Estimation; McGraw Hill; 2010.
Hill, Peter; Jones Capers; and Reifer, Don; The Impact of Software Size on
Productivity; International Software Standards Benchmark Group (ISBSG),
Melbourne, Australia; September 2013.
Howard, Alan (Ed.); Software Metrics and Project Management Tools; Applied
Computer Research (ACR), Phoenix, AZ; 1997; 30 pages.
Humphrey, Watts; Managing the Software Process; Addison Wesley, Reading,
MA; 1989.
International Function Point Users Group (IFPUG); IT Measurement – Practical
Advice from the Experts; Addison Wesley Longman, Boston, MA; 2002;
ISBN: 0-201-74158-X; 759 pages.
Jacobsen, Ivar, Griss, Martin; and Jonsson, Patrick; Software Reuse - Architecture,
Process, and Organization for Business Success; Addison Wesley Longman,
Reading, MA; 1997; ISBN: 0-201-92476-5; 500 pages.
Jacobsen, Ivar et al; The Essence of Software Engineering; Applying the SEMAT
Kernel; Addison Wesley Professional; 2013.
Jones, Capers; Software Risk Master (SRM) tutorial; Namcook Analytics LLC,
Narragansett, RI; 2015a.
Jones, Capers; Software Defect Origins and Removal Methods; Namcook
Analytics LLC, Narragansett, RI; 2015b.
Jones, Capers; The Mess of Software Metrics; Namcook Analytics LLC,
Narragansett, RI; 2015c.
Jones, Capers; The Technical and Social History of Software Engineering;
Addison Wesley; 2014.
Jones, Capers; and Bonsignour, Olivier; The Economics of Software Quality;
Addison Wesley, Boston, MA; 2011; ISBN: 978-0-13-258220-9; 587 pages.
Jones, Capers; Software Engineering Best Practices; McGraw Hill, New York,
NY; 2010; ISBN: 978-0-07-162161-8; 660 pages.
Jones, Capers; Applied Software Measurement, 3rd ed.; McGraw Hill; 2008;
ISBN: 978=0-07-150244-3; 662 pages.
Jones, Capers; Critical Problems in Software Measurement; Information Systems
Management Group; 1993a; ISBN: 1-56909-000-9; 195 pages.
Jones, Capers; Software Productivity and Quality Today -- The Worldwide
Perspective; Information Systems Management Group; 1993b; ISBN:
156909-001-7; 200 pages.
Jones, Capers; Assessment and Control of Software Risks; Prentice Hall; 1994;
ISBN: 0-13-741406-4; 711 pages.
Jones, Capers; New Directions in Software Management; Information Systems
Management Group; n.d.; ISBN: 1-56909-009-2; 150 pages.
Jones, Capers; Patterns of Software System Failure and Success; International
Thomson Computer Press, Boston, MA; December 1995; ISBN: 1-850-
32804-8; 250; 292 pages.
Jones, Capers; “Sizing Up Software”; Scientific American Magazine, Vol. 279,
No. 6; December 1998; pp. 104–111.
82 ◾ Software Development Patterns and Antipatterns
Jones, Capers; Conflict and Litigation Between Software Clients and Developers;
Software Productivity Research Technical Report; Narragansett, RI; 2007a;
65 pages.
Jones, Capers; Software Quality – Analysis and Guidelines for Success;
International Thomson Computer Press, Boston, MA; 1997a; ISBN: 1-85032-
876-6; 492 pages.
Jones, Capers; Estimating Software Costs, 2nd ed.; McGraw Hill, New York, NY;
2007b; 700 pages.
Jones, Capers; The Economics of Object-Oriented Software; SPR Technical Report;
Software Productivity Research, Burlington, MA; April 1997b; 22 pages.
Jones, Capers; Software Project Management Practices: Failure Versus Success;
Crosstalk; October 2004.
Jones, Capers; Software Estimating Methods for Large Projects; Crosstalk; April
2005.
Kan, Stephen H.; Metrics and Models in Software Quality Engineering, 2nd ed.;
Addison Wesley Longman, Boston, MA; 2003; ISBN: 0-201-72915-6; 528
pages.
Land, Susan K; Smith, Douglas B; and Walz, John Z; Practical Support for Lean
Six Sigma Software Process Definition: Using IEEE Software Engineering
Standards; Wiley-Blackwell; 2008; ISBN: 10: 0470170808; 312 pages.
McConnell, Steve; Software Project Survival Guide; Microsoft Press; 1997.
Mosley, Daniel J.; The Handbook of MIS Application Software Testing; Yourdon
Press, Prentice Hall, Englewood Cliffs, NJ; 1993; ISBN: 0-13-907007-9; 354
pages.
Nandyal, Raghav; Making Sense of Software Quality Assurance; Tata McGraw
Hill Publishing, New Delhi, India; 2007; ISBN: 0-07-063378-9; 350 pages.
Pressman, Roger; Software Engineering – A Practitioner’s Approach, 6th ed.;
McGraw Hill, New York, NY; 2005; ISBN: 0-07-285318-2.
Radice, Ronald A.; High Qualitiy Low Cost Software Inspections; Paradoxicon
Publishing, Andover, MA; 2002; ISBN: 0-9645913-1-6; 479 pages.
Royce, Walker E.; Software Project Management: A Unified Framework; Addison
Wesley Longman, Reading, MA; 1998; ISBN: 0-201-30958-0.
Starr, Paul; The Social Transformation of American Medicine; Basic Books;
Perseus Group; 1982; ISBN: 0-465-07834-2. NOTE: This book won a
Pulitzer Prize in 1982 and is highly recommended as a guide for improv-
ing both professional education and professional status. There is much of
value for the software community.
Strassmann, Paul; Information Payoff; Information Economics Press, Stamford,
CT; 1985.
Strassmann, Paul; Governance of Information Management: The Concept of an
Information Constitution, 2nd ed.; (eBook); Information Economics Press,
Stamford, CT; 2004.
Strassmann, Paul; Information Productivity; Information Economics Press,
Stamford, CT; 1999.
Weinberg, Gerald M.; The Psychology of Computer Programming; Van Nostrand
Reinhold, New York, NY; 1971; ISBN: 0-442-29264-3; 288 pages.
Root Causes of Poor Software Quality ◾ 83
Weinberg, Gerald M.; Becoming a Technical Leader; Dorset House, New York,
NY; 1986; ISBN: 0-932633-02-1; 284 pages.
Weinberg, Gerald. Quality Software Management – Vol. 2: First-Order Measurement;
Dorset House Press, New York, NY; 1993; ISBN: 0-932633-24-2; 360 pages.
Wiegers, Karl A.; Creating a Software Engineering Culture; Dorset House Press,
New York, NY; 1996; ISBN: 0-932633-33-1; 358 pages.
Wiegers, Karl E.; Peer Reviews in Software – A Practical Guide; Addison Wesley
Longman, Boston, MA; 2002; ISBN: 0-201-73485-0; 232 pages.
Yourdon, Ed; Outsource: Competing in the Global Productivity Race; Prentice
Hall PTR, Upper Saddle River, NJ; 2005; ISBN: 0-13-147571-1; 251 pages.
Yourdon, Ed; Death March – The Complete Software Developer’s Guide to
Surviving “Mission Impossible” Projects; Prentice Hall PTR, Upper Saddle
River, NJ; 1997; ISBN: 0-13-748310-4; 218 pages.
Chapter 4
Introduction
From working as an expert witness in a number of lawsuits where large
software projects were cancelled or did not operate correctly when
deployed, six major problems occur repeatedly: (1) accurate estimates
are not produced or are overruled; (2) accurate estimates are not sup-
ported by defensible benchmarks; (3) requirement changes are not han-
dled effectively; (4) quality control is deficient; (5) progress tracking
fails to alert higher management to the seriousness of the issues; (6)
contracts themselves omit important topics such as change control and
quality, or include hazardous terms.
Much of the software literature deals with “best practices.” This book
concentrates on “worst practices” or the factors that most often lead to
failure and litigation.
For the purposes of this book, software “failures” are defined as soft-
ware projects which met any of these attributes:
Although there are many factors associated with schedule delays and
project cancellations, the failures that end up in court always seem to
have six major deficiencies:
DOI: 10.1201/9781003193128-5 85
86 ◾ Software Development Patterns and Antipatterns
used any formal estimating methods at all when we first carried out soft-
ware process evaluation studies. It is alarming that 80% of U.S. software
companies and projects in 2016 still lag in formal sizing and the use of
parametric estimation tools.
However just because an accurate estimate can be produced using a
commercial parametric estimating tool that does not mean that clients
or executives will accept it. In fact from information presented during
litigation, about half of the cases did not produce accurate estimates at
all and did not use parametric estimating tools. Manual estimates tend
toward optimism or predicting shorter schedules and lower costs than
actually occur.
cost element for large systems, and takes more time than any other
activity.
Both “defect potentials” and “defect removal efficiency” should be
measured for every project. The “defect potentials” are the sum of all
classes of defects, i.e. defects found in requirements, design, source
code, user documents, and “bad fixes” or secondary defects. It would be
desirable to include defects in test cases too, since there may be more
defects in test libraries than in the applications being tested.
The phrase “defect removal efficiency” (DRE) refers to the percent-
age of defects found before delivery of the software to its actual clients
or users. If the development team finds 900 defects and the users find
100 defects in a standard time period after release (normally 90 days),
then it is obvious that the DRE is 90%.
The author of this book strongly recommends that DRE levels be
included in all software outsource and development contracts, with
96% being a proposed minimum acceptable level of DRE. For medical
devices and weapons systems, a higher rate of about 99% DRE should
be written in to the contracts.
The U.S. average today is only about 92%. Agile projects average
about 92%; waterfall are often below 85%. TSP and RUP are among the
quality strong methods that usually top 96% in DRE.
A rate of 96% is a significant improvement over current norms. For
some mission-critical applications, a higher level such as 99.8% might
be required. It is technically challenging to achieve such high levels of
DRE and it can’t be done by testing alone.
Formal inspections and pre-test static analysis plus at least 8 forms
of testing are needed to top 98% in DRE (1 unit test; 2 function test;
3 regression test; 4 component test; 5 performance test; 6 usability test;
7 system test; 8 acceptance or beta test.)
Table 4.2 shows combinations of quality control factors that can lead
to high, average, or poor DRE.
For projects in the 10,000 function point size range, the successful
ones accumulate development totals of around 4.0 defects per function
point and remove about 98% of them before delivery to customers. In
other words, the number of delivered defects is about 0.2 defects per
function point or 800 total latent defects. Of these about, 10% or 80
would be fairly serious defects. The rest would be minor or cosmetic
defects. Stabilization or the number of calendar months to achieve safe
operation of the application would be about 2.5 months.
By contrast, the unsuccessful projects of 10,000 function points that
end up in court accumulate development totals of around 6.0 defects
per function point and remove only about 85% of them before delivery.
The number of delivered defects is about 0.9 defects per function point
Defenses Against Breach of Contract Litigation ◾ 91
(Continued)
94 ◾ Software Development Patterns and Antipatterns
Table 4.4 Suggested Format for Monthly Status Reports for Software
Projects
1 Status of last month’s “red flag” problems
2 New “red flag” problems noted this month
3 Change requests processed this month versus change requests
predicted
4 Change requests predicted for next month
5 Size in function points for this month’s change requests
6 Size in function points predicted for next month’s change requests
7 Schedule impacts of this month’s change requests
8 Cost impacts of this month’s change requests
9 Quality impacts of this month’s change requests
10 Defects found this month versus defects predicted
11 Defects predicted for next month
12 Costs expended this month versus costs predicted
13 Costs predicted for next month
14 Deliverables completed this month versus deliverables predicted
15 Deliverables predicted for next month
technology can now predict the sizes of both specifications and the
volume of source code needed. Defect estimating tools can predict the
numbers of bugs or errors that might be encountered and discovered.
Although such milestones are not perfect, they are better than the for-
mer approaches.
Project management is responsible for establishing milestones, mon-
itoring their completion, and reporting truthfully on whether the mile-
stones were successfully completed or encountered problems. When
serious problems are encountered, it is necessary to correct the prob-
lems before reporting that the milestone has been completed.
Failing or delayed projects usually lack serious milestone tracking.
Activities are often reported as finished while work was still on-going.
Milestones on failing projects are usually dates on a calendar rather than
completion and review of actual deliverables.
Delivering documents or code segments that are incomplete, contain
errors, and cannot support downstream development work is not the
way milestones are used by industry leaders.
In more than a dozen legal cases involving projects that failed or
were never able to operate successfully, project tracking was inadequate
in every case. Problems were either ignored or brushed aside, rather
than being addressed and solved.
Because milestone tracking occurs throughout software develop-
ment, it is the last line of defense against project failures and delays.
Milestones should be established formally and should be based on
reviews, inspections, and tests of deliverables. Milestones should not be
the dates that deliverables more or less were finished. Milestones should
reflect the dates that finished deliverables were validated by means of
inspections, testing, and quality assurance review.
average, but it was not zero-defect software and hence the vendor
was sued.
• A fixed-price contract had clauses for “out of scope” requirements
changes. In this case, the client unilaterally added 82 major changes
totaling about 3,000 new function points. But the contract did not
define the phrase “out of scope” and the client asserted that the
changes were merely elaborations to existing requirements and did
not want to pay for them.
• In another fixed-price contract, the vendor added about 5,000
function points of new features very late in development. Here the
client was willing to pay for the added features. However, features
added after design and during coding are more expensive to build
than features during normal development. In this case, the vendor
was asking for additional payments to cover the approximate 15%
increase in costs for the late features. Needless to say there should
be a sliding scale of costs that goes up for features added 3, 6, 9,
12, or more months after the initial requirements are defined and
approved by the client. The fee structure might be something like
increase by 3%, 5%, 7% 12%, and 15% based on calendar month
intervals.
• In several contracts where the plaintiff alleged poor quality on
the part of the vendor, the contracts did not have any clauses that
specified acceptable quality, such as DRE or maximum numbers
of bugs found during acceptance test. In the absence of any con-
tractual definitions of “poor quality,” such charges are difficult to
prove.
The bottom line is that clients, vendor, and their attorneys should be
sure that all outsource contracts include clauses dealing with require-
ments changes, quality, delivered defects, and also penalties for sched-
ule delays caused by vendor actions.
Note that the author of this book is not an attorney, and this is not
legal advice. But it is obvious that every software outsource contract
should include clauses for quality and for requirements changes, espe-
cially late requirements changes. Attorneys are needed for major out-
source agreements.
can lower the odds of a failing project followed by a lawsuit: (1) use
parametric estimation tools and avoid manual estimates; (2) look at the
actual benchmark results of similar projects; (3) make planning and esti-
mating formal activities; (4) plan for and control creeping requirements;
(5) use formal inspections as milestones for tracking project progress;
(6) include pre-test static analysis and inspections in quality control;
(7) collect accurate measurement data during your current project, to
use with future projects; (8) make sure with your attorneys that con-
tracts have suitable clauses for requirements growth and quality levels
of delivered materials. Omitting these two topics can lead to very expen-
sive litigation later.
Overcoming the risks shown here is largely a matter of opposites,
or doing the reverse of what the risk indicates. Thus a well-formed soft-
ware project will create accurate estimates derived from empirical data
and supported by automated tools for handling the critical path issues.
Such estimates will be based on the actual capabilities of the develop-
ment team and will not be arbitrary creations derived without any rigor.
The plans will specifically address the critical issues of change requests
and quality control. In addition, monthly progress reports will also deal
with these critical issues. Accurate progress reports are the last line of
defense against failures.
Suggested Readings
Abrain, Alain; Software Estimating Models; Wiley-IEEE Computer Society; 2015.
Abrain, Alain; Software Metrics and Metrology; Wiley-IEEE Computer Society;
2010.
Abrain, Alain; Software Maintenance Management: Evolution and Continuous
Improvement; Wiley-IEEE Computer Society; 2008.
Beck, Kent; Test-Driven Development; Addison Wesley, Boston, MA; 2002; ISBN:
10: 0321146530; 240 pages.
Black, Rex; Managing the Testing Process: Practical Tools and Techniques
for Managing Hardware and Software Testing; Wiley; 2009; ISBN: 10
0470404159; 672 pages.
Boehm, Barry; Software Engineering Economics; Prentice Hall, Englewood
Cliffs, NJ; 1981; 900 pages.
Brooks, Fred; The Mythical Man-Month, 1995 rev. ed.; Addison Wesley, Reading,
MA; 1974.
Bundschuh, Manfred; and Dekkers, Carol; The IT Metrics Compendium; Springer;
2005.
Charette, Bob; Software Engineering Risk Analysis and Management; McGraw
Hill, New York, NY; 1989.
Defenses Against Breach of Contract Litigation ◾ 99
Charette, Bob; Application Strategies for Risk Management; McGraw Hill, New
York, NY; 1990.
DeMarco, Tom; Controlling Software Projects; Yourdon Press, New York, NY;
1982; ISBN: 0-917072-32-4; 284 pages.
Ebert, Christof; Dumke, Reinder; and Bundschuh, Manfred; Best Practices in
Software Measurement; Springer; 2004.
Everett, Gerald D.; and McLeod, Raymond; Software Testing – Testing Across the
Entire Software Development Life Cycle; IEEE Press; 2007.
Ewusi-Mensah, Kweku; Software Development Failures; MIT Press, Cambridge,
MA; 2003; ISBN: 0-26205072-2; 276 pages.
Fernandini, Patricia L.; A Requirements Pattern; Addison Wesley, Boston, MA;
2002; ISBN: 0-201-73826-0.
Flowers, Stephen; Software Failures: Management Failures; Amazing Stories
and Cautionary Tales; John Wiley & Sons; 1996.
Gack, Gary; Managing the Black Hole: The Executives Guide to Software
Project Risk; Business Expert Publishing, Thomson, GA; 2010; ISBN: 10:
1-935602-01-9.
Galorath, Dan; and Evans, Michael; Software Sizing, Estimation, and Risk
Management: When Performance is Measured Performance Improves;
Auerbach; Philadelphia, PA; 2006.
Garmus, David; and Herron, David; Function Point Analysis – Measurement
Practices for Successful Software Projects; Addison Wesley Longman,
Boston, MA; 2001; ISBN: 0-201-69944-3; 363 pages.
Garmus, David; and Herron, David; Measuring the Software Process: A Practical
Guide to Functional Measurement; Prentice Hall, Englewood Cliffs, NJ;
1995.
Garmus, David; Russac, Janet; and Edwards, Royce; Certified Function Point
Counters Examination Guide; CRC Press; 2010.
Glass, R.L.; Software Runaways: Lessons Learned from Massive Software Project
Failures; Prentice Hall, Englewood Cliffs, NJ; 1998a.
Gibbs, T. Wayt; “Trends in Computing: Software’s Chronic Crisis”; Scientific
American Magazine, 271, No. 3, International ed.; September 1994;
pp. 72–81.
Gilb, Tom; and Graham, Dorothy; Software Inspection; Addison Wesley, Harlow
UK; 1993; ISBN: 10: 0-201-63181-4.
Glass, R.L.; Software Runaways: Lessons Learned from Massive Software Project
Failures; Prentice Hall, Englewood Cliffs, NJ; 1998b.
Harris, Michael D.S.; Herron, David; and Iwanicki, Stasia; The Business Value of
IT; CRC Press, Auerbach, Boca Raton, FL; 2008; ISBN: 978-14200-6474-2.
Hill, Peter; Jones Capers; and Reifer, Don; The Impact of Software Size on
Productivity; International Software Standards Benchmark Group (ISBSG),
Melbourne, Australia, September 2013.
International Function Point Users Group (IFPUG); IT Measurement – Practical
Advice from the Experts; Addison Wesley Longman, Boston, MA; 2002;
ISBN: 0-201-74158-X; 759 pages.
100 ◾ Software Development Patterns and Antipatterns
Johnson, James; et al; The Chaos Report; The Standish Group, West Yarmouth,
MA; 2000.
Jones, Capers; The Technical and Social History of Software Engineering;
Addison Wesley, Boston, MA; 2015 (contains summaries of important soft-
ware industry lawsuits such as anti-trust and patent violations).
Jones, Capers; “Studio 38 in Rhode Island – A Study of Software Risks”; 2012,
published in various Rhode Island newspapers such as the Providence
Journal, South County Independent, Narragansett Times, etc.
Jones, Capers; and Bonsignour, Olivier; The Economics of Software Quality;
Addison Wesley, Boston, MA; 2011; ISBN: 10 0-13-258220-1; 587 pages.
Jones, Capers; Software Engineering Best Practices; McGraw Hill, New York,
NY; 2010; ISBN: 978-0-07-162161-8; 660 pages.
Jones, Capers; Applied Software Measurement, 3rd ed.; McGraw Hill, New York,
NY; 2008; ISBN: 978-0-07-150244-3; 662 pages.
Jones, Capers; Assessment and Control of Software Risks; Prentice Hall,
Englewood Cliffs, NJ; 1994; ISBN: 0-13-741406-4; 711 pages.
Jones, Capers; Patterns of Software System Failure and Success; International
Thomson Computer Press, Boston, MA; December 1995; ISBN: 1-850-
32804-8; 250, 292 pages.
Jones, Capers; Software Quality – Analysis and Guidelines for Success;
International Thomson Computer Press, Boston, MA; 1997; ISBN: 1-85032-
876-6; 492 pages.
Jones, Capers; Estimating Software Costs; McGraw Hill, New York, NY; 2007a;
ISBN: 13-978-0-07-148300-1.
Jones, Capers; Software Assessments, Benchmarks, and Best Practices; Addison
Wesley Longman, Boston, MA; 2000; ISBN: 0-201-48542-7; 657 pages.
Jones, Capers; “Sizing Up Software”; Scientific American Magazine, Vol. 279,
No. 6; December 1998; pp. 104–111.
Jones, Capers; Conflict and Litigation Between Software Clients and Developers;
Software Productivity Research Technical Report, Narragansett, RI; 2007b;
65 pages.
Kan, Stephen H.; Metrics and Models in Software Quality Engineering, 2nd ed.;
Addison Wesley Longman, Boston, MA; 2003; ISBN: 0-201-72915-6; 528
pages.
Pressman, Roger; Software Engineering – A Practitioner’s Approach, 6th ed.;
McGraw Hill, New York, NY; 2005; ISBN: 0-07-285318-2.
Radice, Ronald A.; High Quality Low Cost Software Inspections; Paradoxicon
Publishing, Andover, MA; 2002; ISBN: 0-9645913-1-6; 479 pages.
Robertson, Suzanne; and Robertson, James; Requirements-Led Project
Management; Addison Wesley, Boston, MA; 2005; ISBN: 0-321-18062-3.
Wiegers, Karl E.; Peer Reviews in Software – A Practical Guide; Addison Wesley
Longman, Boston, MA; 2002; ISBN: 0-201-73485-0; 232 pages.
Yourdon, Ed; Death March – The Complete Software Developer’s Guide to
Surviving “Mission Impossible” Projects; Prentice Hall PTR, Upper Saddle
River, NJ; 1997; ISBN: 0-13-748310-4; 218 pages.
Defenses Against Breach of Contract Litigation ◾ 101
Web Sites
Information Technology Metrics and Productivity Institute (ITMPI), www.
ITMPI.org
International Software Benchmarking Standards Group (ISBSG), www.ISBSG.
org
International Function Point Users Group (IFPUG), www.IFPUG.org
Namcook Analytics LLC, www.Namcook.com
Namcook Analytics Blog, http://NamcookAnalytics.com
Reifer Consulting, www.Reifer.com
Software Engineering Institute (SEI), www.SEI.cmu.edu
Software Productivity Research (SPR), www.SPR.com
journal, which is published by the STSC. The STSC gathers data and per-
forms research into a wide variety of software engineering and software
management issues. The CrossTalk journal is one of few technical journals
that publish full-length technical articles of 4,000 words or more. Although
the Air Force is the sponsor of STSC and CrossTalk, many topics are also
relevant to the civilian community. Issues such as quality control, estimat-
ing, maintenance, measurement, and metrics have universal relevance.
Chapter 5
The Mess of
Software Metrics
Introduction
The software industry is one of the largest, wealthiest, and most impor-
tant industries in the modern world. The software industry is also trou-
bled by poor quality and very high cost structures due to the expense of
software development, maintenance, and endemic problems with poor
quality control.
Accurate measurements of software development and maintenance
costs and accurate measurement of quality would be extremely valu-
able. But as of 2017, the software industry labors under a variety of non-
standard and highly inaccurate measures were compounded by very
sloppy measurement practices. For that matter, there is little empirical
data about the efficacy of software standards themselves.
The industry also lacks effective basic definitions for “software pro-
ductivity” and “software quality” and uses a variety of ambiguous defini-
tions that are difficult to predict before software is released and difficult
to measure after the software is released. This chapter suggests defini-
tions for both economic software productivity and software quality that
are both predictable and measurable.
Note: The year 2017 marked the 30th anniversary of function point
metrics. Function point metrics are the best available for measuring soft-
ware economic productivity and software quality.
The software industry has become one of the largest and most suc-
cessful industries in history. However, software applications are among
the most expensive and error-prone manufactured objects in history.
DOI: 10.1201/9781003193128-6 105
106 ◾ Software Development Patterns and Antipatterns
project in the world would be “How can we achieve more than 99%
in defect removal efficiency (DRE)?”
ISO/IEC standards are numerous and cover every industry, not just
software. However, these standards are issued without any proof of
efficacy. After release, some standards have proven to be useful,
some are not so useful, and a few are being criticized so severely
that some software consultants and managers are urging a recall
such as the proposed ISO/IEC testing standard. ISO stands for the
International Organization for Standards (in French) and IEC stands
for International Electrical Commission. While ISO/IEC standards
are the best known, there are other standard groups such as the
Object Management Group (OMG) which recently published a
standard on automatic function points. Here too there is no proof
of efficacy prior to release. There are also national standards such
as ANSI or the American National Standards Institute, and also mili-
tary standards by the U.S. Department of Defense (DoD) and by
similar organizations elsewhere. The entire topic of standards is in
urgent need of due diligence and of empirical data that demon-
strates the value of specific standards after issuance. In total there
are probably several hundred standards groups in the world with
a combined issuance of over 1000 standards, of which probably 50
apply to aspects of software. Of these only a few have solid empiri-
cal data that demonstrates value and efficacy.
Lines of code (LOC) metrics penalize high-level languages and make
low-level languages look better than they are. LOC metrics also
make requirements and design invisible. There are no ISO or other
standards for counting LOC metrics. About half of the papers and
journal articles use physical LOC and half use logical LOC. The dif-
ference between counts of physical and logical LOC can top 500%.
The overall variability of LOC metrics has reached an astounding
2,200% as measured by Joe Schofield, the former president of
IFPUG! LOC metrics make requirements and design invisible and
also ignore requirements and design defects, which outnumber
code defects. Although there are benchmarks based on LOC, the
intrinsic errors of LOC metrics make them unreliable. Due to lack
of standards for counting LOC, benchmarks from different vendors
for the same applications can contain widely different results.
Appendix B provides a mathematical proof that LOC metrics do
not measure economic productivity by showing 79 programming
languages with function points and LOC in a side-by-side format.
SNAP point metrics are a new variation on function points intro-
duced by IFPUG in 2012. The term SNAP is an awkward acronym
The Mess of Software Metrics ◾ 113
When a development process has a high percentage of fixed costs, and there is a
decline in the number of units produced, the cost per unit will go up.
The common metrics “work hours per function point” and “work
hours per KLOC” are good examples of productivity definition 1.
116 ◾ Software Development Patterns and Antipatterns
The metrics “function points per month” and “lines of code per month”
are examples of definition 2.
However for “lines of code,” the fixed costs of requirements and
design will cause apparent productivity to be reversed, with low-level
languages seeming better than high-level languages, as shown by the 79
languages listed in Appendix B.
Definition 2 will also encounter the fact that the number of work
hours per month varies widely from country to country. For example,
India works 190 hours per month while the Netherlands work only 115
hours per month. This means that productivity definitions 1 and 2 will
not be the same. A given number of work hours would take fewer cal-
endar months in India than in the Netherlands due to the larger number
of monthly work hours.
Table 5.2 shows the differences between “work hours per function
point” and “function points per month” for 52 countries. The national
work hour column is from the Organization of International Cooperation
and Development (OECD). Table 5.1 assumes a constant value of 15
work hours per function point for an identical application in every
country shown.
No one to date has produced a table similar to Table 5.1 for SNAP
metrics, but it is obvious that work hours per SNAP point and SNAP
points per month will follow the same global patterns as do the older
function point metrics.
Of course differences in experience, methodologies, languages, and
other variables also impact both forms of productivity. Table 5.1 shows
that the two forms are not identical from country to country due to
variations in local work patterns.
(Continued)
118 ◾ Software Development Patterns and Antipatterns
Another definition for quality has been “fitness for use.” But this defi-
nition is ambiguous and cannot be predicted before the software is
released, or even measured well after release.
It is obvious that a workable definition for software quality must be
unambiguous and capable of being predicted before release and then
measured after release and should also be quantified and not purely
subjective.
Another definition for software quality has been a string of words
ending in “…ility” such as reliability and maintainability. However laud-
able these attributes are, they are all ambiguous and difficult to mea-
sure. Further, they are hard to predict before applications are built.
The quality standard ISO/IEC 9126 includes a list of words such as
portability, maintainability, reliability, and maintainability. It is astonish-
ing that there is no discussion of defects or bugs. Worse, the ISO/IEC
definitions are almost impossible to predict before development and are
not easy to measure after release nor are they quantified. It is obvious
that an effective quality measure needs to be predictable, measurable,
and quantifiable.
Reliability is predictable in terms of mean time to failure (MTTF)
and mean time between failures (MTBF). Indeed, these are standard
predictions from the author’s Software Risk Master (SRM) tool. However,
reliability is inversely proportional to delivered defects. Therefore, the
ISO quality standards should have included defect potentials, DRE, and
delivered defect densities.
An effective definition for software quality that can be both predicted
before applications are built and then measured after applications are
delivered is: “Software quality is the absence of defects which would
either cause the application to stop working, or cause it to produce
incorrect results.”
Because delivered defects impact reliability, maintainability, usabil-
ity, fitness for use, conformance to requirements, and also customer
satisfaction any effective definition of software quality must recognize
the central importance of achieving low volumes of delivered defects.
Software quality is impossible without low levels of delivered defects no
matter what definition is used.
This definition has the advantage of being applicable to all software
deliverables including requirements, architecture, design, code, docu-
ments, and even test cases.
If software quality focuses on the prevention or elimination of
defects, there are some effective corollary metrics that are quite useful.
The “defect potential” of a software application is defined as the
sum total of bugs or defects that are likely to be found in requirements,
120 ◾ Software Development Patterns and Antipatterns
To clarify these various terms, Table 5.3 shows defect potentials, and
DRE for an application of 1,000 function points coded in the Java lan-
guage using agile development. Table 5.3 uses even numbers to simplify
the math. The author’s Software Risk Master (SRM) tool predicts the
same kinds of values for actual projects.
All of the values shown in Table 5.3 can be predicted before appli-
cations are developed and then measured after the applications are
released. Thus, software quality can move from an ambiguous and sub-
jective term to a rigorous and quantitative set of measures that can even
be included in software contracts. Note that bugs from requirements
and design cannot be quantified using lines of code or KLOC, which is
why function points are the best choice for quality measurements. It is
possible to retrofit LOC after the fact, but in real life, LOC is not used for
requirements, architecture, and design bug predictions.
Note that Table 5.2 combines non-functional and functional require-
ments defects, which might be separate categories if SNAP metrics are
The Mess of Software Metrics ◾ 121
Table 5.3 Software Quality for 1000 Function Points, Java, and Agile
Development
Defect Potentials Number of Bugs Defects per FP
Requirements defects 750 0.75
Architecture defects 150 0.15
Design defects 1,000 1.00
Code defects 1,350 1.35
Document defects 250 0.25
Sub total 3,500 3.50
Bad fixes 150 0.15
Total 3,650 3.65
Defect removal efficiency (DRE) 97.00% 97.00%
Defects removed 3,540 3.54
Defects delivered 110 0.11
High-severity delivered 15 0.02
1. Requirements
2. Design
3. Coding
4. Testing
5. Integration
6. Documentation
7. Management
1. Requirements defects
2. Architecture defects
3. Design defects
The Mess of Software Metrics ◾ 123
4. Coding defects
5. Document defects
6. Bad fixes or defects in bug repairs
As can be seen, DRE against code defects is higher than against other
defect sources. But the main point is that only function point metrics
124 ◾ Software Development Patterns and Antipatterns
can measure and include all defect sources. The older LOC metric is
worthless for requirements, design, and architecture defects.
A 30-day interval after release will find very few defects since full
usage may not even have begun due to installation and training. IBM
selected a 90-day interval because that allowed normal usage patterns
to unfold. Of course bugs continue to be found after 90 days and also
the software may be updated. A 90-day window is a good compromise
for measuring the DRE of the original version before updates begin to
accumulate.
A 30-day window may be sufficient for small projects <250 function
points. But anyone who has worked on large systems in the 10,000 to
100,000 function point size range knows that installation and training
normally take about a month. Therefore, full production may not even
have started in the first 30 days.
126
Note 1: The table how high-quality defect removal operations
128
7 SQA review 10.00% 17.00% 17.00% 12.00% 12.50% 28.08%
• Prevention costs
• Appraisal costs
• Internal failure costs
• External failure costs
• Total costs
The Mess of Software Metrics ◾ 135
Table 5.7 Major Kinds of Work Performed Under the Generic Term
“Maintenance”
1 Major enhancements (new features of >20 function points).
2 Minor enhancements (new features of <5 function points).
3 Maintenance (repairing defects for good will).
4 Warranty repairs (repairing defects under formal contract).
5 Customer support (responding to client phone calls or problem
reports).
6 Error-prone module removal (eliminating very troublesome code
segments).
7 Mandatory changes (required or statutory changes).
8 Complexity or structural analysis (charting control flow plus
complexity metrics).
9 Code restructuring (reducing cyclomatic and essential complexity).
10 Optimization (increasing performance or throughput).
11 Migration (moving software from one platform to another).
12 Conversion (changing the interface or file structure).
13 Reverse engineering (extracting latent design information from
code).
14 Reengineering (transforming legacy application to modern forms).
15 Dead code removal (removing segments no longer utilized).
16 Dormant application elimination (archiving unused software).
17 Nationalization (modifying software for international use).
18 Mass updates such as Euro or Year 2000 Repairs.
19 Refactoring, or reprogramming applications to improve clarity.
20 Retirement (withdrawing an application from active service)
21 Field service (sending maintenance members to client locations).
22 Reporting bugs or defects to software vendors.
23 Installing updates received from software vendors.
24 Processing invalid defect reports.
25 Processing duplicate defect reports.
Table 5.8 Three-Year Maintenance, Enhancement, and Support Data
136
Year 1 Year 2 Year 3
138
Year 1 Year 2 Year 3
2013 2014 2015 3-Year Total
140
Year 1 Year 2 Year 3
2013 2014 2015 3-Year Total
Using round numbers and even values to simplify the concepts, the
COQ results for a 20,000 function point application with average quality
and Java might be:
If technical debt were included, but if not, the technical debt costs would
probably be an additional $2,500,000. Among the issues with technical
debt is that it focuses attention on a small subset of quality economic
topics and of course does not deal with pre-release quality at all.
No doubt the corona virus of 2020 has had a negative impact on total
cost of ownership due to working at home and not being able to meet
with clients.
due to the fact that SNAP has not yet been applied to maintenance,
enhancements, and user costs.
Note that the TCO costs include normal development, enhancement,
maintenance, and customer support but also user costs. For internal
project users participate in requirements, reviews, inspections, and other
tasks so their costs and contributions should be shown as part of TCO.
Note that customer support costs are low because this particular
application had only 100 users at delivery. Eventually users grew to
more than 200 but initial defects declined so number of customer sup-
port personnel was only one person part time. Had this been a high-
volume commercial application with 500,000 users that grew to over
1,000,000 users customer support would have included dozens of sup-
port personnel and grown constantly.
Note that for internal IT and web projects, operational costs can
also be included in total costs of ownership. However, operational
costs are not relevant as TCO metrics for software that is run externally
by external clients, such as software for automotive controls, avionics
packages, medical devices such as cochlear implants, and commercial
software sold or leased by companies such as Apple, Microsoft, IBM,
and hundreds of others. It is also not a part of most open-source TCO
studies.
Because applications grow at about 8% per year after release, the
author of this book suggests renormalizing application size at the end
of every calendar year or every fiscal year. Table 8 shows a total growth
pattern for 10 years. It is obvious that renormalization needs to occur
fairly often due to the fact that all software applications grow over time
as shown in Table 5.10.
During development applications grow due to requirements creep
at rates that range from below 1% per calendar month to more than
10% per calendar month. After release, applications grow at rates that
range from below 5% per year to more than 15% per year. Note that
for commercial software “mid-life kickers” tend to occur about every 4
years. These are rich collections of new features intended to enhance
competiveness.
1. Since companies own more data than software, there is an urgent need
for a “data point” metric based on the logic of function point metrics.
Currently, neither data quality nor the costs of data acquisition can be
estimated or measured due to the lack of a size metric for data.
2. Since many applications such as embedded software operate in
specific devices, there is a need for a “hardware function point”
metric based on the logic of function points.
3. Since websites are now universal, there is a need for a “website
point” metric based on the logic of function points. This would
measure website contents.
4. Since risks are increasing for software projects, there is a need for
a “risk point” metric based on the logic of function points.
5. Since cyber-attacks are increasing in number and severity, there is
a need for a “security point” metric based on the logic of function
points.
6. Since software value includes both tangible financial value and
also intangible value, there is a need for a “value point” metric
based on the logic of function points.
7. Since software now has millions of human users in every country,
there is a need for a “software usage point” metric based on the
logic of function points.
Table 5.12 Twenty-One Problems that Lack Effective Metrics and Data
1 How does agile quality and productivity compare to other methods?
2 Does agile work well for projects >10,000 function points?
3 How effective is pair programming compared to inspections and
static analysis?
4 Do ISO/IEC quality standards have any tangible results in lowering
defect levels?
5 How effective is the new SEMAT method of software engineering?
6 What are best productivity rates for 100, 1,000, 10,000, and 100,000
function points?
7 What are best quality results for 100, 1,000, 10,000, and 100,000
function points?
8 What are the best quality results for CMMI levels 1, 2, 3, 4, and 5 for
large systems?
9 What industries have the best software quality results?
10 What countries have the best software quality results?
11 How expensive are requirements and design compared to
programming?
12 Do paper documents cost more than source code for defense
software?
13 What is the optimal team size and composition for different kinds of
software?
14 How does data quality compare to software quality?
15 How many delivered high-severity defects might indicate
professional malpractice?
16 How often should software size be renormalized because of
continuous growth?
17 How expensive is software governance?
18 What are the measured impacts of software reuse on productivity
and quality?
19 What are the measured impacts of unpaid overtime on productivity
and schedules?
20 What are the measured impacts of adding people to late software
projects?
21 How does SNAP work for COQ, TCO, and activity-based costs?
148 ◾ Software Development Patterns and Antipatterns
While such claims are often true mathematically, there are three hid-
den problems with cost per defect that are usually not discussed in the
software literature:
1. Cost per defect penalizes quality and is always cheapest where the
greatest numbers of bugs are found.
2. Because more bugs are found at the beginning of development than
at the end, the increase in cost per defect is artificial. Actual time and
motion studies of defect repairs show little variance from end to end.
3. Even if calculated correctly, cost per defect does not measure the true
economic value of improved software quality. Over and above the
costs of finding and fixing bugs, high quality leads to shorter devel-
opment schedules and overall reductions in development costs. These
savings are not included in cost per defect calculations, so the metric
understates the true value of quality by several hundred percent.
The Mess of Software Metrics ◾ 149
The cost per defect metric has very serious shortcomings for economic
studies of software quality. It penalizes high quality and ignores the major
values of shorter schedules, lower development costs, lower maintenance
costs, and lower warranty costs. In general, cost per defect causes more
harm than value as a software metric. Let us consider the cost per defect
problem areas using examples that illustrate the main points.
If the 10 hours of slack time are backed out, leaving 30 hours for
actual testing and bug repairs, the cost per defect would be $2,273.50
for the single bug. This is equal to $22.74 per function point or $454.70
per KLOC.
As quality improves, “cost per defect” rises sharply. The reason for
this is that writing test cases and running them act like fixed costs. It is
a well-known law of manufacturing economics that:
As an application moves through a full test cycle that includes unit test,
function test, regression test, performance test, system test, and accep-
tance test, the time required to write test cases and the time required to
run test cases stays almost constant, but the number of defects found
steadily decreases.
Table 5.13 shows the approximate costs for the three cost elements
of preparation, execution, and repair for the test cycles just cited using
the same rate of $:75.75 per hour for all activities.
What is most interesting about Table 5.12 is that cost per defect rises
steadily as defect volumes come down, even though Table 5.12 uses a
constant value of 5 hours to repair defects for every single test stage! In
other words, every defect identified throughout Table 5.1 had a constant
cost of $378.25 when only repairs are considered.
In fact all three columns use constant values and the only true vari-
able in the example is the number of defects found. In real life, of
course, preparation, execution, and repairs would all be variables. But
by making them constant, it is easier to illustrate the main point: cost
per defect rises as numbers of defects decline.
Since the main reason that cost per defect goes up as defects decline
is due to the fixed costs associated with preparation and execution, it
might be thought that those costs could be backed out and leave only
defect repairs. Doing this would change the apparent results and mini-
mize the errors, but it would introduce three new problems:
1. Removing quality cost elements that may total more than 50% of
total quality costs would make it impossible to study quality eco-
nomics with precision and accuracy.
2. Removing preparation and execution costs would make it impos-
sible to calculate COQ because the calculations for COQ demand
all quality cost elements.
Table 5.13 Cost per Defect for Six Forms of Testing
(Assumes $75.75 per Staff Hour for Costs)
Writing Running Repairing Total Number of $ per
Test Cases Test Cases Defects Costs Defects Defect
Unit test $1,250.00 $750.00 $18,937.50 $20,937.50 50 $418.75
Considering that cost per defect has been among the most widely
used quality metrics for more than 50 years, the literature is surprisingly
ambiguous about what activities go into “cost per defect.” More than
75% of the articles and books that use cost per defect metrics do not
state explicitly whether preparation and executions costs are included
or excluded. In fact a majority of articles do not explain anything at
all but merely show numbers without discussing what activities are
included.
Another major gap is that the literature is silent on variations in cost
per defect by severity level. A study done by the author of this book at
IBM showed that these variations in defect repair intervals were associ-
ated with severity levels.
Table 5.14 shows the results of the study. Since these are customer-
reported defects, “preparation and execution” would have been carried
out by customers and the amounts were not reported to IBM. Peak
effort for each severity level is highlighted in blue.
As can be seen, the overall average would be close to perhaps 5
hours, although the range is quite wide.
As a matter of minor interest, the most troublesome bug found by
the author during the time he was a professional programmer was a bug
found during unit test, which took about 18 hours to analyze and repair.
The software application where the bug occurred was an IBM 1401 pro-
gram being ported to the larger IBM 1410 computer. The bug involved
one instruction, which was valid on both the 1401 and 1410. However,
the two computers did not produce the same machine code. Thus, the
bug could not be found by examination of the source code itself, since
that was correct. The error could only be identified by examining the
machine language generated for the two computers.
In Table 5.14, severity 1 defects mean that the software has stopped
working. Severity 2 means that major features are disabled. Severity 3
refers to minor defects. Severity 4 defects are cosmetic in nature and
do not affect operations. Invalid defects are hardware problems or cus-
tomer errors inadvertently reported as software defects. A surprisingly
large amount of time and effort goes into dealing with invalid defects
although this topic is seldom discussed in the quality literature.
Yet another gap in the “cost per defect” literature is that of defect by
origin. In Table 5.15 are shown the typical results by defect origin points
for 20 common defect types.
Table 5.15 shows “find hours” separately from “repair hours.” The
“find” tasks involve analysis of bug symptoms and the hardware/soft-
ware combinations in use when the bug occurred. The “repair” tasks as
the name implies are those of fixing the bug once it has been identified,
plus regression testing to ensure the repair is not a “bad fix.”
154
◾ Software Development Patterns and Antipatterns
Table 5.14 Defect Repair Hours by Severity Levels for Field Defects
Severity 1 Severity 2 Severity 3 Severity 4 Invalid Average
>40 hours 1.00% 3.00% 0.00% 0.00% 0.00% 0.80%
30–39 hours 3.00% 12.00% 1.00% 0.00% 1.00% 3.40%
20–29 hours 12.00% 20.00% 8.00% 0.00% 4.00% 8.80%
10–19 hours 22.00% 32.00% 10.00% 0.00% 12.00% 15.20%
1–9 hours 48.00% 22.00% 56.00% 40.00% 25.00% 38.20%
>1 hour 14.00% 11.00% 25.00% 60.00% 58.00% 33.60%
Total 100.00% 100.00% 100.00% 100.00% 100.00% 100.00%
The Mess of Software Metrics ◾ 155
Table 5.16 Cost per Function Point for Six Forms of Testing
(Assumes $75.75 per Staff Hour for Costs)
(Assumes 100 Function Points in the Application)
Writing Running
Test Test Repairing Total $ Number
Cases Cases Defects per F.P. of Defects
Unit test $12.50 $7.50 $189.38 $209.38 50
Function test $12.50 $7.50 $75.75 $95.75 20
Regression test $12.50 $7.50 $37.88 $57.88 10
Performance test $12.50 $7.50 $18.94 $38.94 5
System test $12.50 $7.50 $11.36 $31.36 3
Acceptance test $12.50 $7.50 $3.79 $23.79 1
The Mess of Software Metrics ◾ 157
and overall cheaper costs for both development and maintenance. The
total savings from high quality are much greater than the improvements
in defect removal expenses.
Let us consider the value of high quality for a large system in the
10,000 function point size range.
Also held constant is the assumption for every language that the number
of non-code work hours for requirements, architecture, design, docu-
mentation, and management is even 3,000 hours.
As can be seen, Appendix B provides a mathematical proof that LOC
do not measure economic productivity. In Appendix B and in real life,
economic productivity is defined as “producing a specific quantity of
goods for the lowest number of work hours.”
Function points match this definition of economic productivity, but
LOC metrics reverse true economic productivity and make the lan-
guages with the largest number of work hours seem more produc-
tive than the languages with the lowest number of work hours. Of
course results for a single language will not have the problems shown
in Appendix B.
In the following table, “economic productivity” is shown in green
and is the “lowest number of work hours to deliver 1000 function
points.” Economic productivity is NOT “increasing the number of lines
of code per month.”
Although not shown in the table, it also includes a fixed value of 3,000
hours of non-code work for requirements, design, documents, manage-
ment, and the like. Thus “total work hours” in the table is the sum of
code development + non-code effort. Since every language includes a
constant value of 3,000 hours, this non-code effort is the “fixed cost” that
drives up “cost per unit” when LOC declines. In real life, the non-code
work is a variable, but it simplifies the math and makes the essential
point easier to see: LOC penalizes high-level languages (Table 5.18).
It is obvious that in real life no one would produce 1,000 function
points in machine language, JCL, or some of the other languages in
the table. The table is merely illustrative of the fact that while function
points may be constant and non-code hours are fixed costs, coding effort
is variable and proportional to the amount of source code produced.
In Table 5.17, the exact number of KLOC can vary language to lan-
guage, from team to team, and company to company. But that is irrel-
evant to the basic mathematics of the case. There are three aspects to
the math:
162
Size in Total Work Work Hours FP per Work Work Hours LOC per
These three points are nothing more than the standard rules of man-
ufacturing economics applied to software and programming languages.
The LOC metric originated in the 1950s when machine language and
basic assembly were the only languages in use. In those early days, cod-
ing was over 95% of the total effort so the fixed costs of non-code work
barely mattered. It was only after high-level programming languages
began to reduce coding effort and requirements and design became
progressively larger components that the LOC problems occurred.
Table 5.19 shows the coding and non-coding percentages by language
with the caveat that the non-code work is artificially held constant at
3,000 hours.
As can easily be seen for very low-level languages, the problems of
LOC metrics are minor. But as language levels increase, a higher per-
centage of effort goes to non-code work while coding effort progres-
sively gets smaller. Thus, LOC metrics are invalid and hazardous for
high-level languages.
It might be thought that omitting non-code effort and only showing
coding may preserve the usefulness of LOC metrics, but this is not the
case. Productivity is still producing deliverable for the lowest number of
work hours or the lowest amount of effort.
Producing a feature in 500 lines of Objective-C at a rate of 500 LOC
per month has better economic productivity than producing the same
feature in 1000 lines of Java at a rate of 600 LOC per month.
Objective-C took 1 month or 149 work hours for the feature. Java
took 1.66 months or 247 hours. Even though coding speed favors Java
by a rate of 600 LOC per month to 500 LOC per month for Objective-C,
economic productivity clearly belongs to Objective- C because of the
reduced work effort.
Function points were specifically invented by IBM to measure eco-
nomic productivity. Function point metrics stay constant no matter what
programming language is used. Therefore, function points are not trou-
bled by the basic rule of manufacturing economics that when a process
has fixed costs and the number of units goes down, cost per unit goes
up. Function points are the same regardless of programming languages.
Thus, in today’s world of 2021, function point metrics measure software
economic productivity, but LOC metrics do not.
3. Jones, Capers; Software Engineering Best Practices, 1st ed., McGraw Hill, 2010.
4. Jones, Capers; Applied Software Measurement, 3rd ed., McGraw Hill, 2008.
5. Jones, Capers; Estimating Software Costs, 2nd ed., McGraw Hill, 2007.
6. Jones, Capers; Software Assessments, Benchmarks, and Best Practices. Addison
Wesley, 2000.
7. Jones, Capers; Software Quality – Analysis and Guidelines for Success.
International Thomson Press, 1997.
8. Jones, Capers; Patterns of Software Systems Failure and Success. International
Thomson Press, 1995.
9. Jones, Capers; Assessment and Control of Software Risks. Prentice Hall, 1993.
10. Jones, Capers; Critical Problems in Software Measurement. IS Mgt Group, 1993.
Brooks, Fred; The Mythical Man Month; Addison-Wesley, Reading, MA; 1995;
295 pages.
Bundschuh, Manfred; and Dekkers, Carol; The IT Measurement Compendium;
Springer-Verlag, Berlin; 2008; 643 pages.
Brown, Norm (Editor); The Program Manager’s Guide to Software Acquisition
Best Practices, Version 1.0; U.S. Department of Defense, Washington, DC;
July 1995; 142 pages.
Chidamber, S.R.; and Kemerer, C.F.: “A Metrics Suite for Object Oriented Design”;
IEEE Transactions on Software Engineering, Vol. 20; 1994; pp. 476–493.
Chidamber, S.R.; Darcy, D.P.; and Kemerer, C.F.; “Managerial Use of Object
Oriented Software Metrics”; Joseph M. Katz Graduate School of Business,
University of Pittsburgh, Pittsburgh, PA; Working Paper # 750; November
1996; 26 pages.
Cohn, Mike; Agile Estimating and Planning; Prentice Hall PTR, Englewood
Cliffs, NJ; 2005; ISBN: 0131479415.
Conte, S.D.; Dunsmore, H.E.; and Shen, V.Y.; Software Engineering Models and
Metrics; The Benjamin Cummings Publishing Company, Menlo Park, CA,
1986; ISBN: 0-8053-2162-4; 396 pages.
DeMarco, Tom; Controlling Software Projects; Yourdon Press, New York, NY;
1982; ISBN: 0-917072-32-4; 284 pages.
DeMarco, Tom; and Lister, Tim; Peopleware; Dorset House Press, New York, NY;
1987; ISBN: 0-932633-05-6; 188 pages.
DeMarco, Tom; Why Does Software Cost So Much?; Dorset House Press, New
York, NY; 1995; ISBN: 0-932633-34-X; 237 pages.
DeMarco, Tom; Deadline; Dorset House Press, New York, NY; 1997.
Department of the Air Force; Guidelines for Successful Acquisition and
Management of Software Intensive Systems; Vols. 1 and 2; Software
Technology Support Center, Hill Air Force Base, UT; 1994.
Dreger, Brian; Function Point Analysis; Prentice Hall, Englewood Cliffs, NJ;
1989; ISBN: 0-13-332321-8; 185 pages.
Gack, Gary; Managing the Black Hole – The Executives Guide to Project Risk; The
Business Expert Publisher, Thomson, GA; 2010; ISBSG: 10: 1-935602-01-2.
Galea, R.B.; The Boeing Company: 3D Function Point Extensions, Version 2.0,
Release 1.0; Boeing Information Support Services, Seattle, WA; June 1995.
Galorath, Daniel D.; and Evans, Michael W.; Software Sizing, Estimation, and
Risk Management; Auerbach Publications, New York, NY, 2006.
Garmus, David; and Herron, David; Measuring the Software Process: A Practical
Guide to Functional Measurement; Prentice Hall, Englewood Cliffs, NJ;
1995.
Garmus, David; and Herron, David; Function Point Analysis; Addison Wesley
Longman, Boston, MA; 1996.
Garmus, David; Accurate Estimation; Software Development; July 1996; pp 57–65.
Grady, Robert B.; Practical Software Metrics for Project Management and
Process Improvement; Prentice Hall, Englewood Cliffs, NJ; 1992; ISBN:
0-13-720384-5; 270 pages.
The Mess of Software Metrics ◾ 171
Grady, Robert B.; and Caswell, Deborah L.; Software Metrics: Establishing a
Company-Wide Program; Prentice Hall, Englewood Cliffs, NJ; 1987; ISBN:
0-13-821844-7; 288 pages.
Gulledge, Thomas R.; Hutzler, William P.; and Lovelace, Joan S. (Editors); Cost
Estimating and Analysis – Balancing Technology with Declining Budgets;
Springer-Verlag, New York, NY; 1992; ISBN: 0-387-97838-0; 297 pages.
Harris, Michael D.S.; Herron, David; and Iwanacki, Stasia; The Business Value of
IT; CRC Press, Auerbach Publications; 2009.
Hill, Peter R.; Practical Software Project Estimation; McGraw Hill; 2010.
Howard, Alan (Editor); Software Metrics and Project Management Tools; Applied
Computer Research (ACR), Phoenix, AZ; 1997; 30 pages.
Humphrey, Watts S.; Managing the Software Process; Addison Wesley Longman,
Reading, MA; 1989.
Humphrey, Watts; Personal Software Process; Addison Wesley Longman,
Reading, MA; 1997.
Kan, Stephen H.; Metrics and Models in Software Quality Engineering, 2nd ed.;
Addison Wesley Longman, Boston, MA; 2003; ISBN: 0-201-72915-6; 528
pages.
Kemerer, Chris F.; “An Empirical Validation of Software Cost Estimation Models”;
Communications of the ACM; 30; May 1987; pp. 416–429.
Kemerer, C.F.; “Reliability of Function Point Measurement – A Field Experiment”;
Communications of the ACM, Vol. 36; 1993; pp 85–97.
Keys, Jessica; Software Engineering Productivity Handbook; McGraw Hill, New
York, NY; 1993; ISBN: 0-07-911366-4; 651 pages.
Laird, Linda M.; and Brennan, Carol M.; Software Measurement and Estimation:
A Practical Approach; John Wiley & Sons, Hoboken, NJ; 2006; ISBN:
0-471-67622-5; 255 pages.
Love, Tom; Object Lessons; SIGS Books, New York, NY; 1993; ISBN: 0-9627477
3-4; 266 pages.
Marciniak, John J. (Editor); Encyclopedia of Software Engineering; John Wiley &
Sons, New York, NY; 1994; ISBN: 0-471-54002; in two volumes.
McCabe, Thomas J.; “A Complexity Measure”; IEEE Transactions on Software
Engineering; December 1976; pp. 308–320.
McConnell; Software Estimating: Demystifying the Black Art; Microsoft Press,
Redmund, WA; 2006.
Melton, Austin; Software Measurement; International Thomson Press, London,
UK; 1995; ISBN: 1-85032-7178-7.
Mertes, Karen R.; Calibration of the CHECKPOINT Model to the Space and Missile
Systems Center (SMC) Software Database (SWDB); Thesis AFIT/GCA/
LAS/96S- 11, Air Force Institute of Technology (AFIT), Wright Patterson
AFB, Ohio; September 1996; 119 pages.
Mills, Harlan; Software Productivity; Dorset House Press, New York, NY; 1988;
ISBN: 0-932633-10-2; 288 pages.
Muller, Monika; and Abram, Alain (Editors); Metrics in Software Evolution; R.
Oldenbourg Vertag GmbH, Munich; 1995; ISBN: 3-486-23589-3.
172 ◾ Software Development Patterns and Antipatterns
Variations in Software
Costs and Quality by
Application Size
Introduction
Differences in function point size lead to very different kinds of devel-
opment practices and to very different productivity rates at the low end
compared to the high end. For example for some large systems, finding
and fixing bugs and creating paper documents cost more than the code
itself.
For successful results of large systems, early sizing and estimating
using tools such as Software Risk Master (SRM) and careful progress
and cost tracking using tools such as the Automated Project Office
(APO) are required.
In many industries, building large products is not the same as build-
ing small products. Consider the differences in specialization and meth-
ods required to build a rowboat versus building an 80,000-ton cruise
ship.
A rowboat can be constructed by a single individual using only hand
tools. But a large modern cruise ship requires more than 350 workers
including many specialists such a pipe fitters, electricians, steel workers,
painters, and even interior decorators and a few fine artists.
Software follows a similar pattern: building large systems in the
10,000 to 100,000 function point range is more or less equivalent to
Table 6.2 Powers of Ten for 100, 1,000, and 10,000 Function Points
Size in Function Points 100 1,000 10,000
Medium Smart
Examples Update Phone App Local System
Team experience Average Average Average
Methodology Agile Iterative Hybrid
Sample size for this table 150 450 50
CMMI levels (0 = CMMI not 0 1 1
used)
Monthly burdened costs $10,000 $10,000 $10,000
Major Cost Drivers 1 Coding Bug repairs Bug repairs
(rank order)
2 Bug repairs Coding Paperwork
3 Management Paperwork Coding
4 Meetings Management Creep
5 Paperwork Meetings Meetings
6 0 integration Integration Integration
7 0 creep Creep Management
Programming language Java Java Java
Source statements per 53.00 53.00 53.00
function point
Size in logical code statements 5,300 53,000 530,000
(SRM default for LOC)
Size in logical KLOC (SRM 5.30 53.00 530.00
default for KLOC)
Size in physical LOC (not 19,345 193,450 1,934,500
recommended)
Size in physical KLOC (not 19.35 193.45 1,934.50
recommended)
Client planned schedule in 5.25 12.50 28.00
calendar months
Actual Schedule in calendar 5.75 13.80 33.11
months
Plan/actual schedule 0.50 1.30 5.11
difference
Variations in Software Costs and Quality by Application Size ◾ 179
Test Cases for Selected Tests Test Cases Test Cases Test Cases
Unit test 101 1,026 10,461
Function test 112 1,137 11,592
Regression test 50 512 5,216
Component test 67 682 6,955
Performance test 33 341 3,477
Variations in Software Costs and Quality by Application Size ◾ 181
Introduction
As of 2020 software is a major industry, but also a troubling industry.
Software projects have many failures and even more cost and schedule
overruns. Poor software quality remains an endemic problem, in part
because software quality measures are generally incompetent.
Software education is deficient in teaching effective metrics and
effective professional skills. In surveys of corporate CEOs and C-level
executives by the author of this book, software engineering is regarded
as the least professional and most troublesome form of engineering in
major technology companies due to frequent failures and numerous
cost and schedule overruns.
Unlike medical practice and other forms of engineering, the software
industry has been running blind for over 60 years with little or no accu-
rate quantitative data on productivity or quality and no empirical data
that proves the value of software tools, methodologies, or programming
languages. You can hardly be deemed a profession if you can’t measure
economic productivity or quality, or measure the effectiveness of the
tools, languages, and methodologies in common use.
Software quality is weak due to poor quality measures. Since high
quality leads to shorter schedules, lower costs, and reduced risks, qual-
ity improvement via measures of defect potentials and defect removal
efficiency (DRE) is urgently needed.
association with over 235,000 members circa 2020. One of the methods
used for this rapid growth was for the AMA to reach out to various state
and local medical societies and offer reciprocal memberships.
This technique raised AMA membership from a few hundred phy-
sicians to over 80,000 in a few decades and began to give the AMA
enough mass to lobby state governments for requiring medical licens-
ing. The larger membership also gave the AMA enough power to influ-
ence medical school curricula and to even force the closure of some of
the least competent medical schools.
It would also benefit software to have reciprocal memberships among
the various software associations such as the Project Management Institute
(PMI), the IEEE Software Engineering Society, the Society of Information
Management (SIM), the Association of Computing Machinery (ACM), the
International Function Point Users Group (IFPUG), and quite a few oth-
ers. Reciprocal membership among the various function point groups
(COSMIC, FISMA, IFPUG, NESMA, etc.) would be useful too.
It took almost 100 years for medicine to evolve from a craft into a
leading profession. With Paul Starr’s book as a guide, software engineer-
ing could probably evolve into a true profession in another 25 years or
less, starting today.
about one year for other kinds of engineers such as mechanical, electri-
cal, or telecommunications engineers.
For software to take the step from being a craft to becoming a true
profession, we need to solve a number of critical endemic problems that
have plagued software since the beginning (Table 7.2).
Let us evaluate these 15 professional needs in a bit more detail than
just listing them in a table.
manufactured product in human history. This does not speak well for
the professionalism of software engineering.
Poor quality control is the main cause of software failure. Poor qual-
ity control, combined with unplanned requirements creep, can double
planned schedules and these delays cause return on investment (ROI)
to switch from positive to negative so projects are terminated without
being completed.
which create about three times the volume of paper documents com-
pared to civilian projects might use the 0.44 power, since paperwork is
the #1 cost driver for defense software. Defense projects also have large
volumes of non-functional requirements. One of the advantages of func-
tion point metrics is their ability to quantify software results better than
the older lines of code metric.
It is theoretically possible for large companies to speed up develop-
ment by dividing applications into independent components that can
be built in different locations. It is also theoretically possible to transfer
some aspects of development from location to location at the end of
standard work shifts.
Hospitals operate 24 hours around the clock. One interesting feature
that makes this possible is the accurate patient status data that allows
the incoming team to see what actions were performed by the prior
team.
Software has almost a total lack of accurate status information that
would facilitate moving work from location to location. A few compa-
nies such as IBM and ITT have managed to do this, but both companies
had to make major changes in project status monitoring.
and formal testing can top 99.50% defect removal efficiency (DRE). Even
better, high DRE levels >99.00% also have shorter schedules and lower
costs than low DRE < 85.00%.
Lowering defect potentials require advanced methods such as reuse
of certified components that approach zero defects, requirements mod-
els, and automated proofs of correctness. These can lower defect poten-
tials from over 4.25 bugs per function point down below 2.50 bugs per
function point.
tools such as SRM. (Some leading companies also have formal software
estimation teams.)
schedule estimates before starting; (2) very poor status tracking during
development; (3) inadequate quality control so that the application does
not work well after deployment; (4) sloppy change control which tends
to introduce “bad fixes” into software applications.
If software engineering were a true profession, all four of these com-
mon conditions that lead to litigation would be eliminated.
This section shows patterns that lead to software success. The data
comes from actual companies. The first chapter on Corporate Software
Risk Reduction in a Fortune 500 company was based on a major telecom
company whose chairman was troubled by repeated software failures.
The other chapters in this section deal with methods of achieving
excellence, with measures that can prove excellence to C-level execu-
tives, and with continuing excellence through the maintenance cycle as
well as for software development.
DOI: 10.1201/9781003193128-9
Chapter 8
Introduction
Due to schedule delays, cost overruns, and several canceled software
projects, the Chairman of a Fortune 500 company decided to bring in
outside experts to identify major software risks and develop solutions
for those risks.
Initially, the new risk abatement team reported directly to the
Chairman, which is unusual but effective. The team visited more than
30 software locations in a dozen countries and met with many software
managers and technical personnel.
As the risk abatement program moved into implementation, the head
of the team became a corporate vice president and reported to the cor-
porate chief technology officer (CTO). The Chairman remained an active
participant and received frequent updates about progress of the risk
abatement program throughout its progress.
The corporation was a conglomerate that had grown by acquisition. The
major software groups did not know much about other groups elsewhere
in the company. Many of the individual units were sophisticated in dealing
with local projects. However, large and complex applications that required
multisite coordination and cooperation were not usually successful.
The risk team identified a number of areas where improvements
would be beneficial both for the individual units and for large multiunit
software executives who had been able to bring large and complex soft-
ware products successfully to market.
An executive from IBM was selected to lead the corporate risk
reduction program, but executives from other technical groups such as
General Electric, the Air Force, and other technology enterprises were
soon recruited.
Development 3,000
Maintenance 4,000
Support 2,000
Management 1,000
Total 10,000
Internal Applications
IT 1,500
Systems 900
Embedded 600
Support 400
Manufacturing 400
Sub Total 3,800
COTS Applications 1,300
Open source 100
User developed 200
Sub Total 1,600
Total 5,400
The overall size of the corporate portfolio at the time the risk study
began was just over 7,000,000 function points using the method of the
International Function Point Users Group (IFPUG) as the basis of the
size calculation.
In the original study, size was determined by “backfiring” or math-
ematical conversion between source code counts and function points.
Today in 2021, several methods exist for calculating function points
in legacy applications. The Software Risk Master™ (SRM) tool devel-
oped by the author of this book is one. SRM can also size commercial
packages such as Windows 7, Oracle, Linux, and essentially all others.
Software Risk Master™ only takes about 1 minute and 30 seconds to
size any application.
Other tools can analyze legacy code and extract business rules which
can then be turned into a function point prediction. These data mining
tools take about 5 to 10 minutes per application based on application
size. However, these tools can’t be used on commercial packages such
as Oracle and SAP where the source code is not available. It is not clear
if they support all of the 2,500 programming languages, but they do
support at least 25 of the more common languages.
Another interesting fact that was discovered during the fact-finding
assessments was that the total annual costs for the portfolio were about
$1.5 billion per year. That by itself was not surprising, but several sub
costs were alarming.
In the two years prior to the fact-finding assessment, the company
had major and sometimes unbudgeted expenses for these topics.
Corporate Software Risk Reduction in a Fortune 500 Company ◾ 215
More than 300,000 bugs were reported each year against the various
applications in the corporate portfolio.
It was painfully obvious that quality control and security controls in
software needed immediate improvements since almost 50 cents out of
every dollar spent on software was going to defect repairs or security
problems.
Some other findings were troubling but more easily fixed. A few
samples of these other problems are as follows:
After the risk reduction team finished with the fact finding assessments,
the next step was to prepare a presentation for the chairman, the board,
and senior executives to discuss the logistics of risk reduction and pro-
cess improvement.
your current software work force for other tasks. These personnel can
either reduce the corporate backlog to zero or they can assist on critical
projects that might be short handed.
If you fix your quality and security problems you can stop increas-
ing software personnel and reach a steady state at about 9,000 people,
which is all the corporation really needs to support its overall popula-
tion and growth plans.
If you fix your quality and security problems you will not have to
worry that the software side of the company is less competent than the
hardware side. They will both be at state of the art levels. This means
that future hybrid products will not be held back by today’s software
problems.
It will cost about $15,000,000 the first year to improve quality, but
you will get a positive return on this investment by the end of the second
year. Quality can be improved by more than 25% per calendar year for
at least five years in a row, and it is the only effective place to start
because defect repairs are your major cost driver at the corporate level.
Although there was some discussion about logistical topics and the
nature of the methods to be deployed, there was no disagreement to the
essential message. The chairman approved and the risk-reduction activi-
ties commenced at once.
The overall set of internal software risk factors noted during the on-
site assessments included the following 25 problems.
You have X number of people and they are increasing at 5% per year.
You are spending half of your budget on bug repairs and that will con-
tinue forever unless we can introduce better quality methods.
Corporate Software Risk Reduction in a Fortune 500 Company ◾ 219
We are not trying to force inspections, static analysis, and other new
quality methods on your teams against their wills. We would like you to
try the methods on an experimental basis and let the teams decide if the
results are useful.
If your teams do like the methods we can then provide local training
for everyone. We also have corporate licensing agreements that will give
you a substantial discount compared to your local license agreements
for a number of tools and some methods as well.
If your teams don’t like the methods they don’t have to use them, but
you will be responsible for your total unit achieving the same quality
levels as the units that do use them.
Measurement is very important and of course I support it. But our work is so
different and so complex that I don’t think it will work for us….
Since the risk-reduction team had no direct authority over unit man-
agers, we had no way of insisting that measures take place at the
individual units. However, the chairman had a personal interest in
measurements and he made several calls to reluctant unit managers
that convinced them to participate in the new corporate measurement
program.
A final task for the pathfinders was to ask that each unit with a soft-
ware group appoints a local software technology interface point that
would communicate with the new software research group that was
being formed. The reason for this is to have a firm contact point for
mutual exchanges of technical and logistical information.
The corporate team would pass on new information about corporate
licenses for tools and methodologies, and the unit reps would let the
220 ◾ Software Development Patterns and Antipatterns
corporate group know about tools and methods that they might like to
have evaluated for possible corporate licensing.
The overall targets for the corporate risk reduction program included
the following 20 topics that spanned a four-year risk reduction time
span:
Education
This was one of the first groups formed and one of the largest with
a peak of about 50 personnel. This group was responsible for train-
ing corporate software groups in every country and every operating
unit. Courses in inspections, design techniques, software reuse, quality
measurements, cost estimating, and many others were included in their
curricula. Eventually, about 30 courses were available for both technical
personnel and management personnel.
The education teams travelled widely to many locations and pro-
vided courses on demand, and also courses that were necessary for
quality improvement such as formal inspections and measurements.
External educators were also hired, and some of the following top
experts in the world were used: Dr. Barry Boehm, Dr. Gerry Weinberg,
Tom Gilb, Dr. Fred Brooks, and a number of others.
Applied Technology
The applied technology unit reached a peak of about 30 research person-
nel. It was responsible for examining and certifying methods and tools
that would be helpful to the corporate software community. Once tools
or methods were certified as being valuable, then corporate licenses
would be drawn up with the assistance of the corporate purchasing and
legal departments.
Examples of applied technology tools and methods included inspec-
tions, static analysis tools, automated test tools, cost estimating tools,
222 ◾ Software Development Patterns and Antipatterns
Advanced Technology
This unit reached a peak of about 20 research personnel. It was respon-
sible for designing and building custom solutions that were in advance
of the normal state of the art. This group built a very powerful object-
oriented language, a proprietary design method, and several other inno-
vative tools and methods.
Measurements
This unit reached a peak of about 12 personnel. One of the most visible
gaps in the software groups throughout the corporation was the almost
total lack of effective productivity and quality measurements. The most
unique production of the measurement group was an annual report
which was created at the same calendar time as the corporate annual
report for shareholders, i.e. in the first quarter after the end of a fiscal
year.
The annual software report summarized progress for every major
operating unit, compared current year results to prior year results, and
discussed plans for the next year. The annual report was distributed to
the CEO, chairman, operating unit presidents, and all C level executives
at the CIO, CTO level, and above. This report was a showcase for prog-
ress and demonstrated that investment in better software methods paid
valuable dividends.
Because this annual report was a critical part of the corporate soft-
ware risk reduction program, the following are some of the topics it
contained:
Communications
This unit reached a peak of about 20 people and fulfilled a variety of
functions. They sponsored two large conferences per year. One con-
ference was technical in nature and only open to corporate software
personnel. This conference discussed proprietary technologies. The sec-
ond conference was more public and selected customers, distinguished
academics, and even some competitors were invited. This second con-
ference was intended to be a showcase that illustrated the corporate
commitment to state of the art software engineering practices.
In addition to conferences, the communications group published
monthly newsletters, initiated a series of technical reports by soft-
ware unit authors, and created a very sophisticated software journal
that was modeled after Scientific American Magazine. This magazine
had a two-fold purpose: (1) to provide a suitable venue for innovative
information created by top researchers within the company and (2) to
impress both clients and competitors with the software engineering
expertise of the corporation. This two-fold purpose attracted new cli-
ents and also made it easy to attract top-gun software engineers away
from competitors.
To encourage employees in various operating units to publish, a cor-
porate policy was put in place that all royalties for technical books and
articles published by corporate employees went to the employees. If
the company tried to keep royalties under the Draconian terms of many
employment agreements, no one would be motivated to write. Allowing
authors to keep royalties is the policy adopted by most of the really
innovative high technology companies.
224 ◾ Software Development Patterns and Antipatterns
Administration
Like every operating unit, the software engineering laboratory needed
financial personnel, human resource personnel, secretarial support,
and other standard logistical topics. This group fluctuated in size as
demands increased.
Table 8.4 Target Cost Reductions from the Corporate Risk Program
Major Software Risks Annual Costs Target Amount Savings
Excessive bug repairs $500,000,000 $75,000,000 $425,000,000
Cost overruns $68,000,000 $10,000,000 $58,000,000
Schedule overruns $67,000,000 $5,000,000 $62,000,000
Canceled projects $50,000,000 $5,000,000 $45,000,000
Loss of customers $25,000,000 $2,000,000 $23,000,000
Litigation: breach of contract $15,000,000 $0 $15,000,000
Security attacks $30,000,000 $3,000,000 $27,000,000
Total $755,000,000 $100,000,000 $655,000,000
As can be seen from Tables 8.3 and 8.4, the corporate risk reduction
program was expected to yield direct savings of about $655,000,000 per
year for a cost of $43,000,000 per year. This is an ROI of about $15 for
every $ 1 expended. However, there are additional and more subtle ben-
efits that can also be calculated.
A software group with a total employment of 10,000 personnel will
normally be able to develop about 420,000 function points per year
and maintain about 1,250,000 function points per year. Although the
situation is more complex in real life, let us assume that 50% of per-
sonnel are on the development side and 50% of the personnel are on
the maintenance side. To further simplify, let us assume that half of the
$100,000,000 for process improvements will go to the development side
and half will go to the maintenance side.
points per year per person. Assuming 5,000 development personnel and
84 function points per year, the annual rate of new work is 420,000
function points.
Since 5,000 personnel with fully burdened compensation rates of
$120,000 per year have annual expenses of $600,000,000, it can be
seen that the development cost per function point for the organization
amounts to roughly $1,429 per function point for new function points
added to the corporate inventory.
Without the process improvement program, the development group
would have created 1,680,000 new function points over the four-year
period shown in the case study. However, as a result of the improvement
program, assume the average rate went from 7 to about 10 function
points per month over the four-year improvement program.
Thus instead of creating 1,680,000 function points in four years, the
same group of 5,000 development personnel would be able to create
600,000 function per year or 2,400,000 function points in the same four-
year period.
Using only the principles of cost recovery, the 720,000 additional
function points at a value of $1,429 per function point means addi-
tional corporate software assets worth $1,028,880,000 were created as a
byproduct of an investment of $43,000,000 per year. These are not cost
reductions but actual assets that might be added to the corporate books.
Because inspections and static analysis tools make significant
improvements in software quality before testing begins, a major focus
of improved performance will be in the test and quality control areas. It
can be expected that fewer bugs will be found during testing, which can
lead to fewer builds and fewer test runs, and hence fewer test personnel
combined with much quicker test schedules.
Indeed improving quality exerts the greatest overall impact from
process improvements. As a result of process improvements that include
inspections and static analysis, probably 25% of test personnel will
become available for other assignments.
Although bug repairs are needed to stay in business, every dollar spent
on fixing bugs after a product is released is really a subtraction from the
bottom line and should be viewed as a liability.
The greatly improved quality levels associated with the risk reduc-
tion and process improvement program will probably cut down the
number of full-time staff working on bug repairs from 2,500 down to
about 1,500 and hence free up 1,000 personnel for other assignments.
This means that the software risk reduction and process improve-
ment program will unexpectedly free up about 10% of the total soft-
ware employment, or a set of 1,000 experienced personnel, who are
no longer going to be locked into heavy-duty bug repairs and customer
support tasks.
This is the basis of the earlier statement that the corporation only
needed 9,000 software people to support the operating units.
Assuming $120,000 a year for burdened compensation that was stated,
this means a possible savings of $120,000,000 a year. The following are
several options, which the corporate operating unit executives can con-
sider as to how to best utilize the windfall of 1,000 spare personnel:
These three phenomena are both known to occur when software pro-
cesses are improved, but their value is too specific to individual products
and to focused markets to allow general rules of thumb to be developed.
study, cancelled projects would accrue costs of more than $1,600 per
function point as opposed to only $1,400 per function point for success-
ful projects.
(Continued)
240 ◾ Software Development Patterns and Antipatterns
Achieving Software
Excellence
Introduction
Software is the main operating tool of business and government in 2019.
But software quality remains marginal; software schedules and costs
remained much larger than desirable or planned. Cancelled projects are
about 35% in the 10,000 function point size range and about 5% of soft-
ware outsource agreements end up in court in litigation. Cyber-attacks
are increasing in numbers and severity. This short study identifies the
major methods for bringing software under control and achieving excel-
lent results.
The first topic of importance is to show the quantitative differences
between excellent, average, and poor software projects in quantified
form. Table 9.1 shows the essential differences between software excel-
lence, average, and unacceptably poor results for a mid-sized project of
1,000 function points or about 53,000 Java statements.
The data comes from benchmarks performed by Namcook Analytics
LLC. These were covered by non-disclosure agreements so specific
companies are not shown. However, the “excellent” column came from
telecom, high-technology, medical device companies; the average from
insurance and manufacturing; and the poor column from state and local
governments:
As stated the data in Table 9.1 comes from the author’s clients, which
consist of about 750 companies of whom 150 are Fortune 500 compa-
nies. About 40 government and military organizations are also clients,
but the good and average columns in Table 9.1 are based on corporate
results rather than government results. State and local governments pro-
vided data for the poor quality column.
Federal Government and defense software tend to have large over-
head costs and extensive status reporting that are not found in the civil-
ian sector. Some big defense projects have produced so much paperwork
that there were over 1,400 English words for every Ada statement and
the words cost more than the source code.
Note that the data in this report was produced using the Namcook
Analytics Software Risk Master™ (SRM) tool. SRM can operate as an
estimating tool prior to requirements or as a benchmark measurement
tool after deployment.
At this point, it is useful to discuss and explain the main differences
between the best, average, and poor results.
4. Document defects 8%
5. Bad fixes 7%
Total Defects 100%
Note that a “bad fix” is a bug in a bug repair. These can sometimes
top 25% of bug repairs for modules with high cyclomatic complexity.
However, the distribution of defect origins varies widely based on the
novelty of the application, the experience of the clients and the devel-
opment team, the methodologies used, and programming languages.
Certified reusable material also has an impact on software defect vol-
umes and origins.
Table 9.2 shows approximate U.S. ranges for defect potentials based
on a sample of 1,500 software projects that include systems software,
web projects, embedded software, and information technology projects
that range from 100 to 100,000 function points.
It is unfortunate that buggy software projects outnumber low-defect
projects by a considerable margin.
Because the costs of finding and fixing bugs have been the #1 cost
driver for the entire software industry for more than 50 years, the most
important difference between excellent and mediocre results is in the
areas of defect prevention, pre-test defect removal, and testing.
All three examples are assumed to use the same set of test stages,
including:
1. Unit test
2. Function test
3. Regression test
4. Component test
5. Performance test
6. System test
7. Acceptance test
254 ◾ Software Development Patterns and Antipatterns
The overall defect removal efficiency (DRE) levels of these 7 test stages
range from below 80% for the worst case up to about 95% for the best
case.
Note that the seven test stages shown earlier are generic and used
on a majority of software applications. Additional forms of testing may
also be used and can be added to SRM for specific clients and specific
projects:
pre-test removal, and test stages. The combination of low defect poten-
tials and high DRE is what software excellence is all about.
The most common companies that are excellent in quality control
are usually the companies that build complex physical devices such
as computers, aircraft, embedded engine components, medical devices,
and telephone switching systems. Without excellence in quality, these
physical devices will not operate successfully. Worse, failure can lead to
litigation and even criminal charges. Therefore, all companies that use
software to control complex physical machinery tend to be excellent in
software quality.
Examples of organizations noted as excellent software quality in
alphabetical order include Advanced Bionics, Apple, AT&T, Boeing, Ford
for engine controls, General Electric for jet engines, Hewlett Packard for
embedded software, IBM for systems software, Motorola for electronics,
NASA for space controls, the Navy for surface weapons, Raytheon, and
Siemens.
Companies and projects with excellent quality control tend to have
low levels of code cyclomatic complexity and high test coverage, i.e. test
cases cover >95% of paths and risk areas.
These companies also measure quality well and all know their DRE
levels. Any company that does not measure and know their DRE is prob-
ably below 85% in DRE.
Excellent quality control has DRE levels between about 97% for large
systems in the 10,000 function point size range and about 99.6% for
small projects <1,000 function points in size.
A DRE of 100% is theoretically possible but is extremely rare. The
author has only noted DRE of 100% in 10 projects out of a total of
about 25,000 projects examined. As it happens the projects with 100%
DRE were all compilers and assemblers built by IBM and using >85%
certified reusable materials. The teams were all experts in compilation
technology and of course a full suite of pre-test defect removal and test
stages were used as well.
top 85% in DRE and also raise testing DRE levels. Among the author’s
clients that use agile, the average value for DRE is about 92% to 94%.
This is certainly better than the 85% to 90% industry average for water-
fall projects, but not up to the 99% actually needed to achieve optimal
results.
Some but not all agile projects use “pair programming” in which two
programmers share an office and a work station and take turns cod-
ing while the other watches and “navigates.” Pair programming is very
expensive but only benefits quality by about 15% compared to single
programmers. Pair programming is much less effective in finding bugs
than formal inspections, which usually bring 3 to 5 personnel together
to seek out bugs using formal methods.
Agile is a definite improvement for quality compared to waterfall
development, but is not as effective as the quality-strong methods of
TSP and the rational unified process (RUP) for larger applications >1,000
function points. An average agile project among the author’s clients is
about 275 function points. DAD is a good choice for larger information
software applications.
Average projects usually do not know defects by origin and do not
measure DRE until testing starts, i.e. requirements and design defects
are under reported and sometimes invisible.
A recent advance in software quality control now frequently used by
average as well as advanced organizations is that of static analysis. Static
analysis tools can find about 55% of code defects, which is much higher
than most forms of testing.
Many test stages such as unit test, function test, regression test, etc.
are only about 35% efficient in finding code bugs, or find one bug out
of three. This explains why 6 to 10 separate kinds of testing are needed.
The kinds of companies and projects that are “average” would
include internal software built by hundreds of banks, insurance compa-
nies, retail and wholesale companies, and many government agencies at
federal, state, and municipal levels.
Average quality control has DRE levels from about 85% for large sys-
tems up to 97% for small and simple projects.
have no idea how many test cases might be needed or how efficient
various kinds of test stages are.
Companies or government groups with poor quality control also fail
to perform any kind of up-front quality predictions so they jump into
development without a clue as to how many bugs are likely to occur
and what are the best methods for preventing or removing these bugs.
One of the main reasons for the long schedules and high costs asso-
ciated with poor quality is the fact that so many bugs are found when
testing starts that the test interval stretches out to two or three times
longer than planned.
Some of the kinds of software that are noted for poor quality control
include the Obamacare web site, municipal software for property tax
assessments, and software for programmed stock trading, which has
caused several massive stock crashes.
Poor quality control is often below 85% in DRE levels. In fact for
canceled projects or those that end up in litigation for poor quality, the
DRE levels may drop below 80%, which is low enough to be considered
professional malpractice. In litigation where the author of this book has
been an expert witness, DRE levels in the low 80% range have been the
unfortunate norm.
Table 9.3 shows the ranges in DRE noted from a sample of 1,000
software projects. The sample included systems and embedded soft-
ware, web projects, cloud projects, information technology projects, and
also defense and commercial packages.
As can be seen, high DRE does not occur often. This is unfortunate
because projects that are above 95.00% in DRE have shorter sched-
ules and lower costs than projects below 85.00% in DRE. The software
The need for being close to zero defects and formal certification
adds about 20% to the costs of constructing reusable artifacts and about
30% to the schedules for construction. However, using certified reus-
able materials subtracts over 80% from the costs of construction and
can shorten schedules by more than 60%. The more times materials are
reused, the greater their cumulative economic value.
One caution to readers: reusable artifacts may be treated as taxable
assets by the Internal Revenue Service. It is important to check this topic
out with a tax attorney to be sure that formal corporate reuse programs
will not encounter unpleasant tax consequences.
The three samples in Table 9.1 showed only moderate reuse typical
for the start of 2016.
Software Methodologies
Unfortunately, selecting a methodology is more like joining a cult than
making an informed technical decision. Most companies don’t actually
perform any kind of due diligence on methodologies and merely select
the one that is most popular.
In today’s world, agile is definitely the most popular. Fortunately,
agile is also a pretty good methodology and much superior to the older
waterfall method. However, there are some caveats about methodologies.
Agile has been successful primarily for smaller applications <1,000
function points in size. It has also been successful for internal applica-
tions where users can participate or be “embedded” with the develop-
ment team to work our requirements issues.
Agile has not scaled up well to large systems >10,000 function points.
Agile has also not been visibly successful for commercial or embedded
applications where there are millions of users and none of them work
for the company building the software so their requirements have to be
collected using focus groups or special marketing studies.
A variant of agile that uses “pair programming” or two programmers
working in the same cubical with one coding and the other “navigating”
has become popular. However, it is very expensive since two people are
being paid to do the work of one person. There are claims that quality is
improved, but formal inspections combined with static analysis achieve
much higher quality for much lower costs.
Another agile variation, extreme programming, in which test cases
are created before the code itself is written has proven to be fairly suc-
cessful for both quality and productivity, compared to traditional water-
fall methods. However, both TSP and RUP are just as good and even
better for large systems. Another successful variation on agile is DAD
which expands the agile concept up above 5,000 function points.
There are more than 80 available methodologies circa 2016 and
many are good; some are better than agile for large systems; some
older methods such as waterfall and cowboy development are at the
262 ◾ Software Development Patterns and Antipatterns
Table 9.6 Methodology Rankings for Small and Large Software Projects
Small Projects Large Systems
<1,000 Function Points >10,000 Function Points
1 Agile scrum TSP/PSP
2 Crystal Reuse-oriented
3 DSDM Pattern-based
4 Feature driven (FDD) IntegraNova
5 Hybrid Product line engineering
6 IntegraNova Model-driven
7 Lean DevOps
8 Mashup Service-oriented
9 Microsoft solutions Specifications by example
10 Model-driven Mashup
11 Object-oriented Object-oriented
12 Pattern-based Information engineering (IE)
13 Product line engineering Feature driven (FDD)
14 PSP Microsoft solutions
15 Reuse-oriented Structured development
16 Service-oriented modeling Spiral development
17 Specifications by example T-VEC
18 Structured development Kaizen
19 Test-driven development (TDD) RUP
20 CASE Crystal
21 Clean room DSDM
22 Continuous development Hybrid
23 DevOps CASE
24 EVO Global 24 hour
25 Information engineering (IE) Continuous development
26 Legacy redevelopment Legacy redevelopment
27 Legacy renovation Legacy renovation
28 Merise Merise
(Continued)
264 ◾ Software Development Patterns and Antipatterns
projects that top 99.00% percent but the distribution is less than 5% of
U.S. projects top 99% in DRE as of 2021.
Poor projects which are likely to fail and end up in court for poor
quality or breach of contract often have defect potentials of >6.00 per
function point combined with DRE levels <85%. Some poor projects
deliver >0.75 bugs per function point and also excessive security flaws.
Achieving Software Excellence ◾ 265
Table 9.8 Technical Debt and Software Quality for 1,000 Function Points
High Average Poor
Quality Quality Quality
Defect potential 2 4 6
Removal efficiency 99.00% 92.00% 80.00%
Delivered defects 0.02 0.32 1.2
Post-release defect repair $ $5,000 $60,000 $185,000
Technical debt problems 1 25 75
Technical debt costs $1,000 $62,500 $375,000
Excluded from Technical Debt
Consequential damages $0.00 $281,250 $2,437,500
Cyber-attack costs $0.00 $250,000 $5,000,000
Litigation costs $0.00 $2,500,000 $3,500,000
Total Costs of Quality (COQ) $6,000 $3,153,750 $11,497,500
Achieving Software Excellence ◾ 267
No data has yet been published on the high costs of litigation for
poor quality and project failures, or even the frequency of such litigation.
The author of this book has been an expert witness in 15 cases
for project failure or poor quality, and therefore has better data than
most on litigation frequencies and costs. Also the author’s SRM tool has
a standard feature that predicts probable litigation costs for both the
plaintiff and defendant in breach of contract litigation.
Table 9.8 illustrates two important but poorly understood facts about
software quality economics.
1. High quality software is faster and cheaper to build than poor qual-
ity software; maintenance costs are many times cheaper; and tech-
nical debt is many times cheaper.
2. Poor quality software is slower and more expensive to build than
high-quality software; maintenance costs are many times more
expensive; and technical debt is many times more expensive.
1. Defect potentials
2. Defect severity levels
3. Defects per function point
4. Defect detection efficiency (DDE)
5. Defect removal efficiency (DRE)
6. Cyclomatic complexity of all applications
7. Error-prone modules (EPM) in deployed software
8. Test coverage of all applications
9. Test cases and test scripts per function point
10. Duplicate or incorrect test cases in test libraries
11. Bad-fix injection rates (bugs in defect repairs)
12. The existence or absence of error-prone modules in operational
software
13. Customer satisfaction with existing software
14. Defect repair turnaround
15. Technical debt for deployed software
16. Cost of quality (COQ)
17. Security flaws found before release and then after deployment
18. Current set of defect prevention, pre-test, and test quality methods
in use
19. The set of software development methodologies in use for all
projects
20. Amount of reusable materials utilized for software projects
Defect Prevention
1. Joint application design ( JAD).
2. Quality function deployment (QFD).
3. Requirements models.
4. Formal reuse programs.
5. Formal defect measurements.
6. Data mining of legacy applications for lost requirements.
270 ◾ Software Development Patterns and Antipatterns
This second stage normally lasts about a year and includes formal train-
ing of managers, development personnel, quality assurance personnel,
test personnel, and other software occupation groups.
Because there is a natural tendency to resist changes, the best way
of moving forward is to treat the new tools and methods as experi-
ments. In other words, instead of directing that certain methods such as
inspections be used, treat them as experiments and make it clear that
if the inspections don’t seem useful after trying them out, the teams
will not be forced to continue with them. This is how IBM introduced
inspections in the 1970s, and the results were so useful that inspections
became a standard method without any management directives.
This second stage will take about a year for a company with 1,000
software personnel and more or less time for larger or smaller organi-
zations. Probably all technical personnel will receive at least a week of
training and so will project managers.
Achieving Software Excellence ◾ 271
Probably the costs during this phase due to training and learning
curves can top $1,000 per staff member. Some costs will be training;
others will be acquisitions of tools. It is difficult to establish a precise
cost for tools due to the availability of a large number of open-source
tools that have no costs.
Improvements in quality will start to occur immediately during stage
2. However due to learning curves, productivity will drop down slightly
for the first 4 months due to having formal training for key personnel. But
by the end of a year, productivity may be 15% higher than when the year
started. Defect potentials will probably drop by 20% and DRE should go
up by >7% from the starting point, and top 95% for every project.
ITT was a large corporation with over 10,000 software personnel located
in a number of countries and more than 25 software development labs.
As a result, the overall corporate software report was a fairly large docu-
ment of about 50 pages in size.
For a smaller company with a staffing of about 1,000 personnel, the
annual report would probably be in the 20-page size range.
Once software is up to speed and combines high quality and high
productivity, that opens up interesting business questions about the best
use of the savings. For example, ITT software personnel had been grow-
ing at more than 5% per year for many years. Once quality and pro-
ductivity improved, it was clear that personnel growth was no longer
needed. In fact the quality and productivity were so good after a few
years that perhaps 9,000 instead of 10,000 could build and maintain all
needed software.
Some of the topics that need to be considered when quality and
productivity improve are related to what is the best use of resources no
longer devoted to fixing bugs. Some of the possible uses include:
Grady, Robert B.; Successful Process Improvement; Prentice Hall PTR, Upper
Saddle River, NJ; 1997; ISBN: 0-13-626623-1; 314 pages.
Humphrey, Watts S.; Managing the Software Process; Addison Wesley Longman,
Reading, MA; 1989.
IFPUG; IFPUG Counting Practices Manual, Release 4, International Function
Point Users Group, Westerville, OH; April 1995; 83 pages.
Jacobsen, Ivar; Griss, Martin; and Jonsson, Patrick; Software Reuse – Architecture,
Process, and Organization for Business Success; Addison Wesley Longman,
Reading, MA; 1997; ISBN: 0-201-92476-5; 500 pages.
Jacobsen, Ivar et al; The Essence of Software Engineering; Applying the SEMAT
Kernel; Addison Wesley Professional; 2013.
Jones, Capers; The Technical and Social History of Software Engineering,
Addison Wesley; 2014.
Jones, Capers; and Bonsignour, Olivier; The Economics of Software Quality,
Addison Wesley Longman, Reading, MA; 2011a.
Jones, Capers; Estimating Software Costs, 2nd ed.; McGraw Hill; New York, NY;
2007.
Jones, Capers; Software Engineering Best Practices; McGraw Hill, New York,
NY; 2010a.
Jones, Capers; and Bonsignour, Olivier; The Economics of Software Quality;
Addison Wesley, Boston, MA; 2011b; ISBN: 978-0-13-258220-9; 587 pages.
Jones, Capers; A Ten-Year Retrospective of the ITT Programming Technology
Center; Software Productivity Research, Burlington, MA; 1988.
Jones, Capers; Applied Software Measurement; McGraw Hill, 3rd ed.; 2008.
Jones, Capers; Software Engineering Best Practices; McGraw Hill, 1st ed.; 2010b.
Jones, Capers; Assessment and Control of Software Risks; Prentice Hall; 1994;
ISBN: 0-13-741406-4; 711 pages.
Jones, Capers; Patterns of Software System Failure and Success; International
Thomson Computer Press, Boston, MA; December 1995; ISBN: 1-850-
32804-8; 250, 292 pages.
Jones, Capers; Software Assessments, Benchmarks, and Best Practices; Addison
Wesley Longman, Boston, MA; 2000 (due in May of 2000); 600 pages.
Jones, Capers; Software Quality – Analysis and Guidelines for Success;
International Thomson Computer Press, Boston, MA; 1997a; ISBN: 1-85032-
876-6; 492 pages.
Jones, Capers; The Economics of Object-Oriented Software; Software Productivity
Research, Burlington, MA; April 1997b; 22 pages.
Jones, Capers; Becoming Best in Class; Software Productivity Research,
Burlington, MA; January 1998; 40 pages.
Kan, Stephen H.; Metrics and Models in Software Quality Engineering, 2nd ed.;
Addison Wesley Longman, Boston, MA; 2003; ISBN: 0-201-72915-6; 528
pages.
Keys, Jessica; Software Engineering Productivity Handbook; McGraw Hill,
New York, NY; 1993; ISBN: 0-07-911366-4; 651 pages.
Love, Tom; Object Lessons; SIGS Books, New York, NY; 1993; ISBN: 0-9627477
3-4; 266 pages.
276 ◾ Software Development Patterns and Antipatterns
Symons, Charles R.; Software Sizing and Estimating – Mk II FPA (Function Point
Analysis); John Wiley & Sons, Chichester; 1991; ISBN: 0 471-92985-9; 200
pages.
Thayer, Richard H. (Editor); Software Engineering and Project Management;
IEEE Press, Los Alamitos, CA; 1988; ISBN: 0 8186-075107; 512 pages.
Umbaugh, Robert E. (Editor); Handbook of IS Management, 4th ed.; Auerbach
Publications, Boston, MA; 1995; ISBN: 0-7913-2159-2; 703 pages.
Weinberg, Gerald; Quality Software Management – Vol. 2: First-Order
Measurement; Dorset House Press, New York, NY; 1993; ISBN: 0-932633-
24-2; 360 pages.
Wiegers, Karl A.; Creating a Software Engineering Culture; Dorset House Press,
New York, NY; 1996; ISBN: 0-932633-33-1; 358 pages.
Yourdon, Ed; Death March – The Complete Software Developer’s Guide to
Surviving “Mission Impossible” Projects; Prentice Hall PTR, Upper Saddle
River, NJ; 1997; ISBN: 0-13-748310-4; 218 pages.
Zells, Lois; Managing Software Projects – Selecting and Using PC-Based Project
Management Systems; QED Information Sciences, Wellesley, MA; 1990;
ISBN: 0-89435-275-X; 487 pages.
Zvegintzov, Nicholas; Software Management Technology Reference Guide;
Dorset House Press, New York, NY; 1994; ISBN: 1-884521-01-0; 240 pages.
Chapter 10
Introduction
Most methods of software sizing and estimating are based on software
requirements and design documents, or on the source code itself. For
both new applications and enhancements, this means that substan-
tial funds will have been expended before sizing and estimating take
place. Early sizing and estimating pay handsome dividends due to better
results for on-schedule and within-budget projects, as shown in Table
10.1 in this chapter.
Namcook Analytics has developed a new method of early software
sizing and estimating based on pattern matching that can be used prior
to requirements. This new method permits very early estimates and very
early risk analysis before substantial investments are made.
Software sizing and estimating have been weak areas of software
engineering since the industry began. Even today a majority of the
world’s software projects use educated guesses for sizing and inaccurate
and optimistic manual estimates instead of accurate automated para-
metric estimates. Large companies are more sophisticated than small
companies and tend to have more sophisticated sizing and estimating
methods and tools. It is useful to look at sizing and estimating methods
since the software industry began:
1950 to 1959
Sizing was based on lines of code (LOC) (usually physical). Estimating
was a combination of guesswork and sparse historical data. In this era,
assembly was the only language at the beginning of the decade so LOC
still worked.
1960 to 1969
Sizing was based on LOC. Estimating was still based on guesswork but
some companies such as IBM collected useful historical data that were
helpful in estimation. Projects grew larger so estimating requirements
and design became important. Languages such as COBOL, Algol, and
others were developed and LOC metrics started to encounter problems
such as difficulty in counting LOC for projects with multiple languages.
1970 to 1979
By the end of this decade, over 80 programming languages were in
existence and LOC metrics were proven to be inaccurate and unreliable
by IBM. LOC metrics can’t measure requirements and design, which by
1979 were more expensive than code itself. Also, LOC metrics penalize
high-level languages such as APL and PL/I.
IBM was the first company to perform a formal study of the errors
and problems with LOC metrics, which occurred about 1972 with the
author of this book as the primary IBM researcher. This study and the
proof of LOC failure led IBM to fund the development of function point
metrics.
Due to major problems and proven errors with LOC metrics, IBM
created the function point metric for sizing and estimating software
projects.
In 1973 the author of this book developed IBM’s first parametric
estimation tool, which was coded in APL by Dr. Charles Turk. Also dur-
ing this decade, other estimating pioneers such as Dr. Barry Boehm, Dr.
Howard Rubin, Frank Freiman, and Dr. Larry Putnam developed early
parametric estimation tools.
Function points were put into the public domain by IBM in 1979
and expanded all over the world. By the end of this decade, many lead-
ing organizations such as IBM, ITT, TRW, RCA, and the Air Force used
proprietary parametric estimation tools and also used function point
metrics. The technique of “backfiring” or mathematical conversion from
source code to function points was developed by IBM in this decade
and began to be used for sizing legacy applications.
Early Sizing and Estimating of Software Projects ◾ 281
1980 to 1989
During this decade, function points became a major global metric for siz-
ing and estimating. The author’s SPQR/20 estimation tool released in 1984
was the world’s first parametric estimation tool based on function points.
It was also the first that included sizing for all deliverables (requirements,
design, code, test cases, etc.). The inventor of function point metrics, A.J.
Albrecht, had retired from IBM and came to work for the author.
Only function point metrics support sizing of requirements, design,
user documents, and test cases; this cannot be done using LOC met-
rics. Other parametric estimating tools such as CheckPoint, COCOMO,
Estimacs, KnowledgePlan, SEER, SLIM, etc. also entered the commercial
market.
Most major companies used either commercial or proprietary para-
metric estimation by the end of this decade. The author of this book
designed proprietary estimation tools under contract for several tele-
communication companies and also taught software sizing and estima-
tion at AT&T, Bell Northern, GTE, ITT, Motorola, Nippon Telephone,
Nokia, Pacific Bell, Siemens, Sprint, and others.
The International Function Point User’s Group (IFPUG) was created
in Canada and began to provide certification examinations to ensure
accurate function point counts. IFPUG later moved its headquarters to
the United States.
1990 to 1999
Due to the initial success and value of IFPUG function points, this
decade saw the creation of a number of function point metric “clones”
that differed somewhat in their counting rules. Some of these functional
metric clones include in alphabetical order: COSMIC function points,
engineering function points, fast function points, feature points, FISMA
function points, NESMA function points, story points, unadjusted func-
tion points, and use-case points. Most of these use counting rules similar
to IFPUG but have various additional rules or changed rules. This causes
more confusion than value. It also introduced a need for conversion
rules between the various functional metrics, such as the conversion
rules built into Software Risk Master (SRM).
The International Software Benchmark Standards Group (ISBSG)
was created in 1997 and began to provide software benchmark data
using only function points. Lines-of-code data is hazardous and unreli-
able for benchmarks.
Other benchmark providers also began to offer benchmarks such
as the author’s former company, Software Productivity Research (SPR).
282 ◾ Software Development Patterns and Antipatterns
2000 to 2010
Function point metrics had become the global basis of software bench-
marks and were widely used in parametric estimation tools. However,
the slow counting speeds and high costs of manual function point
analysis led to research in easier and faster methods of function point
analysis.
Many companies developed function point tools that provided math-
ematical support for the calculations. These speeded up function point
counting from about 500 function points per day to more than 1,000
function points per day.
Several companies (CAST Software and Relativity Technologies)
developed automated function point counting tools. These tools exam-
ined source code from legacy applications and created function points
based on this code analysis. These tools only work for applications
where code exists, but instead of 500 function points per day they can
top 50,000 function points per day.
In 2012 IFPUG issued the new SNAP metric (software non-functional
assessment process). This metric has been added to the Namcook sizing
method.
The author and Namcook Analytics developed a proprietary sizing
method based on pattern matching that is part of the SRM estimating
tool. This method uses a formal taxonomy and then extracts size data
from the Namcook knowledge base for projects that have the same tax-
onomy pattern.
The Namcook sizing method is included in the SRM estimating tool.
SRM sizing is unique in being able to size and estimate projects before
requirements, or 30–180 days earlier than any other known method.
The SRM method is the fastest available method of sizing and aver-
ages about 1.8 minutes to size any application. Of course measured
Early Sizing and Estimating of Software Projects ◾ 283
speed varies with the sizes of the applications themselves, but SRM can
size at speeds of well over 300,000 function points per day.
SRM sizing is also unique in being able to predict size in a total of
23 metrics at the same time: all forms of function points, logical and
physical LOC, story points, use-case points, and even RICE objects for
ERP packages.
SRM also collects new benchmark data every month, because esti-
mating tools need continuous updates to their knowledge bases to stay
current with technical changes such as cloud computing, SaaS, estimat-
ing social network software, and other technology innovations. In fact
the commercial estimating companies all collect benchmark data for the
same reason.
estimates but about 30% use one or more parametric estimating tools
such as SRM.
Many agile projects use manual estimates combined with the “story
point metric.” Unfortunately, story points have no ISO or OMG standards
and vary by hundreds of percent from company to company. They are
almost useless for benchmarks due to the low quantity of available data
and the poor accuracy of story points for either estimates or measurements.
In 2012, a new metric for non-functional requirements called “SNAP”
was created by IFPUG and is now starting to be used. However as of
2016, this metric is so new that not a great deal of data exists, nor do
all companies use it. This metric needs additional definitions and con-
tinued analysis.
Small companies with less than 100 employees only build small
applications where risks are low. About 90% of these companies use
manual estimates. Most are too small to afford function point consul-
tants and too small to afford commercial estimating tools so they tend to
use backfiring and convert code size into function points. They still need
function points because all reliable benchmarks are based on function
point metrics. Some small companies use COCOMO because it is free,
even though it was originally calibrated for defense software. Table 10.1
shows the economic advantages of using automated sizing and estimat-
ing tools such as SRM.
As can be seen, early sizing and estimating using a tool such as SRM
can lead to much better on-time and within-budget performance than
older manual estimating methods or delayed estimates after require-
ments are completed.
Table 10.1 Results of Early Sizing and Estimating (Assumes 1000 Function
Points and Java Code)
In Defect $ per
On-Time Budget Removal Function
Delivery Delivery Efficiency Point
Automated sizing and 95.00% 95.00% 97.50% $950
estimating before
Requirements
Automated sizing and 80.00% 87.00% 92.50% $1,100
estimating after Requirements
Manual sizing and estimating 55.00% 60.00% 88.00% $1,350
after requirements
No formal sizing or estimating 44.00% 38.00% 85.00% $1,800
Early Sizing and Estimating of Software Projects ◾ 285
Overall function point metrics provide the most stable and effective
metrics for analyzing software quality economics, software productivity,
and software value. The major forms of function points have ISO stan-
dards and certification exams unlike the older and hazardous metrics
discussed above.
As illustrated elsewhere in this chapter, the detailed metrics used
with function points include but are not limited to the following points
(Table 10.2).
All 30 of these sizing features were included in the SRM sizing meth-
odology as of 2019.
Table 10.2 Software Risk Master (SRM) Function Point and SNAP Usage
Circa 2020
1 Predicting size in function points, SNAP, LOC, and a total of 23 metrics.
2 Early sizing and risk analysis via pattern matching before full requirements.
3 Sizing of internal, COTS, and open-source applications.
4 Sizing and estimating both new projects and legacy repairs and renovations.
5 Sizing and estimating 15 types of software (web, IT, embedded, defense, etc.).
6 Source code sizing for 84 programming languages and combinations of
languages.
7 Sizing requirements creep during development (>1% per calendar month).
8 Sizing post-release requirements growth for up to 10 years (>8% per year).
9 Sizing defect potentials per function point/SNAP point (requirements,
design, code, etc.).
10 Defect prevention efficiency (DPE) for JAD, QFD, modeling, reuse, etc.
11 Defect removal efficiency (DRE) for pre-test and test defect removal
methods.
12 Document sizing for 30 document types (requirements, design,
architecture, etc.).
13 Sizing test cases per function point and per SNAP point for all forms of
testing.
14 Estimating delivered defects per function point and per SNAP point.
15 Activity-based costs for development.
16 Activity-based costs for user effort on internal projects.
17 Activity-based costs for maintenance.
18 Activity-based costs for customer support.
19 Activity-based costs for enhancements.
20 Occupation-group effort for 25 common software skills (coders, testers,
analysts, etc.).
21 Total cost of ownership (TCO) including cyber-attack costs.
22 Cost of quality (COQ) for software applications including cyber-attacks
and litigation.
23 Estimating the newer technical debt metric which is ambiguous in 2016.
24 Risk probabilities for 30 common software risk factors (delays, overruns,
cancellation).
(Continued)
288 ◾ Software Development Patterns and Antipatterns
The current IFPUG counting rule manual is available from the IFPUG
organization and is about 125 pages in size: too big to summarize here.
Counting rules are also available from other function point communities
such as COSMIC, FISMA, NESMA, etc.
Once the function point total for an application is known, then func-
tion points can be used with a variety of useful supplemental metrics to
examine productivity, quality, costs, etc.
The following are some of the leading metrics used with function
points in alphabetical order:
Assignment Scope
This is the amount of work typically assigned to a software team mem-
ber. It can be expressed using function points or natural metrics such as
pages of documents and LOC. For example, a technical writer might be
assigned a user manual of 200 pages. Since software user manuals aver-
age about 0.15 pages per function point that would be an assignment
scope of 30 function points.
Typical assignment scopes using function points for a project of
1,000 function points would be:
Requirements = $41.79
Design = $66.87
Coding = $393.89
Testing = $236.34
Here too these are standard results from SRM. This kind of data
is available for 40 activities from Namcook Analytics LLC. SRM shows
7 activities.
Defect Potentials
Defect potentials are the sum total of bugs that are likely to be found
in requirements, architecture, design, code user documents, and bad
fixes or secondary bugs in bug repairs. U.S. totals for defect poten-
tials range from <2.00 defects per function point to >6.00 defects per
function point. This metric is also used for specific defect categories.
Requirements defects per function point range from <0.25 per func-
tion point to >1.15 per function point. The full set of defect potentials
include defects in requirements, architecture, design, code, documents,
and “bad fixes” or secondary bugs in defect repairs themselves. There
290 ◾ Software Development Patterns and Antipatterns
are also defects in test cases, but these are very seldom studied so there
is not enough available data to include test-case defects in defect poten-
tials as of 2016.
Defect potentials are ONLY possible with function point metrics
because LOC metrics cannot be used for requirements and design
defects. Typical values for defect potentials in function points circa 2019
are shown in Table 10.3.
As can be seen, defect potentials include bugs in many sources and
not just code. As can be seen, requirements, architecture, and design
defects outnumber code defects. Defect potential estimation is a stan-
dard feature for SRM.
Production Rate
This metric is the amount of work a software team member can perform
in a given time period such as an hour, day, week, or month. This metric
can be expressed using function points or natural metrics such as LOC
or pages. For example a technical writer might be able to write 50 pages
per month. A programmer may be able to code 1,000 LOC per month. A
tester may be able to run 500 test cases per month, and so on. The same
activities can also be measured using work hours per function point, or
a combination of function points and natural metrics.
Requirements Creep
Because applications add new requirements and new features during
development, size must be adjusted from time to time. Requirements
grow and change at measured rates of between 1% per calendar month
and about 4% per calendar month. Thus, an application sized at 1,000
function points at the end of requirements may grow to 1,100 function
points by delivery. Software keeps growing after release, and the same
application may grow to 1,500 function points after three or four years
of use. SRM predicts growth and can also measure it. (This is not a fea-
ture of most parametric estimation tools.)
292 ◾ Software Development Patterns and Antipatterns
Note: these values are just examples and not intended for use in
actual estimates. There are wide ranges for every activity. Also, the exam-
ple only shows 7 activities, but similar data is available from Namcook
Analytics LLC for 40 activities.
The same metric or work hours per function point can also be used
to measure user costs for internal user effort, training costs for custom-
ers and team members, and even marketing and sales effort for commer-
cial software packages. It can also be used for customer support, bug
repairs, and even project management.
Function points are a powerful and useful metric but need additional
metrics in order to actually estimate and measure real projects.
All of these topics are usually known well before requirements. All of
the questions are multiple choice questions except for the start date and
compensation and burden rates. Default cost values are provided for
situations where such cost information is not known or is proprietary.
This might occur if multiple contractors are bidding on a project and
they all have different cost structures.
The answers to the multiple-choice questions form a “pattern” that is
then compared against a Namcook knowledge base of more than 25,000
software projects. As with the real-estate data bases, software projects
that have identical patterns usually have about the same size and similar
results in terms of schedules, staffing, risks, and effort.
294 ◾ Software Development Patterns and Antipatterns
includes a trial version that is run-limited but can produce several proj-
ect sizes before the limits are reached.
If risks are not identified until after the requirements are complete, it
is usually too late to make changes in development methods.
25 major risks where application size has been proven to be a major
factor in application costs, schedules, and quality include but are not
limited to those shown in the Table 10.7.
All 25 of these software risks are proportional to application size,
so early sizing is a useful precursor for risk avoidance and risk miti-
gation. In estimating mode, SRM predicts the odds of these risks
occurring and in measurement mode can measure their impact on
completed projects.
There are also many risks that are not directly related to proj-
ect size: bankruptcies, theft of intellectual property, cyber-attacks
Early Sizing and Estimating of Software Projects ◾ 301
1. Agile development
2. Capability Maturity Model Integrated (CMMI)™ – all 5 levels
3. Extreme programming (XP)
4. Feature-driven development (FDD)
5. Formal inspections (combined with other methods)
6. Hybrid development (features from several methods)
7. Information Engineering (IE)
8. Iterative development
Early Sizing and Estimating of Software Projects ◾ 303
It takes less than one minute to switch SRM from one methodology to
another, so it is possible to examine and evaluate 10–20 alternatives
methods in less than half an hour. This is not a feature of most other
parametric estimation tools.
Software Risk Master can also model any level of development team
experience, management experience, tester experience, and even client
experience.
Software Risk Master can also show the results of any of 84 different
programming language or combination of programming languages for
more than 79 languages such as ABAP, Ada, APL, Basic, C, C#, C++, CHILL,
COBOL, Eiffel, Forth, Fortran, HTML, Java, Javascript, Julia, Objective C,
PERL, PHP, PL/I, Python, Ruby, Smalltalk, SQL, Visual Basic, and many
other languages. In theory, SRM could support all 2,500 programming lan-
guages, but there is very little empirical data available for many of these.
To add clarity to the outputs, SRM can show identical data for every
case, such as showing a sample application of 1,000 function points
and then changing methods, programming languages, CMMI levels, and
team experience levels. Using the same data and data formats allows
side-by-side comparisons of different methods and practices.
This allows clients to judge the long-range economic advantages of
various approaches for both development and TCO.
The governments of Brazil and Korea already use function points for
government software contracts (Korea sent a delegation to Namcook
Analytics to discuss this policy.) Other countries such as Italy and
Malaysia are also planning to use function points for contracts (the
author of this book is an advisor to the Malaysian software testing
organization and knows that Malaysia is considering function points for
contracts).
Outside of the United States, the 25 countries with the most certified
function point counters and the widest usage of function points among
technology companies include:
(Continued)
Countries Expanding Use of Function Points 2019
23 The Netherlands
24 United Kingdom
25 United States
Additional Literature
Abran, Alain; Software Estimating Models; Wiley-IEEE Computer Society; 2015.
Abran, Alain; Software Metrics and Metrology; Wiley-IEEE Computer Society;
2010.
Abran, Alain; Software Maintenance Management: Evolution and Continuous
Improvement; Wiley-IEEE Computer Society; 2008.
Abran, Alain; and Dumke, Reiner R.; Innovations in Software Measurement;
Shaker-Verlag, Aachen, DE; 2005; ISBN: 3-8322-4405-0; 456 pages.
Abran, Alain; Bundschuh, Manfred; Dumke, Reiner; Ebert, Christof; and
Zuse, Horst; Software Measurement News; Vol. 13, No. 2; October 2008
(periodical).
Bundschuh, Manfred; and Dekkers, Carol; The IT Measurement Compendium;
Springer-Verlag, Berlin, DE; 2008; ISBN: 978-3-540-68187-8; 642 pages.
Chidamber, S.R. & Kemerer, C.F.; “A Metrics Suite for Object-Oriented Design”; IEEE
Trans. On Software Engineering; Vol. SE20, No. 6; June 1994; pp. 476–493.
Dumke, Reiner; Braungarten, Rene; Büren, Günter; Abran, Alain; and Cuadrado-
Gallego, Juan J.; (editors); Software Process and Product Measurement;
Springer-Verlag, Berlin; 2008; ISBN: 10: 3-540-89402-0; 361 pages.
Ebert, Christof; and Dumke, Reiner; Software Measurement: Establish, Extract,
Evaluate, Execute; Springer-Verlag, Berlin, DE; 2007; ISBN: 978-3-540-
71648-8; 561 pages.
308 ◾ Software Development Patterns and Antipatterns
Gack, Gary; Managing the Black Hole: The Executives Guide to Software
Project Risk; Business Expert Publishing, Thomson, GA; 2010; ISBN: 10:
1-935602-01-9.
Gack, Gary; Applying Six Sigma to Software Implementation Projects; http://
software.isixsigma.com/library/content/c040915b.asp.
Galorath, Dan; and Evans, Michael; Software Sizing, Estimation, and Risk
Management; Auerbach Publications, Boca Raton, FL; 2006.
Garmus, David; and Herron, David; Measuring the Software Process: A Practical
Guide to Functional Measurement; Prentice Hall, Englewood Cliffs, NJ;
1995.
Garmus, David; and Herron, David; Function Point Analysis – Measurement
Practices for Successful Software Projects; Addison Wesley Longman,
Boston, MA; 2001; ISBN: 0-201-69944-3; 363 pages.
Gilb, Tom; and Graham, Dorothy; Software Inspections; Addison Wesley,
Reading, MA; 1993; ISBN: 10: 0201631814.
Harris, Michael D.S., Herron, David; and Iwanicki, Stasia; The Business Value of
IT; CRC Press, Auerbach; Boca Raton, FL; 2008; ISBN: 978-14200-6474-2.
International Function Point Users Group (IFPUG); IT Measurement – Practical
Advice from the Experts; Addison Wesley Longman, Boston, MA; 2002;
ISBN: 0-201-74158-X; 759 pages.
Kemerer, C.F.; “Reliability of Function Point Measurement – A Field Experiment”;
Communications of the ACM; Vol. 36; 1993; pp. 85–97.
Parthasarathy, M.A.; Practical Software Estimation – Function Point Metrics for
Insourced and Outsourced Projects; Infosys Press, Addison Wesley, Upper
Saddle River, NJ; 2007; ISBN: 0-321-43910-4.
Putnam, Lawrence H.; Measures for Excellence – Reliable Software On Time,
Within Budget; Yourdon Press, Prentice Hall, Englewood Cliffs, NJ; 1992;
ISBN: 0-13-567694-0; 336 pages.
Putnam, Lawrence H.; and Myers, Ware; Industrial Strength Software – Effective
Management Using Measurement; IEEE Press, Los Alamitos, CA; 1997;
ISBN: 0-8186-7532-2; 320 pages.
Royce, Walker; Software Project Management – Unified Framework; Addison
Wesley, Boston, MA; 1999.
Stein, Timothy R.; The Computer System Risk Management Book and Validation
Life Cycle; Paton Press, Chico, CA; 2006; ISBN: 10: 1-9328-09-5; 576 pages.
Chapter 11
Optimizing Software
Defect Removal
Efficiency (DRE)
Introduction
Note: The corona virus pandemic of 2020 introduced changes into soft-
ware development practices. Team meetings and inspections started
using Zoom or with participants wearing masks for safety.
Software quality depends upon two important variables. The first
variable is that of “defect potentials” or the sum total of bugs likely to
occur in requirements, architecture, design, code, documents, and “bad
fixes” or new bugs in bug repairs. Defect potentials are measured using
function points, since “lines of code” (LOC) cannot deal with require-
ments and design defects.
The second variable is “defect removal efficiency” (DRE) or the per-
centage of bugs found and eliminated before release of software to
clients. Defect potentials and DRE metrics were developed by IBM circa
1973 and are widely used by technology companies. Function point
metrics were also invented by IBM during the same time period.
The metrics of “defect potentials” and “defect removal efficiency
(DRE)” are useful quality metrics developed by IBM circa 1973 and
widely used by technology companies as well as by banks, insurance
companies, and other organizations with large software staffs. These
metrics were selected for Software Risk Master (SRM) because they are
the most accurate for predicting overall software quality results.
As can be seen, DRE comes down as application size goes up. For
that matter, defect potentials go up with application size. Large systems
above 10,000 function points are very risky due to high defect potentials
and low DRE values.
Table 11.3 shows the approximate DRE values for common pre-test
and test methods although there are variations for each method and also
for the patterns of methods used. Note that Table 11.3 omits architecture
bugs due to the small size of the example of only 1,000 function points.
Table 11.3 assumes top-level experts, the quality-strong “team soft-
ware process” (TSP) methodology, the Java programming language, and
CMMI level 5. Therefore, defect potentials are well below current U.S.
averages.
To illustrate the principles of optimal defect prevention, pre-test
removal, and test defect removal. Table 11.3 shows a sequence of pre-
test and test stages that will top 99% in DRE. Table 11.3 illustrates
1,000 function points and about 53,000 Java statements. Table 11.3 is
taken from the quality output predictions of SRM.
DRE measures can be applied to any combination of pre-test and
testing stages. The U.S. norm is to use static analysis before testing and
six kinds of testing: unit test, function test, regression test, performance
test, system test, and acceptance test. This combination usually results
in about 95% DRE.
Critical software for medical devices, avionics packages, weapons
systems, telecommunications switching systems, operating systems and
other software that controls complex physical devices use full pre-test
inspections and static analysis plus at least eight kinds of testing. These
applications need to top 99% in DRE in order to operate safely.
In order to top 99% in DRE Table 11.2 shows several forms of defect
prevention and includes inspections as an important pre-test removal
method. Formal inspections have the highest DRE of any known method,
and over 50 years of empirical data.
Due to the 2020 corona virus, inspections still need to be done
remotely via Zoom in 2021, which reduces efficiency.
Due to inspections, static analysis, and formal testing by certified test
personnel, the DRE for code defects can top 99.75%. It is harder to top
99% for requirements and design bugs since both resist testing and can
only be found via inspections, or by text static analysis.
Defects
Acceptance 17% 1 0 $15,225
Subtotal 87% 1 0 $283,845
Costs
Defects delivered 1
High severity 0
Security flaws 0
High severity % 11.58%
and measuring all forms of defect prevention and all forms of defect
removal.
Function point metrics are the best choice for normalizing defect
potentials since they can include the defects found in requirements,
architecture, design, and other non-code defect origins. The older LOC
Optimizing Software Defect Removal Efficiency (DRE) ◾ 315
metric can only measure code defects which are usually less than 50%
of total defects.
Introduction
From data collected by the author of this book during software assess-
ment and benchmark studies, there are major differences in the patterns
of software tool usage between “leading” and “lagging” enterprises.
Leading enterprises are defined as those in the top quartile of the com-
panies evaluated in terms of software productivity, schedule adherence,
and quality results. Lagging enterprises are those in lower quartile.
The most significant differences noted between laggards and leaders
are in the areas of project management tools, quality assurance tools,
and testing tools. Leaders tend to exceed laggards by a ratio of about
15 to 1 in the volumes of tools associated with project management and
quality control. The function point metric is proving to be a useful ana-
lytical tool for evaluating the capacities of software tool suites.
Function point metrics provide a very useful tool for comparing and
evaluating software tools in all categories. In this chapter, software tools
are categorized as follows:
Commercial Tools
There are hundreds or even thousands of commercial tools available
for software development, software project management, maintenance,
testing, quality control and other key activities associated with software
projects. There are also hundreds of proprietary, internal tools which
companies build for their own use but not for sale to others.
Every single working day, software engineers, project managers, tes-
ters, and other software professionals make use of tools between 2 hours
Optimizing Software Defect Removal Efficiency (DRE) ◾ 317
and 7 hours per day, every day. In fact without using various kinds of
tools software engineering would not even exist as an occupation.
However, the software literature has provided very little in the way
of quantitative analysis about either usage patterns or the overall impact
of tools on software productivity and quality. This chapter is an attempt
to bring the issue of tool usage to the attention of software engineering
and project management researchers.
Many commercial software tool vendors make advertising claims
about the power of their tools in terms of increasing software devel-
opment productivity, quality, or shortening schedules. Many of these
claims are not supported by empirical data and most appear to be exag-
gerated in greater or lesser degree. Indeed, the exaggerations by tool
vendors did much to discredit the value of Computer Aided Software
Engineering (CASE) which tended to promise more than it performed.
Considering the importance of software to business and industry, it is
surprising that the topic of software tool usage has been under-reported
in the software literature. Indeed, since about 1990 much of the soft-
ware engineering literature has been devoted to the subject of “software
process improvement” and tools have been regarded as a minor back-
ground issue. Tools alone do not distinguish between leaders and lag-
gards, but tool usage is a significant supplemental factor.
The author’s current company, Namcook Analytics LLC, performs
both qualitative assessments and quantitative benchmark studies for cli-
ents. A part of the analysis is collecting data on the numbers and kinds
of tools utilized for software development, project management, and
other related activities.
In addition, we also record data on software productivity, quality,
schedules, and other quantitative aspects of software performance as
well as qualitative data on the methods and processes utilized. As of
2016, the total number of software projects in our knowledge base is
rapidly pushing past 26,000 and the total number of client organizations
from which we have collected data is approaching 600 companies and
some government agencies.
Table 11.4 shows the variety of tools used by one of the author’s
clients on a large financial application of about 5,000 function points in
size. Table 11.4 shows the many different kinds of tools used circa 2016.
As can be seen, tool usage circa 2018 is complex and involves dozens
of tool vendors.
In analyzing this data, we perform multiple regression studies on the
factors that influence the outcomes of software projects. Although the
software development process is indeed a key issue, tools also exert a
major impact. This chapter discusses some of the differences in the pat-
terns of tool usage noted between “lagging” organizations and “leading”
318 ◾ Software Development Patterns and Antipatterns
In general, the set of leading companies are better in all of these factors
than either the average or lagging groups. That is, their schedules are
shorter, their quality levels are better, and they place higher on the SEI
CMMI.
in the lower quartile if the project went all the way to completion are
cancelled, and hence not studied in any depth. Therefore the projects
discussed here are those which were completed, but which were well
below average in results.
The effect of this situation is to make the lagging projects, as bad as
they are, look somewhat better than would be the case if all of the can-
celled projects were included in the same set. Unfortunately in our con-
sulting work, we are seldom asked to analyze projects that have been
terminated due to excessive cost and schedule overruns. We are often
aware of these projects, but our clients do not ask to have the projects
included in the assessment and benchmark studies that they commis-
sion us to perform.
To approximate the development schedule for projects in the
lower quartile, raise the function point total of the application to the
0.45 power to generate the number of calendar months from require-
ments to deployment. For a sample project of 1,000 function points in
size, this calculation yields a result of about 22.4 calendar months.
The defect potential or number of possible bugs that are found for
lagging projects is well above average, and runs to more than about
7.0 bugs per function point. The cumulative DRE before delivery to
clients is only about 75%, so the number of bugs still latent at the time
of delivery is an alarming 1.75 bugs per function point. Needless to say,
lagging projects have severe quality problems, unhappy users, and hor-
rendous maintenance expenses.
As will be discussed later, the lagging projects usually have no qual-
ity assurance tools or SQA teams, and may also be careless and perfunc-
tory in testing as well.
For laggards too, the productivity rates vary with the size and nature
of the application, but are typically in the range of 1.0 to 5.0 function
points per staff month, although some projects in the lower quartile
achieve only a fraction of a function point per staff month. The mini-
mum rate we’ve measured is 0.13 function points per staff month. The
best results from the laggard group seldom approach 10 function points
per staff month.
In terms of the CMMI published by the SEI, the data for the lower
quartile is representative of projects that are at well back at the rear of
Level 1 of the CMM.
numbers of tools and tool vendors also occur in the Pacific Rim and
South America.
tools which are often utilized, although there are of course duplications
of tools between the two job categories.
In recent years, a new class of tools called “static analysis tool” have
joined traditional testing tools, although usually marketed by companies
outside of traditional testing. Static analysis tools have a high efficiency
in finding bugs and are cost-effective when run prior to testing. In fact,
some of the structural defects found by static analysis tools are very dif-
ficult to find using normal testing tools and methods.
A wave of mergers and acquisitions has been sweeping through the
test and quality tool domain. As a result, test and quality assurance
tools are now starting to be marketed by larger corporations than was
formerly the case, which may increase sales volumes. For many years,
test and quality assurance tools were developed and marketed by com-
panies that tended to be small and undercapitalized.
Everett, Gerald D.; and McLeod, Raymond; Software Testing; John Wiley & Sons,
Hoboken, NJ; 2007; ISBN: 978-0-471-79371-7; 261 pages.
Gack, Gary; Managing the Black Hole: The Executives Guide to Software
Project Risk; Business Expert Publishing, Thomson, GA; 2010; ISBN: 10:
1-935602-01-9.
Gilb, Tom; and Graham, Dorothy; Software Inspections; Addison Wesley,
Reading, MA; 1993; ISBN: 10: 0201631814.
Jones, Capers; and Bonsignour, Olivier; The Economics of Software Quality;
Addison Wesley, Boston, MA; 2011; ISBN: 978-0-13-258220-9; 587 pages.
Jones, Capers; Software Engineering Best Practices; McGraw Hill, New York,
NY; 2010; ISBN: 978-0-07-162161-8;660 pages.
Jones, Capers; Applied Software Measurement, 3rd ed.; McGraw Hill, New York,
NY; 2008; ISBN: 978-0-07-150244-3; 662 pages.
Jones, Capers; Estimating Software Costs, 2nd ed.; McGraw Hill, New York, NY;
2007; 700 pages.
Kan, Stephen H.; Metrics and Models in Software Quality Engineering, 2nd ed.;
Addison Wesley Longman, Boston, MA; 2003; ISBN: 0-201-72915-6; 528
pages.
Nandyal, Raghav; Making Sense of Software Quality Assurance; Tata McGraw
Hill Publishing, New Delhi, India; 2007; ISBN: 0-07-063378-9; 350 pages.
Radice, Ronald A.; High Qualitiy Low Cost Software Inspections; Paradoxicon
Publishing, Andover, MA; 2002; ISBN: 0-9645913-1-6; 479 pages.
Wiegers, Karl E.; Peer Reviews in Software – A Practical Guide; Addison Wesley
Longman, Boston, MA; 2002; ISBN: 0-201-73485-0; 232 pages.
Chapter 12
Tool Usage on
Best-Case, Average, and
Worst-Case Projects
This section of the chapter discusses the ranges and variations of tools
noted on lagging, average, and leading projects. Three primary kinds of
information are reported in this section.
For many tools, however, the size data is only approximate and
is derived either from “backfiring” which is conversion from lines of
code to function points, or from analogy with tools of known sizes.
The size ranges for tools in this chapter are interesting, but not par-
ticularly accurate. The purpose of including the function point size
data is to examine the utilization of tool features in lagging and lead-
ing projects.
In general, the lagging projects depend to a surprising degree on
manual methods and have rather sparse tool usage in every category
except software engineering, where there are comparatively small dif-
ferences between the laggards and the leaders.
strong, but the project management and quality tool suites to be fairly
weak. This pattern is often responsible for major software disasters,
such as the long delay in opening up the Denver Airport because the
luggage-handling software was too buggy to be put into full production.
quality assurance function at all or no more than one kind of tool in use,
as shown in Table 12.4.
Quality assurance provides the greatest contrast between tool usage
and lack of tool usage. Quality assurance personnel on leading projects
use tools almost 5 hours per day and only about 2 hours per day on
average projects. For lagging projects, tools might not even be used. If
they are, usage is seldom more than 1 hour per day.
By contrast, the leaders in terms of delivery, schedule control, and
quality all have well-formed independent software quality assurance
groups that are supported by powerful and growing tool suites.
Unfortunately, even leading companies are sometimes understaffed
and underequipped with software quality assurance tools. In part, this is
due to the fact that so few companies have software measurement and
metrics programs in place that the significant business value of achiev-
ing high levels of software quality is often unknown to the management
and executive community.
334 ◾ Software Development Patterns and Antipatterns
Several tools in the quality category are identified only by their ini-
tials and need to have their purpose explained. The set of tools identified
as “QFD support” are those which support the special graphics and data
analytic methods of the “quality function deployment” methodology.
The set of tools identified as “TQM support” are those which support
the reporting and data collection criteria of the “total quality manage-
ment” methodology.
The other tools associated with the leaders are the tools of the trade
of the software quality community: tools for tracking defects, tools to
support design and code inspections, quality estimation tools, reliability
modeling tools, and complexity analysis tools.
Complexity analysis tools are fairly common, but their usage is much
more frequent among the set of leading projects than among either
average or lagging projects. Complexity analysis is a good starting point
prior to beginning complex maintenance work such as error-prone
module removal.
Another good precursor tool class prior to starting major mainte-
nance tasks would be to run static analysis tools on the entire legacy
Tool Usage on Best-Case, Average, and Worst-Case Projects ◾ 335
Introduction
Software has been a mainstay of business and government operations
for more than 60 years. As a result, all large enterprises utilize aging
software in significant amounts. Some Fortune 500 companies exceed
10,000,000 function points or 500,000,000 in the total volume of their
corporate software portfolios. Much of this software is now more than
15 years old, and some important aging applications such as air traffic
control are more than 35 years old.
Maintenance of aging software tends to become more difficult and
expensive year by year since annual updates gradually destroy the
original structure of the applications and increase its entropy and cylo-
matic complexity. On average the cyclomatic complexity of aging soft-
ware applications increases by as much as 1% per calendar year due to
numerous minor and a few major changes.
Aging software also becomes larger each year as changes increase
function point totals and also total volumes of source code. Aging soft-
ware often has large inclusions of “dead code” that used to perform
useful function but which have been bypassed by newer changes. Dead
code tends to make maintenance more complex and harder to perform.
Another attribute of aging software is that of a steady increase in
“bad fix” injections. Bad fixes are new bugs accidentally included in
repairs of reported bugs. The U.S. average for bad-fix injections is about
1.50% for new applications, but increases steadily over time as system
Table 13.3 Major Kinds of Work Performed under the Generic Term
“Maintenance”
1 Major Enhancements (new features of >50 function points)
2 Minor Enhancements (new features of <5 function points)
3 Maintenance (repairing customer defects for good will and pro bono)
4 Warranty repairs (repairing defects under formal contract of for a fee)
5 Customer support (responding to client phone calls or problem reports)
6 Error-prone module removal (eliminating very troublesome code segments)
7 Mandatory changes (required or statutory changes such as new tax laws)
8 Complexity or structural analysis (charting control flow plus complexity
metrics)
9 Code restructuring (reducing cyclomatic and essential complexity)
10 Optimization (increasing performance or throughput)
11 Migration (moving software from one platform to another)
12 Conversion (changing the interface or file structure)
13 Reverse engineering (extracting latent design information from code)
14 Reengineering (transforming legacy application to modern forms)
15 Dead code removal (removing segments no longer utilized)
16 Dormant application elimination (archiving unused software)
17 Nationalization (modifying software for international use)
18 Mass updates such as Euro or Year 2000 Repairs
19 Refactoring, or reprogramming applications to improve clarity
20 Retirement (withdrawing an application from active service)
21 Field service (sending maintenance members to client locations)
22 Reporting bugs or defects to software vendors
23 Installing updates received from software vendors
348 ◾ Software Development Patterns and Antipatterns
1. Latent defects still present at release must be found and fixed after
deployment.
2. Applications continue to grow and add new features at a rate of
between 5%and 10% per calendar year, due either to changes in
business needs or to new laws and regulations, or both.
3. The combination of defect repairs and enhancements tends to
gradually degrade the structure and increase the complexity of the
application. The term for this increase in complexity over time is
called “entropy.” The average rate at which software entropy
increases is about 1% to 3% per calendar year.
Since defect potentials tend to rise with the overall size of the appli-
cation, and since defect removal efficiency levels tend to decline with the
overall size of the application, the overall volume of latent defects deliv-
ered with the application rises with size. This explains why super-large
applications in the range of 100,000 function points, such as Microsoft
Windows and many enterprise resource planning (ERP) applications,
may require years to reach a point of relative stability. These large sys-
tems are delivered with thousands of latent bugs or defects.
Not only is software deployed with a significant volume of latent
defects, but a phenomenon called “bad fix injection” has been observed
for more than 50 years. Roughly 7% of all defect repairs will contain
a new defect that was not there before. For very complex and poorly
structured applications, these bad-fix injections have topped 20% (3).
Even more alarming, once a bad fix occurs it is very difficult to cor-
rect the situation. Although the U.S. average for initial bad-fix injection
rates is about 7%, the secondary injection rate against previous bad fixes
is about 15% for the initial repair and 30% for the second. A string of up
to five consecutive bad fixes has been observed, with each attempted
repair adding new problems and failing to correct the initial problem.
Finally, the 6th repair attempt was successful.
In the 1970s, the IBM Corporation did a distribution analysis of
customer-reported defects against their main commercial software appli-
cations. The IBM personnel involved in the study, including the author
of the book, were surprised to find that defects were not randomly dis-
tributed through all of the modules of large applications (4).
In the case of IBM’s main operating system, about 5% of the mod-
ules contained just over 50% of all reported defects. The most extreme
example was a large data base application, where 31 modules out of 425
contained more than 60% of all customer-reported bugs. These trouble-
some areas were known as “error-prone modules (EPM).”
Similar studies by other corporations such as AT&T and ITT found that
error-prone modules were endemic in the software domain. More than 90%
of applications larger than 5,000 function points were found to contain
error-prone modules in the 1980s and early 1990s. Summaries of the error-
prone module data from a number of companies were published in the
author’s book Software Quality: Analysis and Guidelines for Success (3).
Fortunately, it is possible to surgically remove error-prone modules
once they are identified. It is also possible to prevent them from occur-
ring. A combination of defect measurements, static analysis of all legacy
code, formal design inspections, formal code inspections, and formal
testing and test-coverage analysis has been proven to be effective in
preventing error-prone modules from coming into existence (5).
350 ◾ Software Development Patterns and Antipatterns
Function Points as a
Universal Metric
Introduction
Function point metrics are the most accurate and effective metrics yet
developed for software sizing and also for studying software productiv-
ity, quality, costs, risks, and economic value. The newer SNAP metric
may also add value for the work effort of dealing with non-functional
requirements.
In the future, function point metrics combined with SNAP can easily
become universal metrics used for all software applications and for all
software contracts in all countries. However, there are some logistical
problems with function point metrics that need to be understood and
overcome in order for function point metrics to become the primary
metric for software economic analysis.
The ultimate goal of function point metrics should be to size and
estimate all known types of software applications including but not
limited to:
• New projects
• Enhancements to existing software
• Maintenance changes to existing software
• Internal software
• Commercial software
• Embedded and real time software
• Artificial Intelligence (AI) projects
Function point metrics are the only available metric that can measure
six of the seven cost drivers individually or together for economic analy-
sis of total software projects. The newer SNAP metric measures non-
functional requirements.
The older “lines of code” or LOC metric only measured coding and
did not even measure coding accurately. LOC metrics penalize modern
high-level programming languages as discussed later in topic 14 of this
chapter.
CEOs and other C-level executives want to know much more than
just the coding part of software applications. They want to know the full
cost of applications and their complete schedules from requirements
through delivery. They also want to know multi-year maintenance and
enhancement costs plus total cost of ownership (TCO).
Function Points as a Universal Metric ◾ 371
1. From more than 200 trials, sizing speed averages about 1.87 min-
utes per application. This speed is more or less constant between
applications as small as 10 function points or as large as 300,000
function points.
2. The sizing method often comes within 5% of manual counts by
certified counters. The closest match was an SRM predicted size of
1,802 function points for an application sized manually at 1,800
function points.
3. The sizing method can also be used prior to full requirements,
which is the earliest of any known software sizing method.
Function Points as a Universal Metric ◾ 373
fastest and least expensive method of sizing yet developed. This makes
SRM useful for Agile projects where normal function point analysis is
seldom used.
Because sizing is based on external attributes rather than internal
factors, SRM sizing can take place before full requirements are available;
this is 3 to 6 months earlier than most other sizing methods. Early sizing
leaves time for risk abatement for potentially hazardous projects.
◾ 385
(Continued)
Table 14.6 (Continued)
386
Application Size
Namcook Frequency of
Excellence Scale Meaning Occurrence
1 = Excellent State of the art 2.0%
2 = Good Superior to most companies 18.0%
3 = Average Normal in most factors 56.0%
4 = Poor Deficient in some factors 20.0%
5 = Very Poor Deficient in most factors 4.0%
The SEI maturity level scale was first published by Watts Humphrey
in 1989 in his well- known book Managing the Software Process
(Humphrey 1989).
Frequency of
SEI Maturity Level Meaning Occurrence
1 = Initial Chaotic 75.0%
2 = Repeatable Marginal 15.0%
3 = Defined Adequate 8.0%
4 = Managed Good to excellent 1.5%
5 = Optimizing State of the art 0.5%
While such claims are often true mathematically, the following are
three hidden problems with cost per defect that are usually not dis-
cussed in the software literature:
1. Cost per defect penalizes quality and is always cheapest where the
greatest numbers of bugs are found.
2. Because more bugs are found at the beginning of development
than at the end, the increase in cost per defect is artificial. Actual
Table 14.8 SRM Defect Prediction for Waterfall Development
1,000 function points; inexperienced team; CMMI level 1; Waterfall; C language
106,670 logical code statements; 106.7 KLOC
◾ 391
392 ◾ Software Development Patterns and Antipatterns
Defects delivered 1
High severity 0
Security flaws 0
High severity % 11.58%
time and motion studies of defect repairs show little variance from
end to end.
3. Even if calculated correctly, cost per defect does not measure the
true economic value of improved software quality. Over and above
the costs of finding and fixing bugs, high quality leads to shorter
development schedules and overall reductions in development
costs. These savings are not included in cost per defect calcula-
tions, so the metric understates the true value of quality by several
hundred percent.
Let us consider the cost per defect problem areas using examples that
illustrate the main points.
As quality improves, “cost per defect” rises sharply. The reason for
this is that writing test cases and running them act like fixed costs. It is
a well-known law of manufacturing economics that:
394 ◾ Software Development Patterns and Antipatterns
As an application moves through a full test cycle that includes unit test,
function test, regression test, performance test, system test, and accep-
tance test the time required to write test cases and the time required to
run test cases stays almost constant, but the number of defects found
steadily decreases.
Table 14.8.2 shows the approximate costs for the three cost elements
of preparation, execution, and repair for the test cycles just cited using
the same rate of $75.75 per hour for all activities.
What is most interesting about Table 14.8.2 is that cost per defect
rises steadily as defect volumes come down, even though Table 14.8.2
uses a constant value of 5 hours to repair defects for every single test
stage. In other words, every defect identified throughout Table 14.1 had
a constant cost of $378.25 when only repairs are considered.
In fact all three columns use constant values and the only true vari-
able in the example is the number of defects found. In real life, of
course, preparation, execution, and repairs would all be variables. But
by making them constant, it is easier to illustrate the main point: cost per
defect rises as numbers of defects decline.
Let us now consider cost per function point as an alternative metric
for measuring the costs of defect removal.
An alternate way of showing the economics of defect removal is to
switch from “cost per defect” and use “defect removal cost per function
point.” Table 14.8.3 uses the same basic information as Table 14.8.3, but
expresses all costs in terms of cost per function point.
The advantage of defect removal cost per function point over cost
per defect is that it actually matches the assumptions of standard eco-
nomics. In other words, as quality improves and defect volumes decline,
cost per function point tracks these benefits and also declines. High
quality is shown to be cheaper than poor quality, while with cost per
defect high quality is incorrectly shown as being more expensive.
◾ 395
396 ◾ Software Development Patterns and Antipatterns
Table 14.8.3 Cost per Function Point for Six Forms of Testing
(Assumes $75.75 per staff hour for costs)
(Assumes 100 function points in the application)
Writing Running Number
Test Test Repairing Total $ of
Cases Cases Defects per FP Defects
Unit test $12.50 $7.50 $189.38 $209.38 50
Function test $12.50 $7.50 $75.75 $95.75 20
Regression test $12.50 $7.50 $37.88 $57.88 10
Performance test $12.50 $7.50 $18.94 $38.94 5
System test $12.50 $7.50 $11.36 $31.36 3
Acceptance test $12.50 $7.50 $3.79 $23.79 1
◾ 397
Enhancement effort % 12.47% 13.37% 14.16% 14.21% 13.64% 13.60%
(Continued)
398
◾ Software Development Patterns and Antipatterns
Table 14.9 (Continued)
(Maintenance + Enhancement)
Year 1 Year 2 Year 3 Year 4 Year 5 5-Year
2018 2019 2020 2021 2022 Total
Maintenance effort % 87.53% 86.63% 85.84% 85.79% 86.36% 86.40%
Total effort % 100.00% 100.00% 100.00% 100.00% 100.00% 100.00%
High quality can reduce development costs by about 15% but reduces
maintenance costs by more than 45% per year. The cumulative eco-
nomic value of quality methods such as inspections and static analysis
is much better when demonstrated using TCO than when only using
development.
The TCO of the “average” sample shown here was just over $3,000,000.
The TCO of a high-quality version of the same application that used pre-
test inspections and static analysis would probably have been below
$1,500,000 with the bulk of the saving accruing after release due to
lower customer support and maintenance costs.
In general poor management practices are the chief culprit for canceled
projects. Managers don’t understand quality and try and bypass pre-test
inspections or static analysis, which later doubles testing durations.
Then managers conceal problems from clients and higher manage-
ment in the false hope that the problems will be solved or go away. The
inevitable results are massive cost overruns, long schedule delays, and
outright cancellation. It is no wonder CEOs have a low regard for the
software groups in their companies.
402 ◾ Software Development Patterns and Antipatterns
(Continued)
404 ◾ Software Development Patterns and Antipatterns
Number of
Applications Function Lines of
Corporate Functions Used Points Code
56 Payrolls 21 52,837 2,906,047
57 Planning – manufacturing 42 63,254 3,478,996
58 Planning – products 10 15,000 825,000
59 Process management 12 17,828 980,514
60 Product design 56 140,585 7,732,193
61 Product nationalization 13 30,004 1,650,233
62 Product testing 38 56,376 3,100,659
63 Project offices 32 55,340 3,043,692
64 Project management 10 27,500 1,512,500
65 Purchasing 30 44,781 2,462,941
66 Quality control 13 20,003 1,100,155
67 Real estate 8 12,621 694,151
68 Research and development 106 370,739 20,390,634
69 Sales 45 67,003 3,685,140
70 Sales support 15 22,444 1,234,394
71 Security – buildings 21 31,702 1,743,628
72 Security – computing and 32 110,680 6,087,384
software
73 Shareholder relationships 8 29,449 1,619,686
74 Shipping/receiving products 27 66,518 3,658,497
75 Software development 79 238,298 13,106,416
76 Standards compliance 13 20,003 1,100,155
77 Stocks and bonds 21 73,972 4,068,466
78 Supply chain management 47 70,973 3,903,498
79 Taxes 42 84,339 4,638,662
80 Travel 10 25,000 1,375,000
81 Unbudgeted costs – cyber 32 86,963 4,782,945
attacks
82 Warranty support 7 10,025 551,384
2,366 5,192,567 308,410,789
Table 14.12 Approximate Industry Productivity and Quality Using Function Point Metrics
406
Software Defect Removal Delivered
◾ 407
34 Public utilities – electricity 7.00 4.80 90.50% 0.46
(Continued)
Table 14.12 (Continued)
408
Software Defect Removal Delivered
Productivity Potentials Efficiency Defects
◾ 409
68 Government – municipal 7.00 5.50 84.00% 0.88
Total/Averages 8.95 4.82 90.39% 0.46
410 ◾ Software Development Patterns and Antipatterns
◾ 413
33 Singapore 9.40 4.80 86.00% 0.67
(Continued)
Table 14.13 (Continued)
414
Approximate Approximate Defect Approximate Approximate
◾ 415
Average/Total 8.59 4.85 86.27% 0.67
416 ◾ Software Development Patterns and Antipatterns
(Continued)
420 ◾ Software Development Patterns and Antipatterns
has been highly automated for many years, there is not as large a differ-
ence in Table 14.15.3 as there was in Table 14.15.2.
If we went through the entire suites of tools used for development,
maintenance, testing, quality assurance, technical manuals, and admin-
istration, we would find that leading software development organiza-
tions use about 90 tools that total to more than about 150,000 function
points.
Lagging companies use only about 30 tools at a little more than
25,000 function points.
Average companies use about 50 different tools with a total size of
perhaps 50,000 function points.
SRM includes estimates for both the odds of litigation occurring and
also for the probable legal expenses for both the plaintiff and the defen-
dant. For example if an outsource contract for an application of 10,000
function points goes to court for breach of contract, the probable costs
to the plaintiff will be about $7,500,000 and the probable costs to the
defendant will be about $9,000,000 if the case goes through trial (about
90% settle out of court). Of course whichever side loses will have much
higher costs due to probable damages and perhaps paying court costs
for both sides.
Software Risk Master predicts attorney fees, paralegal fees, and
expert witness fees. It also predicts the lost time for executives and
technical staff when they are involved with discovery and depositions.
SRM also predicts the probable month the litigation will be filed, and
the probable duration of the trial.
About 90% of lawsuits settle out of court. SRM cannot predict out
of court settlements since many of these are sealed and data is not
available.
In the modern era, an increasingly large number of organizations
are moving toward outsourcing or the use of contractors for develop-
ment or maintenance (or both) of their software applications. Although
the general performance of outsourcing vendors and contract software
development organizations is better than the performance of the clients
they serve, it is not perfect.
When software is developed internally within a company and it runs
late or exceeds its budget, there are often significant disputes between
the development organization and the clients who commissioned the
project and are funding it, as well as the top corporate executives.
Although these internal disputes are unpleasant and divisive, they gen-
erally do not end up in court under litigation.
When software is developed by a contractor and runs late or exceeds
the budget, or when it is delivered in less than perfect condition, the dis-
putes have a very high probability of moving to litigation for breach of
contract. From time to time, lawsuits may go beyond breach of contract
and reach the point where clients charge fraud.
As international outsourcing becomes more common, some of these
disputes involve organizations in different countries. When international
laws are involved, the resolution of the disputes can be very expensive
and protracted. For example, some contracts require that litigation be
filed and use the laws of other countries such as Hong Kong or China.
The author of this book has often commissioned to perform inde-
pendent assessments of software projects where there is an anticipa-
tion of some kind of delay, overrun, or quality problem. He has also
been engaged to serve as expert witnesses in a dozen lawsuits involving
Function Points as a Universal Metric ◾ 431
technologies for building large systems exist, but less than5% of com-
panies know them based on on-site discussions with executives and
development teams. This is true of outsource companies as well as com-
mercial developers, in-house IT systems, and even games.
From process assessments performed within several large outsource
companies, and analysis of projects produced by outsource vendors,
our data indicates better than average quality control approaches when
compared to the companies and industries who engaged the outsource
vendors.
Software estimating, contracting, and assessment methodologies have
advanced enough so that the root causes of software outsource con-
tracts can now be overcome. Software estimation is now sophisticated
enough so that a formal estimate using one or more of the commercial
parametric software estimation tools in conjunction with software proj-
ect management tools can minimize or eliminate unpleasant surprises
later due to schedule slippages or cost overruns.
Indeed, old-fashioned purely manual cost and schedule estimates for
major software contracts should probably be considered an example of
professional malpractice. Manual estimates are certainly inadequate for
software contracts or outsource agreements whose value is larger than
about $500,000.
A new form of software contract based on the use of function point
metrics is clarifying the initial agreement and putting the agreement
in quantitative, unambiguous terms. This new form of contract can
also deal with the impact of creeping user requirements in a way that
is agreeable to both parties. As mentioned earlier, the government of
Brazil now requires function point metrics for all software contracts.
For major software contracts involving large systems in excess of
10,000 function points independent assessments of progress at key
points may also be useful.
As stated, the author of this book has been an expert witness in a
dozen breach of contract lawsuits.
Function Points as a Universal Metric ◾ 433
The four most common reasons for breach of contract include the
following:
Outsource contracts are often poorly formed and contain clauses that
don’t make sense. For example, a contract between a vendor and a State
government included a clause that required the vendor to deliver “zero
defect” software. This was technically impossible and should not have
been in the contract. The vendor should never have agreed to this, and
the vendor’s lawyer was flirting with professional malpractice to allow
such a clause to remain.
Other cases where function points have been useful in deciding the
issues include the following:
A Canadian case involved 82 major changes which doubled the
size of an application from 10,000 to 20,000 function points. The client
refused to pay claiming that the changes were “elaborations” and not
new features. The court decided that since function points measure fea-
tures, the 82 changes were in fact new features and ordered the defen-
dant to pay the vendor.
An arbitration in Hong Kong involved adding 13,000 function points
to an application late in development. The contract was a fixed-price con-
tract. Since it is a proven fact that late changes cost more than original
work, the vendor was asking for additional fees to recover the higher
costs. Following is the author’s suggested format for a project status report.
Note that the first topic each month will be a discussion of “red flag”
items that might throw off the schedule or costs of the project.
Table 14.16.4 shows the same 10,000 function point application, but
the probable costs for the defendant are shown instead of the plaintiff.
The information in Tables 14.16.1 through 14.16.4 is generic and not
based on any specific case. Defendant costs are often higher than those
of the plaintiff because the downside of losing a major breach of con-
tract lawsuit can be very expensive indeed.
Once again, the author of this book is not an attorney and is not
providing any legal advice. Readers considering litigation for software
projects in trouble should seek legal advice from attorneys. But having
worked as an expert witness in a number of breach of contract cases, it
seems much better to have a good contract before starting and to have
436 ◾ Software Development Patterns and Antipatterns
The investment cost per function point for the average case is
$2,815.95. This is the investment needed for the total company including
software, marketing, sales, administration, and management. In other
words, function points can be applied to software corporate startups if
software is the main and only product. The CEOs in this case would be
the actual entrepreneurs.
Function Points as a Universal Metric ◾ 439
Table 14.17.3 shows the risks and venture funding for the same size
and type of software project, but with an inexperienced team using
marginal methods.
The investment for the worst-case scenario is shocking $10,551.72.
It is unlikely that professional venture capitalists would put so much
money into such a poorly staffed and organized group. Almost certainly,
the funds would stop before the third round and the company would go
bankrupt without making their initial delivery.
The early failure of venture-backed software companies is harmful
to both the entrepreneurs and to the venture capitalists. Software Risk
Master (SRM) can be used prior to any actual investment and show both
parties the probable schedules, costs, team size, and quality to bring the
first release to market. SRM can also predict post-release enhancements
and maintenance of 5 years. It also predicts numbers of bugs that might
be released and the customer support costs needed to deal with them.
in the study included AT&T itself, IBM, Ford Motors, Texas Instruments,
the U.S. Navy, and a dozen other somewhat smaller organizations.
The study found a total of 116 different occupations associated with
software. No individual project employs all 116, but several large sys-
tems in large companies have employed 50 different occupations. In
fact for large systems, pure programming may be less than 25% of the
total effort.
The study also encountered the following interesting sociological
phenomena:
One of the many problems with the older “lines of code” or LOC metric
is that it cannot be used to measure the performance of business ana-
lysts, quality assurance, technical writers, project managers, or any of
the 116 occupation groups other than pure programmers.
Function point metrics, on the other hand, can be used to measure
the performance of all 116 occupations. There are two key methods for
doing this. The first is to use function points to measure the “assignment
scope” or the amount of work assigned to one person in a specific occu-
pation. The second is to use function points to measure the “production
rate” or the amount of work one person can perform in a given time
period such as a calendar month.
Here is a small example just to illustrate the points. Assume the proj-
ect under development is 1,000 function points in size.
To measure the work of software quality assurance specialists (SQA),
assume that the assignment scope is 500 function points. This means
Function Points as a Universal Metric ◾ 441
that two SQA personnel will be needed for the total application of 1,000
function points.
Assume that the production rate of the two SQA personnel is each
250 function points per calendar month. That means that each SQA
person will need two calendar months to complete their analysis of the
quality of their portion of the application.
Putting both sets of measures together, the application of 1,000 func-
tion points needed 2 SQA personnel who together worked for a total
of 4 months. The net productivity for SQA in this case would be 1,000
function points divided by 4 months of effort or 250 function points per
staff month. Using the reciprocal measure of work hours per function
point, the SQA effort would be 1.89 work hours per function point. Note
that these are merely examples to illustrate the math and should not be
used for actual estimates.
The main point is that function point metrics are the only available
metric that can analyze the contributions of all 116 different occupation
groups. Table 14.18 lists the 116 occupations in alphabetical order.
Software engineering is following a similar path as did the older
forms of engineering, and for that matter of medicine and law. The path
includes more and more granular forms of specialization.
As more different kinds of specialists appear and begin to work
on large and complex software applications, pure coding is no longer
the major activity. In fact many large applications create more English
words by far than they do code, and the costs of the words are much
higher. Some military software projects have been measured at creating
about 400 English words for every Ada statement!
Function point metrics are useful in analyzing the overall perfor-
mance of the occupation groups employed on large and complex soft-
ware systems.
As an example of the diversity of occupations on large software
applications, Table 14.19.1 shows the pattern of occupation groups for
a very large system of 100,000 function points. Table 14.19 is a standard
output from SRM.
Although programmers are the largest occupation group with an
average size of 290 personnel, that is only 25.92% of the total personnel
employed. Large systems use many occupations.
• LOC metrics are useless for requirements and design analysis and
they also penalize high-level languages. They are harmful for eco-
nomic studies covering multiple programming languages.
• Cost per defect penalizes quality and does not measure the value
of quality.
• Story points are not standardized and have no major collections of
benchmark data.
• Use-case points are useful for applications that use the UML and
use-cases, but worthless for other kinds of software.
Function point metrics are the best metric yet developed for understand-
ing software productivity, software quality, and software economics.
◾ 449
36 ISO standards certification 9 7 No standard metrics
(Continued)
450
Table 14.19.1 (Continued)
Software Benchmarks CEO Interest CFO Interest Best Metrics Used for Benchmarks
◾ 451
452 ◾ Software Development Patterns and Antipatterns
per defect” have been inaccurate and fail to show true quality econom-
ics. Quality metrics such as “defects per KLOC” ignore requirements
and design defects, which outnumber code defects for large software
systems.
Function point metrics combined with DRE provide the strongest
and most accurate set of quality metrics yet developed. DRE is com-
bined with a function-point value called “defect potential” or the total
numbers of bugs that are likely to be found. Here too this metric origi-
nated in IBM in the early 1970’s. In fact the author of this book was on
one of the original IBM teams that created this metric and collected data
from internal projects.
The DRE metric was developed in IBM in the early 1970s at the same
time IBM was developing formal inspections. In fact this metric was
used to prove the efficiency of formal inspections compared to testing
by itself.
The concept of DRE is to keep track of all bugs found by the develop-
ment teams and then compare those bugs to post-release bugs reported
by customers in a fixed time period of 90 days after the initial release.
If the development team found 900 bugs prior to release and cus-
tomer reported 100 bugs in the first 3 months, then the total volume of
bugs was an even 1,000 so DRE is 90%. This combination is simple in
concept and powerful in impact.
The U.S. average for DRE is just a bit over 85%. Testing alone is not
sufficient to raise DRE much above 90%. To approach or exceed 99% in
DRE, it is necessary to use a synergistic combination of pre-test static
analysis and inspections combined with formal testing using mathe-
matically designed test cases, ideally created by certified test person-
nel. DRE can also be applied to defects found in other materials such
as requirements and design. Table 14.20 illustrates current ranges for
defect potentials and DRE levels in the United States for applications in
the 1,000 function point size range.
Predictions of defect potentials and DRE levels are standard features
of SRM. In fact not only are they standard, but they are also patent-
pending features.
A natural metric is a count of visible objects that are easy to see and
in many cases can even be touched and examined using many senses.
A prime example of a natural metric for software applications is “pages
of documentation.”
Software applications are highly paper driven. In fact some defense
software projects create more than 100 document types containing more
than 1,400 English words for every Ada statement. The cost of the words
is greater than the costs of the code itself.
454 ◾ Software Development Patterns and Antipatterns
There are three key points for large software projects: (1) paperwork
is often the most expensive item produced on large software projects;
(2) some paper documents such as requirements and design contain
many errors or defects that need to be included in quality studies; (3)
function point metrics are the most effective metric for sizing docu-
ments and studying document creation costs, as well as defects or bugs
found in various documents.
For a 10,000 function point software application, the U.S. average is
about 10.43 pages per function points; 2,607 English words per function
point. Total documentation costs are $783.86 per function point which
comprises 24.30% of the total application development costs. Defects
in requirements and design would top 2.25 per function point which is
larger than code defects of about 1.75 defects per function point.
These are general goals that deal with common software problems that
occur with high frequency. There may also be unique and specific goals
for individual projects, but all of the goals shown above probably need
to be addressed for every major software project.
100 function points. Each component would be an EVA unit that could
be inserted into standard EVA calculations.
Venture capital horizons are normally only three years so let us consider
what might occur in terms of value over a three-year period.
The best-case scenario is that by means of effective development
utilizing inspections, static analysis, and formal testing, the application
is delivered 1 month early and has a measured DRE level of 98%. Post-
release maintenance will cost $500,000 per year.
In this case, annual revenues will be $250,000,000 per year plus the
extra $16,000,000 for being early. The three-year revenue stream would
total to $786,000,000 which is $786,000 per function point.
When the initial venture investment is $3,000 per function point
plus three years of maintenance total to $4,500,000. When this is com-
pared to the three-year revenue stream, the ROI is $175 for every $1.00
invested. This kind of ROI is the hope of every entrepreneur and every
venture capitalist.
For the best-case scenario, the total venture investment was $4,500 per
function point and the revenue stream amounted to $786,000 per func-
tion point. The entrepreneurs are on their way to billionaire status.
Patents and aggressive patent litigation keep fast followers at bay.
The worst-case scenario is that the company is inept in software
development and tries to deliver early by bypassing pre-test static analy-
sis and inspections to save time. Instead of saving time, the application
is so buggy when test begins that the testing cycle stretches out for an
extra 6 months so the application lost $96,000,000 in first year revenues.
Cumulative DRE is a dismal 83%. Not only that but another round of
venture funding is needed bringing the total investment to $6,000,000.
Post-release maintenance on all of the delivered bugs cost $5,000,000
per year.
Due to shipping late and having poor quality, the total revenues for
three years are only $125,000,000. Between the initial investment of
$6,000,000 and annual maintenance costs of $5,000,000 per year, the
three-year costs for this case are $21,000,000.
If you divide the revenues of $125,000,000 by the costs of $21,000,000,
the ROI for the project is positive but only $5.95 for every dollar invested.
This low ROI is actually below the level that most venture funds would
invest in.
The three- year costs totaled to an alarming $21,000 per function
point. The revenue stream was only $125,000 per function point. While
the company managed to stay in business for three years, which is rare
for venture-funded software companies, it is obvious that poor quality
is reducing market share and raising maintenance costs to unacceptable
levels.
462 ◾ Software Development Patterns and Antipatterns
Worse, the basic idea of the product attracted the attention of “fast
followers” who bring out similar products with extra features at lower
cost and better quality. As a result, revenues erode and market share
plummets.
Within two years, the initial product generated only $10,000,000 per
year in revenues with expenses of $10,000,000 due to poor quality.
The company goes bankrupt in year 5 while the leading fast follower
establishes a strong new market for the basic idea and soon becomes a
billion-dollar company.
The essential point is that function point metrics are useful in value
analysis, but in order to optimize value and make software appealing to
CEOs, other C-level executives, and to the venture capital community,
the software organization needs to understand effective development
practices and also software economics.
Partial measures such as “design, code, and unit test” or DCUT have
no place in economic value analysis, nor do inaccurate measures such
as “lines of code” (LOC), and “cost per defect.” Leakage or failing to mea-
sure 100% of development costs should also be avoided.
The recent “technical debt” metric is an interesting and useful meta-
phor, but woefully incomplete. As currently defined by a majority of
users, “technical debt” only covers about 17% of the total cost of poor
quality.
Technical debt omits the costs of software projects whose quality is
so bad they are canceled and never released. Even more serious, techni-
cal debt omits the costs of litigation and damages against vendors who
are sued for poor quality and lose the lawsuits. The costs of litigation
and damage can be larger than normal “technical debt” costs by more
than 1,000 to 1.
For that matter, expensive and ineffective development methods
such as pair programming should be avoided. Pair programming more
than doubles software costs at no tangible improvement in schedules,
quality, or application value.
Function point metrics can be applied to software size, software
development, software documentation, software quality, software main-
tenance, software outsource contracts, and software venture capital
investment. No other software metric has such a wide range of usefulness.
defect.” They are also much better than alternate metrics such as “story
points” and “use-case points.”
However, the slow speed and high costs of manual function point
analysis has caused function points to be viewed by top-executives such
as CEOs as a minor niche metric. In order to be useful to C level execu-
tives, function point metrics need the following:
Additional Literature
The literature on function point metrics is quite extensive. Following are
some of the more useful books:
Abran, Alain; Software Estimating Models; Wiley-IEEE Computer Society; 2015.
Abran, Alain; Software Metrics and Metrology; Wiley-IEEE Computer Society;
2010.
Abran, Alain; Software Maintenance Management: Evolution and Continuous
Improvement; Wiley-IEEE Computer Society; 2008.
Function Points as a Universal Metric ◾ 465
Putnam, Lawrence H.; and Myers, Ware; Industrial Strength Software - Effective
Management Using Measurement; IEEE Press, Los Alamitos, CA; 1997;
ISBN: 0-8186-7532-2; 320 pages.
Royce, Walker; Software Project Management – Unified Framework; Addison
Wesley, Boston, MA; 1999.
Stein, Timothy R.; The Computer System Risk Management Book and Validation
Life Cycle; Paton Press, Chico, CA; 2006; ISBN: 10-1-9328-09-5; 576 pages.
Stutzke, Richard D.; Estimating Software-Intensive Systems; Addison Wesley,
Upper Saddle River, NJ; 2005; ISBN: 0-201-70312-2; 918 pages.
Index
Page numbers in bold refer to table; page numbers followed by ‘n’ refer to notes number.
467
468 ◾ Index
attorneys, 63, 86, 97–98, 188, 259, 266, activity-based, 125, 132–133
430, 434, 435–436 best metrics, 448–451
automated counts (for legacy description, 108–109
applications), 176 forms, 32
automated FPs, 106 historical data, 87–88
hazards, 285 best in class, 89, 92, 120, 194, 335, 348
Automated Project Office (APO), 17, 37, best-case patterns of software
92, 175, 196, 251–252, 318 development, 209–466
automated testing, 68, 74, 221 achieving software excellence, 247–274
automated tools, 13, 316, 336, 427–429 corporate software risk reduction
automatic FPs, 111 in Fortune 500 company, 209,
average organizations, 251–252 211–236
maintenance engineering tools, 346 early sizing and estimating of software
software documentation tools, 338 projects, 279–306
software engineering tools, 331 FPs as universal metric, 369–466
software engineering tools (numbers geriatric care for software, 343–364
and size ranges), 426 optimizing software DRE, 309–325
software maintenance engineering tool usage on best-case, average, and
tools, 333 worst-case projects, 327–341
software project management tools, 329 best practices, 11, 85, 449–451
software quality assurance tools, 334 software tools, methods, quality, 34–36,
software testing tools, 336 37–40
tools utilized, 339 board certification (professional status
total tool FPs, 340 requirement), 199–200
average software projects, 320–321 Boehm, Barry, 10, 14–15, 221, 280
avionics, 64, 283, 312, 378 Bonsignour, Olivier, 13, 48, 51, 110
brake systems (defective), 197
B Brazil, 34, 88, 106, 283, 289, 410, 412,
429, 432
backfiring, 92, 111, 214, 280, 284, 328, breach of contract litigation, xvii, 1, 6, 14,
329, 352, 372, 377, 402, 425 16, 24, 53, 63, 228, 252, 267,
description, 108 381, 430–431, 448
bad fixes, 25, 31, 37, 61, 67, 69, 74, 91, costs, 109
123, 124, 126–131, 138, 153, defendant costs, 435, 436
155, 180, 198, 227, 238, 253, defenses, 85–98
289, 290, 349–350, 358, 363, elimination (professional status
391–392, 453 requirement), 197–198
geriatric software, 343–344 most common reasons, 433
US average, 310 odds of out-of-court settlement,
Bank of Montreal, 283 435–436
bankruptcy, 240, 244, 300, 437, 439, 462 plaintiff cost analysis, 434, 435
banks and banking, 256, 373–374, 384, root causes, 197–198, 431
406–407 Brooks, Fred, 221
basic assembly language, 160, 165, Mythical Man-Month (1974, 1995), 10
168, 201 brownfield development, 344–345, 361
Basili, Victor, 111, 456 bug-fixing, 47–49, 50, 52, 54, 110,
benchmark costs, 445–447 229–230, 259, 272, 331
benchmark data, 281–283, 381 cost driver, 446
benchmark data collection, 111, 329, 425 costs, 175
benchmarks, 6–7, 98, 196, 222–223, 227, largest single expense, 89–90, 124
236, 284, 463 urban legend, 26, 109, 390, 464
Index ◾ 469
bug repairs, 57, 196–197, 215, 228, 250 CMMI (Capability Maturity Model
containing new bugs (same as “bad Integrated), xv, 10, 16, 38–40,
fixes”, qv), 25–27 50, 52, 62, 70, 74, 220, 227,
top cost driver, 19; see also defect 264, 266, 302, 350, 389, 442, 449
repairs “average”, “leading”, or “lagging”
bug reports, 135, 137–139, 455 software projects, 321–322
bugs, xvii, 24, 51, 58, 96–97, 116, 119–120, FPs for evaluating, 384–389
121, 135, 252, 256, 259 CMMI levels, 29, 114, 123, 147, 178, 242,
unfortunate effects, 49 250, 265, 293, 304, 311–312,
Business Process Reengineering, 442 373, 381, 384, 387–388, 390,
business risks, 240–241 391, 427–428, 451, 463
Business Value of IT (Harris et al., COBOL, 12, 108, 160, 165, 176, 192, 280,
2008), 459 335, 352, 361, 416
cochlear implants, 143, 300, 378
C code defects, 27, 124, 253, 256, 290,
453, 454
C language, 123, 144, 160, 165, 285, code defects potential, 313, 391–392
303, 304, 335, 376, 391, 417, code development work, 50, 52–53
419, 421 code inspections, 89, 91, 127, 132, 201,
C# language, 162, 166, 293, 304, 335, 336, 457
418, 420, 422, 444 coding, 33, 55, 390, 411, 416, 440–441
C++ language, 161, 166, 293, 304, 335, assignment scope using FPs, 289
417, 419, 421 cost per FP, 289
C-level executives, 209, 211, 222, 370, 374, work hours per FP, 292
383–384, 396, 402, 410, 447, 458, coding tasks, versus non-coding tasks,
462–463 165–167, 168
data used by, 441, 445–447, 448–451 Colombia, 117, 306, 414
lack of respect for software commercial off the shelf (COTS) software,
engineering, 440 15, 74, 76, 238, 241–242,
software benchmarks used by, 287–288, 332, 358, 382
448–451; see also CEOs applications, 214
Canada, xix, 118, 281, 305, 412, package purchase, 132
433, 454 commercial tools, 316–319
CAST, 71, 106, 282, 285 communications, 223–224
CEOs, xviii, 4, 36, 86, 106, 381, 399, 401, competitive advantage, 14
438; see also C-level executives completion of coding milestone, 92
certification examinations, 29, 30, 281, completion of design milestone, 92
285–286, 371 complexity analysis, 334–335, 336,
certified FP counters, 19, 176, 282, 286, 347, 358
306, 371–372 Computer Aided Software Engineering
certified test personnel, 39, 57, 61, 68, (CASE), 263, 317, 442
187, 249, 251, 252, 312, 427, Computer Aid Inc. (CAI), 3, 17, 196,
429, 452 251, 361
change control, 86, 157, 198, 428–429, 433 Computer Associates, 215
change requests, 89, 95, 433–434 computer games, 407, 410
changing requirements, 88–89 computer industry, 410
Chill, 160, 165, 304, 335, 417, 419, 421 Computer Sciences Corporation, 215
China, 306, 410, 414, 430 consequential damages, 266
client sites, 136–137 Constructive Cost Model (COCOMO), 10,
Climis, Ted, 410 14–15, 72, 86, 109, 251, 281,
cloud computing, 130, 283, 383 283–284
470 ◾ Index
Information Technology Metrics and Italy, 88, 106, 118, 305, 413, 429
Productivity Institute (ITMPI), 3, iterative development, 89, 125
36, 71 ITT, xvii, xix, 3–4, 9–10, 13, 49, 188, 191,
initial estimates, 14, 85–86, 93, 197–198 195, 280–281, 349, 378
improvement (professional status annual software report, 271–272
requirement), 195–196 four-year improvement program, 271
inspections, xviii, 61–64, 96, 124, research laboratories, 36
126–127, 132, 141, 143, 147, ITT, Advanced Technology Group, 34, 36
157, 216, 219, 221, 229, 270–271, ITT, Applied Technology Group, 34
427–429, 461
formal, 58, 70, 90, 98, 152, 198, 256, J
302, 452
pre-test, 62, 64 Japan, 34, 88, 106, 283, 412
Institute of Electrical and Electronics Java, 15, 50, 52, 54, 68, 107, 115, 120,
Engineers (IEEE), 78 125, 126, 132, 161, 166, 168,
quality standards, 68, 74 178, 192, 248, 286, 293, 312,
insurance, 256, 283, 384, 459 335, 361, 417, 420–421, 444
integration testing, 129, 133 JCL, 159, 160, 165
intellectual property theft, 300 J. D. Edwards (ERP package), 352
Interactive Productivity and Quality (IPQ) JIRA, 17, 92, 252
tool ( Jones and Turk 1973), 14 Jobs, Steve, 34
Internal Revenue Service (IRS), xvii, 231, Johnson & Johnson (medical
259, 297, 402 company), 77
internal seminars, 10–13 joint application design ( JAD), 39, 73, 88,
International Electrical Commission (IEC), 141, 222, 226, 252, 269, 287,
112, 147, 371, 385 311, 313, 392, 443
International FP Users Group (IFPUG), 24, Jones, Capers, xix, 296, 310
27, 31, 35, 36, 37, 60–63, 106, career
112, 133, 187, 195, 214, 284, 288 advisor to Malaysian software
founded in Canada, but moved HQ to testing organization, 305
USA later, 281 co-discoverer at IBM of
web site, 371; see also SNAP disadvantages of cost per defect
international law, 430 metric (1972), 285
International Organization for commissioned by AT&T (analysis
Standardization, (ISO), 385, 443 of software occupation groups),
International Software Benchmark 439–440
Standards Group (ISBSG), 11, commissioned to build IBM’s first
108, 110, 310, 371, 458 parametric estimation tool
history (1997–), 281 (1973), 13–14, 280
Internet, 10, 325 contract with Air Force, 384
invalid defects, 153, 154 designed proprietary estimation
Iran, 193, 296, 415 tools for telecommunication
ISO quality standards, 39, 68, 74, companies (1980s), 281
147, 227 developed of ten software
ISO risk standards, 39 parametric estimation tools, 195
ISO standards, 12, 18, 21, 26–28, 30, developed proprietary sizing
108–111, 114, 284–286, 319, 371, method, 282
390, 449, 458 developed SRM high-speed sizing
description, 112 method, 372
ISO-IEC 9126 quality standard, 119 development of parametric
ISO tools, 318 estimation tool, 411
Index ◾ 477
LOC per staff month, 250, 416 maintenance productivity rate, 356
LOC rankings reversal of real productivity maintenance savings, 235
rates, 423 maintenance specialists (best practice
local systems, 178–183 factor), 356, 357, 359, 360
logical code, 144, 296–300 maintenance tools, 339
logical code statements, 295, 303, 373, maintenance work, 49, 50, 52, 54
376, 391, 451 maintenance workbenches, 324
same as LOC (qv), 376 Malaysia, xix, 34, 88, 106, 413
logical code statements per FP, 416, managed maintenance, 344, 361
417–418 management practices (poor), 401
logical LOC per month, 179 management training, 8, 227
Love, Tom, 36 management, work hours per FP, 292
manual coding, 49, 86, 192, 200–202
M manual estimates, 109, 190, 195–196, 251,
283–284, 339, 428, 432
machine language, 159, 160, 165, 168 manual FP analysis, 402
maintenance, 7, 142, 217–218, 228, 374, manual FP counting, 370
384, 394–399, 447, 450, 459 manuals, 56, 109, 181, 239, 258, 288, 316,
activity-based benchmarks, 134, 325, 411, 416, 426, 455
135–140 manual sizing, inefficiency, 294
costs, 370 manual software development, 55, 258
definition, 331 manufacturing, 384, 406–407, 446
FP metrics, 134 manufacturing costs, 416
impact of adjustment factors, 357 manufacturing economics, 26, 109,
major kinds of work, 135 115, 168
meanings, 345 standard rules applied to software,
scope, 345–351 159–165
small projects (metrics problems), well-known law, 393–394
351–352, 353–356 marketing studies, 261
three-year data, 136–140 market share, 404, 446, 461–462
twenty-three discrete topics, 345–346– Mark II FPs, 107, 111, 295, 377
348, 347 mashups, 38, 259, 261, 263, 304, 386
maintenance cost recovery, 229–231 mathematics, 8, 134, 194, 280, 282, 390,
maintenance costs, xvii, 1, 157, 158, 220, 416, 464
233, 267, 301, 348, 399, 456 McKesson (medical company), 77
post-release, 437 mean time between failures (MTBF), 119
reduction after deployment mean time to failure (MTTF), 119
(professional status measurement, 220
requirement), 196–197 importance, 187
maintenance curriculum, 356, 358 measurement data, 98
maintenance cycle, 209 measurement practices, adoption of
maintenance engineering tools, 315–316 effective (professional status
lagging and leading projects, requirement), 194–195
331–332, 333 measurement problem, 219
maintenance engineers, lower measurements, 222–223
salaries, 344 medical devices, 90, 248, 283, 312, 373,
maintenance methodologies (strong and 406, 410
weak), 359–362 defective, 197
maintenance outsourcing, 361, 430 embedded, 424
maintenance productivity, 224, 352, medical education, 71–72, 77–78
358–359 medical papers, 202
480 ◾ Index
outsourcing, 11, 53, 87, 266–267, 289, planned delivery size, 376
301, 344, 355, 356, 358, 404, planned DRE (PDRE), 457
444, 448 Planned Value (PV), 457
outsourcing contracts, 86, 429–437 planning (formal), 98
attorneys required, 97 Pl/I language, 161, 165, 280, 304, 417,
flawed (key topics omitted), 96–97 419, 421
inclusion of DRE levels (author’s PL/S language, 160, 165, 411, 417,
recommendation), 90 419, 421
poor quality, xvii, 1, 86, 149, 197
P poor quality control, 58–64, 65,
89–91
Pacific Bell, 281 characteristics, 58–59
pages per FP, 455 impact on cancellation, 62
pair programming, 58, 70, 256, 264, 462 impact on litigation, 63
expensive and inefficient, 261 software DRE, 60
Pakistan, 117, 306, 415 software schedules, 61
paperwork, 191, 387, 416 poor quality projects, 252
parametric estimates, 109, 190, 195–196, poor quality software, 69–71
251, 340 lawsuits, 68
parametric estimation tools, 4, 86–88, root causes, 67–83
98, 111, 248, 269, 291, 371, 411, portfolio analysis, 375
427, 432 FP metrics, 402, 403–405
acquisition and use, 8, 13–16 porting, 153, 352, 353–356
history, 280–282 post-release costs, 141, 396, 461
patent litigation, 197, 238, 445, 448 post-release defect repairs, 134, 141
patents, 109, 212, 240, 244, 296, 303, preparation costs, 152–153
355, 373, 404, 452, 454, 461, 463 pre-release costs, 141, 314
pathfinders, 218–219 pre-test defect removal, 68, 79, 141, 312,
pattern matching, 176, 279, 292–295, 313, 391–392, 463
295–300, 370 methods, 126–131
examples of software size, 378–379 state-of-art quality tool and
external, 377 method, 270
short summary, 373–374 pre-test DRE, 128
patterns for application sizing and risk pre-test inspections, 124, 252, 254,
analysis, 293 258, 401
patterns of tools Prince2, 385, 427
successful and unsuccessful software problems, lacking effective metrics and
projects, 427–429 data, 147
PeopleSoft, 215, 352 problem-solving, 24, 96
performance testing, 129, 133 process assessments, 432
personal software process (PSP), 12, process improvement, 229–230,
38, 58, 74, 226, 263–264, 304, 232–233, 317
361, 386 production rate, 291, 440–441
personnel, 272 productivity, 29, 32, 34, 36, 147, 157, 271,
recruitment and retention, 234 450–451
United States (2020), 55; see also definition, 115
software employment productivity gains, 227
Peru, 34, 117, 305, 414 productivity metrics, 30–31, 146, 215,
physical LOC, 27, 179, 295 222, 234–235
Pirsig, Robert M.: Zen and Art of productivity rates, 250
Motorcycle Maintenance, 134 product testing, 355
482 ◾ Index
work hours per FP, 292 step 15: move to standard reusable
software economic analysis, FPs versus components, 200–201
LOC, 410–423 step 16: effective methods for
software economics, 447, 462 working at home due to corona
software economic value, 459 virus, 201
software employment, 47, 176, 213, 216–217, software engineering economics, 65
221–222, 225, 228, 230, 235 Software Engineering Institute (SEI,
probable unreliability of government 1984–), xv, 36, 361, 384, 388; see
statistics, 440; see also software also CMMI
specialists software engineering laboratory, 218,
software engineering 221–225
activities, 49, 50–51 administration, 224
labor-intensive occupation, 48, 55, 125 advanced technology, 222
“should not be considered true applied technology, 221–222
profession”, 148 communications, 223–224
specialization process, 441 measurements, 222–223
still classified as craft, 202 training, 221
work time, 47–48 Software Engineering Methods and
software engineering (sixteen steps to Theory (SEMAT), 38, 69, 147,
achieving professional status), 201, 262, 265–266
185–202 software engineering tools, 315, 323–324
step 1: reducing software failures, lagging and leading projects, 330–331
189–190 numbers and size ranges, 331, 426
step 2: reducing cost and schedule software engineers, 4, 236
overruns, 190–191 accomplishments, 188
step 3: improve software quality after reluctance to accept designation, 440
deployment, 191–192 reputation, 106
step 4: improve software development volumes of software tools utilized, 425
productivity and long schedules, work patterns, 48–55
192, 193 software enhancements, 345, 374, 384,
step 5: improve poor software security 394–399
and reduce cyber-attacks, costs, 370
192–193 versus “defect repairs”, 345; see also
step 6: stop using metrics that distort enhancements
reality, 193–194 software excellence, 247–274
step 7: adoption of effective quantification, 262–265
measurement practices, 194–195 software excellence stages, 267–273
step 8: improvement of estimates stage 1: quantification of current
before starting projects, 195–196 software results, 268–269
step 9: elimination of inaccurate status stage 2: adoption of state-of-art
tracking, 196 methods, 269–271
step 10: reduction of maintenance stage 3: continuous improvement,
costs after deployment, 196–197 271–273
step 11: elimination of breach of stage 4: formal reuse programs, 273
contract litigation, 197–198 software failure rate reduction
step 12: improvement of university (professional status
software education, 198, 199 requirement), 189–190
step 13: improvement of on-the-job software failures, 1, 209
education, 198–199 definition, 85
step 14: software licensing and board by size, 190
certification, 199–200 software goods, definition, 115
486 ◾ Index