Tuesday, June 20, 2006

Software Development Lifecycle Processes

Software Engineering Series Part 2

Some Useful links

SDLC Process
  • Defines specific approach to producing software
  • Defines the order of stages involved in software development
  • Establishes the entry and exit criteria during stage transition
  • It also provides guidance and suggestions regarding the ordering of the major phases of the development cycle and the deliverables that need to come out during each phase
  • It provides the bases for WBS and suggests the standards needed by the project.
SDLC Process selection criteria
  • Organizational culture (Is quality or cost the driver)
  • Nature of the software
  • Maturity of the technology being used
  • Familiarity with the application and technology
  • Any predetermined methodologies
  • Project constraints such as resources or timescale
Types of SDLC models
  • Waterfall model
  • Incremental model
  • Evolutionary model (Prototyping model, Spiral model)
  • Prototyping model
Waterfall model
  • Originally coined by WW Royce
  • The development process is represented by a set of phases which must be executed sequentially.
  • Delivery of te complete system occues at end with a single milestone.
  • Generally the model says that the next phase is executed only when the current phase is completed entirely. It does not allow for going back, however, some modifications to this model allow iterations between phases for error correction.
Advantages of Waterfall model
  • Simple, structured, disciplined model and hence easy to work with
  • Because the model emphasises on completing the current phase entirely before moving on to the next, any errors are caught right at the beginning and hence is generally cheaper to fix, as opposed to finding issues with earlier stages at later phases. For example, if any design issue is present, it should be caught right at the design phase itself. This is also sometimes called as BDUF - Big Design Up Front approach. This approach is very suitable for stable shrink-wrap kind of software where the requirements are know at the beginning.
  • Generally Waterfall model lays a lot of emphasis on documentation of a particular phase before transitioning to the next step. This is a big plus in cases of large employee turnover.
  • Generally, the projects should be completed at a faster rate when compared to other models. However, the staff profile needed will be more.
Problems with Waterfall model

  • The fact that a phase needs to be completed entirely causes a problem for the Specification Phase. Very rarely are the requirements so clearly spelt out right at the onset. To top that this model does not scale for any changes in requirements.
  • Practically it is very difficult to complete a phase entirely at one go. Most of the times, a phase needs to be revisted if not for anything else but corrections.
  • Project control becomes difficult because of the lack of feedback in a pure Waterfall model. Also it does not lend well for risk management.
  • Customers cannot get any iterations and cant see a working copy till the end.
Incremental model

  • Improvement over Waterfall model to cater to multiple phases of release and changing requirements.
  • Has an Initial Phase and then has iterations till final version. Each phase is a mini-waterfall process. Implementation of software is released as a series of planned successive versions.
  • Each delivered version is itself usable and later versions build up on the functionality and probably quality.
Advantages of Incremental model

  • Intermediate releases more helpful to user than the final monolithic release in waterfall model. Also user feedback can improve quality of subsequent releases.
  • Testing process is easier because the release is staggered
  • Because of multiple releases, the SDLC is more manageable.
  • Budgeting, resource allocation etc can also be staggered.
  • Easier to deal with in terms of risks
Problems with Incremental model
  • Development costs are likely to be higher because of the iterations, however maintenance and enhancements costs are likely to be lower.
  • Subsequent releases pose a risk of regression. This may further increase the cost
Evolutionary model
  • Planned development of multiple releases; State and expectation of the release itself is not very concrete
  • All phases are performed in each release, the release then analysed; and building on the understanding gained; another version is planned.
Advantages of Evolutionary model
  • Very useful when requirements are not clear at the beginning
  • Very useful when technology is not mature or understood
Problems with Evolutionary model
  • Because the requirements are not clear and the approach is more of trial and error in nature, may turn out to be expensive
  • Initial software may not be used directly for building later releases as they may be unstable. If such software is really used, then temporary solutions may be embedded in the system and may distort the evolution.
  • Very difficult to form contractual arrangements based on this model.
  • Users may become impatient with the half-baked releases.
Prototype model
  • Prototypes are used in the model to test the feasibility of an idea or a product before more concrete plans are made.
  • Prototypes could be used a tool to fine-tune the requirements.
  • Prototypes themselves may or may not be used in the actual software construction. If the prototype is not used, it is called Throwaway Prototype model.
Advantages of Prototype model
  • Greatly reduces risk
  • A great way to understand user requirements and hence can lead to better quality products
  • Some times the only choice when dealing with technical design issues
  • Can reduce development costs and increase chances of success.
Problems with Prototype model
  • If prototypes are reused in the development, there is an excuse for uncontrolled development
  • Sometimes throwaway prototypes may increase costs
  • If prototypes become the end product, quality could be very poor. In anycase, the risk is always there as the customer does see a working model and may be tempted to use it.
Spiral model
  • A mixture of prototype and evolutionary models with a very thick emphasis on risk analysis.
  • The radial dimension signifies the cost.
    The angular dimension or the four quadrants of the spiral signify the progress made.
  • Typically has four phases which get iterated over and over starting from the base spiral inching up with improvements in each spiral.
  • The four phases or quadrants of the spiral are (1) Determine objectives, alternatives and constraints (2) Evaluate alternatives, Resolve Risks, Prototype etc (3) Develop which may involve a complete waterfall (4) Plan for the next iteration
Advantages of Spiral model
  • High amount of risk analysis
  • Good for mission critical projects
Problems of Spiral model
  • Can be costly
  • Doesnt work well for smaller projects

0 Comments:

Post a Comment

<< Home