View
223
Download
3
Tags:
Embed Size (px)
Citation preview
About the AuthorFrederick Phillips Brooks, Jr.
• Born in 1931• Ph.D. in CS from Harvard, 1956• Between 1956 and 1965 worked in IBM, was project manager of IBM’s
System/360 computers and OS/360 development.• In 1964 founded CS Department at the University of North Carolina, chaired it for 20 years.
• In 1999 received the Turing Award “for landmark contributions to computer architecture, operating systems, and software engineering”.
The Book (1)1. The Tar Pit2. The Mythical Man-Month3. The Surgical Team4. Aristocracy, Democracy, and System
Design5. The Second-System Effect6. Passing the Word7. Why Did the Tower of Babel Fail?8. Calling the Shot9. Ten Pounds in a Five-Pound Sack10. The Documentary Hypothesis11. Plan to Throw One Away12. Sharp Tools
The Book (2)13. The Whole and the Parts14. Hatching a Catastrophe15. The Other Face16. No Silver Bullet – Essence and Accident in
Software Engineering17. “No Silver Bullet” Refired18. Propositions of The Mythical Man-Month:
True or False?19. The Mythical Man-Month after 20 years20. Fifty Years of Wonder, Excitement and Joy
(Epilogue)1975 - 1995
The Tar Pit (1)• Large-system programming is a tar pit
in the last decade.• The programming systems product:
A Program
A Programming
Product
A Programming
System
A Programming
System Product
1
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Tar Pit (2)
A Program
A Programming Product:•can be run, tested, repaired and extended by anybody•general enough•well documented
A Programming System:
•collection of interacting programs•precisely defined interfaces between individual programs•comply with resource limitations•all combinations tested
A Programming System Product:
both Programming System and Programming Product
x3
x3
1
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Tar Pit (3)• The joys of the craft:
– Making things– Making things that are useful to others– The fascination of fashioning complex
puzzle-like objects– Always learning– Such a tractable medium
• The woes of the craft:– Adjusting to the requirement of perfection– Other people tell you what to do– Worse: must use others’ programs!
1
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Tar Pit (4)• The woes of the craft (cont.):
– Bugs!!!– Bugs get harder as testing progresses– The product gets obsolete upon or even
before completion
1
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Mythical Man-Month (1)• Most software projects are late. Why?
– Assumption that all will go well led the schedule plan
– Confuse effort with progress: men and months are NOT interchangeable!
– Software managers tend to please their managers and because of uncertainty of programmers’ time estimates, plan the schedule poorly [as a discipline we lack estimating data].
– Poor monitoring of project progress– Natural response to schedule slippage is
adding manpower, which makes matters worse.
11
2
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Mythical Man-Month (2)• Optimism:
– All programmers are optimists, believing in happy endings and fairy god-mothers.
– Because programming tasks are usually chained end-to-end, the probability that each will go well is very small.
• Man-month:
– Cost vary as a product: men · months.
– Progress does not: communication overhead!
– Overhead: intercommunication and training.
11
2
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Mythical Man-Month (3)• Different projects types:
Men
Mon
ths
Perfectly partitionable task
Men
Mon
ths
Unpartitionable task
Men
Mon
ths
Partitionable task requiring communication Task with complex interrelationships
Men
Mon
ths
11
2
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Mythical Man-Month (4)• Proposes a successfull rule of thumb:
– 1/3 planning– 1/6 coding– 1/4 component test and early system test– 1/4 system test, all components in hand
• Gutless estimating, or: an omelette example
• Regenerative schedule disaster:– An example– Brook’s Law: Adding manpower to a
late software project makes it later.
11
2
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Surgical Team (1)• The problem: productivity varies hugely
between good programmers and poor ones.• Mill’s proposal: divide large job into
segments, each tackled by a surgical team:– The surgeon. The chief programmer. Defines
spec, designs, codes, tests, documents. The boss.
– The copilot. Less experienced, no responsibility for code.
– The administrator. Handles money, people, space, machines. May be part-time (serve two teams).
– The editor. Improves and perfects the
11
22
3
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Surgical Team (2)documentation produced by the surgeon.
– Two secretaries. One for the administrator and one for the editor.
– The program clerk. Responsible for maintaining all the technical records of the team in a programming-product indexed library.
– The toolsmith . The system manager of the team.
– The tester. Responsible for producing or gathering the test-cases. “The adversary”.
– The language lawyer. Master of the used programming language. Can serve two or three teams [surgeons].
11
22
3
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Surgical Team (3)11
22
3
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Surgeon
Co-pilot
Programming clerk
Toolsmith
Tester
Language lawyer
Administrator
Secretary
Editor
Secretary
Aristocracy, Democracy and System Design• Conceptual integrity is the most important
consideration in system design.– The ratio of function to conceptual complexity
[user-side] is the ultimate test of system design. Measures ease of use, valid over both simple and difficult users.
– Simplicity is not enough. Straightforwardness is required.
– To achieve it, a design must proceed from one mind (or small group of agreeing minds).
• Aristocracy vs. Democracy [Architecture vs. Implementation]:– Blaauw: “Where architecture tells what
happens, implementation tells how it is made to happen”.
– This separation is very important
11
22
33
4
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Second-System Effect (1)• An architect's first work is apt to be spare
and clean. He knows he doesn't know what he's doing, so he does it carefully and with great restraint.
• As he designs the first work, frill after frill and embellishment after embellishment occur to him. These get stored away to be used “next time”. Sooner or later the first system is finished, and the architect, with firm, confidence and a demonstrated mastery of that class of systems, is ready to build a second system.
11
22
33
44
5
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Second-System Effect (2)• This second is the most dangerous
system a man ever designs. When he does his third and later ones, his prior experiences will confirm each other as to the general characteristics of such systems, and their differences will identify those parts of his experience that are particular and not generalizable.
• The general tendency is to over-design the second system, using all the ideas and frills that were cautiously sidetracked on the first one.
11
22
33
44
5
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Second-System Effect (3)• Solutions:
– Obviously, an architect cannot skip his second system
– He must be conscious of the dangers, avoiding functional ornamenation and extrapolation of functionality.
– Brooks advises to assign each little function a value, like: capability x is worth not more than m bytes of memory and n microseconds per invocation.
– Project manager can avoid the danger by insisting on a senior architect who designed at least two systems.
11
22
33
44
5
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Second-System Effect (4)– An architect can successfully influence
implementation:• creative responsibility is builder’s, the architect
only suggests• don’t look for credit while suggesting
improvements• listen to builder’s suggestions
• Windows NT as a 1990’s example
11
22
33
44
5
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Passing the Word (1)• The problem: How do we [the manager]
ensure that everyone understand and implement the architects’ decisions?How a group of 10 architects achieve conceptual integrity in a system being built by 1000 men?
• Solutions:– Written specification – the manual:
necessary tool; includes dated versions.– Simulator or previous version may serve as
a formal definition. [Advantages, disadvantages]
11
22
33
44
55
6
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Passing the Word (2)– Meetings - two levels:
• Weekly half-day conference: architects, official representative(s) of implementers, market planners, chief architect presides. The emphasis is on creativity, rather than merely decision.
• Annual / half-year session of two weeks (held just before major freeze dates for the manual). Include also managers of programming. System project manager presides.
All decisions are distibuted immediately after the meetings.
– Telephone log of questions from implementers to the architects, distributed each week to everybody.
– Tests!!!
11
22
33
44
55
6
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Passing the Word (3)– Even in large teams writing must be done
by no more than two people– Formal vs. prose definition: standard and
derivative.
11
22
33
44
55
6
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Why Did the Tower of Babel Fail? (1)• The moral: clear mission, enough
manpower, good materials, enough time and adequate technology DO NOT suffice for a project to succeed. In this case: lack of communication and its consequent, organization.
• Bad communication in software projects are the root of all evil.
• How shall teams communicate with each other? In as many ways as possible:– Informally,
11
22
33
44
55
66
7
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Why Did the Tower of Babel Fail? (2)– Meetings,– and by maintaining a formal project workbook.
• The project workbook:– Not a separate document, but rather a structure
of such.– Includes objectives, external specs, interfaces
specs, technical standards, internal specs and administrative memoranda.
– Brooks describes a detailed fashion of managing and defining the workbook.
– Today it is much easier to develop a satisfiable mechanism for managing such workbook.
– Totally public / structured publicity (argument with Parnas)
11
22
33
44
55
66
7
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Why Did the Tower of Babel Fail? (3)• The essentials of tree-like
programming organization:– a mission– a producer– a technical director (architect)– a schedule– a division of labor– interface definitions among the parts
• Brooks stresses the distinction between the producer and the technical director:
11
22
33
44
55
66
7
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Why Did the Tower of Babel Fail? (4)• The producer:
– assembles the team– divides the work– establishes the schedule– takes care of the necessary resources– establishes the pattern of communication
and reporting within the team– ensures the schedule is met
• The technical director:– Resposible for the design– Provides conceptual integrity– Invent solutions for problems that arise
11
22
33
44
55
66
7
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Why Did the Tower of Babel Fail? (5)• Possible relations between the two:
1. The producer and the technical director may be the same man:– Works with very small teams, 3-6
programmers.– In larger projects will not work: a man with
the needed talents is rarely found, each role is a full-time job.
2. The producer is the boss, the director his right-hand man:– Difficulty: establishing the director’s
authority– This solution is rarely tried
11
22
33
44
55
66
7
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Why Did the Tower of Babel Fail? (6)3. The director is the boss, the producer his
right-hand man:– Best for small teams (as discussed in “The
Surgical Team” chapter)
11
22
33
44
55
66
7
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Calling the Shot• How to estimate the expected time and
effort it will take to build a system?– To estimate only the coding portion and apply
the ratios may lead to ridiculous results.– Nanus and Farr’s study:
effort = constant X (number of instructions)1.5
– Portman’s data: only 50% of working week was realized as actual programming and debugging time (meetings, unrelated jobs, paperwork, etc.).
– There are big differences in productivity related to the compexity of the task:• Operating systems, compilers, normal batch
application programs – factor of 3 between each, respectively.
11
22
33
44
55
66
77
8
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Ten Pounds in a Five-Pound Sack• Program space as cost – much less
relevant today– Resident size– Disk accesses
• More function means more space, speed being held constant.
• Time-space trade-off
11
22
33
44
55
66
77
88
9
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Documentary Hypothesis (1)• The hypothesis: Amid a wash of paper, a
small number of documents become the critical pivots around which every project's management revolves. These are the manager's chief personal tools.
• Brooks suggests the critical documents are:– Objectives– Specifications (the last finished document!)– Schedule– Budget– Organization chart
11
22
33
44
55
66
77
88
99
10
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Documentary Hypothesis (2)– Space allocations– Estimate, forecast, prices:
Forecast
Estimate
Prices
• The similarity to university department: as to any management task.
• Conway’s Law: “Organizations which design systems are constrained to produce systems which are copies of the communication structures of these organizations”.
11
22
33
44
55
66
77
88
99
10
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
The Documentary Hypothesis (3)• Why have formal documents?
– writing down decisions is essential (focuses thought and crystallizes discussion)
– the documents will communicate the decisions to others
– database and checklist for the manager– only a small part of a technical project
manager's time (20%) is spent on tasks where he needs information from outside his head
11
22
33
44
55
66
77
88
99
10
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
Plan to Throw One Away (1)• In most projects, the first system built
is barely usable. It may be:– too slow– too big– awkward to use– or all three
• The management question is not whether to build a pilot system and throw it away, but whether to deliver the throwaway to customers.
11
22
33
44
55
66
77
88
99
1100
11
1122
1133
1144
1155
1166
1177
1188
1199
2200
Plan to Throw One Away (2)• Delivering that throwaway buys time,
but…:– agony for the user– distraction for the builders while they do
the redesign– bad reputation for the product that the best
redesign will find hard to live down
• So: be prepared for a change as a way of life.
• Plan the system for change: – careful modularization– extensive subroutining
11
22
33
44
55
66
77
88
99
1100
11
1122
1133
1144
1155
1166
1177
1188
1199
2200
Plan to Throw One Away (3)– precise and complete definition of
intermodule interfaces– complete documentation of these– quantization of change: numbered versions
and clear policy regarding versions’ releases.
• Plan the organization for change:– Keep managers and technical people as
interchangeable as their talents allow: job titles, dual ladder of advancement, corresponding salary scales, corresponding prestige, “reassignment” vs. “promotion”
11
22
33
44
55
66
77
88
99
1100
11
1122
1133
1144
1155
1166
1177
1188
1199
2200
Plan to Throw One Away (4)• Maintenance:
– Total cost is 40% or more of the development, but strongly affected by the number of users.
Bug occurance as a function of release age
Months since installation
Bu
gs
fou
nd
per
mon
th
– The fundamental problem: fixing a defect has a 20%-50% chance of introducing another. So the whole process is “two steps forward and one step back”.
11
22
33
44
55
66
77
88
99
1100
11
1122
1133
1144
1155
1166
1177
1188
1199
2200
Plan to Throw One Away (5)• “One step forward and one step back”:
– Number of modules increase linearly, but number of modules affected increase exponentially.
– Less and less effort is spent to fix initial design flaws, more and more to fix previous fixes.
• Today: beta version (vs. alpha version)
11
22
33
44
55
66
77
88
99
1100
11
1122
1133
1144
1155
1166
1177
1188
1199
2200
Sharp Tools - Skipped
11
22
33
44
55
66
77
88
99
1100
1111
12
1133
1144
1155
1166
1177
1188
1199
2200
The Whole and the Parts• Many failures origin in poor definition of
requirements• Long before implementation, specification
must be tested for completeness and clarity.• Top-down design – the advantages• Structured programming (today: OOP?)• Debugging:
– Debug each component separately at first– Don’t follow the “documented bug” approach– White-box testing by using dummy components– Add one component at a time– Plan the debugging part carefully
11
22
33
44
55
66
77
88
99
1100
1111
1122
13
1144
1155
1166
1177
1188
1199
2200
Hatching a Catastrophe (1)• “How does a project get to be a year late?
• Day-by-day slippage is harder to recognize, harder to prevent, harder to make up.
• Milestones must be concrete, specific, measurable events, defined with knife-edge sharpness. Counterexamples:– Coding is “90% finished” for half of the total
coding time– Debugging is “99% complete” most of the time
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
14
1155
1166
1177
1188
1199
2200
…One day at a time.”
Hatching a Catastrophe (2)• Concreteness in milestones is more
important than easy verifiability by the boss
• How to cope with one-day slippages?– Prepare critical-path schedule
• “Under the rug”-problem. Solutions:– Reducing the role conflict: 1. listen till the end.
2. distinguish between status-review and problem-action meetings.
– Yanking the rug off: periodical review of milestones document (incl. actual dates).
• Keeping actual vs. estimated dates is handy
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
14
1155
1166
1177
1188
1199
2200
Hatching a Catastrophe (3)• PERT chart = critical path chart,
including milestones.• Plans and Controls team (1-3 men in
large project) – reported by Brooks to be very successfull.
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
14
1155
1166
1177
1188
1199
2200
The Other Face (1)• One face: a message from a man to a
machine.• The other face: a message from
human to human!1. To use a program:
– Purpose– Environment– Inputs domain and range– Functions realized and algorithms used– I/O formats– Operating instructions
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
15
1166
1177
1188
1199
2200
The Other Face (2)– Options– Running time– Accuracy and checking3-4 pages, most need to be drafted before
writingthe program
2. To modify a program, clear and sharp overview of the internal structure is needed:
– flow chart– complete algorithms descriptions / reference– all files layout
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
15
1166
1177
1188
1199
2200
The Other Face (3)– design overview and major changes
history and motivations• Flow charts: obsolete! (at most one
page per program)• Self documenting programs:
– The problem: synchronization between code and documentation.
– The solution: to incorporate the documentation in the source program:• Labels, names, spaces,… (good
programming )• Pointers to books [documentation]• Purpose: tell why rather than how things are.
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
15
1166
1177
1188
1199
2200
No Silver Bullet – Essence and Accident
in Software Engineering (1)• “There is no single development, in either
technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity” (1986).
• Silver bullet: a way to defeat werewolves.– Generally [in folklore]: any straightforward
solution perceived to have extreme effectiveness.
• Compares software to hardware:– The anomality is not that software progress is so
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
16
1177
1188
1199
2200
NSB (2)– slow, but that computer hardware
progress is so fast.• Essence—the difficulties inherent in
the nature of the software• Accidents—those difficulties that
today attend its production but that are not inherent [but incidental].
• Essence:– Complexity – Conformity– Changeability– Invisibility
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
16
1177
1188
1199
2200
NSB (3)• Complexity
– enormous number of states (orders of magnitude more than in hardware), so conceiving, describing and testing is hard
– increases non-linearly with its size– introduces a lot of difficulties:
• communication among team members• enumerating (much less understanding) of
all possible states of the program• management problems:
– conceptual integrity is hard to achieve– learning curve: personnel turnover becomes
disaster
• others
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
16
1177
1188
1199
2200
NSB (4)• Conformity
– Physics example: looking for simplicity in complex structures
– Software: the complexity is arbitrary, forced by existing systems to which the interfaces must conform.• cannot be simplyfied by any redesign!
• Changeability– Software is constantly under pressure for
change, partly because it can be changed more easily than a building.
– Two processes are at work:
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
16
1177
1188
1199
2200
NSB (5)• Demand for extended function (a result of
success)• Suitability for a new hardware is needed
• Invisibility– Unlike other disciplines, where geometric
abstractions serve as a powerful tool, software is not inherently embedded in space
– Several general directed graphs, superimposed one upon another appear while trying to create a representation• the graphs are nor planar neither hierarchical
• What helped to overcome some of accidental difficulties in the past?
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
16
1177
1188
1199
2200
NSB (6)– High-level languages– Unified programming environments
• Hopes for the silver:– OOP:
• Hierarchical• Data hidingHelps in design, but do not solve design
complexityproblem
– AI (expert systems)• May be very useful
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
16
1177
1188
1199
2200
NSB (7)– “Automatic” programming: generation of
a program from problem specification• Used successfully for very specific tasks
(differential equations,…)• Hard to imagine having a general solution
– Graphical programming:• No hope, for software is difficult to visualize
– Program verification• Might reduce the program-testing load, not
eliminate it• A lot of work• Can establish that a program meet its
specification. But the hardest part is to get such complete and consistent specification!
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
16
1177
1188
1199
2200
NSB (8)– Better workstations, environments and
tools• are welcomed, but magical enhacements
cannot be expected
– Buy vs. Build • Discusses the process of wide-spread use of
software “today” compared to 60-s, adopting procedures to existing software
– Requirements refinement and rapid prototyping• “The hardest single part of building a
software system is deciding precisely what to build”
• Thus, rapid prototyping tools are one of the most promising efforts that attack the essence of software development problem.
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
16
1177
1188
1199
2200
NSB (9)– Incremental development
• Write vs. Build• Build vs. Grow (top-down design, stubs…)
– Great designers• “The difference between the great and the
average approach an order of magnitude”• Gives hints as to how to grow great
designers
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
16
1177
1188
1199
2200
“NSB” Refired - Skipped11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
17
1188
1199
2200
Propositions of The M-MM –True or False?
Considered in the previous slides
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
18
1199
2200
The M-MM after 20 years (1)Answers questions like: What do you now
think was wrong when written? What is nowobsolete? What is really new in the softwareengineering world?
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
19
2200
• What was right and still is:– Conceptual integrity is the more important
factor in ease of use [There are other factors. Consider Macintosh vs. MS-DOS].It is the central question addresses by M-MM and is central to product quality.
The M-MM after 20 years (2)11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
19
2200
– The architect’s central role– The parallel between the Second-System
Effect and mass-market software products– It is important to define the user set
(Who they are? What they need? What they think they need? What they want?). Write down explicit guesses for the attributes of the user set and their frequencies.
• The triumph of the WIMP interface– Windows, Icons, Menus, Pointing interface– Predicts it to become obsolete within a
generation
The M-MM after 20 years (3)11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
19
2200
• “Plan to throw one away” is wrong:– Not too radical, but too simplistic– Implicitly assumes the waterfall model:
Plan
System Test
Code
Field Support
Component Test
It is wrong because:• Assumes “one-shot”, assumes realization
mistakes only
There must be upstream movement.– Better approach is Incremental-Build
Model (already mentioned in NSB)
• Nightly Build approach– May be too radical for huge systems
The M-MM after 20 years (4)11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
19
2200
• Incremental build and rapid prototyping are very close
• Information hiding vs. full publicity– Both can lead to disasters
• Barry Boehm model and data:– Cost-optimum schedule time to first
shipment is
• Refined Brooks Law – By Abdel-Hamid and Madnick– Adding more people to a late project
always makes it more costly, but it does not always cause it to be completed later
35.2 MMl
The M-MM after 20 years (5)11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
19
2200
• Why speak about management rather than technical issues?
– People are everything• Factor of four compared to the next
largest one
– Importance of delegating power downwards in the organizational structure• Autonomous teams [sub-units], having its
own resources and schedules
Fifty Years of Wonder, Excitement and Joy
11
22
33
44
55
66
77
88
99
1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
20
Skipped
The Cathedral and the Bazaar (1)
Written by Eric Steven Raymond (ESR)Central “lessons”:1. Every good work of software starts by
scratching a developer’s personal itch.2. Good programmers know what to write.
Great ones know what to rewrite (and reuse).
3. “Plan to throw one away; you will, anyhow” (Brooks).
4. If you have the right attitude, interesting problems will find you.
The Cathedral and the Bazaar (2)
5. When you lose interest in a program, your last duty is to hand it off to a competent successor.
6. Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.
7. Release early. Release often. And listen to your customers.
8. Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone [Given enough eyeballs, all bugs are shallow – Linus’s Law].
The Cathedral and the Bazaar (3)
9. Smart data structures and dumb code works a lot better than the other way around.
10.If you treat your beta-testers as if they’re your most valuable resource, they will respond by becoming your most valuable resource.
11.The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
12.Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
The Cathedral and the Bazaar (4)
13.“Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away” – Antoine de Saint-Exupéry.
14.Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected.
15.When writing gateway software of any kind, take pains to disturb the data stream as little as possible – and never throw away information unless the recipient forces you to!
The Cathedral and the Bazaar (5)
16.When your language is nowhere near Turing-complete, syntactic sugar can be your friend.
17.A security system is only as secure as its secret. Beware of pseudo-secrets.
18.To solve an interesting problem, start by finding a problem that is interesting to you.
19.Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one.