CSE 403 Lecture 25 Scheduling and Planning a Large Project Reading: The Mythical Man-Month, Ch. 2, by F. Brooks slides created by Marty Stepp

Slides:



Advertisements
Similar presentations
Robert Lockyer.
Advertisements

Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
The “Lifecycle” of Software. Chapter 5. Alternatives to the Waterfall Model The “Waterfall” model can mislead: boundaries between phases are not always.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Agile Planning. The problem with documentation Argument: “Heavy” documentation too much for most business-style projects.
Computer Engineering 203 R Smith Project Tracking 12/ Project Tracking Why do we want to track a project? What is the projects MOV? – Why is tracking.
The Mythical Man-Month By: Zac Lippard CS 470. What is the “Man-Month”? This is the idea that men and months are interchangeable between each other. This.
“Not Fully Specified (Project) Objectives” CS524 – Software Engineering I Azusa Pacific University Professor Dr. Sheldon X. Liang Fall I 2007 Ernie Rosales.
INSE - Lecture 6a Prototyping. Or: “ Not building a Leaning Tower …”
12 Aug 2005CSE403, Summer'05, Lecture 15 Updated Schedule of Remaining Class-Related Deliverables Fri, Aug 10pm: hw#4 responses due Sun, Aug
Coding Practices. What are Coding Practices ? Coding practices are a set of informal rules that the software development community has learned over time.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
SE is not like other projects. l The project is intangible. l There is no standardized solution process. l New projects may have little or no relationship.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
SOFTWARE PROJECT MANAGEMENT AND COST ESTIMATION © University of LiverpoolCOMP 319slide 1.
Writing Customer Specification Managing the Software Requirements Specifications (SRS) And the Customer Kershner/Buckley.
CSE 230: Introduction to Software Engineering Topics covered: Introduction.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Cost Estimation Van Vliet, chapter 7 Glenn D. Blank.
ITEC 370 Lecture 15 Implementation. Review Questions? Draft of design document on F Brief 3-5 minute work update on F (will continue except for mid-term)
1 CSE 403 Classic Mistakes Reading: Rapid Development Ch3 These lecture slides are copyright (C) Marty Stepp, 2007, with significant content taken from.
1 CSE 403 Software Lifecycle Models Reading: Rapid Development Ch. 7, 25 (further reading: Ch. 21, 35, 36, 20) These lecture slides are copyright (C) Marty.
1 A Real-World Development Lifecycle Greg Wilson
Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.
CSC 354 – Software Engineering, Spring 2013, Week 2 Mythical Man-Month Ch. 1-5 Tar Pit, Mythical Man-Month, Surgical Team, Aristocracy / Democracy & System.
Understand Application Lifecycle Management
Project Tracking. Questions... Why should we track a project that is underway? What aspects of a project need tracking?
Slide TMMM.1/28 The Mythical Man-Months. Slide TMMM.2/28 Overview Fred Brooks and OS/360 The Mythical Man-Month What has and has not changed? No Silver.
1 Lecture 19 Configuration Management Software Engineering.
22 Jul 2005CSE403, Summer'05, Lecture 12 Lecture 12: Scheduling, Estimation, and Prioritization (Part II) Valentin Razmov.
Facts and Fallacies of Software Engineering (Rob Glass) CSE301 University of Sunderland Discussed by Harry R. Erwin, PhD.
Program Development Life Cycle (PDLC)
Prof. Aiken CS 169 Lecture 61 Project Planning CS169 Lecture 6.
1 Project Information and Acceptance Testing Integrating Your Code Final Code Submission Acceptance Testing Other Advice and Reminders.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Software Engineering Lecture 7: Scheduling & Tracking.
1 Software Process and Project Metrics. 2 Normalization for Metrics.
1 CSE 403 Software Requirements Reading: Pragmatic Programmer Ch. 7: Before the Project These lecture slides are copyright (C) Marty Stepp, 2007, with.
CSE403 ● Software engineering ● sp12 Week 7-10 MondayTuesdayWednesdayThursdayFriday Reading dueGroups Beta due SectionProgress report due Readings out.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
CS 111 – Nov. 22 Chapter 7 Software engineering Systems analysis Commitment –Please read Section 7.4 (only pp ), Sections –Homework #2.
CSC 395 – Software Engineering Lecture 5: Teams -or- How to Motivate and Manage the Unwashed Masses.
This material is approved for public release. Distribution is limited by the Software Engineering Institute to attendees. Sponsored by the U.S. Department.
Project Schedules Chapter 4 Applied Software Project Management, Stellman & Greene See also:
SOFTWARE METRICS. Software Process Revisited The Software Process has a common process framework containing: u framework activities - for all software.
CS3100 Software Project Management: Monitoring & Control 1 Software Project Management Week 10: Project Monitoring & control Ian Blackman.
Avoiding Death by Meeting Joe McVeigh TESOL—New York April 5, 2008.
Mythical Man Month By Ryan Ruzich.  More software projects have gone awry for lack calendar time than all other reasons combined.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Advanced S/w Eng - s/w productivity issues 1 Software Productivity Issues Why do software projects fail? Advanced Software Engineering COM360 University.
CSE 403 Lecture 27 Course Wrap-up Discussion slides created by Marty Stepp
CSE SW Project Management / Module 15 - Introduction to Effort Estimation Copyright © , Dennis J. Frailey, All Rights Reserved CSE7315M15.
Chapter Eighteen Proposition of the Mythical Man Month: True or False?
1 CSE 403 Team Dynamics Reading: Rapid Development Ch. 13, Pragmatic Programmer Ch These lecture slides are copyright (C) Marty Stepp, 2007, with.
Engineering Economics Lecture 18 Project Management 6 January 2010.
CSE-332 Software Design Methods The Mythical Man-Month 박성우 POSTECH October 20, 2015.
Copyright , Dennis J. Frailey CSE7315 – Software Project Management CSE7315 M15 - Version 9.01 SMU CSE 7315 Planning and Managing a Software Project.
CS 350, slide set 4 M. Overstreet Old Dominion University Spring 2005.
Concurrency and Performance Based on slides by Henri Casanova.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
T Project Review X-tremeIT PP Iteration
Project Management A Practical Approach Sridhar Pandurangiah Director - Engineering Sridhar Pandurangiah Director - Engineering.
Why is software engineering worth studying?
Client Management Managing Client Expectations
Cost Estimation Van Vliet, chapter 7 Glenn D. Blank.
CSE 403 Scheduling These lecture slides are copyright (C) Marty Stepp, 2007, with significant content taken from slides written by Valentin Razmov. They.
Integration Reading: McConnell, Code Complete, Ch. 29
Project Iterations.
Presentation transcript:

CSE 403 Lecture 25 Scheduling and Planning a Large Project Reading: The Mythical Man-Month, Ch. 2, by F. Brooks slides created by Marty Stepp

2 Revisited: Software is hard Historically, ~ 85% of software projects "fail." Why? –management sets unrealistic expectations; devs don't correct them –overestimating the positive impact of shiny new tools and hardware –hired developers based on availability despite warning signs –personality conflicts between developers –changes in rate structure requirements in middle of work –one delay causes another (dev delay leads to test delay, etc.) –hacks and shortcuts –developers end up working "death marches" (6-day, 10-hour weeks) –overestimating how nearly done you are ("I'm 90% there!") –software written doesn't match the spec –developer time taken away by other tasks –tons of bugs come out in testing –developers don't listen to testers; ignore severity of bugs reported –management breaking promises (bonuses, time off, etc.)

3 Why do projects fail? Fred Brooks: Turing Award-winning Harvard professor; expert on software engineering. –managed development of IBM System/360 –author of The Mythical Man-Month Brooks: "More programming projects have gone awry for lack of calendar time than for all other causes combined." But why do projects finish late? –How can we foresee/predict this happening? –What (if anything) can we do about it?

4 A late software project In the graphs, the project was supposed to reach milestone A in 1 month (left), but in fact it took 2 months (right). –How should this delay be interpreted? –What are the options facing the project's manager? –Should the manager add extra people to the development team to make up for the delay? If so, how many and why?

5 Interpretation #1 Only Part A was misestimated. So the overall project will be 1 month late. (at right) –If the assumption is valid: 9 man-months of work remain /2 actual months remain in which to do it =4.5 people will need to work each month so add 2 workers to the existing 3.

6 Interpretation #2 The whole project estimate was low. So the project will take twice as long as expected. (at right) –If the assumption is valid: 18 man-months of work remain /2 actual months remain in which to do it =9 people will need to work each month so add 6 workers to the existing 3.

7 The Mythical Man-Month If we assume the interpretation #1 was correct: –We must account for delays in training the new workers –We must partition the job into 5 pieces, to be integrated later What is "Brooks' Law"? –"Adding manpower to a late software project makes it later." -- The Mythical Man-Month

8 Of Months and Men Men/women and months are not interchangeable! When you add workers, the following costs occur: –must repartition the work –must train the new workers –must increase intercommunication What is Brooks' suggested schedule? –1/3 for design –1/6 for coding –1/4 for unit/component testing –1/4 for system testing

9 LOC per day Pro developers often write lines of code per day. –How can it be so low? –Does it change based on the programming language used? Factors to consider: –Should say, 100 lines of correct code per day. Are we counting comments? Blank lines? Modified old lines? –The code must be... designed tested code reviewed checked in maintained / updated

10 Productivity Factors that eat up developer time: –learning new systems, languages, and code –documentation –testing –debugging (getting stuck!) –meetings –interpersonal communication –code reviews –design reviews –illness –real life (family, pets, flat tire, etc.) –distraction (Facebook, etc.)

11 Measuring productivity Ways LoC can be useful: –when measured in the same language –with the same developer –over a long period of time Variations –Include comments / blank lines in LoC? Other ways to measure productivity, besides LoC: –LoC per month –"function points" –"eLoC" - substantive lines –check-ins

12 Why is estimating hard? Why are we so bad at estimating how long a project will take? Programmers are optimists: "All will go well." –Programming = creative; building with "thought-stuff" –therefore, we do not usually imagine that things will go wrong We lack practice at measuring how long tasks will take –lose track of time while coding; forget how long it took –tend to focus on the time needed to finish "rough" untested code We fail to account ahead of time for: –bugs; sticking points (sometimes NO progress will be made) –design / redesign / refactoring –testing and debugging (both our code and others')

13 Some estimating tips Guess how long you think you'll actually need... –Then double (or triple) it. –Use a coarse granularity; days/weeks, not hours. Add time to your estimate if: –It involves learning any new technologies or systems. –It involves collaborating with others. –It is user-facing and therefore needs to be very robust/secure. –It is concurrent, network-enabled, or long-running. –It involves "messy" data or combining data from multiple sources.

14 Your project schedules Looking back on your initial estimated project schedules: –How accurate were your initial ideas? –In what way are they the most "off" from what you have actually spent your time doing? –Do you know something now that would help you to more effectively schedule a large project in the future? If so, what?

15 Code maintenance maintenance: Modification or repair of a software product after it has been delivered. fix bugs, performance, improve design, add features Maintenance is how developers spend much of their time. It's harder to maintain code than write your own new code. –"house of cards" phenomenon (don't touch it!) –must understand code written by another developer, or code you wrote at a different time with a different mindset –most developers dislike code maintenance...

16 Performing maintenance Maintenance comprises all phases of the software lifecycle. –gather requirements –design –implement (code) –test/debug –integrate –... New versions of your software are subject to all constraints that were placed on the old version, and possibly more. –backwards compatibility is often expected / required

17 Maintenance + new devs It is often done as an afterthought. –Not enough time allocated in schedule –You must think ahead of time how you (or someone) will maintain code later Maintenance is often given to junior developers. –"This way they'll learn the guts of the system better." –Senior developers don't want to work on maintenance. –But junior devs don't know the system or how to maintain it. Result: brittle code with little conceptual or design integrity; even more maintenance headaches to come.