Showing posts with label Software Engineering. Show all posts
Showing posts with label Software Engineering. Show all posts

Tuesday, October 12, 2010

Features of WATERFALL MODEL

The Waterfall Model
—  is the root of all other models
—  still prevalent in general
—  exists in many versions
—  supported by many methods/techniques

Waterfall Model for Development
—  Here, steps (phases) are arranged in linear order
—  A step take inputs from previous step, gives output to next step (if any)
—  Exit criteria of a step must match with entry criteria of the succeeding step
—  It follows ‘specify, design, build’ sequence that is intuitively obvious and appears natural
  
5 Phases
1.   Analysis
2.   Design
3.   Implementation
4.   Testing
5.   Deployment / Operation

Analysis Phase:
—  Decide what the project is suppose to do, what the goal of the final product is
—  Do NOT think about how the program will accomplish tasks
—  Output of this phase - requirements document
—  Describes what program will do once completed
—  Example –
—  User manual: tells how user will operate program
—  Performance criteria (will complete X tasks in Y time)

Design:
—  Plan for implementation
—  Decide what structures will best suit your task
—  In object oriented programming, this is choosing the classes and methods to use (and create)
—  Output: Classes and methods description
—  Usually diagramed using UML, can use CRC cards

Implementation:
—  Actual coding part of the process
—  Edit à Compile à Run
—  Output: Completed program

Testing:
—  Run tests to verify the program works correctly
—  Remember the two main types of testing
—  Unit Testing
—  System Testing

—  Output: a report of the tests and their results

 Deployment:
—  AKA Operation, Maintenance
—  Users install program
—  Users use program for its intended purpose
—  Bug fixes
—  New features

Advantages of a Waterfall Model:

—  A waterfall model helps find problems earlier on which can cost a business less than if it was found later on.
—  Requirements will be set and these wouldn't be changed.
—   As everything is documented a new team member can easily understand what's to be done.
—  Implementers have to follow the design accurately
—  Highly disciplined process of documentation.
—  Easily observable development progress.
—  Easy to create budget


Disadvantages of a Waterfall Model:

—  If requirements may change the Waterfall model may not work.
—  Many believe it is impossible to make one stage of the projects life cycle perfect.
—  Difficult to estimate time and cost for each stage of the development process.
—  Constant testing of the design is needed.
—  Document centric; can be difficult for customer to understand.
—  Not user centered.
—  Makes assumptions about requirements that are inflexible.