eel5881 software engineering i mythical man-month lecture presented by yi luo

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

Upload: joel-heasley

Post on 31-Mar-2015

220 views

Category:

Documents


2 download

TRANSCRIPT

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

EEL5881 software engineering IMythical man-month lecture

Presented by Yi Luo

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

acknowledge Most of the sides are taken from different so

urces 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

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

About the book Author: Fred Brooks

a book on software project management

central theme : "Adding manpower to a late software project

makes it later."

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

About the book The Bible of Software Engineering everyb

ody 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).

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

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

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

The Tar Pit [Brooks, Chapter 1]

A program

A programming product

(generalization, testing,documentation, maintenance)

A programming system

(interfaces, system integration)

A programming systems product

x 3

x 3

We estimate as if building

this…

But we are building this

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

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.

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

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…

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

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…

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

Progress vs. Cost, 1

0

1

2

3

4

5

6

7

8

9

10

0 1 2 3 4 5 6 7 8 9 10

People

Mo

nth

s

When there is no dependency among people, the amount of time to do a taskdiminishes with each new person. Note that the cost (people * months) is constant.

harvest

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

Progress vs. Cost, 2

0

1

2

3

4

5

6

7

8

9

10

0 1 2 3 4 5 6 7 8 9 10

People

Mo

nth

s

0

10

20

30

40

50

60

70

80

90

0 1 2 3 4 5 6 7 8 9 10

People

Co

st

When there is a dependency and thetask cannot be partitioned, addingpeople has no effect on time required…

…but it has a big effect on cost.

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

Progress vs. Cost, 3

0

2

4

6

8

10

12

14

16

18

20

0 1 2 3 4 5 6 7 8 9 10

People

Mo

nth

s

If task can be partitioned, but requires communication, must handletraining and communication as each person is added. Can cause projectto be later.

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

What about a late project?

0

1

2

3

4

5

0 1 2 3 4 5 6 7 8 9

Months

Peo

ple

A B C D

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

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

Late project, 2

0

1

2

3

4

5

0 1 2 3 4 5 6 7 8 9

Months

Peo

ple

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.

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

Late project, 3

0

1

2

3

4

5

0 1 2 3 4 5 6 7 8 9

Months

Peo

ple

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.

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

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.

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

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.

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

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.

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

A proposalChief Programmer

Administrator

Secretary

Editor

Secretary

“Co-pilot”

Programming clerk

Toolsmith

Tester

Language lawyer

How might this concept be updated for 2006?This works for small projects. How might it be scaled for larger projects?

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

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.

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

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.

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

Self-discipline First 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?

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

2nd System Difficulties

No generalization from experience

Tendency to over design

Tendency to refine obsolete techniques

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

What can be Done?

Architect 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

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

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

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

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!

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

Communication in Software Project

Teams should communicate Informally Meetings Workbook

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…

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

Summary and other ideas

The Mythical Man-Month Assigning more programmers to a project runni

ng 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

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

Thank you

Questions?