Software Stages/Life Cycles

Terms:

·         Life Cycle   (Software Life Cycle) - The phases a software product goes through between when it is conceived and when it is no longer available for use. The software life-cycle typically includes the following: requirements analysis, design, construction, testing (validation), installation, operation, maintenance, and retirement.       (FOLDOC)

·         Process - The sequence of activities, people, and systems involved in carrying out some business or achieving some desired result.  E.g. software development process, project management process, configuration management process. (FOLDOC)

·         Prototype – A partially developed product that enables customers and developers to examine some aspect of the proposed system and decide if it is suitable or appropriate for the finished product. (Pfleeger, 51)

·         Validation – Ensures that the system has implemented all of the requirements.  Makes sure the developer is building the right product (according to the specification). (Pfleeger, 51)

·         Verification – Ensures that each item of functionality works correctly. Checks the quality of the implementation. (Pfleeger, 51)

·         Cycle Time  - The time the requirements documents are written till the system is delivered.

           

  1. Waterfall Model - A software life-cycle or product life-cycle model, described by W. W. Royce in 1970, in which development is supposed to proceed linearly through the phases of requirements analysis, design, implementation, testing (validation), integration and maintenance. (FOLDOC)
    1. Stages

 

    1. One state should be complete before the next begins. It is a linear model.  (Ghezzi, 407),(Pfleeger, 49)
    2. DOD used this model for years.
    3. Most other models are just a modification of the waterfall.
    4. Problems

                                                              i.      Does not reflect the iterative reality of software development. (Pfleeger, 50)

                                                            ii.      Does not provide guidance to managers and developers on how to handle changes to products and activities that are likely to occur during development. (Pfleeger, 50

                                                          iii.      Failure to treat software as a problem-solving process. (Pfleeger, 50)

                                                          iv.      Difficult to estimate resources accurately.  Typically forces estimates to be made after a limited amount of analysis has been preformed. (Ghezzi, 408)

                                                            v.      It is difficult for the user to anticipate whether the final system that will be constructed according to the specifications will eventually meet his or her needs. (Ghezzi, 408)

                                                          vi.      The user may not be able to have a clear picture of the requirements. (Ghezzi, 408)

                                                        vii.      Does not stress the importance of anticipating change. (Ghezzi, 408)

                                                      viii.      It is a document driven process that leads to bureaucratic style of work. (Ghezzi, 409)

 

 

  1. V Model         

    1. http://www.informatik.uni-bremen.de/uniform/gdpa/vmodel/vm.htm
    2. Reflects the rework process of software development

 

  1. Exploratory Programming
    1. Developing a working system ASAP.  Then modify it until it performs in an adequate way.
    2. Typical college student project method
    3. Good for situations where it is difficult to impossible to develop detailed requirements
    4. Used for the development of AI systems where we don’t understand how humans carry out tasks.
    5. No specification to validate and verify

 

  1. Prototyping Model
    1. Has multiple meanings.

                                                              i.      Some throw prototype away

                                                            ii.      The following does not

 


  1. Phased Development
    1. Incremental Development – The system is divided into subsystems by functionality; during each release a small number of “complete subsystems” are added to the system.
    2. Iterative Development – Delivers a “full system” from the beginning then adds functionality/quality to each subsystem during each release.

                                                              i.      Makes change easier/possible

                                                            ii.      Makes project management difficult (check points move)

  1. Spiral Model - A software life-cycle model which supposes incremental development, using the waterfall model for each step, with the aim of managing risk. In the spiral model, developers define and implement features in order of decreasing priority. (FOLDOC)

 

Sources:

Pfleeger, Shari.  Software Engineering, Theory and Practice ed. 2.  Prentice Hall 2001 

Pfleeger's Power Point Slides See chapter 2.

FOLDOC, Free Online Dictionary of Computing, http://foldoc.doc.ic.ac.uk/foldoc/index.html