S.
Asha
             CSE Department
National Institute of Technology Rourkela
Software Life Cycle
                 Conceptualize
       Retire                    Specify
                                      Design
   Maintain
       Deliver                      Code
                       Test
  Life Cycle Model
A software life cycle model (also process model or
 SDLC):
  A descriptive and diagrammatic model of software life cycle:
  Identifies all the activities undertaken during product
   development,
  Establishes a precedence ordering among the different
   activities,
  Divides life cycle into phases.
Life Cycle Model                 (CONT.)
Each life cycle phase consists of several activities.
  For example, the design stage might consist of:
     structured analysis
     structured design
     Design review
  Why Model Life Cycle?
A graphical and written description:
  Helps common understanding of activities among the
   software developers.
  Helps to identify inconsistencies, redundancies, and
   omissions in the development process.
  Helps in tailoring a process model for specific projects.
Life Cycle Model          (CONT.)
The development team must identify a suitable life
 cycle model:
    and then adhere to it.
  Primary advantage of adhering to a life cycle
   model:
       Helps development of software in a systematic
        and disciplined manner.
      Life Cycle Model                    (CONT.)
 When a program is developed by a single programmer ---
   The problem is within the grasp of an individual.
   He has the freedom to decide his exact steps and still succeed ---
    called Exploratory model--- One can use it in many ways
   CodeTest Design
   CodeDesign Test  Change Code 
   Specify code Design Test  etc.                            Fix
                                                        Initial
                                                        Coding
                                                                  Test
                                                                         Do Until
                                                                          Done
 Life Cycle Model         (CONT.)
When software is being developed by a team:
  There must be a precise understanding among
   team members as to when to do what,
  Otherwise, it would lead to chaos and project
   failure.
 Life Cycle Model               (CONT.)
A software project will never succeed if:
  one engineer starts writing code,
  another concentrates on writing the test document first,
  yet another engineer first defines the file structure
  another defines the I/O for his portion first.
 Phase Entry and Exit Criteria
A life cycle model:
  defines entry and exit criteria for every
   phase.
  A phase is considered to be complete:
    only when all its exit criteria are satisfied.
  Life Cycle Model                 (CONT.)
 What is the phase exit criteria for the software
  requirements specification phase?
  Software Requirements Specification (SRS) document is
   complete, reviewed, and approved by the customer.
 A phase can start:
  Only if its phase-entry criteria have been satisfied.
  Life Cycle Model: Milestones
Milestones help software project
 managers:
 Track the progress of the project.
 Phase entry and exit are
  important milestones.
Life Cycle and Project Management
When a life cycle model is followed:
 The project manager can at any time
  fairly accurately tell,
   At which stage (e.g., design, code,
    test, etc.) the project is.
Project Management Without Life Cycle Model
 It becomes very difficult to track the progress of the project.
    The project manager would have to depend on the guesses of the
     team members.
 This usually leads to a problem:
    known as the 99% complete syndrome.
Project Deliverables: Myth and Reality
Myth:
The only deliverable for a successful project is the working
  program.
Reality:
Documentation of all aspects of software development
  are needed to help in operation and maintenance.
Many life cycle models have been proposed.
We confine our attention to only a few commonly
 used models.
   Waterfall
   Iterative waterfall model       Life Cycle Model
                                    (CONT.)
   V model
   Prototyping model
   Incremental development model        Traditional models
   Evolutionary
   Rapid Application Development
   Agile models
   Spiral model
 Software life cycle (or software process):
  Series of identifiable stages that a software product
   undergoes during its life time:
     Feasibility study
     Requirements analysis and specification,
     Design,
     Coding,
     Testing
     Maintenance.