Transcript slides

Winston W. Royce,
Managing the development of large software systems
Proc. IEEE WESCON, Aug 1970
Winston W. Royce (1929–1995)
• American leader computer scientist & Engineer of software
development in the second half of the 20th century.
•B . S c . i n p h y s i c s , M . S c & P h . D . i n a e r o n a u t i c a l e n g i n e e r i n g ,
all from California Institute of Technology (Caltech).
•W o r k e d i n t h e f i e l d o f s o f t w a r e s y s t e m s e n g i n e e r i n g s i n c e
1961.
•S i n c e t h e 1 9 7 0 s – T h e d i r e c t o r o f L o c k h e e d s o f t w a r e
technology center in Austin, Texas.
•T h e f i r s t t o d e s c r i b e “ t h e W a t e r f a l l m o d e l ” .
•R e c e i v e d t h e A I A A i n f o r m a t i o n s y s t e m s a w a r d i n 1 9 7 5 .
Basic Program Development Process
•There are two essential steps in all computer program developments:
•Analysis – the phase of studying the problem & figuring a way to solve it by
program.
•Coding – the process of writing the program code.
•These steps are essential, creative, immediate, Costumers are happy to pay for
them & developers just love to work on them.
•For small programs for internal use – these 2 steps are working just fine.
•But – this is NOT a good program Engineering for program projects that involve
large scale of code, many developers or external costumer.
• In Royce experience, any attempt to complete such program projects using only
these 2 steps is doomed to failure in terms of cost, development
•duration & reliability.
The Waterfall Model
Notice the Error directions ~!~!~!
Royce’s Worst Nightmare
Step 1 : Preliminary Design
 Add phase of preliminary program design between
the “Software requirements” & analysis stages.
 In this step – try to draw “from scratch”, with the aid
of some experience program designer a general
sketch of your system (its size, resources usage, main
ingredients, methods of work etc).
 Even at the risk of being wrong, such a sketch helps
the analysts & the designers to define a general
frame for their offered solution & assure that you
can afford allocation of the resources needed for the
solution.
Step 1 : Preliminary Design
 Such a sketch can also help you to recognize, in a
vary early stage ,logical problems in the original
requirements or a severe lack of resources (memory,
process ability, time, personal , money, etc.) at your
disposal with regard to the project demands.
Step 2: A lot of Documentation
 “The first rule of managing software development is
ruthless enforcement of documentation
requirements.”
 Real requirements specification & design are written
accurately & in a very detailed manner. If you don’t
have such documents – you don’t really understand
well the requirements or the design.
 Some advantages of good documentation:

Objective & unequivocal understanding & knowledge of the
current progress during encoding – enables management
decisions.
Step 2: A lot of Documentation
 Some more advantages of good documentation:
 Mutual understanding between designers, thsters, managers &
even costumers.
 Ability to divert personal when required.
 Allows performing of testing & operations by experts to these
field & free the developers & programmers to do their work.
 Enables updates & upgrades (instead of system replacement).
 Better ability to locate & treat errors & malfunctions in the
code & distinguish between them & malfunctions in other
parts of the system.
 As a result, in Royce opinion, there are 6 documents that
should be written during the development process:
Step 2: A lot of Documentation
Step 3: Prototype
 If the product is original & being developed for the
first time, Royce recommends to devote up to 33% of
the development time for building a prototype of the
product, testing & using it.
 The prototype project should be managed as the real
one (in the full stages, documentation, etc.) but focus
the effort on the trouble spots of the project & not in
the straightforward, gray parts of it.
 The rate of time, effort & precision invested in such a
prototype is changed as function of the complexity &
innovation of the project.
Step 3: Prototype – development scheme
Step 4: Good Testing
 Testing phase should be the biggest phase of the project
development from the aspects of manpower, time &
resources.
 Royce recommendations for good testing:





Plan the tests, before product coding, in the design phase.
Use autonomous & detached test group of testing specialists &
not program developers to test your product (good
documentation should enable this!).
Check every bit of code by second eye. Usually it will descover
most of the bugs even before execution.
Test every logic path in your product at least once.
Test not only the product functionality but also the usage,
maintence & costumer instructions aspects.
Step 5 : Involve the costumer
 In order to prevent misunderstandings &
misinterpretations regarding the abilities, costs,
development duration & activation of the system, Royce
recommends to involve the costumer in formal way as an
active reviewer in the phases of defining the system
requirements, preliminary design, design & after the
testing, before the operation,
 Such involvement will prevent disconnection between the
developers concepts of the product and the costumer needs
& will insure his awareness to the alternatives &
compromises done during the development.
Summary
 41 years ago, Winston Royce introduced to the world
a profound, complex & safe model for software
project engineering.
 Since, this model, in some smell changes &
adaptations, became one of the most popular models
for software development and it is still popular &
relevant today.
 Consequentially, it must be a very good & usful
model.