Methodologies
Contents Waterfall Model Evolutionary Models Incremental Development
Waterfall Model - Basic
Waterfall Model Advantages & Disadvantages Easy to explain to the user (+) Stages and activities are well defined and thus to identify milestones (+) Helps to plan and schedule the project Verification at each stage ensures early detection of errors / misunderstanding It is easy to separate one stage from another (+) Documentation can easily be produced(+) It is totally unrealistic! ( )
Waterfall Model - Enhanced
Waterfall – Enhanced Advantages & Disadvantages It is easy to identify milestones (+) It is easy to separate one stage from another (+) Software is properly documented (+) Premature requirements, design, etc. (-) It assumes that requirements can be precisely specified (-) It requires the customer to be patient (-) It is still unrealistic!
Prototyping Process Establish prototype objectives Define prototype functionality Develop prototype Evaluate prototype Prototyping plan Outline definition Executable prototype Evaluation report
Prototype (as a tool for requirements analysis) - Benefits Misunderstandings between software developers and users identified as the system functions are demonstrated Missing user services may be detected Difficult-to-use or confusing user services may be identified and refined Incomplete/inconsistent requirements found as the prototype is developed A working, albeit limited, system is available quickly for demonstration to management
Throw-Away Prototyping * At this point the prototype is thrown away! ** Development phase of the actual system Establish outline spec. Design & implement system Develop prototype Evaluate prototype Specify system * * * Validate system
Throw-Away Prototype - Problems Sometimes the cost of prototype development represents an unacceptably large fraction of the total cost Customers are likely to force the developer to convert the prototype to the working system using a few fixes The developer may become familiar with the prototype and reluctant to discard it
Evolutionary Prototyping Develop abstract specification system Deliver system System adequate? NO YES Develop abstract specification Develop abstract specification Build prototype Use prototype system Deliver system System adequate? NO YES
Evolutionary Prototyping Advantages & Disadvantages Systems are developed and delivered rapidly (+) Costs are reduced (+) User involvement! (+) The development process is ‘invisible’ to managers (+) Systems are usually poorly structured! (-)
Prototyping Advantages of Prototyping – Users are actively involved in the development – It provides a better system to users, as users have natural tendency to change their mind in specifying requirements and this method of developing systems supports this user tendency. – Since in this methodology a working model of the system is provided, the users get a better understanding of the system being developed.working – Errors can be detected much earlier as the system is mode side by side. – Quicker user feedback is available leading to better solutions. Disadvantages – Leads to implementing and then repairing way of building systems.building systems – Practically, this methodology may increase the complexity of the system as scope of the system may expand beyond original plans.
Incremental Development Integrate increment Integrate increment System complete? Design system architecture Specify system increment Build system increment Validate increment Define system deliverables Validate system Deliver final system YES NO Reproduced from:Sommerville System complete? Design system architecture Specify system increment Specify system increment Build system increment Build system increment Validate increment Define system deliverables Validate system Deliver final system YES NO Reproduced from:Sommerville
Incremental Development Advantages & Disadvantages No ‘big bang’ effect (+) Attention on the essential features (+) Customers can use the ‘partial’ software as soon as it is available (+) Early increments can provide a useful feedback (+) The requirements tend to constrained by the architecture (-) Problems with contracts (-) Difficult to map the customer’s requirements onto increments (-) Problems with basic facilities (-)
Summary Software life cycle models – all of them include the main generic stages – logic of the software process is different in each The spiral model, which subsumes the other models, should be investigated by students. Object orientation – emphasis on reusability – software development process will become one of assembly rather than one of creation