Wednesday, September 17, 2014

Software Development Life Cycle (SDLC) Modeles



Software Development Life Cycle model is utilized for project management and involves processes from the feasibility Analysis to maintenance of the completed application.


Waterfall methodology
Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the project.

In "The Waterfall" approach, the whole process of software development is divided into separate phases. In Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially.


·      Requirement Gathering and analysis: All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification doc.
·       System Design: The requirement specifications from first phase are studied in this phase and system design is prepared. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture.
·       Implementation: With inputs from system design, the system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality which is referred to as Unit Testing.
·      Integration and Testing: All the units developed in the implementation phase are integrated into a system after testing of each unit. Post integration the entire system is tested for any faults and failures.
·       Deployment of system: Once the functional and nonfunctional testing is done, the product is deployed in the customer environment or released into the market.
·      Maintenance: There are some issues which come up in the client environment. To fix those issues patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment. 
Applications
·      Requirements are very well documented, clear and fixed.
·      Product definition is stable.
·      Technology is understood and is not dynamic.
·      There are no ambiguous requirements.
·      Ample resources with required expertise are available to support the product.
·         The project is short.
Pros
Cons
·     Simple and easy to understand and use
·     Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.
·     Phases are processed and completed one at a time.
·     Works well for smaller projects where requirements are very well understood.
·     Clearly defined stages  & Well understood milestones.
·     Easy to arrange tasks.
·     Process and results are well documented.
·      No working software is produced until late during the life cycle.
·     Not a good model for complex and object-oriented projects.
·     Poor model for long and ongoing projects.
·     Not suitable for the projects where requirements are at a moderate to high risk of changing.
·     It is difficult to measure progress within stages.
·     Cannot accommodate changing requirements.
·     Adjusting scope during the life cycle can end a project.


Iterative model

In Iterative model, iterative process starts with a simple implementation of a small set of the software requirements and iteratively enhances the evolving versions until the complete system is implemented and ready to be deployed.


An iterative life cycle model does not attempt to start with a full specification of requirements. Instead, development begins by specifying and implementing just part of the software, which is then reviewed in order to identify further requirements. This process is then repeated, producing a new version of the software at the end of each iteration of the model.

spiral model

The spiral model combines the idea of iterative development with the systematic, controlled aspects of the waterfall model.
It allows for incremental releases of the product, or incremental refinement through each iteration around the spiral.



Agile methodology


Agile is software development methodology. It is very effective where Client frequently changes his requirement. Since it has more iteration so you can assure a solution that meets client’s requirement. More than one builds deployment for a project. It involves more client interaction and testing effort.

Key features
  • Collective code ownership and freedom to change.
  • Incremental approach (e.g. user stories are incrementally implemented)
  • Automation (e.g. TDD -- Test Driven Development).
  • Customer focused (for e.g.  internal and external users and business analysts are your immediate customers)
  • Design must be simple. Designing is an ongoing activity with constant re-factoring to achieve the rules of code simplicity like no duplication, verified by automated tests, separation of responsibilities, and minimum number of classes, methods, and lines.  
How do you know that you are using agile development?
You are using an agile practice when
·          You have daily stand-up meetings.
·          You use CRC (Class Responsibilities and Collaborators) cards.
·          You use time boxed task boards.
·          You use TDD (Test Driven Development), Continuous Integration, regular code reviews, pair programming, automated builds, continuous deployment and delivery, etc.
·          You have iteration planning meetings and carry out iterative development.
There are two methods by which this methodology can be
Implemented: -       1- Scrum
    2- Extreme Programming
Scrum: Each iteration would called a scrum which can be a 1-2 Months. In Scrum Client prioritize his requirements what he want first. If developer did not meets the entire requirement which was being fixed for a particular scrum than rest of the development part would be transferred to the next scrum (would be delivered in the next build), means developer can’t increase time decided for a scrum. Its fixed.


Extreme Programming (XP): here iteration period would be less than in scrum, which is being 2-4 weeks. Here developer prioritizes what to do first on the basis of client requirement. This duration which was being fixed for a iteration, can be increase if the some development part is still pending. The build would deploy with having all the client needs. Thus iteration period is not fixed here it can be increase. But iteration should meet the entire client's requirement in this build.

1 comment:

  1. Software Development in Dubai
    https://www.nsreem.com/ourservices/software-development/
    NSREEM develop amazing desktop and web applications that are tailored to your specific requirements.
    NSREEM is #1 in Software Development in Dubai
    1634283206207-9

    ReplyDelete