Advantages & disadvantages of various SDLC models

Various software development life cycle models are suitable for specific project related conditions which include organization, requirements stability, risks, budget, duration of project. One life cycle model theoretical may suite particular conditions and at the same time other model may also looks fitting into the requirements but one should consider trade-off while deciding which model to choose. Here I am summarizing here advantages and disadvantages of various life cycle models:-

Waterfall

Advantages

  • Simple goal.
  • Simple to understand and use.
  • Clearly defined stages.
  • Well understood milestones.
  • Easy to arrange tasks.
  • Process and results are Well documented.
  • Easy to manage. Each phase has specific deliverable and a review.
  • Works well for projects where requirements are well understood.
  • Works well when quality is more important then cost/schedule.
  • Customers/End users already know about it.

Disadvantages

  • It is difficult to measure progress within stages.
  • Cannot accommodate changing requirements.
  • No working software is produced until late in the life cycle.
  • Risk and uncertainty is high with this process model.
  • Adjusting scope during the life cycle can end a project
  • Not suitable for complex projects
  • Not suitable for projects of long duration because in long running projects requirements are likely to change.
  • Integration is done as a "big-bang” at the very end, which doesn't allow to identify any technological or business bottleneck or challenges early.
  • Users can only judge quality at the end.
  • Attempt to go back 2 or more phases is very costly.
  • Percentage completion of functionality can not be determined in mid of the project because every functionality is undergoing some phase.
  • Very risky, since one process can not start before finishing the other.

Incremental

Advantages

  • Some working functionality can be developed quickly and early in the life cycle.
  • Results are obtained early and periodically.
  • Parallel development can be planned.
  • Progress can be measured.
  • Less costly to change the scope/requirements.
  • Testing and debugging during smaller iteration is easy.
  • Risks are identified and resolved during an iteration; and each iteration is an easily managed milestone.
  • Easier to manage risk - High risk part is done first.
  • With every increment operational product is delivered.
  • Issues, challenges & risks identified from each increment can be utilized/applied to the next increment.

Disadvantages

  • More resources may be required.
  • Although cost of change is lesser but it is not very suitable for changing requirements.
  • More management attention is required.
  • Each phase of an iteration is rigid with no overlaps.
  • System architecture or design issues may arise because not all requirements are gathered. up front for the entire life cycle.
  • Does not allow iterations within an increment.
  • Defining increments may require definition of the complete system.

Evolutionary

Advantages

  • Risk analysis is better.
  • It supports changing requirements.
  • Initial Operating time is less.
  • Better suited for large and mission-critical projects.
  • During life cycle software is produced early which facilitates customer evaluation and feedback.

Disadvantages

  • Not suitable for smaller projects.
  • Management complexity is more.
  • End of project may not be know which is a risk.
  • Can be costly to use.
  • Highly skilled resources are required for risk analysis.
  • Project’s progress is highly dependent upon the risk analysis phase.

Spiral

Advantages

  • Changing requirements can be accommodated.
  • Allows for extensive use of prototypes
  • Requirements can be captured more accurately.
  • Users see the system early.
  • Development can be divided in to smaller parts and more risky parts can be developed earlier which helps better risk management.

Disadvantages

  • Management is more complex.
  • End of project may not be known early.
  • Not suitable for small or low risk projects (expensive for small projects).
  • Process is complex
  • Spiral may go indefinitely.
  • Large number of intermediate stages require excessive documentation.

RAD (Rapid Application Development)

Advantages

  • Time to deliver is less.
  • Changing requirements can be accommodated.
  • Progress can be measured.
  • Cycle time can be short with use of powerful RAD tools.
  • Productivity with fewer people in short time.
  • Use of tools and frameworks.

Disadvantages

  • Management complexity is more.
  • Resource requirements may be more.
  • Suitable for systems that are component based and scalable.
  • Suitable only when requirements are well known.
  • Requires user involvement throughout the life cycle.
  • Suitable for project requiring shorter development times.

Extreme/Agile Development

Advantages

  • Promotes teamwork and cross training.
  • Functionality can be developed rapidly and demonstrated.
  • Resource requirements are minimum.
  • Suitable for fixed or changing requirements
  • Delivers early partial working solutions.
  • Good model for environments that change steadily.
  • Minimal rules, documentation easily employed.
  • Enables concurrent development and delivery within an overall planned context.

Disadvantages

  • Not suitable for handling complex dependencies.
  • More risk of sustainability, maintainability and extensibility.
  • An overall plan, an agile leader and agile PM practice is a must without which it will not work.
  • Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.

0 comments:

Post a Comment