"A clearly written book that is a useful primer for a very complicated set of topics."
--Capers Jones, Chief Scientist Emeritus, Software Productivity Research LLC
Practical Software Estimation brings together today's most valuable tips, techniques, and best practices for accurately estimating software project efforts, costs, and schedules. Written by a leading expert in the field, it addresses the full spectrum of real-world challenges faced by those who must develop reliable estimates.
M. A. Parthasarathy draws on the immense experience of Infosys, one of the world's largest and most respected providers of IT-enabled business solutions, to bring you the only book with detailed guidance on estimating insourced and outsourced software projects, as well as projects that blend both approaches. He demonstrates how to successfully utilize Function Point (FP) methods, the industry's leading estimation model. Then, using real case studies, he systematically identifies pitfalls that can lead to inaccurate estimates--and offers proven solutions.
- How to estimate all types of software projects, including "fresh" development, reengineering, and maintenance
- How to incorporate the impact of core project elements on estimates: scope, environment, experience, and tools
- FP analysis from start to finish: data and transaction functions, general system characteristics, and more
- FP methods for any platform or business function
- Innovative re-estimation methods to track progress
- How to quote RFPs and prepare contracts: fixed price, time/material, and project execution lifecycle models
- Alternatives to FP: Delphi, COCOMO II, and COSMIC-FFP
- How to choose the right estimation tools
Practical Software Estimation is the definitive reference for anyone who must estimate software projects accurately: project and IT managers, individual developers, system designers, architects, executives, consultants, and outsourcers alike.
List of Figures
List of Tables
Chapter 1: Introduction
Chapter 2: Role of Estimation in Software Projects
Chapter 3: A Study of Function Point Analysis
Chapter 4: Data Functions
Chapter 5: Transactional Functions
Chapter 6: General System Characteristics
Chapter 7: Size, Effort, and Scheduling of Projects
Chapter 8: Estimation Flavors
Chapter 9: A Sense of Where You Are
Chapter 10: Tips, Tricks, and Traps
Chapter 11: Insourcing versus Outsourcing
Chapter 12: Key Factors in Software Contracts
Chapter 13: Project Estimation and Costing
Chapter 14: Other Estimation Methods
Chapter 15: Estimation Tools
Chapter 16: Estimation Case Study
Appendix A: Reference Tables: Transaction Function Counts
Appendix B: Reference Tables: Data Function Points
About the Author
M. A. Parthasarathy, Associate Vice President at Infosys Technologies Ltd., has been actively involved in software development and delivery for more than twenty years. Parthasarathy heads the Outsourcing Academy under the Strategic Global Sourcing unit, and plays an active role in setting Infosys estimation strategies, supporting their deployment, and conducting estimation-related training. A Certified Quality Analyst (QAI), he has twice been honored with the prestigious Infosys Excellence Award.
Table of Contents
List of Figures xvii
List of Tables xix
Chapter 1: Introduction 1
What Is Software Estimation? 1
Ingredients of a Good Estimation 6
Software Project Estimation 8
Continuous Improvement Cycle 12
Why Software Estimation? 15
Estimation--Who and How 19
Other Interesting Reading Material 23
Chapter 2: Role of Estimation in Software Projects 25
Software Projects and Estimation 25
Estimation and Measurement 31
Large Application Systems 40
Other Interesting Reading Material 43
Chapter 3: A Study of Function Point Analysis 45
Why Estimation? 45
Function Points 47
Function Point Analysis 51
Chapter 4: Data Functions 73
Definition of Files 74
Data Functions Defined by IFPUG 75
Other Interesting Reading Material 96
Chapter 5: Transactional Functions 97
Definition of Transactions 98
Albrecht's Definition of Transactions 100
Transactional Functions Defined by IFPUG 102
EI, EO, and EQ 104
Complexity and FP Count Contributions 111
Invoice System--FP Counting Process 116
Other Interesting Reading Material 119
Chapter 6: General System Characteristics 121
Functional and Non-Functional Requirements 122
Introduction to General System Characteristics 123
Guidelines for General System Characteristics 125
GSC and NFR 137
Other Interesting Reading Material 147
Chapter 7: Size, Effort, and Scheduling of Projects 149
Importance of Size 149
Inputs to Sizing 155
Impact of Delivery Rate 159
Effort and Schedule 163
Other Interesting Reading Material 169
Chapter 8: Estimation Flavors 171
Change Forever 171
Development Projects 173
Reengineering Projects 177
Migration Projects 182
Maintenance Projects 183
Chapter 9: A Sense of Where You Are 193
On the Right Track, On Time 193
Pervasive Estimations 196
Agile Software Projects 199
Estimation Maturity 208
Other Interesting Reading Material 213
Chapter 10: Tips, Tricks, and Traps 215
Other Interesting Reading Material 231
Chapter 11: Insourcing versus Outsourcing 233
Environment--The Differentiator 234
Estimation Approach 239
Insourcing versus Outsourcing: Pros and Cons 242
Chapter 12: Key Factors in Software Contracts 249
Types of Contracts 250
Project Execution Methods 257
Chapter 13: Project Estimation and Costing 265
Project Lifecycle Phases and Cost 266
Estimation and TCO 272
Other Interesting Reading Material 275
Chapter 14: Other Estimation Methods 277
Estimation Methods 277
Heuristic Approach 279
Parametric Approach 285
Estimation Models Pros and Cons 291
Other Interesting Reading Material 295
Chapter 15: Estimation Tools 297
Why Use Tools? 297
List of Tools 302
Other Interesting Reading Material 306
Chapter 16: Estimation Case Study 307
Case Study: 1--Invoicing System 312
Case Study 2: Enhanced Invoicing System 350
Other Interesting Reading Material 359
Appendix A: Reference Tables: Transaction Function Counts 361
Reference Table to Calculate ILF/EIF FP Count 361
Reference Table to Calculate EI/EO/EQ FP Count 362
Reference Table to Calculate Total FP Count 362
Reference Table to Calculate VAF from GSC--Total Degree of Influence 363
Appendix B: Reference Tables: Data Function Points 365
Internal Logical Files and External Interface Files 365
External Inputs/External Outputs/External Inquiries 366
I never imagined that writing a book would be such an exhausting but exciting experience. Originally I only had a mental picture of how the book would evolve, with certain key aspects of software estimation I intended to write down. But as the chapters unfolded one after another, the thoughts poured out more freely. The difficult part was organizing the thoughts into a structured way of presentation, adding tables and diagrams to enhance the enumeration, and tying up other loose ends to make the whole discussion complete in all respects (almost all). I hope I have been successful in doing this.
Although I had fairly deep knowledge and experience in software estimation techniques from my early years as an IT professional, it was at Infosys that I had the extraordinary experience of doing a deep dive into a huge variety of estimation-related interactions. Having personally trained more than 500 software professionals at Infosys on Function Points and other estimations methods, the amount of knowledge I acquired during these sessions was huge. Added to this was the visibility I gained as an estimation expert, which brought another storehouse of enriched knowledge. This enrichment happened through a regular stream of queries and issues that the project managers, programmers, and architects brought to me. Analyzing and solving these issues was exciting, although challenging. But the biggest benefit was to me, that of improving my estimation skills. Every situation was unique and needed interpretation and application of a variant of standard estimation methods.
IT professionals who have been working with large outsourcing organizations similar to Infosys across the globe have likely experienced a fairly wide variety of project execution situations during their service. The experience takes various forms, including project execution, technical challenges, customer interactions, testing and debugging issues, and to some extent estimation-related challenges. I have been quite fortunate to have received the maximum experience of estimation-related challenges across a wide variety of projects, either directly or through issues and challenges posed to me by project teams. It is this experience that I have hoped to put together in the form of this book and share with a global community of IT professionals.
Quite frequently I have seen IT professionals in need of assistance to arrive at a good estimation figure for a complex or unique project. I have tried to provide that assistance, realistically and practically, throughout this book. I would receive the ultimate satisfaction from knowing that IT professionals have been able to resolve the majority of estimation-related issues through the examples and instruction in this book!
Layout of Chapters
Having been actively involved in software project management and software estimation-related activities for a long time, direct interaction with software project managers, architects, and programmers was among the many benefits I received. The layout of the chapters of this book has been designed to start with general software estimation topics, including an introduction to basic estimation concepts, followed by a discussion of the function point estimation method and, finally, in later chapters, coverage of a variety of other software project estimation needs.
Chapter 1, "Introduction," has been written as an introduction to estimation concepts for project managers and programmers who have had very little exposure to estimation principles and the ingredients that constitute estimation. This chapter broadly covers basic aspects of how estimations are done in different project execution situations and how these estimates can be refined through continuous improvement cycles.
Chapter 2, "Role of Estimation in Software Projects," takes you forward toward establishing a link between estimation and software project execution. The intention is to explain various complexities of software projects and show how estimates also need to be customized accordingly. Complexities include project execution lifecycle models, technology platform variations, and project size. Project managers with previous project execution and basic estimation related exposure can skip this chapter.
Chapter 3, "A Study of Function Point Analysis," takes you through the various aspects of the IFPUG Function Point Analysis (FPA) method. The FPA method is discussed in full detail here, including discussion on how to identify attributes of the various components of the FPA method. IT professionals who do not have a good knowledge of IFPUG FPA method should definitely read this chapter in detail.
Chapters 4 and 5 cover "Data Functions" and "Transactional Functions" extensively. For IT practitioners, it is essential that a mapping of the FPA estimation method is provided to the actual software project execution process. These chapters provide the detailed mapping along with extensive examples from real software project situations. If you have gone through Chapter 3, it is advisable to read Chapters 4 and 5 also.
Chapter 6, "General System Characteristics," has been especially written to delve into the most critical and complex part of the IFPUG FPA method. Estimators have often experienced difficulty in making the right judgment of the correct level of impact (degree of influence) of each of the 14 general system characteristic (GSC) parameters. An effort to map the GSCs to the software architecture and its performance parameters have been made here. This chapter should be very interesting to serious estimators.
Chapter 7, "Size, Effort, and Scheduling of Projects," has been put together to help understand the process of converting the software size, as discovered in earlier chapters, to effort and schedule. Criticality of certain software project execution environment including productivity of the team, resource loading, and use of tools has been used as important input to derive project effort and schedule. All estimators, managers, and even programmers should definitely go through this chapter.
Chapter 8, "Estimation Flavors," exposes you to some of the practical estimation-related problems encountered during actual project execution. Typical estimation methods provide us with basic estimation processes that are usable in software development projects and sometimes in maintenance projects. But this is not the total reality in an IT organization environment. There are a host of other project execution varieties including migration, reengineering, porting, and more. This chapter picks up a few such popular software projects and maps the standard estimation method (IFPUG FPA) to the situations.
Chapter 9, "A Sense of Where You Are," addresses the dynamic project execution situations and how estimates are required to be revisited at every milestone stage. It explains how the information about the executed part of the project can be effectively analyzed and utilized to predict the remaining project execution effort and duration.
Chapter 10, "Tips, Tricks, and Traps," brings to you a variety of complexities that occur during project execution situations and provides possible solutions on how to tackle these situations. This chapter will be very handy to estimators who face many complex project execution scenarios.
Chapter 11, "Insourcing versus Outsourcing," discusses various aspects of project execution that are unique to situations when the project is executed through insourcing as against the situation when the project is executed through an outsourcing vendor. The focus is on the way estimates are impacted by insourcing and outsourcing situations.
Chapter 12, "Key Factors in Software Contracts," will be of great interest to managers and software professionals involved in preparing software contracts. Popular contracting models involving fixed price, time, and material are discussed with respect to impact on estimation process. Also discussed are certain project execution lifecycle models that have a direct impact on estimations.
Chapter 13, "Project Estimation and Costing," takes you further from project sizing and effort estimations to converting them into actual costs. Discussions on aspects of resource loading based on project execution phases, technical complexities, and its impact on overall costs will help you understand some of the flavors of project costing.
Chapter 14, "Other Estimation Methods," is an important chapter for estimators and managers who are keen to know more about additional popular estimation methods (other than the function point method). This chapter discusses aspects of how various estimation methods are modeled based on heuristic and parametric approaches. Brief discussions on a few estimation methods, including Delphi method, COCOMO II, and COSMIC-FFP, are covered.
Chapter 15, "Estimation Tools," gives you key tips on features you should look for while selecting estimating tools for procurement. A comprehensive list of popular tools available in the market, along with a brief discussion on each tool's features, is provided.
Chapter 16, "Estimation Case Study," is perhaps one of the most important chapters for all serious software professionals, estimators, and managers. The first case study in this chapter extensively covers details of the estimation process for typical development projects. Also provided is a case study on estimation for executing an enhancement request in a maintenance project.
With the intention of providing ready-to-use formats for easy and quick counting of Function Point parameters like data and transaction functions, I have provided sample tables in Appendixes A and B.
Most Helpful Customer Reviews
Much of the book is devoted to explaining the Function Point method for estimating the size of a software package that has yet to be written. The basic problem is that software is so intangible compared to designing hardware. Which makes it hard to define objective metrics. But the author suggests that finding the function points of a software package is the best approach. He also points out a key distinction between the size and the effort needed to write the package. The effort is essentially the number of person months. If you can get a reliable estimate of the size, then estimating the effort should be easier. While the book gives detailed explanations of how to find the function points, there is still an inherent subjectivity. Minimised mainly through experience. You need to work on several projects and apply the method. The strongest point in favour of function points could be that it is independent of how the software is written. To an American reader, a major interesting aspect of the book is its take on insourcing versus outsourcing. The author is a top executive at Infosys, one of the largest Indian outsourcing firms. You should look at chapter 11, which debates this issue. A commendably balanced treatment, giving tables that clearly lay out the pros and cons of either approach. There is no bias towards going with outsourcing.