Presentation on theme: "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,"— Presentation transcript:
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. Winston W. Royce, Managing the development of large software systems Proc. IEEE WESCON, Aug 1970
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.