EEL5881 software engineering I Mythical man-month lecture

Slides:



Advertisements
Similar presentations
Effort metrics: Man-month. Mythical Man Month – the book Brooks lead development of OS/360 and reflected on the problems experienced in the project. The.
Advertisements

Robert Lockyer.
Propositions of The Mythical Man-Month: True or False? Are The Topics Proposed in 1975 Still Valid?
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Gallup Q12 Definitions Notes to Managers
Systems Analysis and Design 9th Edition
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.
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
Project Plans CSCI102 - Systems ITCS905 - Systems MCS Systems.
Software project management Module 1 -Introduction to process management Teaching unit 1 – Introduction Ernesto Damiani Free University of Bozen-Bolzano.
Chapter 1: Key Points Program = Useful to the programmer in the garage Programming Product = Useful to anyone Programming System Component = Part of a.
Software Engineering. How many lines of code? Average CS1004 assignment: 200 lines Average CS4115 project: 5000 lines Corporate e-commerce project: 80,000.
Software Engineering.
CS 501: Software Engineering Fall 2000 Lecture 4 Management I: Project Management.
CS 501: Software Engineering
Software Processes: Traditional CSCI102 - Systems ITCS905 - Systems MCS Systems.
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.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Development and Quality Plans
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Cost Estimation Van Vliet, chapter 7 Glenn D. Blank.
Chapter : Software Process
Presented by Collin Kanaley.  The manual is a necessary tool, but not a sufficient one.  The manual is the chief product of the architect.  It should.
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.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Project Tracking. Questions... Why should we track a project that is underway? What aspects of a project need tracking?
Teaching material for a course in Software Project Management & Software Engineering – part II.
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.
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.
1 Software Process and Project Metrics. 2 Normalization for Metrics.
By Justin hendrix. Chapter 1: The Tar Pit Chapter one is about making a good project that won’t get stuck in the “tar pit.” That is it must be flexible.
AP-1 5. Project Management. AP-2 Software Failure Software fails at a significant rate What is failure? Not delivering it on time is an estimation failure.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
CS 501: Software Engineering Fall 1999 Lecture 6 Management I: Project Management.
CSC 395 – Software Engineering Lecture 5: Teams -or- How to Motivate and Manage the Unwashed Masses.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Step 5: Complete Your Project. Setting the scene Suppose you have been running a project to write a small piece of computer software for a business. The.
STEP 4 Manage Delivery. Role of Project Manager At this stage, you as a project manager should clearly understand why you are doing this project. Also.
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 2 Software Processes.
MIS 7003 MBA Core Course in MIS Professor Akhilesh Bajaj The University of Tulsa Introduction to S/W Engineering © All slides in this presentation Akhilesh.
Project Management. Introduction  Project management process goes alongside the system development process Process management process made up of three.
Prototyping life cycle Important steps 1. Does prototyping suit the system 2. Abbreviated representation of requirements 3. Abbreviated design specification.
Chapter Three The Surgical Team. The Problem Large Group – 10:1 productivity and 5:1 program speed and space management. – Negative aspect Sheer number.
Chapter Eighteen Proposition of the Mythical Man Month: True or False?
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
Yeah but.. What do I do? Software Leadership Dan Fleck 2007.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
CSE-332 Software Design Methods The Mythical Man-Month 박성우 POSTECH October 20, 2015.
Observing the Current System Benefits Can see how the system actually works in practice Can ask people to explain what they are doing – to gain a clear.
Copyright , Dennis J. Frailey CSE7315 – Software Project Management CSE7315 M15 - Version 9.01 SMU CSE 7315 Planning and Managing a Software Project.
| +44(0) © ICE LTD 2009 All rights reserved. August 2009 version 1.3 CWP Systems Thinking Training Session 2.
Risk management Here’s my section for risk management! ~ Christopher Thornton.
Why is software engineering worth studying?
Lecture 3: Organizing Teams
Chapter 2 SW Process Models
© Ian Davis 2017 Spring (c) Ian Davis.
Informatics 43 Discussion 13 May, 2016
Software life cycle models
Software Testing and Maintenance Maintenance and Evolution Overview
Systems Analysis and Design
Cost Estimation Van Vliet, chapter 7 Glenn D. Blank.
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Software Development Life Cycle (SDLC)
Presentation transcript:

EEL5881 software engineering I Mythical man-month lecture Presented by Yi Luo

acknowledge Most of the sides are taken from different sources including: the slides of Dr. Robert W. Franceschini’s software life cycle class, EEL 6887, Spring 2007. The Mythical Man-Month: Essays on Software Engineering, 20th Anniversary Edition (Paperback), by Frederick P. Brooks (Author) Wikipedia http://en.wikipedia.org/wiki/The_Mythical_Man-Month

About the book Author: Fred Brooks a book on software project management central theme : "Adding manpower to a late software project makes it later."

About the book The Bible of Software Engineering everybody reads it but nobody does anything about it! Working in IBM, managing the development of OS/360 OS/360 was a great success, becoming the most important IBM mainframe operating system. mistakenly added more workers to a project falling behind schedule. mistakenly assert that one project, writing an Algol compiler, would require six months—regardless of the number of workers involved (It required longer).

overview The Tar Pit The Mythical Man-Month The Surgical Team Conceptual Integrity The Second-system effect Passing the word Why Did the Tower of Babel Fail? Summary and Other ideas

The Tar Pit [Brooks, Chapter 1] We estimate as if building this… But we are building this x 3 A programming system (interfaces, system integration) A program x 3 A programming product (generalization, testing, documentation, maintenance) A programming systems product

What makes programming fun? Brooks offers five reasons: Making things… …that others find useful. Making complex objects out of parts. Continuous learning because the task is always different. Using tools and “materials” that do not degrade.

What causes problems? According to Brooks: Computers demand perfection. A person does not control the “circumstances” of their work (goals, resources, information). Working out the bugs is just that – work. Working out the bugs takes an order of magnitude longer than one expects. The resulting software seems to be obsolete before it is released. However, this is more of a perception…

The Mythical Man-Month [Brooks, Chapter 2] According to Brooks, failure to meet schedule is the reason for most software project failures. Why? We don’t know how to estimate (overly optimistic). We confuse effort with progress. Software managers give in to pressure to reduce time estimates because they are uncertain of their estimate. We don’t monitor schedule progress properly. We tend to handle schedule slips by adding people. However, this tends to magnify the problem…

Progress vs. Cost, 1 harvest When there is no dependency among people, the amount of time to do a task diminishes with each new person. Note that the cost (people * months) is constant.

Progress vs. Cost, 2 When there is a dependency and the task cannot be partitioned, adding people has no effect on time required… …but it has a big effect on cost.

Progress vs. Cost, 3 If task can be partitioned, but requires communication, must handle training and communication as each person is added. Can cause project to be later.

What about a late project? D Suppose that at 2 months, we achieve milestone A. We must deliver on time. What can we do?

Late project, 2 A B C D Assume the project will go according to plan from here on (optimism!) So 9 person-months must be accomplished in 2 months Add 2 people.

Late project, 3 A B C D Assume the project estimate is off by a factor of 2. So 18 person-months must be accomplished in 2 months Add 6 people.

But what about training? Let’s say we add 2 people at month 2. Must train them – assume this takes 1 month and requires 1 of the other 3 people. During month 3: 3 person-months of training work 2 person-months of actual work. Still have 9-2=7 person-months of work, but only 1 month left! So what do we do? Add more people…and have a later delivery. Brooks’s law: Adding people to a late software project makes it later.

The Surgical Team [Brooks, Chapter 3] How should software teams be organized? Issues Productivity varies widely among individuals. Want as few, highly productive individuals as possible. But, need to be able to scale to large software systems.

Surgical Team surgery is led by one surgeon performing the most critical work himself while directing his team to assist with or overtake less critical parts it seems reasonable to have a "good" programmer develop critical system components while the rest of a team provides what is needed at the right time. Additionally, Brooks muses that "good" programmers are generally 5-10 times as productive as mediocre ones.

A proposal Chief Programmer “Co-pilot” Administrator Programming clerk Secretary Toolsmith Tester Editor Language lawyer Secretary How might this concept be updated for 2006? This works for small projects. How might it be scaled for larger projects?

Aristocracy, Democracy and System Design [Brooks, Chapter 4] Unity of design (“conceptual integrity”) is the most important property of a system. Why? Because of ease of use. Achieving this requires an architecture, separate from implementation. Architecture is a complete description of the software system from the user’s point of view. Developed by architects, separate from implementers. Architecture requires creative activity, but so does implementation. There is implementation work to do even before the architecture is ready.

The Second-System Effect [Brooks, Chapter 5] The second system an engineer designs is the most dangerous system he will ever design, since he will tend to incorporate all of the additions he originated but did not add (due to the inherent time constraints) other things. Thus, when embarking upon a second system an engineer should be mindful that he is susceptible to over-engineering it.

Self-discipline First job by architect Second job by architect Play it conservative Make sure to do the job right Scrupulously keep “added features” out Second job by architect The most dangerous system Avoid using an architect for the 2nd system Why is this?

2nd System Difficulties No generalization from experience Tendency to over design Tendency to refine obsolete techniques

What can be Done? Architect Project Manager Capability x is worth not more than m bytes of memory and n microseconds per invocation Project Manager Insist senior architect has >= 2 systems Ask the right questions during design

Passing the Word [Brooks, Chapter 6] How to make sure everyone hears architectural decisions? Written specifications Formal definitions Direct incorporation Conferences Multiple implementations Telephone log Product test

Why Did the Tower of Babel Fail?[Brooks, Chapter 7] There were: A clear mission Enough resources (people and materials) Enough time Proper technology What was missing was communication!

Communication in Software Project Team 1: I’m running behind on schedule. My component runs infrequently. I will change the design so the component takes more time. Team 2: My component relies on Team 1’s. I’m glad they will meet their time allowance, because my component depends on that. Disaster waiting to happen… Teams should communicate Informally Meetings Workbook

Summary and other ideas The Mythical Man-Month Assigning more programmers to a project running behind schedule will make it even later time required for the new programmers to learn about the project the increased communication overhead. Group Intercommunication Formula: n(n − 1) / 2 Example: 50 developers -> 50(50 − 1) / 2 = 1225 channels of communication

Summary and other ideas The Second-system effect The second system an engineer designs is the most dangerous system he will ever design tend to incorporate all of the additions he originated but did not add (due to the inherent time constraints) to the first system. an engineer should be mindful that he is susceptible to over-engineering it.

Summary and other ideas Progress Tracking Question: How does a large software project get to be one year late? Answer: One day at a time! Incremental slippages on many fronts eventually accumulate to produce a large overall delay. Continued attention to meeting small individual milestones is required at each level of management.

Summary and other ideas Conceptual Integrity To make a user-friendly system, the system must have conceptual integrity, which can only be achieved by separating architecture from implementation. A single chief architect, acting on the user's behalf, decides what goes in the system and what stays out. A "super cool" idea by someone may not be included if it does not fit seamlessly with the overall system design. In fact, to ensure a user-friendly system, a system may deliberately provide fewer features than it is capable of. The point is that if a system is too complicated to use, then many of its features will go unused because no one has the time to learn how to use them.

Summary and other ideas The Manual What the chief architect produces are written specifications for the system in the form of the manual. It should describe the external specifications of the system in detail, i.e., everything that the user sees. The manual should be altered as feedback comes in from the implementation teams and the users.

Summary and other ideas The Pilot System When designing a new kind of system, a team will design a throw-away system (whether it intends to or not). This system acts as a pilot plant that reveals techniques that will subsequently cause a complete redesign of the system. This second smarter system should be the one delivered to the customer, since delivery of the pilot system would cause nothing but agony to the customer, and possibly ruin the system's reputation and maybe even the company's.

Summary and other ideas Formal Documents Every project manager should create a small core set of formal documents which acts as the roadmap as to what the project objectives are how they are to be achieved, who is going to achieve them, when they are going to be achieved, and how much they are going to cost. These documents may also reveal inconsistencies that are otherwise hard to see.

Summary and other ideas Project Estimation When estimating project times, it should be remembered that compilers are three times as hard to write as application programs. And systems programs are three times as hard to write as compilers the use of a suitable high-level language may dramatically improve programmer productivity. Also, it should be kept in mind how much of the work week will actually be spent on technical issues rather than administrative ones or other non-technical ones, such as meetings or sick leaves.

Summary and other ideas Communication To avoid disaster, all the teams working on a project should remain in contact with each other in as many ways as possible (e-mail, phone, meetings, memos etc.) Instead of assuming something, the implementer should ask the architects to clarify their intent on a feature he is implementing, before proceeding with an assumption that might very well be completely incorrect.

Summary and other ideas The Surgical Team Much as a surgical team during surgery is led by one surgeon performing the most critical work himself while directing his team to assist with or overtake less critical parts "good" programmer develop critical system components while the rest of a team provides what is needed at the right time. Brooks muses that "good" programmers are generally 5-10 times as productive as mediocre ones.

Summary and other ideas Code Freeze and System Versioning Software is invisible. Therefore, many things only become apparent once a certain amount of work has been done on a new system, allowing a user to experience it. This experience will yield insights, which will change a user's needs or the perception of the user's needs. The system should, therefore, be changed to fulfill the changed requirements of the user. This can only occur up to a certain point, otherwise the system may never be completed. At a certain date, no more changes would be allowed to the system and the code would be frozen. All requests for changes should be delayed until the next version of the system.

Summary and other ideas Specialized Tools Instead of every programmer having his own special set of tools, each team should have a designated tool-maker who may create tools that are highly customized for the job that team is doing, e.g., a code generator tool that spits out code based on a specification. In addition, system-wide tools should be built by a common tools team, overseen by the project manager.

Summary and other ideas Lowering Software Development Costs There are two techniques for lowering software development costs that Brooks writes about: Implementers may be hired only after the architecture of the system has been completed (a step that may take several months, during which time prematurely-hired implementers may have nothing to do). Another technique Brooks mentions is not to develop software at all, but to simply buy it "off the shelf" when possible.

Thank you Questions?