Wednesday, August 28, 2013

SDLC Models

SDLC Models are classified into 2 types:
1. Sequential Models - Waterfall Model, V Model
2. Iterative/Incremental Models - RAD(Rapid Action Development), Prototype, Agile, Spiral

  • Waterfall: a linear framework
  • Spiral: a combined linear-iterative framework with main factor as RISK
  • Incremental: a combined linear-iterative framework or V Model
  • Prototyping: an iterative framework
  • Rapid application development (RAD): an iterative framework

Waterfall Model

Description
The waterfall Model is a linear sequential flow. In which progress is seen as flowing steadily downwards (like a waterfall) through the phases of software implementation. This means that any phase in the development process begins only if the previous phase is complete. The waterfall approach does not define the process to go back to the previous phase to handle changes in requirement. The waterfall approach is the earliest approach that was used for software development.

The usage
Projects did not focus on changing requirements, for example, responses for request for proposals (RFPs)
Advantages and Disadvantages
Advantages Disadvantages
· Easy to explain to the user· Structures approach.· Stages and activities are well defined· Helps to plan and schedule the project · Verification at each stage ensures early detection of errors / misunderstanding
· Each phase has specific deliverables
· Assumes that the requirements of a system can be frozen· Very difficult to go back to any stage after it finished.· Little flexibility and adjusting scope is difficult and expensive.· Costly and required more time, in addition to detailed plan


V-Shaped Model

Description
It is an extension for waterfall model, Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. The major difference between v-shaped model and waterfall model is the early test planning in v-shaped model.

The usage
· Software requirements clearly defined and known
· Software development technologies and tools is well known
Advantages and Disadvantages
Advantages Disadvantages
· Simple and easy to use.· Each phase has specific deliverables.· Higher chance of success over the waterfall model due to the development of test plans early on during the life cycle.· Works well for where requirements are easily understood. · Very inflexible, like the waterfall model.· Little flexibility and adjusting scope is difficult and expensive.· Software is developed during the implementation phase, so no early prototypes of the software are produced.· Model doesn’t provide a clear path for problems found during testing phases. · Costly and required more time, in addition to detailed plan

Evolutionary Prototyping Model

Description
It refers to the activity of creating prototypes of software applications, for example, incomplete versions of the software program being developed. It is an activity that can occur in software development. It used to visualize some component of the software to limit the gap of misunderstanding the customer requirements by the development team. This also will reduce the iterations may occur in waterfall approach and hard to be implemented due to inflexibility of the waterfall approach. So, when the final prototype is developed, the requirement is considered to be frozen.

The usage
· This process can be used with any software developing life cycle model. While this shall be focused with systems needs more user interactions. So, the system do not have user interactions, such as, system does some calculations shall not have prototypes.
Advantages and Disadvantages
Advantages Disadvantages
· Reduced time and costs, but this can be disadvantage if the developer lose time in developing the prototypes· Improved and increased user involvement · Insufficient analysis· User confusion of prototype and finished system· Developer misunderstanding of user objectives· Excessive development time of the prototype · Expense of implementing prototyping


RAD

 RAD (rapid application development) is a concept that products can be developed
faster and of higher quality through:
• Gathering requirements using workshops or focus groups
• Prototyping and early, reiterative user testing of designs
• The re-use of software components
• A rigidly paced schedule that defers design improvements to the next product
version
• Less formality in reviews and other team communication

RAD is a methodology for compressing the analysis, design, build, and test phases
into a series of short, iterative development cycles. This has a number of distinct
advantages over the traditional sequential development model.


Spiral Model


The spiral model, also known as the spiral lifecycle model, is a systems development
method (SDM) used in information technology (IT). This model of development
combines the features of the prototyping model and the waterfall model. The spiral
model is intended for large, expensive, and complicated projects.





The basic principles are:
  • Focus is on risk assessment and on minimizing project risk by breaking a project into smaller segments and providing more ease-of-change during the development process, as well as providing the opportunity to evaluate risks and weigh consideration of project continuation throughout the life cycle.
  • "Each cycle involves a progression through the same sequence of steps, for each part of the product and for each of its levels of elaboration, from an overall concept-of-operation document down to the coding of each individual program."
  • Each trip around the spiral traverses four basic quadrants: (1) determine objectives, alternatives, and constraints of the iteration; (2) evaluate alternatives; Identify and resolve risks; (3) develop and verify deliverables from the iteration; and (4) plan the next iteration.
  • Begin each cycle with an identification of stakeholders and their win conditions, and end each cycle with review and commitment.

Agile Model

Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen interactions throughout the development cycle.

Difference Between Validation and Verification

Verification: Are we building the product right.
It means cross checking with the Test cases written
Validation: Are we building the right product.
It cross checks with the user requirements.


VERerification: assuring, that requirements were built right
VALidation: assuring that requirements (i.e. the system built) satify user needs 


Let us take the example of a car manufacturing which is easier to explain and understand
Imagine a car company wants to make a new car with some features and specifications. They do not manufacture all the components themselves. They sub-contract some. For example the tires. The company designs the car and gives out the specifications of various components to the subcontracting units of the same company or another company. The tire company received the specifications and made the tire. They tested the tire against the specifications they received. This is verification. The success of the verification does not mean the tire is useful. The car company once it receives the product (tire) uses the tire with the car and does the testing. This is validation. This ensures the product "The tire" is really useful.
If there is a small problem in the specifications given to the tire company, there will be problem in the final usage and the product will be useless, though legally the tire company did the right thing of making the product, as per the specification given to them. The product is made good but is not useful. It is more important to do the validation for new products as "Qualification tests" which will not only qualify the final product but also validate the specifications of the sub-components. Once qualified, then for subsequent production, a simple verification will be good enough.
Verification is a phase-wise defect containment technique. Validation will be a failure if the verification is failure, but the other way may not be true. i.e. Validation may not be successful in spite of a successful verification for a new product or development project.
Hope this can clear the doubts of any new employee  


No comments:

Post a Comment