140 likes | 391 Views
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.
E N D
Winston W. Royce,Managing the development of large software systemsProc. 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.Sc. in physics, M.Sc & Ph.D. in aeronautical engineering, all from California Institute of Technology (Caltech). Worked in the field of software systems engineering since 1961. Since the 1970s – The director of Lockheed software technology center in Austin, Texas. The first to describe “the Waterfall model”. Received the AIAA information systems award in 1975.
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 ~!~!~!
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 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 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.