On 30,000 foot level they are typically two models which philosophically differentiate they are as follows-
1. Water Fall Model
2. Iterative Development - You can group (Agile Development, Xtreme Programming, Test Driven Development, Scrum) which are just variations of iterative development into this. We will provide the subtle differences in thew process as we move into those areas.
1.Water Fall Model
This is a model which teaches up front design. You are required to complete each phase before moving onto the next phase. Basic Phases of this model are as follows-
a. Requirements specification
You will have to do a detailed Requirements analysis like creating Vision and Scope Document, Use Case Document and Software Requirements Specification Document.
I have an entire blog which talks about RA process.
b. Design Phase
You will have an
- Application Diagram (Diagramming each substem components like Windows DLL/WebService/Web Application),
- Logical Data center Diagram(This goes into how the application components are going to be deployed).
- Class Diagram (Create Visual Studio Solution, Create Sub Projects, Create Classes, Create tiers like Business Layer, Data Layer etc)
- Database Design Document, Stored Procedures
- Create a Task List of all activities
- Assign the task list to team members with the schedule of completion.
- Unit Tests have to be created and Development has to begin.
d. Testing and debugging (AKA validation)
- start the usability testing.
- Smoke and mirrors testing
- Istallation requirements document will have to be created and sent to the installation team.
- Installation program will be created incase of a shrink wrapped application.
- If not the IT will have to follow the installation document and install the solution.
- Bug determined after release are fixed in this phase.
- Additional requirements ofter overlooked are taken care here.
- Works best for small projects.
- Each Phase you have set of of deliverables which have to produced.
- Excessively wastage of time in the Requirements Analysis Phase and Design Phase. 1/3rd of the project is done before we move out of this phase.
- Changes might kill this project
2. Iterative Development
Iterative development is basically Waterfall model with faster cycles. You attack a problem in a piecemeal manner.
You have 4-6 week cycles you run through the cycles very fast. Then outcome is a production level code in the end of 6 weeks.
Xtreme Programming has the concept of Pair Programming which is great for medium sized development teams. For Small teams 3-6 it is better to have the Lead Engineer as the dedicated Pair Programmer,
Test Driven Development- Is a subset of XP with unit tests written before development.
SCRUM- Underlying concept is cycles- Teams are split into - 30 day cycle, Sub divided into 7day cycle and further divided into 1 day cycle.
Entire Team meets every 30 days and comes up with things to do for that month. Sub groups meet every week and comes up with things to do for that week. This extends to the day.