GENERIC SOFTWARE PROCESS MODELS THE WATERFALL APPROACH Presenters: Krystn Trowers Kerisha Witter INTRODUCTION • When developers attempt to create a project in addition to • selecting a development method they must create a plan or model for the many task that will follow. In Software Development there are different generic software process models which can be used. This is basically the structure of the approach that will be taken to develop the program. According to Systems Analysis and Design, Shelly Cashman(2008), A structured analysis uses the system development life cycle (SLDC) process. The SLDC describes activities and functions that all systems developers perform, regardless of the approach used. In the waterfall approach, the result of each phase is called a deliverable or end product which flows sequentially into the next phase. Definitions Not in our own words In our own words NOT IN OUR OWN WORDS • Dr. Winston W. Royce, in "Managing the Development of • Large Software Systems", the first paper that describes the waterfall model, also describes the simplest form as "risky and invites failure". Steve McConnell in Code Complete (a book which criticizes the widespread use of the waterfall model) refers to design as a "wicked problem" — a problem whose requirements and limitations cannot be entirely known before completion. The implication of this is that it is impossible to perfect one phase of software development, thus it is impossible if using the waterfall model to move on to the next phase. NOT IN OUR OWN WORDS • David Parnas, in "A Rational Design Process: How and Why to Fake It", writes: “Many of the [system's] details only become known to us as we progress in the [system's] implementation. Some of the things that we learn invalidate our design and we must backtrack.” THE WATERFALL APPROACH (IN OUR OWN WORDS) The waterfall model(approach) is a sequential software development process, in which progress is seen as flowing steadily downwards (like a waterfall) . In the unmodified "waterfall model“, progress flows from the top to the bottom, like a waterfall. Requirements Design Implementation Verification Maintenance When we say the Waterfall Approach, What exactly do we speak of? MOVES FROM TOP TO BOTTOM NOT RETURNING TO ANY STAGE THERE ARE VARIATIONS TO A WATERFALL BUT THE CONCEPT IS SIMILAR IN OUR OWN WORDS • When we think of a Waterfall, what comes to mind? • That it flows from top to bottom. Right? • Well this is the basic concept of the waterfall approach just as the waterfall a waterfall on the cliff of a steep mountain. Once the water has flowed over the edge of the cliff and has begun its journey down the side of the mountain, it cannot turn back. It is the same with waterfall development. Once a phase of development is completed, the development proceeds to the next phase and there is no turning back. HOW DOES IT WORK? • In the waterfall model, you proceed from one phase to the next sequentially. This suggests that you would complete the specification requirements first then when this phase is completed you move onto the design phase. In this phase the software is designed and a blue print is drawn for the coders to follow when the design phase has ended. In the implementation stage, the design is implemented by the coders and in the final stages of the implementation phase, separate software components are combined to form new functionalities and reduce risks through the removal of errors. As a result the waterfall model suggests that you should move to a phase only when its preceding phase has been completed and perfected. IN THE WATERFALL APPROACH • • • • • Requirements Specification Design Implementation Verification (Testing and Debugging) Maintenance (Installation) BRIEF DESCRIPTION OF THE PHASES • Requirements-Developer analyses users requirement and, performs further investigation of requirements, produces developers version of requirements. Since oftentimes users are unable to describe what they need with precision. However, when the developer finally gets the users to accept the proposal they can now begin. • Design-this phase focuses on high level design; what programs are needed and how they will interact with low level design(how the individual programs will work), interface design(what the interface will look like) and data design(what data is required) . Hence the overall structure is defined. BRIEF DESCRIPTION OF THE PHASES • Implementation-In this phase designs are translated into codes. • The programs are written using a programming language or application generators.Various high level languages such as pascal , C, C++ and java are used with programming tools such as compilers, debuggers and interpreters to generate codes. Verification- In this phase the system is tested; each module is tested separately and in detail then the system is tested as a whole. Therefore the whole system tested to ensure that the interface between modules work, the system works as intended with the expected volume of data and that it does what the user requires. BRIEF DESCRIPTION OF THE PHASES • Maintenance- in this phase the system is maintained since the software will undergo change once delivered to the customers; these changes may stem from unexpected input values into the system. Therefore the software must be developed to accommodate changes that could happen during those periods before its implementation period. TAKE NOTES • The waterfall approach is seemingly perfect but it is deemed inadequate as a process of software development therefore many persons wonder, Why spend time on this process? It is for these reasons; • The waterfall approach is still used by many software standards documents today. • Other processes depend strongly on the waterfall approach(and its inadequacies) since it is a perquisite to the study of alternative processes. • And none technical managers and persons responsible for external developments still demand the waterfall approach. Strengths • As a result of simplistic approach it is explainable to • • the user. As a result of the linear sequential model it appears orderly and that appeals to management. Testing (Verification) must be done at every stage of the waterfall model thus most errors are identified before the other phase is begun. Misinterpretations and other defaults are also detected at an early stage. Strengths • According to Contributor Melonfire (2006,September 22) retrieved from http://articles.techrepublic.com.com/510010878_11-6118423.html “the staged development cycle enforces discipline: every phase has a defined start and end point, and progress can be conclusively identified (through the use of milestones) by both vendor and client. The emphasis on requirements and design before writing a single line of code ensures minimal wastage of time and effort and reduces the risk of schedule slippage, or of customer expectations not being met.” Strengths • As a result of the first two phases of the waterfall • approach producing a formal specification (when the user know what they want) when the developers go their different ways the transfer of information can be well-organized. Retrieved from Freetutes.com “The stages and activities are well defined and helps to plan and schedule the project.” Strengths • Documentation is provided at every stage and there is • • early functionality. As a result of each phase having to be fully completed before the next phase begin reports can be done on each phase. The system is broken down into departments where they can be controlled by departmental managers. It allows job specialization thus more competent person can do the task. Weakness • Most times a consumers or users mind is constantly • changing and most persons have a vague idea of their software requirements and its as the software develops that they specify their requirements. As a result of consumers having difficulty in completely defining requirements they are clueless to what they want) at the beginning, using this approach we see the weakness of this approach come to light:- Weakness • It is inadequate as developers cannot just go back and change something in a previous phase as the consumers requirement change but the developer has to go back to where the requirement needs to change and start that phase all over. Not until that phase is complete can he move on to the next phase. We see two set of weaknesses come to light:- Weakness This approach does not make allowance for the change of defined requirements as the project progresses. Thus there is a big potential that the software will not fully meet the requirement of the user, it will be inefficient and have poor functionality. If the user has made an error in their requirements then the whole processes has to be restarted. • As we know a users wants are always changing and so an implementation using this approach to develop the software may take so long that the original requirements may no longer be valid by the time the system is implemented. Weakness • It is a very time consuming process and especially with the iteration (Repeating a whole process already completed). Developers also underestimate the time it will take to finish the project and so it runs over budget. • There is also little communication and interaction between the customers, engineers and project managers and this we know can lead to bigger problems which is made worst by the inadequacy of this approach. As a result of the above the development team does not understand the structure of the customers organization. Weakness • Retrieved from http://www.onestoptesting.com/sdlc- • models/waterfall-model/advantage-disadv.asp “Much reflection or revision is not allowed.” There is no possibility for maintenance fitting or reuse in such a format. There is also a big chance that the user interface (design of software) will be difficult to carry out (use). In other words the design will not be capable of being used successfully (feasible). Weakness • In documentation and reviewing the procedures, massive delays occur. • Developers spend a lot of time and effort on the early phase to ensure that they have no error as all other phases depend on them. Conclusion • In wrapping up basically we can say that the waterfall approach:A cascading effect each phase must be completed and “signed off” before the next phase can be started. It is a linear sequential approach It is best for a software where the system requirement is not vague but specific and is not subject to change. As a result it has more disadvantages than advantages. References • Shelly Cashman ,(2008). Systems Analysis and Design • (2003-2009). Waterfall Model. Retrieved from www.onestoptesting.com • (2004-2007). The System Development Life Cycle. Retrieved from • • • • www.startvbdotnet.com Parekh Nilesh. (2005, May 1). The Waterfall Model Explained. www.buzzle.com Dr. Robertson David , Dr. Bednar James A. (2006). Development Methodologies. Waterfall Model. Retrieved from http://www.inf.ed.ac.uk/teaching/courses/seoc2/2004_2005/slides/methodol ogies_4up.pdf Als Adrian , Greenidge Charles. (2005, September 29). The Waterfall Model. Retrieved from http://scitec.uwichill.edu.bb/cmp/online/cs22l/waterfall_model.htm Anonymous(1998,April 4). The Waterfall Lifecycle Model and its Derivatives . Retrieved from http://codecourse.sourceforge.net/materials/The-Waterfall-LifecycleModel.html