Subscribe by Email


Showing posts with label Waterfall model. Show all posts
Showing posts with label Waterfall model. Show all posts

Thursday, May 31, 2012

What are the differences between waterfall, spiral, iterative and scrum processes?


The waterfall, spiral, iterative and scrum are all agile software development models! At a glimpse of them, they may all seem like similar software development processes. But this is absolutely wrong! At surface they may appear to be one and the same but when you go in to the depths of the understanding of these processes you will come to know that there is a “considerable” difference among them. 
In this article we are going to discuss among all these processes. Let us go through these processes one by one:

1. Waterfall Model: 
- Waterfall model follows a sequential design rather then following a haphazard order of processes. - By the name itself you can make out the flow of the development is downwards like a water falling down an actual waterfall. 
- Most of the agile software development models have same number and types of phases, but the way they are implemented is different.
- The waterfall model can only be implemented in the software projects that require highly structured development environments. 
- This is the only agile development process that can be adapted for both the hardware and software projects. 
- If you have implemented waterfall model for the development project you cannot move on to the next phase before completing the previous one.
- However, in some very extreme cases, the developers hold the privilege to modify it to suit their needs. 
- The water fall model is based up on the philosophy that if you spend more time in the early phases looking for the errors and faults, the less time and effort will be spent in the later stages which are quite complex too.

2. Spiral Model:
- This software development model is a resultant of the combination of prototyping in stages and designing and thus possesses the combined advantages of both the top down and bottom up concepts. 
- Unlike the other software development processes, the spiral model is intended for use in the projects that are quite large, expensive and complicated. 
- Prototyping is nothing here but the iterative development combined with the controlled aspects of the waterfall model.
- It does allow for the incremental releases of the software at the end of every refinement. 
- Unlike the waterfall model, the spiral model is inclusive of the risk management for the identification of the major risks whether managerial and technical and determines how to lessen it. 
This model evolves around the idea of the continuous refinement of the requirements definition, requirements analysis, implementation and software design and so on. 
- This model makes use of the same stages as the waterfall model but they are separated by risk assessment, planning and building of prototypes and simulation. 
- Documentation is produced whenever needed and not unnecessarily.

3. Iterative and Incremental Development: 
- This software development model was developed as a means to overcome the minus points of the waterfall model. 
- Unlike the other software development processes, this one starts with a lot of initial planning and continues with many cyclic interactions and finally ends with deployment.
- This software development model in turn forms a very important part of many other agile software development process like RUP and extreme programming. 
- The iterative and incremental development model is known to follow plan- do- check- act cycles of the business process improvement.

4. Scrum: 
- Scrum is so contrasting with all the other software development processes. 
- The waterfall model is intended to complete the project in one discipline one step at a time and goes for the next discipline in next step. 
- It delivers the business value at the end itself but this is not the case with the scrum!
- Here with every iteration a business value is delivered.


Tuesday, December 6, 2011

What are different characteristics of destructive testing?

Nothing checks the robustness of a software system or application better than destructive testing.
- Destructive testing is basically to determine the robustness of a software system or application.
- In order to determine the robustness of a software system or application, it is subjected to very harsh tests and attempts are made to make the program crash or hang.
- The aim of the destructive testing is to cause the failure of the program.
- The destructive testing has a typical process procedure. The process has the following aspects:

Waterfall development model or CMMI traditional model

- It is always been a common practice of performing software testing on software system by an independent group of software testers after the functionalities of the software system have been fully developed. D
- Destructive testing is carried out before it is delivered to the client or the customer.
- In this kind of practice, the testing stage is also used as a project buffer in order to compensate for project delays.
- But, this results in compromising with the time being consumed for testing.
- In the same model, there is another testing in which the software testing is started simultaneously with the start of the project and it is continued as a regular process until the project is finished.

Extreme development model or Agile model

- The extreme development model and the agile software development model follow the test driven software development model.
- Following this procedure, unit tests are carried out first by the software developers or engineers.
- These unit tests fail initially and this is expected also.
- As the code is written and subjected to these tests, more and more units of the software system pass those unit tests successfully.
- The test cases being used in the testing are updated regularly for the new faults and errors discovered.
- The tests cases thus updated are also made more efficient with the addition of the regression tests developed during the whole process.
- Unit tests are carried out simultaneously with the development and progress of the source code.
- They eventually become an integral part of the build process.
- This model aims at achieving continuous deployment i.e., to say that the software updates can be easily released for the public.

Although there exist some variations between the different models of testing, the testing cycle is typical and same for every kind of model. The following steps are involved in the testing cycle:

- Requirement analysis
- Test planning
- Test development
- Test execution
- Test reporting
- Test result analysis
- Defect retesting
- Regression testing
- Test closure


Facebook activity