Friday, March 9, 2012

Software Development Life Cycle (SDLC)


What is SDLC ?
Software Development Life Cycle or SDLC is a model of a detailed plan on how to create, develop, implement and eventually fold the software. It’s a complete plan outlining how the software will be born, raised and eventually be retired from its function. Although some of the models don’t explicitly say how the program will be folded, it’s already common knowledge that software will eventually have it’s ending in a never ending world of change web, software and programming technology.

Various SDLC Models

1. Water Fall Model
2. Spiral Model/Iterative Model
3. V-Model
4. Proto type model (application developed without functionality)
5. RAD model (Rapid application development) that means every company has its own model.

1. WATERFALL MODEL:

A Software project is made up of series of phases. Broadly, most software projects comprise the following Phases.

  •  Requirements gathering
  •  Requirement Analysis
  •  Design
  •  Coding
  •  Testing
  •  Implementation
  •  Maintenance


Requirements gathering:
The main objective of this task is to negotiate with the customer on different approaches, identify the requirement of the customer, recommended essentials of the solution to the customer, and specify a preliminary set of solutions to requirements.

Requirement Analysis:
The main objective of the Requirements analysis is analysing all the gathered requirements and ensure that they are correct, complete, reasonable, achievable and testble. The primary Output of this phase is BRD, SRS and FS.

Design:
The design produces a representation that will be used by the Development phase. Based on requirements it should give sufficient information for the development phase to precede with the coding and implementation of the system. It acts as blueprint for the actual coding to proceed.
Design is usually split into two levels - - HLD (High Level Design) and LLD (Low Level Design)
HLD+LLD=CDD (Comprehensive Design Document)

Coding:
Coding is done based on design documents. This comprises of coding the programs in the chosen programming language.

Testing:
Testing is a process of evaluating the software product in predefined ways to check if the behavior is same as expected behavior. By testing the product, an organization identifies and removes as many defects as possible before shipping it out.

Implementation:
Once the product is tested, it is given to customers who deploy it in their environments. As the users start using the product in their environments.

Maintenance: 
If the user observe any discrepancies between the actual behavior of the product and what they expect, such discrepancies could end up as product defects, which are to be corrected. The product is maintained to satisfy the changes that arise from customer expectations during this phase.


This is most common and classic of Life Cycle Model, also called as Linear-Sequential Life Cycle Model. In this each phase must be completed entirely before entering into next phase. A Project starts with an initial phase upon completion of the phase moves to the next phase. Thus it strictly time sequenced.

At the end of each phase, a review takes place to determine the project is on the right path and whether or not to continue or discard the project.


Advantages:

1.Simple and ease to use.
2.For each phase has specific deliverable and a review process
3.Phases are processed and completed one at a time.
4.Works well for smaller projects where requirements are very well understood.

Disadvantages:

1.Time Consuming.
2.Poor Model for long and ongoing projects.
3.High amount of Risk and uncertainty.
4.Bugs are carrying forward.


2. SPIRAL MODEL/ITERATIVE MODEL:

Barry Boehm developed this model in 1988. It provides the potential for rapid development of incremental versions of the software. In the spiral model, the software is developed in a series of incremental releases. During early iterations, the incremental release might be a paper model or prototype. Each iteration consists of:


  • Customer communication 
  • Planning 
  • Risk Analysis 
  • Engineering 
  • Implementation
  • Release and customer Evaluation 


Diagram:


Customer Communication: This task is required to establish effective communication between the project team and customer, at the end of this task, the project team gathers requirements frond the customer. The person responsible for this task is usually the business analyst (BA)

Planning: This task defines resources, timeliness, and other project related information, with respect to all gathered requirements. The person responsible for this task is the senior system analyst.

Risk Analysis: Risk analyses assess both technical and management risks involved in the implementation of the gathered requirements.

Engineering: This task is required to build one or more representatives of the application
in terms of high-level and low –level design issues.

Construction and Release: This is required to construct, test, install and provide user
support (e.g. documentation and training).

Customer Evaluation: This task is required to obtain customer feedback based on
evaluation of the software representations created during the engineering stage and
 implemented during the installation stage.  

3. V-Model

Is acronym of software Development life Cycle Consists of 6-phases (The no of phases differs from company to company) they are.
1) Requirement and Analysis.
2) Design.
3) Development/Coding.
4) Testing.
5) System Testing
        6) User Acceptance
Introduction:- 
The V-model was originally developed from the waterfall software process model.
The V-model is one of the SDLC methodologies, in this methodology Development, Design and Testing take place at the same time (parallel).
The V-model is also known as Verification and Validation Model.

Diagram:




Looking in to the Figure we come across two very important words.
Verification.
 Validation.
Verification: - It is process of checking or examining the Documents.
It is Static testing.
Validation: - It is the process of verifying or checking the product.
It is Dynamic Testing. And hence this model is known as Verification and Validation Model.

Process Involved in V-model: -

Requirements: In Requirements phase, in which the requirements for the software are gathered and analyzed, to produce a complete and unambiguous specification of what the software is required to do.

Architectural Design: In Architectural Design phase, where software architecture for the implementation of the requirements is designed and specified, identifying the components within the software and the relationships between the components.

HLD(High Level Design): It refers to the functionality to be achieved to meet the client requirement. Precisely speaking it is a diagrammatic representation of client’s operational systems, staging areas, also how and what frequency the data is extracted and loaded into the target database.

LLD(Low Level Design): It is prepared for every mapping along with unit test plan. It contains the names of source definitions, target definitions, transformations used, column names, data types, business logic written and source to target field matrix, session name, mapping name.

Unit Testing: In computer programming, unit testing is a method of testing that verifies the individual units of soruce code are working properly. A unit is the smallest testable part of an application.Unit testing is typically done software developers by to ensure that the code they have written meets software requirements and behaves as the developer intended.

Integration testing: (sometimes called Integration and Testing, abbreviated I&T) is the phase of software testing in which individual software modules are combined and tested as a group. It follows unit testing and precedess ystem testing.

Integration testing takes as its input modules that have unit been tested, groups them in larger aggregates, applies tests defined in an integration test plan to those aggregates, and delivers as its output the integrated system ready for system testing.

System testing: System testing of software or hardware is testing conducted on a complete, integrated system to evaluate the system's compliance with its specified requirements. System testing falls within the scope black box testing of, and as such, should require no knowledge of the inner design of the code or logic.

As a rule, system testing takes, as its input, all of the "integrated" software components that have successfully passed integration testing and also the software system itself integrated with any applicable hardware system(s). The purpose of integration testing is to detect any inconsistencies between the software units that are integrated together (called assemblages) or between any of the assemblages and the hardware. System testing is a more limiting type of testing; it seeks to detect defects both within the "inter-assemblages" and also within the system as a whole.

User Acceptance Testing: User Acceptance Testing is often the final step before rolling out the application. Usually the end users who will be using the applications test the application before ‘accepting’ the application. This type of testing gives the end users the confidence that the application being delivered to them meets their requirements.

Advantages

  • 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 small projects where requirements are easily understood.


Disadvantages

  • Very rigid, 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.



No comments:

Post a Comment

If any suggestions or issue, please provide