top of page

https://soucymichel.com/2022/01/10/portraits-3/

Public·6 membres
Jonathan Morris
Jonathan Morris

Steve McConnell's Software Estimation: A Practical and Comprehensive Guide


Software Estimation: Demystifying the Black Art by Steve McConnell




Software estimation is one of the most challenging and essential skills for software professionals. However, many software projects suffer from inaccurate, unrealistic, or unreliable estimates that lead to missed deadlines, budget overruns, low quality, or unhappy customers. How can software estimation be done better?




steve mcconnell software estimation pdf 16



In this article, we will review a classic book on software estimation by Steve McConnell, a renowned author and expert on software engineering. The book is called Software Estimation: Demystifying the Black Art and it was published in 2006 by Microsoft Press. The book provides a comprehensive and practical guide for software estimators, project managers, developers, testers, and anyone who wants to improve their estimation skills and results.


We will summarize the main points and insights from the book, as well as provide some examples and tips on how to apply them in your own projects. We will also provide some links and references for further reading and learning on software estimation.


Introduction




What is software estimation and why is it important?




Software estimation is the process of predicting how much time, effort, money, or other resources are required to complete a software project or a part of it. Software estimation can be done at different levels of granularity, such as estimating the size of a feature, the effort of a task, the duration of a phase, or the cost of a project.


Software estimation is important for several reasons:


  • It helps assess the economic feasibility and viability of a project or a proposal.



  • It helps plan and allocate resources, such as staff, equipment, budget, etc.



  • It helps set realistic expectations and commitments with customers, stakeholders, and team members.



  • It helps monitor and control the progress and performance of a project.



  • It helps improve the quality and productivity of software development.



What are the common challenges and pitfalls of software estimation?




Software estimation is not easy. It involves dealing with uncertainty, complexity, variability, changeability, human factors, and other sources of error and bias. Some of the common challenges and pitfalls of software estimation are:


  • Lack of clear or stable requirements or scope.



  • Lack of historical data or benchmarks for comparison or calibration.



  • Lack of adequate skills or experience in estimation techniques or tools.



  • Lack of time or resources to perform estimation properly.



  • Lack of involvement or collaboration of relevant stakeholders or experts.



  • Lack of feedback or validation of estimates during the project.



  • Pressure or influence from external or internal factors, such as competition, politics, optimism, pessimism, etc.



How can software estimation be improved and made more accurate?




Software estimation can be improved and made more accurate by following some best practices and principles, such as:


  • Define the purpose and scope of the estimate clearly and explicitly.



  • Use multiple estimation techniques or methods and compare the results.



  • Use empirical data or evidence to support or adjust the estimates.



  • Use ranges or probabilities to express the uncertainty and confidence of the estimates.



  • Use decomposition or breakdown to estimate smaller and simpler units.



  • Use iteration or refinement to improve the estimates as more information becomes available.



  • Use peer review or independent verification to check the quality and validity of the estimates.



  • Use communication and negotiation to align the expectations and commitments of the stakeholders.



Summary of the book




Part I: Critical Estimation Concepts




In this part, the book introduces some fundamental concepts and definitions that are essential for understanding and performing software estimation. The book also provides some self-assessment quizzes and exercises to help the reader evaluate their own estimation skills and knowledge.


What is an estimate, a target, and a commitment?




An estimate is a prediction of how much time, effort, money, or other resources are required to complete a software project or a part of it. An estimate is based on available information, assumptions, and uncertainties. An estimate is not a guarantee or a promise.


A target is a statement of a desirable business objective or outcome. A target is based on expectations, preferences, or constraints. A target is not a prediction or a fact.


A commitment is a promise to deliver a specific result by a specific date or under specific conditions. A commitment is based on an agreement or a contract. A commitment is not a wish or a hope.


The book emphasizes the importance of distinguishing between estimates, targets, and commitments, as they have different meanings and implications. The book also warns against confusing or conflating them, as this can lead to unrealistic or unachievable goals, inaccurate or unreliable estimates, or broken or missed commitments.


How good an estimator are you?




The book provides a simple estimation quiz that consists of 10 questions that ask the reader to estimate some common facts or quantities, such as the height of the Eiffel Tower, the population of Canada, the length of a soccer field, etc. The reader is asked to provide their best guess as well as a range that they are 90% confident that it contains the correct answer.


The book then discusses the results of the quiz and explains how to measure and interpret the accuracy and precision of the estimates. The book also reveals some common estimation errors and biases that affect human judgment, such as overconfidence, anchoring, adjustment, etc. The book suggests some ways to avoid or mitigate these errors and biases, such as using data, logic, feedback, etc.


What is the value of accurate estimates?




The book explores the question of whether it is better to overestimate or underestimate software projects. The book presents some arguments for and against both overestimation and underestimation, as well as some empirical data and statistics on the actual performance and outcomes of software projects in terms of schedule, cost, quality, customer satisfaction, etc.


The book concludes that neither overestimation nor underestimation is desirable or beneficial for software projects. The book argues that accurate estimates are valuable for several reasons:


  • They help make better decisions and trade-offs.



  • They help avoid waste and rework.



  • They help increase trust and credibility.



  • They help improve morale and motivation.



Part II: Estimation Techniques




In this part, the book describes some practical techniques and methods for estimating software projects. The book covers different aspects of software estimation, such as size, effort, schedule, etc. The book also explains how to use different tools and models for software estimation, such as expert judgment, analogy, decomposition, parametric models, etc. The book also discusses how to estimate agile projects using techniques such as story points, velocity, planning poker, etc.


How to estimate size, effort, and schedule?




be measured in different units, such as lines of code, function points, use cases, user stories, etc. The book explains how to estimate size using different techniques, such as counting, estimating by analogy, estimating by proxy, etc. The book also explains how to adjust size estimates for factors such as reuse, complexity, quality, etc.


The book defines effort as the amount of time or resources that are required to complete a software project. Effort can be measured in different units, such as person-hours, person-days, person-months, etc. The book explains how to estimate effort using different techniques, such as expert judgment, parametric models, estimation by analogy, etc. The book also explains how to adjust effort estimates for factors such as productivity, experience, skill, etc.


The book defines schedule as the duration or calendar time that is required to complete a software project. Schedule can be measured in different units, such as days, weeks, months, etc. The book explains how to estimate schedule using different techniques, such as critical path method, PERT method, Monte Carlo simulation, etc. The book also explains how to adjust schedule estimates for factors such as concurrency, dependencies, risks, buffers, etc.


How to use estimation tools and models?




The book describes some tools and models that can help software estimators perform and improve their estimates. The book covers different types of tools and models, such as spreadsheets, databases, estimation software, parametric models, etc. The book explains how to use these tools and models effectively and appropriately for different situations and purposes.


The book also provides some examples and case studies of using some popular and widely used tools and models for software estimation, such as COCOMO II model (Constructive Cost Model), SLIM model (Software Lifecycle Management), SEER-SEM model (Software Evaluation and Estimation of Resources - Software Estimation Model), etc. The book compares and contrasts these tools and models in terms of their strengths and weaknesses, assumptions and limitations, inputs and outputs, accuracy and reliability, etc.


How to estimate agile projects?




The book discusses how to estimate agile projects using techniques that are compatible with the agile principles and values. The book covers different aspects of agile estimation, such as scope definition and prioritization, release planning and iteration planning, velocity measurement and tracking, etc. The book also explains how to deal with some common challenges and issues in agile estimation, such as changing requirements or scope creep.


The book also provides some examples and case studies of using some popular and widely used techniques for agile estimation, such as story points (a relative measure of size or complexity of a user story), velocity (the number of story points completed per iteration), planning poker (a collaborative estimation technique that uses a deck of cards with numbers representing story points), etc. The book compares and contrasts these techniques in terms of their advantages and disadvantages, applicability and suitability, simplicity and effectiveness, etc.


Part III: Managing Estimation




In this part, the book describes some best practices and guidelines for managing software estimation throughout the project lifecycle. The book covers different aspects of estimation management, such as politics and negotiation, tracking and updating, communication and presentation, etc. The book also provides some tips and advice on how to handle some common scenarios and situations in estimation management, such as dealing with pressure or conflict, explaining or justifying estimates, revising or refining estimates, etc.


How to handle politics and negotiation in estimation?




The book acknowledges that software estimation is not only a technical or analytical activity, but also a social or interpersonal activity. The book recognizes that software estimation involves dealing with various stakeholders, such as customers, managers, developers, testers, etc., who may have different interests, expectations, or agendas regarding the project. The book advises that software estimators should be aware of and prepared for the political and negotiation aspects of software estimation.


The book provides some strategies and techniques for handling politics and negotiation in estimation, such as:


  • Establishing trust and credibility with the stakeholders.



  • Understanding the needs and concerns of the stakeholders.



  • Aligning the estimates with the business goals and objectives.



  • Using data and evidence to support or challenge the estimates.



  • Using ranges or probabilities to express the uncertainty and risk of the estimates.



  • Using trade-offs or options to offer alternatives or choices.



  • Using feedback or validation to confirm or revise the estimates.



How to track and update estimates during the project?




The book emphasizes that software estimation is not a one-time or static activity, but a continuous or dynamic activity. The book recommends that software estimators should monitor and control the estimates during the project, as more information or changes become available. The book suggests that software estimators should track and update the estimates regularly and systematically.


The book provides some methods and tools for tracking and updating estimates during the project, such as:


  • Using metrics and indicators to measure and evaluate the actual performance and progress of the project.



  • Using variance analysis or trend analysis to compare and explain the differences between the estimated and actual values.



  • Using forecasting or projection to predict and adjust the future values based on the current values.



  • Using earned value management (EVM) or earned schedule (ES) to integrate and analyze the scope, time, cost, and value aspects of the project.



How to communicate and present estimates to stakeholders?




The book stresses that software estimation is not only a technical or analytical activity, but also a communication or presentation activity. The book recognizes that software estimation involves communicating and presenting the estimates to various stakeholders, such as customers, managers, developers, testers, etc., who may have different backgrounds, knowledge, or perspectives regarding the project. The book advises that software estimators should be skilled and effective in communicating and presenting the estimates to the stakeholders.


The book provides some tips and guidelines for communicating and presenting estimates to stakeholders, such as:


  • Using clear and consistent terminology and notation to express the estimates.



  • Using appropriate and appealing formats and media to display the estimates.



  • Using simple and concise language and explanations to describe the estimates.



  • Using relevant and meaningful context and examples to illustrate the estimates.



  • Using honest and transparent information and sources to justify the estimates.



  • Using respectful and constructive tone and attitude to convey the estimates.



Conclusion




What are the main takeaways and benefits of the book?




The book is a valuable resource for anyone who wants to learn and improve their software estimation skills and results. The book offers a comprehensive and practical guide for software estimation, covering both the theory and practice of software estimation. The book provides a wealth of information, insights, examples, tips, exercises, case studies, tools, models, techniques, methods, best practices, guidelines, etc. on software estimation. The book also addresses some common challenges, issues, questions, myths, misconceptions, errors, biases, etc. related to software estimation. The book also shows how software estimation can be applied to different types of projects, such as small or large, agile or traditional, etc.


The main takeaways and benefits of the book are:


  • The book helps you understand what software estimation is and why it is important.



  • The book helps you evaluate your own estimation skills and knowledge.



  • The book helps you perform accurate and reliable software estimation.



  • The book helps you improve your estimation techniques and tools.



  • The book helps you manage your estimation process and activities.



  • The book helps you communicate your estimates effectively and appropriately.



Who should read this book and how to apply it in practice?




This book is suitable for anyone who is involved or interested in software estimation, such as software estimators, project managers, developers, testers, customers, stakeholders, etc. This book is also useful for anyone who wants to enhance their software engineering skills and knowledge in general. This book is applicable to any type of software project, regardless of size, complexity, domain, methodology, etc.


To apply this book in practice, you can follow these steps:


  • Read the book thoroughly and carefully. Take notes of the key points and insights from each chapter. Try to answer the questions and exercises at the end of each chapter. Check your answers with the solutions provided in the appendix. Review your answers and identify your strengths and weaknesses in software estimation.



your results with other techniques or methods or with other estimators. Evaluate your results and identify your improvement areas and opportunities.


  • Apply the techniques or methods from the book to your actual project. Follow the best practices and guidelines from the book for managing your estimation process and activities. Communicate and present your estimates to your stakeholders using the tips and advice from the book. Track and update your estimates during the project using the methods and tools from the book. Validate your estimates with the actual outcomes and performance of the project. Learn from your experience and feedback and refine your estimation skills and knowledge.



Where to find more resources and information on software estimation?




If you want to learn more about software estimation, you can find more resources and information on the following sources:


  • The author's website: https://stevemcconnell.com/. Here you can find more information about the author, his books, his articles, his courses, his blog, his podcasts, etc.



  • The book's website: https://stevemcconnell.com/estimation/. Here you can find more information about the book, such as a summary, a table of contents, a sample chapter, a glossary, a bibliography, etc.



  • The book's companion website: https://construx.com/software-estimation-demystifying-the-black-art/. Here you can find more resources related to the book, such as slides, exercises, solutions, tools, models, case studies, etc.



  • The book's Amazon page: https://www.amazon.com/Software-Estimation-Demystifying-Developer-Practices/dp/0735605351. Here you can find more information about the book, such as a description, a preview, reviews, ratings, etc.



  • The book's Goodreads page: https://www.goodreads.com/book/show/48419.Software_Estimation. Here you can find more information about the book, such as a summary, reviews, ratings, quotes, etc.



  • The book's Wikipedia page: https://en.wikipedia.org/wiki/Software_Estimation:_Demystifying_the_Black_Art. Here you can find more information about the book, such as an overview, a synopsis, a reception, etc.



FAQs




Here are some frequently asked questions (FAQs


À propos

Bienvenue dans le groupe ! Vous pouvez communiquer avec d'au...

membres

Page de groupe: Groups_SingleGroup
bottom of page