Wednesday, May 29, 2019

What are the different software development models?Software Development Life Cycle Models Methodologies|SDLC Models: Agile,Waterfall, V-Model,Spiral

Software Development Models

There are mainly 5 models :
1. Waterfall Model
2. Spiral Model / Iterative Model
3. V-model
4. RAD
5. Agile Model & Scrum basics


1. Waterfall Model

A Waterfall model is characterised by three attributes.
1. The project is divided into separate, distinct phases.
2. Each phase communicates to the next through pre-specified outputs.
3. When an error is detected, it is traced back to one previous phase at a time, until
it gets resolved ay some earlier phase.
Advantages :
1. The main strength of Waterfall model is its simplicity
2. Focus on one stage a time
Disadvantages :
1. Late attention to the testing activity
2. Errors are more costly to correct
3. Testing is seen as a test execution phase
4. Difficult to deal with the changes

                                                                           Waterfall Model



2. Spiral / Iterative Model


  1. The Spiral Life Cycle Model is a type of iterative software development model which is generally implemented in high risk projects. It was first proposed by Boehm. In this system development method, we combine the features of both waterfall model and prototype model. In Spiral model we can arrange all the activities in the form of a spiral.
  2. Each loop in a spiral represents a development phase (and we can have any number of loops according to the project). Each loop has four sections or quadrants
  • To determine the objectives, alternatives and constraints
  • Risk analysis and evaluation of alternatives
  • Execution of that phase of development
  • Planning the next phase

                                Spiral / Iterative Model

Spiral model is also called as meta-model because in a way it comprises of other models of SDLC. Both waterfall and prototype models are used in it.

Advantages :
1) Spiral Life Cycle Model is one of the most flexible SDLC models in place. Development phases can be determined by the project manager, according to the complexity of the project.
2) Project monitoring is very easy and effective. Each phase, as well as each loop, requires a review from concerned people. This makes the model more transparent.
3) Risk management is one of the in-built features of the model, which makes it extra attractive compared to other models.
4) Changes can be introduced later in the life cycle as well. And coping with
these changes isn’t a very big headache for the project manager.

Disadvantages:
1) Cost involved in this model is usually high.
2) It is a complicated approach especially for projects with a clear SRS.
3) Skills required, to evaluate and review project from time to time, need expertise.


3. V- Model : Verification & Validation:


  1. Development tasks and testing tasks are corresponding activities of equal importance.
  2. V-Model distinguishes between different test levels where each test level is a testing against its corresponding development level.
  3. Testing is not seen as phase which happens at end of development.
  4. V-model is derived from waterfall model
  5. Within each test level, it must be checked whether the outcomes of
  6. development meet the specified requirements of those requirements that are relevant on this specific level of abstraction.
  7. V- model means Verification and Validation mode .
  8. Each phase must be completed before the next phase begins.
  9. Testing of the product is planned in parallel with a corresponding phase of development.

                                                  V-model 


V-model phases ( Left branch – Verification/ Static )


•Requirements like BRS and SRS begin the life cycle model just like the waterfall model. But, in this model before development is started, a system test plan is created. The test plan focuses on meeting the functionality specified in the requirements gathering.
• The high-level design (HLD) phase focuses on system architecture and design. It provide overview of solution, platform, system, product and service/process. An integration test plan is created in this phase as well in order to test the pieces of the software systems ability to work together.
• The low-level design (LLD) phase is where the actual software components are designed. It defines the actual logic for each and every component of the system. Class diagram with all the methods and relation between classes comes under LLD. Component tests are created in this phase as well.
• Coding: This is at the bottom of the V-Shape model. Module design is converted into code by developers. The implementation phase is, again, where all coding takes place. Once coding is complete, the path of execution continues up the right side of the V where the test plans developed earlier are now put to use.





The V-model – Right branch (Verification/Dynamic)

• Unit testing : Verifies whether each unit performs correctly according to its specification
• Integration testing: Checks if groups of units collaborate in the way that is specified by the high level design.
• System testing: Verifies whether the system as a whole meets the specified requirements
• Acceptance testing: (UAT – α & β ) Checks if the system meets the
requirements, as specified in the contract , from the customers point of view.


Verification Vs. Validation
Verification 

1. Verification is also known as
Static testing.
2. Disciplined approach to
evaluate whether a software
product fulfils the requirement
or conditions imposed on them
(Are we doing the job right ) ?
3. Done by systematically reading
the contents of software product
with intention of defecting
defects.
4. Helps in identifying not only
the presence of defects but also
their location.
5. It is the process of confirming
that s/w “meets its
specifications”.
6. Method : Walkthrough,
Inspection, Review of each
software product

Validation

1. Validation is also known as
Dynamic testing.
2. Disciplined approach to
evaluate whether the final ,
as-built software product
fulfils its specific intended use
(Are we doing the right Job?)
3. Done by systematically testing
a software product with the
intention of finding defects.
4. Helps in identifying the
presence of defects , not their
location
5. It is the process of confirming
that s/w “meet the user
requirements”.
6. Method : Unit testing ,
Integration testing , System
testing , Acceptance testing ,
Functional

Adv. & Dis-adv. of V-model Advantages of V-model:

Advantages of V-model:
• Simple and easy to use. Testing activities like planning, test
designing happens well before coding. This saves a lot of time. Hence higher chance of success over the waterfall model.
• Proactive defect tracking – that is defects are found at early stage.
• Avoids the downward flow of the defects.
• Works well for small projects where requirements are easily understood.

Disadvantages of V-model:
• Very rigid and least flexible.
• Software is developed during the implementation phase, so no early prototypes of the software are produced. When to use the V-model:
• The V-shaped model should be used for small to medium sized projects where requirements are clearly defined and fixed.
• The V-Shaped model should be chosen when ample technical resources are available with needed technical expertise.


Water Fall Vs. V-Model

  • Waterfall Model: It includes all phases of SDLC but the drawback is once requirement made freezed it cannot be changed.
  • Waterfall Model the tester role will take place only in the test phase
  • Waterfall model is a fixed process u can't make any changes in the
  • requirement or in any phase
  • waterfall model used only the requirements are fixed.
  • V-Model: In this model all phases will be done correspondently development and testing.
  • V-Model role will take place in the requirement phase itself
  • V-Model u can make any changes in the requirements
  • V-model is the simultaneous process but it is not in case of water fall model
  • V-model can be used for the any type of requirement(Uncertain requirement)

4. RAD

•In general, RAD approaches to software development put less emphasis on planning tasks and more emphasis on development.
• In contrast to the waterfall model, which emphasizes rigorous specification and planning, RAD approaches emphasize the necessity of adjusting requirements in reaction to knowledge gained as the project progresses.
• This causes RAD to use prototypes in addition to or even sometimes in place of design specifications.
• RAD approaches also emphasize a flexible process that can adapt as the project evolves rather than rigorously defining specifications and plans correctly from the start

                                     RAD


5.Agile Software Development

Agile software development primarily focuses on an iterative method of development and delivery.
A software testing practice that follows the principles of agile software development is called Agile Testing. Agile is an iterative development methodology, where requirements evolve through collaboration between the customer and self-organizing teams and agile aligns development with customer needs.
Developers and end users communicate closely and the software is built.
Customer is thus closely involved in the software design and development process.
Delivery timelines are short and new code is built on the previous one.
Agile Development models : Extreme Programming (XP) , SCRUM

Advantages of Agile Testing:

• Agile Testing Saves Time and Money
• Less Documentation
• Regular feedback from the end user
• Daily meetings can help to determine the issues well in advance.
Best Practices in Agile Testing
1. Automated Unit Tests
2. Test Driven Development
3. Automated Regression Tests
4. Exploratory Testing

Principles of Agile Testing

• Testing is NOT a Phase: Agile team tests continuously and continuous testing is the only way to ensure continuous progress.
• Testing Moves the project Forward:When following conventional
methods, testing is considered as quality gate but agile testing provide feedback on an on going basis and the product meets the business demands.
• Everyone Tests: In conventional SDLC, only test team tests while in agile including developers and BA's test the application.
• Shortening Feedback Response Time: In conventional SDLC, only during the acceptance testing, the Business team will get to know the product development, while in agile for each and every iteration, they are involved and continuous feedback shortens the feedback response time and cost involved in fixing is also less.
• Clean Code: Raised defects are fixed within the same iteration and thereby keeping the code clean.
• Reduce Test Documentation: Instead of very lengthy documentation, agile testers use reusable checklist, focus on the essence of the test rather than the incidental details.
•Test Driven: In conventional methods, testing is performed after
implementation while in agile testing, testing is done while
implementation.
                   

                                                               Agile Software Development

Share:

1 comment:

  1. How about Software Testing Life Cycle? How is it different from Software Development Life Cycle?

    ReplyDelete

Email Subscription

Enter your email address:

Delivered by FeedBurner

Follow my blog

Total Pageviews

Contact Form

Name

Email *

Message *

Translate