The Mythical Man Month Essays on Software Engineering Presented by Prashant Kashyap Btech 2000 FREDERICK P. BROOKS, JR An Overview.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

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.
Robert Lockyer.
Propositions of The Mythical Man-Month: True or False? Are The Topics Proposed in 1975 Still Valid?
Object-Oriented Software Development CS 3331 Fall 2009.
Software Engineering Introduction and Overview RA402 jcmtCSE1320 Intermediate Programming Essence and Accident Inherent Difficulties –Complexity –Conformity.
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.
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
Tietojärjestelmien peruskurssi Software engineering Malin Brännback.
The Mythical Man-Month by Fred Brooks (I) Published 1975, Republished 1995 Experience managing the development of OS/360 in Central Argument –Large.
No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead.
No Silver Bullet “There is no single development, in either technology or management technique, which by itself promises even one order-of magnitude improvement.
Lawrence Chung Software Engineering: Introduction 1 Module 1: Introduction to Software Engineering.
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.
No Silver Bullet Essence and Accidents of Software Engineering By Frederick P. Brooks Frederick P. Brooks Presentation by Yan Qi
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.
CS 201 Functions Debzani Deb.
The Mythical Man-Month Due Today: Code & Coding Standards Due Next Class: Quiz #3; see webpage Mythical Man-Month I Bio Break Mythical Man-Month II Questions.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Course Introduction and Overview of Software Engineering Richard N. Taylor ICS 221 Fall 2002.
Chapter 1 Program Design
SOFTWARE CRISIS SOLUTIONS? © 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.
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
SOFTWARE PROJECT MANAGEMENT AND COST ESTIMATION © University of LiverpoolCOMP 319slide 1.
Cost Estimation Van Vliet, chapter 7 Glenn D. Blank.
Essence and Accident in Software Engineering By: Mike Hastings.
INTROSE Introduction to Software Engineering Raymund Sison, PhD College of Computer Studies De La Salle University Software: Definitions,
What is Software Engineering? the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software”
No Silver Bullet – Essence and Accident in Software Engineering.
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.
The Mythical Man-Month the MYTH behind the REAL
“No Silver Bullet” - refired
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
1. 2 IMPORTANCE OF MANAGEMENT Some organizations have begun to ask their contractors to provide only project managers who have been certified as professionals.
No Silver Bullet. CS460 - Senior Design Project I (AY2004)2 No silver bullet "No Silver Bullet" –– a paper by Fred Brooks, Professor of Computer Science.
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.
Program Design CMSC 201. Motivation We’ve talked a lot about certain ‘good habits’ we’d like you guys to get in while writing code. There are two main.
1 No Silver Bullet Brooks rides again…. 2 Essential Difficulties What are these “essential difficulties” that Brooks is referring to? Complexity Conformity.
Program Development Life Cycle (PDLC)
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Large Scale Software Systems Derived from Dr. Fawcett’s Notes Phil Pratt-Szeliga Fall 2010.
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.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
CS 111 – Nov. 22 Chapter 7 Software engineering Systems analysis Commitment –Please read Section 7.4 (only pp ), Sections –Homework #2.
Slide 2.1 CHAPTER 2 THE SOFTWARE PROCESS. Slide 2.2 Overview l Client, Developer, and User l Requirements Phase l Specification Phase l Design Phase l.
Memory Management. Memory  Commemoration or Remembrance.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
“No Silver Bullet”. No Silver Bullet  "No Silver Bullet" –– a paper by Fred Brooks, Professor of Computer Science at University of North Carolina in.
Chapter Three The Surgical Team. The Problem Large Group – 10:1 productivity and 5:1 program speed and space management. – Negative aspect Sheer number.
CS223: Software Engineering Lecture 2: Introduction to Software Engineering.
Chapter Eighteen Proposition of the Mythical Man Month: True or False?
1 FPB 11/24/13 Nuggets from The Mythical Man-Month Fred Brooks University of North Carolina at Chapel Hill
PRESENTATION 2 CS 5391 Survey of Software Engineering Chang-Ho Lee No Silver Bullet: Essence and Accidents of Software Engineering By Frederick P. Brooks,
Evolution and History of Programming Languages
Types for Programs and Proofs
Software Life Cycle “What happens in the ‘life’ of software”
UFCE8V-20-3 Information Systems Development SHAPE Hong Kong 2010/11
Cost Estimation Van Vliet, chapter 7 Glenn D. Blank.
Software Engineering I
Presentation transcript:

The Mythical Man Month Essays on Software Engineering Presented by Prashant Kashyap Btech 2000 FREDERICK P. BROOKS, JR An Overview

The tar pit The Good  Joys of programming The Bad  Woes of programming The Ugly  Systems integration is a punch in the face System programming has been such a tar pit – very Sticky !

The Mythical Man Month What is the man-month?  Cost varies as the product of the number men and the number of months  Progress does not  Hence the man-month as a unit for measuring the size of a job is a dangerous and deceptive myth It implies that men and months are interchangeable

The Mythical Man Month “The bearing of a child takes nine months, no matter how many women are assigned”  Software projects are sequential in nature. They generally consist of several steps that must be completed one after another These steps cannot be worked on at the same time. (un-partitionable)

The Mythical Man Month Throwing more people at a software project has no real effect upon the date of project completion. In fact, the overheads,  training  preserving “conceptual integrity”  communication paths may delay the project further. “Adding manpower to a late project makes it later.” Why? The work and disruption or repartitioning jobs The time consumed training new people The added intercommunication between people There is a [n(n-1) / 2] increase in effort

The Mythical Man Month 20 PEOPLE, 190 CHANNELS! 2 people, 1 channel 3 people, 3 channels 4 people, 6 channels 5 people, 10 channels N=n(n-1) 2 Communication Paths

The Mythical Man Month

Surgical Team There is an order of magnitude difference between good programmers and bad programmers. More people working on a project = more miscommunication between those people  Smaller groups are better, but a small group is too slow to create a large system in a reasonable amount of time. Problem:

Surgical Team Miller’s Proposal:  Break up the programming teams into smaller sub-groups, with only one or two people doing actual coding. Everyone else in the team acts as support for these people. Thus, only a limited number of minds need to coordinate ideas, which reduces communications problems. Solution:

Surgical Team supervisor the pilot documentation the know-it-all guy

Aristocracy, Democracy, and System Design Conceptual Integrity is the most important consideration in system design  “It is better to have a system omit certain anomalous features and improvements, but to reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas. Features Vs. Simplicity  Where they balance is when ease of use is optimum.

Aristocracy, Democracy, and System Design “If a system is to have conceptual integrity, someone has to control the concepts.”  The architects are to become the aristocrats from whom all design decisions originate.  The implementers are then the peasants, soldiers, builders, and thinkers that support the aristocrat’s ideas.  Where architecture tells what is to happen, while implementation tells how it is to happen. Architect Implementers

The Second-system Effect When a programmer works on a large system for the first time, he generally keeps things simple and to the point. Radical ideas, features, or innovative implementations he would like to try are filed away for later use. When a programmer works on his second large system, these files come out of storage with a vengeance. Great care must be taken to insure that the system design is adhered to by all team members.

Passing the Word Manuals  External specifications of the product (Product Manual) Describes everything the user sees, and nothing that he doesn’t see  Internal specifications of the product (System Manual) Describes every technical detail about the system that may be used by the implementers. Meetings  Weekly half-day conferences  Annual or semi-annual “Supreme Court” meetings logs

The Fall of Babel … “…let us build ourselves a city with a tower whose top shall reach the heavens…”… then the Lord came down... said “Come, let us go down, and there make such a babble of their language that they will not understand one another’s speech.” And thus the Tower of Babel was left incomplete.

The Fall of Babel When people lost the ability to communicate with one another, they could no longer work together to complete the Tower of Babel. Likewise, when communication is lost to a software development team, the project they are working is doomed as well. Combative measures  Informal / telephone service  Regularly scheduled meetings  Project Workbook

Calling the Shot Programming effort is a function of program size.  Naturally, the larger and more complex the program, the longer it takes to complete  However, this relationship is not linear. It’s an exponential growth function.  Effort = (constant) x (number of instructions)

Calling the Shot Thousands of machine instructions Man-months incomplete

Ten Pounds in a Five Pound Sack Program space (memory) is a cost Thus size control is important Two methods to control size: space control and data representation Space techniques  Trading function for size  Space - time tradeoffs (CPU power) Representation techniques  Efficient data representation (objects, data structures)

The Documentary Hypothesis Reasons for having formal documents  Recording decisions  Communicating those decisions  Data base / checklist (programmer directives)

Plan to Throw One Away "The throwaway is the acceptance of the fact that as one learns, he changes the design." Pilot plants - upscale from small to large  Modern approach: 'alpha' and 'beta' testing Plan your system for change  Modern approaches: pre release: code base / configuration managers (e.g.: SourceSafe) post release: patching systems Collapse of the aerodynamically misdesigned Tacoma Narrows Bridge 1940

Sharp Tools “A good craftsman is known by his tools.” The tools of a programmer are:  Target machines The final testing environment  Vehicle machines The programmer’s work environment  Data services Compiler, assembler, libraries, debugging tools  HLL & interactive programming Language and programming tool of choice (e.g.: Java and JBuilder)

Hatching a Catastrophe Schedules are important to keep Give the team 100% certifiable milestones  Clearly define what needs to be done Pay attention to schedule slipping  Small slips can quickly compound into major project tardiness Under the employee rug  There are always manager-boss conflicts  Minimize the conflict between you and your managers  But occasionally, yank the rug out from under them

The Other Face Documentation is important to the user, as well What kinds of documentation do they need?  How to use the product  How the product works  How to adapt the product to their needs Flowcharts are flawed: they can be easily represented with code comments Self-documenting programs  Merge source code and documentation (well- commented code)

The Whole and the Parts Design the bugs out of the system  Bug-proof the definition  Use structured programming Component debugging  Test cases  System debugging  Use debugged components  Scaffolding  Control changes  Add one component at a time

Exhaustive Testing. Really? Simple loop, executing ≤ 20 times  1014 possible paths  at 1 ms per test, would take 3170 years

No Silver Bullet- Essence and Accident in Software Engineering “There is no single development, in either technology or management technique, which by itself promises even one order of magnitude improvement in productivity in reliability, in simplicity.” - Fred Brooks “... building software will always be hard” due to difficulties in its intrinsic nature (essence); however, improved process can solve difficulties which surround software production and are not part of its nature (accidents)

No Silver Bullet: Difficulties in Essence of Software complexity : due to interaction of components, number of possible states grows much faster than lines of code.

No Silver Bullet: Difficulties in Essence of Software changeability : must model changing real world, increase functionality, run on new hardware.

No Silver Bullet: Difficulties in Essence of Software conformity : must interface with existing systems.

No Silver Bullet: Difficulties in Essence of Software invisibility : cannot visualize all aspects at once.

No Silver Bullet: Breakthroughs for improving the Accidents software development environments use of “off the shelf” software and components rapid prototyping incremental development training, encouraging great designers aspects at once.

Some Methods for Dealing with Essential Difficulties Complexity  Abstract models  Breakdown of system into manageable modules  Breakdown of development process into phases, tasks, and subtasks  Team programming Changeability and Conformity  Change management  Configuration management Invisibility  use of multiple models, for many views of system

No Silver Bullet: Refired What is accidental?  Intent accidental: incidental or appurtenant  Misunderstanding accidental: occurring by chance, “Shrinking the accidental part to zero will not give an order of magnitude productivity improvement.”

No Silver Bullet: Refired Complexity Not all complexity is inevitable “… Yesterday’s complexity is tomorrow’s order.” There are no general rules to avoid complexity Complexity is by levels  Complexity in software construct is due to implementation rather than conformity to the external world.  Solution Hierarchically, by layered modules or objects Incrementally, so that the system always works

No Silver Bullet: Refired Harel’s “Gloom” themes  “Sharp separation into essence and accident”  “Treatment of each silver bullet candidate in isolation”  “Predicting for only 10 years, instead of a long enough time in which ‘to expect any significant improvement’”

No Silver Bullet: Refired Productivity Follows Quality  “Focus on quality, and productivity will follow.” - Jones’s view  “… productivity drops again as one pursues extreme quality…” - Boehm’s view  “… systematic software development disciplines were developed in response to quality concerns … rather than productivity concerns.” - Coqui’s view What has happened to productivity?  Measuring productivity is difficult  Shrink-wrapped software - Buy; don’t build  Tools improve productivity cheap, powerful tools that are easy to use

No Silver Bullet: Refired What about REUSE?  Don’t build software.  Aims Programmer level - 30% Corporate level - 75% How does corporate-level reuse fare today? - Jones Large companies have reuse research Small companies don’t “Reuse is something that is far easier to say than to do.” - Parnas

No Silver Bullet: Refired CONCLUSION Complexity  Cannot do away with completely Productivity  Focus on Quality and it will lead to productivity Reuse  Don’t reinvent the wheel

The Mythical Man-Month after 20 Years We, the programmers, pledge not to ask the presenter of this presentation about this! We UNDERSTAND where it stands. Game for a Discussion? (not me )

References 1. The Mythical Man Month – Fredrick P. Brook’s Jr., Pearson Education Asia Publishers. 2. Software Engineering – A practitioner’s Approach by Roger S. Pressman 3. Software Project Management (Lecture)- Peking University, Fall Semester, No Silver Bullet : Essence and Accident in Software Engineering by Prof. Fred Brooks, IEEE Computer, April Frederick P. Brooks Jr. The Mythical Man-Month. Addison- Wesley, Brad Cox, No Silver Bullet Revisited, 7. Information on Fred Brooks, 8. Ed Yourdon, Managing Projects to Produce "Good Enough" Software,