This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
9) Software Project Measurement, Tracking, and Control
a. Financial tracking
b. Earned value tracking
c. Balanced score card tracking
d. Goal-question metric tracking
e. Milestone tracking
f. Issue and “red flag” tracking
g. Quality and defect tracking
h. Change request tracking
i. Requirements creep tracking
j. Requirements churn tracking
6
k. Complexity measurement
l. Benchmark productivity data
m. Benchmark quality data
n. Coordination with other managers
o. Coordination with supply chain managers
10) Software Technology Acquisition
a. Project planning tools
b. Project estimating tools
c. Project tracking tools
d. Defect tracking tools
e. Complexity analysis tools
f. Development methodologies
g. Maintenance and enhancement methodologies
h. Quality control methodologies
i. Methodology management tools
j. Development workbenches
k. Maintenance workbenches
l. Reverse engineering tools
m. Reengineering tools
n. Programming languages
11) Software Mergers and Acquisitions
a. Due diligence for purchaser
b. Analysis of tools in company to be acquired
c. Technology conversion after merger
7
d. Organization planning
e. Reorganization after mergers
12) Software Litigation Support
a. Breach of contract litigation
b. Intellectual property and patent litigation
c. Employee confidentiality litigation
d. Preparation of materials on plaintiff side
e. Preparation of materials on defendant side
f. Depositions if required
g. Testimony if required
As of 2008 automated tools are available for many but not all of the tasks that software project
managers are likely to perform. For common tasks such as schedule planning and cost
estimating there are dozens of available tools. For less common tasks such as litigation support
or due diligence prior to a merger or acquisition, few tools are available.
Project Management Knowledge Acquisition
Academic training in the area of software project management is not as sophisticated as
academic training in basic software engineering or even in other forms of engineering
management. For example there is a shortage of academic training even for important topics
such as quality estimation, risk analysis, and milestone tracking. For more unusual topics, such
as litigation support or commercial off the shelf software (COTS) acquisition academic training
hardly exists at all.
The lack of academic training for software project managers is compensated for in some degree
by training and “bodies of knowledge” or BOK provided by a number of professional
associations. Among the large associations that provide useful information to software project
managers can be found:
Academy of Management (AOM) www.aomonline.org
American Management Association (AMA) www.amanet.org
American Society for Quality (ASQ) www.asq.org
IEEE Computer Society www.computer.org
8
Information Technology Metrics and Productivity Institute (ITMPI) www.itmpi.org
International Function Point Users Group (IFPUG) www.ifpug.org
International Project Management Association (IPMA) www.ipma.org
International Organization for Standards (ISO) www.iso.org
Project Management Association of Japan www.pmaj.or.jp
International Software Benchmark Standards Group (ISBSG) www.isbsg.org
Project Management Institute (PMI) www.pmi.org
Software Engineering Institute (SEI) www.sei.org
Society of Project Management (SPM) www.spm-japan.jp
There are also scores of national and local organizations that also provide information and
seminars on software project management topics. Examples include the Australian Institute of
Project Management & Australian Software Metrics Association & Software Quality Assurance
(ASMA-SQA), the Brazilian Association for Project Management, the Netherlands Software
Metrics Association (NESMA), and dozens of local chapters of the Software Process
Improvement Network (SPIN) in the United States, Europe, South America, and Asia.
Several web sites contain useful links to the project management literature. Among the
commercial links can be found the previously mentioned Information Technology Metrics and
Productivity Institute ITMPI) portal (www.ITMPI.org). Among academic links one of the most
complete is that of Dave W. Farthing of the University of Glamorgan in the United Kingdom
(www.comp.glam.ac.uk). This interesting portal has links to dozens of project management sites
and the publishers of scores of project management books.
From discussions with project managers in large corporations, in-house training of managers in
companies such as IBM, Microsoft, AT&T, Google, and CISCO is actually the most effective
source of information for software project managers. Topics such as quality estimation,
measurement, and risk analysis are often better covered via in-house training than by
universities.
However this form of training is only available for project managers in rather large corporations.
Small companies must depend upon commercial training or upon professional associations, plus
a few universities that do have curricula in software management topics.
Training in specific project management tools is also available from the vendors themselves. For
example fairly sophisticated training in software cost estimating is available from the vendors of
9
commercial estimating tools such as KnowledgePlan, Price-S, SLIM, and SEER. Computer Aid
Inc. and its subsidiary the Information Systems Metrics and Productivity Institute (ITMPI) also
provide training in a number of software management topics.
Overall, training of software project managers is a topic that needs to be improved. Quality
control, economic analysis, estimation, and measurement are all topics where additional training
is needed for entry-level managers just starting their careers.
The History of Software Project Management Tools
Software project management is of course only one of many different forms of project
management, such as home construction projects, electrical engineering projects, or civil
engineering projects such as building roads and bridges. Software project management does
have some distinguishing attributes that seem to differ from other and more established forms of
project management:
1. Because software is abstract and invisible to the eye, sizing software projects is more
difficult than for many other kinds of project.
2. Because software engineering is not highly automated, manual effort by skilled
knowledge workers plays a more important role in software projects than in many other
kinds of project.
3. Because of the large volume of bugs or defects in all software deliverables, quality
estimation and quality control are more important for software projects than for many
other kinds of project.
4. For large software projects in the 10,000 function point range or larger, outright failure,
major cost overruns, and major schedule delays occur more frequently than for many
other kinds of project.
5. Although changing requirements can occur for any kind of project, they occur with
unusual frequency for software projects. Sometimes more than 50% of the delivered
features of software projects are not identified until the project is already in process.
Software requirements changes have been measured to occur at a rate of between 1% and
2% per calendar month.
Long before the computer era and long before software itself, project management was starting
to be studied as a technology that needed formalization. Among the pioneers who dealt with
project management issues include Henry Gantt whose famous Gantt charts circa 1917 facilitated
schedule planning. Later in the 1950’s Willard Fazar’s “program evaluation and review
technique” (PERT) added rigor to isolating and identifying the critical paths which complex
projects needed to follow. On the quality side, W. Edwards Deming revolutionized the statistical
10
analysis of quality. Deming’s work was initially adopted in Japan circa 1950 and later came to
the United States when it became obvious that quality was a major factor in successful
competition. Other pioneers in related topics include Walter Shewart (one of Deming’s
teachers), Phil Crosby of ITT, Joseph Juran, and Frederick Taylor.
In terms of software project management tools as opposed to general-purpose project
management tools, some of the pioneers include A.J. Albrecht and the invention of function
point metrics circa 1973; Dr. Barry Boehm and the development of the famous “constructive
cost model” or COCOMO circa 1981; Watts Humphrey and the development of the capability
maturity model (CMM) circa 1983; and Peter Hill and the foundation of the International
Software Benchmarking Standards Group (ISBSG) circa 1997. A more recent pioneer is Tony
Salvaggio of Computer Aid, Inc. This company is pioneering a flexible form of project
management tool that can add “cartridges” at will for specific project management functions.
The phrase “project management tools” has been applied to a large family of tools whose
primary purpose is sophisticated scheduling for projects with hundreds or even thousands of
overlapping and partially interdependent tasks. These tools are able to drop down to very
detailed task levels, and can even handle the schedules of individual workers. However for
software, there are many other critical areas that also need the support of tools: quality
prediction and measurement; requirements changes, and the earned-value of ongoing projects.
Software projects require additional capabilities to be under full management control.
There are a host of managerial functions that standard project management tools don’t deal with
in depth, such as sizing with function point metrics, contract management, personnel
management, assessments, quality estimating, defect tracking, and the like.
The family of project management tools originated in the 1950’s with the U.S. Navy and Air
Force. Weapons systems and other complex projects were becoming so large that manual
planning and control were no longer feasible. Since computers were starting to become more
powerful, it was natural to want to use computer power as an aid for project managers.
Project management tools are an automated form of several management aids developed by the
Navy for controlling large and complex weapons systems: the “program evaluation and review
technique” (PERT), critical path analysis, resource leveling, and the classic Gantt charts. Such
general-purpose tools can of course be used for software projects, but in addition specialized
tools are needed that support the unique requirements of software projects.
Project management tools did not originate for software, but rather for handling very complex
scheduling situations where hundreds or even thousands of tasks need to be determined and
sequenced, and where dependencies such as the completion of a task might affect the start of
subsequent tasks. Project management tools are general-purpose in nature, and can be applied to
any kind of project: building an aircraft, constructing an office building, or a software project.
11
General-purpose project management tools have no built-in expertise regarding software, as do
specialized software cost estimating tools. For example, if you wish to explore the quality and
cost impact of an object-oriented programming language such as Objective C a standard project
management tool is not the right choice. By contrast, many software cost estimating tools have
built-in tables of programming languages and will automatically adjust the estimate based on
which language is selected for the application.
Since software cost estimating tools originated about 10 years after commercial project
management tools, the developers of software cost estimating tools seldom tried to replicate
project management functions such as construction of detailed PERT diagrams or critical path
analysis. Instead, the cost estimation tools would export data so that the final schedule could be
adjusted via the project management tool. Thus bi-directional interfaces between software cost
estimating tools and generic project management tools are now standard features in the
commercial estimation market.
The latest versions of software project management tools integrate cost and schedule estimation,
quality estimation, risk analysis, and many other features. The Computer Aid “application
insight” tool is an example of a general-purpose tool with the ability to be extended in many
directions via plug-in “cartridges.”
Usage Patterns of Software Project Management Tools
Observations made from depositions and testimony during software litigation for breach of
contract reveals that software projects that end up in court for outright failure or major overruns
usually do not utilize many project management tools. Estimates were often informal and
tracking seriously deficient. By contrast, data gathered while performing assessments and
benchmarks of successful software projects that combined high productivity and high quality
indicate that many specialized project management tools were utilized for both predictions
before the projects started and for tracking and measurement while they were underway.
Table 1 shows the approximate sizes of project management tool features measured in function
points. The table also illustrates the patterns of tool usage noted on “lagging,” “average,” and
“leading” projects. Information on the lagging projects is taken from information discovered
during litigation. Information on the average and leading project is taken from benchmark and
assessment studies by the author.
12
Table 1: Patterns of Project Management Tool Usage
(Tool size expressed in terms of function point metrics)
Predictive Tools Lagging Average Leading
Project sizing (function points) 750 750
Project sizing (lines of code) 250 250 250
Project sizing (requirements changes) 250
Project schedule estimating 1,000 1,500 3,000
Project cost estimating 250 500 3,000
Project quality estimating 2,000
Project risk estimating 2,000
Project value estimating 1,500
Departmental budget planning 2,000 2,000 2,000
SUBTOTAL 3,500 5,000 14,750
Measurement and Tracking Tools
Lagging Average Leading
Earned Value Tracking 2,000 3,000
Project cost tracking 2,000 2,000 2,000
Project milestone tracking 1,000 1,500
Project defect tracking 1,500 2,000
Resource tracking 1,000 1,000 2,000
Cost variance reporting 1,000 2,000 2,000
Productivity measurements 1,000
13
Project benchmark reporting 1,000
Project quality measurement 1,000
SUBTOTAL 4,000 9,500 15,500
TOTAL 7,500 14,500 30,250
Table 1 illustrates two important aspects of software project management tool usage: 1) Leading
or sophisticated project managers use more kinds of tools than do managers on lagging and
average projects; 2) Leading or sophisticated project managers use more of the features or select
more powerful tools than do project managers on lagging or average projects.
The very significant use of project management tools on leading projects results in one
overwhelming advantage: “No surprises.” The number of on-time projects in the leading set is
far greater than in the lagging set, and all measurement attributes (quality, schedules,
productivity, etc.) are also significantly better.
Software project management tools are far from being a panacea, but advanced knowledge of
software project size, potential numbers of defects or bugs, and schedules derived from similar
historical projects can go a long way towards yielding a successful conclusion and eliminating
the rather high odds of failure associated with large software projects.
For large software projects in large corporations, the project will typically be supported by a
“Project Office.” IBM was a pioneer in the utilization of project offices and first deployed them
on versions of the main IBM operating system in the early 1970’s.
Typically a project office will be formed for a major software application in the 100,000 function
point size range. Applications of this large size have hundreds of development personnel and
dozens of subordinate project managers under at least three higher levels of management. A
typical project office for such a large system would contain perhaps half a dozen staff to as many
as 10 personnel equipped with a variety of estimating and planning tools, plus historical data
from similar projects. The project office would assist the individual project managers in cost
estimating, quality estimating, schedule estimating and other predictive tasks. They would also
monitor rates of progress, bug reports, earned value, costs, and other status data as the project
was underway.
Project offices tend to raise the percentage of successful large projects, but failures can still
occur. For example one major cancelled project occurred primarily because the head of the
project office and the head of the development group were political rivals and therefore did not
cooperate well. Incidentally, in large companies and large projects, personal disputes and
dislikes are frequent contributors to software disasters. This topic is difficult to study because
none of the managers involved are likely to be candid.
14
Recent Evolution of Software Project Management Tools
Project management tools, like other forms of commercial software, continue to evolve and add
new features. The following paragraphs summarize some of the recent observations of project
management tool capabilities noted in 2008.
Software Project Sizing: Sizing software projects has been a difficult activity for project
managers. Sizing in terms of “lines of code” primarily involved either comparison to similar
projects or guess work. Adding to the difficulty, there are more than 700 programming
languages in existence and some of these lack any rules for counting code. Further many
software applications utilize several programming languages at the same time. More important,
for large software projects the costs and schedules associated with producing paper documents
and finding and repairing defects costs more than the code itself and takes more time during the
schedule. These non-coding tasks cannot be estimated or measured using lines of code metrics.
Function point metrics have proven to be effective for sizing non-coding work and also
programming, so function points are a good choice for life-cycle economic analysis of software
projects. Sizing in terms of function point metrics can be done with accuracy from requirements,
but by the time requirements are available several iterations of cost estimates are normally
required. Also, function point analysis has been somewhat slow and expensive. Certified
function point analysts count function points only at a rate of perhaps 400 function points per
day. Thus the long schedules and high costs of counting function point metrics have been a
barrier
As of 2008 several new forms of high-speed function point tools have been announced.
Relativity Technologies has announced a tool for sizing legacy applications called “Function
Point Analyzer” or FPA by parsing source code in selected languages. The assertion is that this
new tool provides counts with an accuracy equivalent to normal function point analysis, but is
able to accomplish this in a matter of minutes rather than a matter of days or weeks.
Several other forms of high-speed function point sizing are also under development. Other high-
speed function point methods include: 1) pattern matching against historical projects; 2)
Automated prediction of function points from requirements and specifications; 3) data mining of
legacy source code to recreate synthetic specifications; 4) automated source code analysis to
improve mathematical conversion from source code statements to equivalent function point
metrics.
The last method, of mathematical conversion between source code and function points has
actually existed since 1975. The common name for this method is “backfiring.” The first ratios
of source code to function points were developed by A.J. Albrecht and his colleagues at IBM
during the development of the original function point metric. As of 2008 published ratios are
available for more than 700 programming languages and dialects. However the accuracy of
15
backfiring is low due to variations in code counting methods and variations in individual
programming styles. The backfire method is most effective when based on automated counts of
logical source code statements, as opposed to counts of physical lines.
A problem with function point sizing as of 2008 is the fact that there are several different kinds
of function point metrics. The function point metric defined by the International Function Point
Users Group (IFPUG) is the most widely used. But there are also COSMIC function points,
Mark II function Points, web-object points, Story points, and several national variants from the
Netherlands and Australia, plus usage of mathematical conversion from lines of code to function
points called “backfiring.” All of these variants produce different size predications, and as of
2008 there are no proven conversion rules from one variation to another.
Another new sizing topic getting underway in 2008 deals with the impact of technical and
architectural factors on application size. While user-requested functions are measured with
function point metrics, part of the size of applications is also due to architectural and technical
factors and the “layers” that the application will contain.
Other sizing topics are waiting more research and more empirical data: sizing the volume data
bases and sizing value other than financial value (i.e. customer satisfaction; enterprise prestige)
are two topics that need more research.
Software Project Schedule Planning: There are dozens of commercial tools, in-house tools,
and even open-source freeware tools that can perform critical path analysis of software projects,
as well as other kinds of projects. Examples of such tools include Microsoft Project, Artemis
Views, and TimeLine. However for software projects schedule planning can also be performed
by specialized software estimating tools such as COCOMO, KnowledgePlan, Price-S, SEER,
and SLIM in alphabetical order. There are even newer forms of tools about to be released circa
2008 that can handle schedules. For example the Application Insight tool (AI) by Computer Aid
Inc. integrates schedule planning, risk analysis, cost estimates, and tracking of resources, defects,
and costs. This tool also supports interfaces with other tools, and even allows plugging in
“cartridges” of specialized functions such as quality prediction or function point analysis.
Overall a detailed work-breakdown structure that reaches the level of specific tasks and
individual assignments is the most effective. This level of granularity can only be provided by
automated tools: manual methods are too labor-intensive and also to difficult to update.
As of 2008, schedule estimating remains a difficult challenge for software project managers.
Above 10,000 function points in size, about two thirds of all software projects run late, exceed
their budgets, or are cancelled because the delays and overruns have degraded the return on
investment to a negative number.
16
Software Cost Estimating: Software cost estimation can be traced back to the first IBM
software cost estimating tool in 1973 and also to the first commercial estimating tool which was
the Price-S tool originally marketed by the RCA corporation. These pioneering tools were soon
followed by other commercial software cost estimating tools such as Checkpoint, COCOMO,
Estimacs, ISBSG, SEER, SLIM, SoftCost, SPQR/20 and dozens of others.
These specialized software cost estimating tools were often superior to manual cost estimates,
and they also included schedule and quality estimates as well. Because the software estimating
tools appeared about 10 years after general-purpose project management tools, they support bi-
directional data transfer with general purpose tools such as Microsoft Project or Artemis Views.
Another advantage of the commercial software cost estimating tools is that they contain built-in
knowledge of topics that affect software projects, which are lacking in general-purpose tools.
Examples of these factors include the specific programming languages to be used, the CMM
level of the development organization, the methodology to be used such as Agile development or
Extreme programming, and the structure or complexity of the application. The commercial
software estimating tools also have built-in knowledge of key topics such as the defect removal
efficiency levels of various kinds of inspection and testing. The first commercial estimating tool
that could predict defect quantities and defect removal efficiency levels was SPQR/20, which
entered the market in 1985. This was also the first commercial estimating tool based on function
point metrics, although it predicted lines of code as well.
Large software projects often spend more money on the production of paper documents such as
requirements, specifications, plans, user manuals, etc. than they do on the production of the
source code itself. Estimating these costs lagged for many years because lines of code metrics
could neither measure nor predict paperwork. However modern commercial software estimating
tools can predict the sizes and costs for more than 50 kinds of paper document, which
collectively can accumulate more than 35% of the total development cost of a large software
project. A few software cost estimating tools can even predict the costs of Nationalization, or
converting some documents into foreign languages for international sales.
Software Project Risk Estimating: The major forms of risk for software projects include
outright cancellation due to failure to reach operational stability, cost overruns, schedule
overruns, poor quality, security vulnerabilities, difficult human interfaces, and sluggish
performance. Since software project failures are common, it can be stated that software risk
assessment and risk predictions are either inadequate or not performed with rigor.
As of 2008 there are some risk prediction features in commercial estimating tools such as
KnowledgePlan, SLIM, and SEER. There are also some stand-alone risk models as well as risk
estimation in integrated tools such as the Application Insight tool (AI) by Computer Aid Inc..
Automated risk estimation is becoming very sophisticated circa 2008, and is also very quick.
17
Currently risk analysis by trained risk experts was the traditional and most effective form of risk
abatement through 2008, but automated risk analysis is now about equal in effectiveness and
much faster in terms of speed.. While risks associated with cost overruns and schedule delays
can be predicted early and with good accuracy, risks associated with security flaws are more
difficult. In part this is due to the fact that security vulnerabilities are not completely understood
circa 2008, coupled with the fact that hackers are constantly adding new forms of viruses and
new forms of spyware.
Another aspect of risk management is that of “governance” or ensuring the integrity of software
applications from hacking, security flaws, and possible misuse for fraudulent purposes. The
Sarbanes-Oxley act of 2002 has elevated governance to a very important activity, because it
threatens harsh penalties including criminal charges for software executives and boards of
directors who are lax in governance.
Make no mistake about it, large software projects in the 10,000 function point size range are
among the most risky business endeavors in human history. The major risks for large software
projects include:
1. Outright cancellation due to excessive cost and schedule overruns 2. Inadequate or careless estimating 3. Failure to compare estimates to validated historical data 4. Cost overruns in excess of 50% compared to initial estimates 5. Schedule overruns in excess of 12 months compared to initial estimates 6. Quality control so inept that the software does not work effectively 7. Requirements changes in excess of 2% per calendar month 8. Executive or client interference, so that the project is disrupted 9. Failure of clients to review requirements and plans effectively 10. Security flaws and vulnerabilities 11. Potential misuse or tampering with outputs for fraudulent purposes 12. Performance or speed too slow to be effective 13. Loss of key personnel from the project during development 14. The presence of “error-prone modules” in legacy applications 15. Patent violations or theft of intellectual property 16. External risks (fire, earthquakes, hurricanes, etc.)
From analysis of depositions and court documents in breach of contract litigation, most failing
projects did not even perform a formal risk analysis. Worse, project tracking was so inept that
major problems were concealed rather than being dealt with as they occurred.
Research and prototypes of risk analysis tools are a sign that future kinds of risk analysis may
improve the situation. In particular, security vulnerabilities need better predictive capabilities in
the modern world where viruses, spyware, and denial of service attacks are daily events that
18
affect thousands of companies and millions of software applications. As outsourcing becomes
more and more common, litigation avoidance is also a risk that needs more attention than it has
received to date.
Software Quality Estimating: Quality estimation for software was not well done before the
invention of function point metrics because lines of code could not be used for either measuring
or predicting defects in requirements, design, user documents and other non-code items. Once
function point metrics were applied to the task of quality prediction, it was soon discovered that
errors in requirements and design outnumbered coding errors. Commercial software estimating
tools that could predict the full spectrum of software defects from all major sources
(requirements, design, code, user documents, and “bad fixes” or secondary defects) only became
available in 1985 with the SPQR/20 commercial estimation tool. As of 2008 most of the
commercial software estimation tools can also predict quantities of defects.
Another important aspect of quality estimation is that of defect removal efficiency, or predicting
the percentages of defects that will be found by various kinds of review, inspection, and test
stage. Historical data gathered since the 1970’s indicate that formal design and code inspections
have the highest defect removal efficiency and alone can top 85%. Most forms of testing such as
unit test, new function test, regression test, etc. are less than 35% efficient or only find about one
bug out of three. A sequence of formal inspections followed by six to eight different testing
stages can top 95% in cumulative defect removal efficiency. As of 2008 several commercial
estimating tools can predict defect potentials and defect removal efficiency levels.
Some commercial estimating tools can also predict the specific sequence of inspections and test
stages that should be used to achieve optimal levels of defect removal efficiency. Numbers of
test cases and test coverage can also be predicted for many forms of testing such as unit test
(manual or automated), regression test, new function test, performance test, system test, etc.
Since most forms of testing are less than 40% efficient in finding bugs, it is obvious that a multi-
stage series of inspections and tests will be needed to achieve high levels of defect removal
efficiency. The good news about this fact is that projects that approximate 95% in cumulative
defect removal efficiency have shorter schedules and lower costs than “average” projects with
only about 85% cumulative defect removal efficiency. Maintenance costs are also reduced. Phil
Crosby’s aphorism that “Quality is Free” has not only been proven, but also measured on many
successful software projects. An automated testing company, Agitar, has developed a testing
dashboard that provides interesting data on test results, test coverage, and other relevant topics.
Because the costs and schedules associated with finding and fixing bugs is the most significant
cost element of large software projects and the primary factor leading to cancellation and delay,
quality prediction is a critical element of successful cost and schedule prediction. Poor quality is
a frequent cause of litigation too.
19
Many specific software quality methods such as six-sigma for software, quality function
Crosby, Phil; Quality is Free; New American Library, Mentor Books; New York, NY; 1979, 270 pages.
DeMarco, Tom; Why Does Software Cost So Much?; Dorset House, New York, NY; ISBN 0-9932633-34-X; 1995; 237 pages.
Fleming, Quentin W. & Koppelman, Joel M.; Earned Value Project Management; 2nd edition; Project Management Institute, NY; ISBN 10 1880410273; 2000; 212 pages.
Galorath, Daniel D. & Evans, Michael W.; Software Sizing, Estimation, and Risk Management: When Performance is Measured Performance Improves; Auerbach, Philadelphia, AP; ISBN 10-0849335930; 2006; 576 pages.
Garmus, David & Herron, David; Function Point Analysis; Addison Wesley, Boston, MA; ISBN 0-201069944-3; 363 pages; 2001.
Garmus, David & Herron, David; Measuring the Software Process: A Practical Guide to