Showing posts with label Software Development Models. Show all posts
Showing posts with label Software Development Models. Show all posts

Sunday, May 17, 2009

Spiral Model

The spiral model is similar to the incremental model, with more emphases placed on risk analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation. A software project repeatedly passes through these phases in iterations (called Spirals in this model). The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed. Each subsequent spirals builds on the baseline spiral.


Requirements are gathered during the planning phase. In the risk analysis phase, a process is undertaken to identify risk and alternate solutions. A prototype is produced at the end of the risk analysis phase.

Software is produced in the engineering phase, along with testing at the end of the phase. The evaluation phase allows the customer to evaluate the output of the project to date before the project continues to the next spiral.

In the spiral model, the angular component represents progress, and the radius of the spiral represents cost.


Advantages

* High amount of risk analysis
* Good for large and mission-critical projects.
* Software is produced early in the software life cycle.

Disadvantages

* Can be a costly model to use.
* Risk analysis requires highly specific expertise.
* Project’s success is highly dependent on the risk analysis phase.
* Doesn’t work well for smaller projects.

Waterfall Model

History
The "waterfall model", documented in 1970 by Royce was the first publicly documented life cycle model. The model was developed to help cope with the increasing complexity of aerospace products. The waterfall model followed a documentation driven paradigm.

This is the most common and classic of life cycle models, also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed in its entirety before the next phase can begin. At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project. Unlike what I mentioned in the general model, phases do not overlap in a waterfall model.

Here these following phases are followed in order:

1. Requirements specification
2. Design
3. Construction (AKA implementation or coding)
4. Integration
5. Testing and debugging (AKA Validation)
6. Installation
7. Maintenance

Advantages

* Simple and easy to use.
* Easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.
* Phases are processed and completed one at a time.
* Works well for smaller projects where requirements are very well understood.

Disadvantages
The waterfall model however is argued by many to be a bad idea in practice, mainly because of their belief that it is impossible to get one phase of a software product's lifecycle "perfected" before moving on to the next phases and learning from them (or, at least, the belief that this is impossible for any non-trivial program). For example, clients may not be aware of exactly what requirements they want before they see a working prototype and can comment upon it; they may change their requirements constantly, and program designers and implementers may have little control over this. If clients change their requirements after a design is finished, that design must be modified to accommodate the new requirements, invalidating quite a good deal of effort if overly large amounts of time have been invested into "Big Design Up Front". (Thus, methods opposed to the naive waterfall model--such as those used in Agile software development--advocate less reliance on a fixed, static requirements document or design document). Designers may not (or, more likely, cannot) be aware of future implementation difficulties when writing a design for an unimplemented software product. That is, it may become clear in the implementation phase that a particular area of program functionality is extraordinarily difficult to implement. If this is the case, it is better to revise the design than to persist in using a design that was made based on faulty predictions and that does not account for the newly discovered problem areas.
* Adjusting scope during the life cycle can kill a project
* No working software is produced until late during the life cycle.
* High amounts of risk and uncertainty.
* Poor model for complex and object-oriented projects.
* Poor model for long and ongoing projects.
* Poor model where requirements are at a moderate to high risk of changing.

Software Development Life Cycle

Software development life cycle (SDLC) is a process to develop the software systematically. SDLC is also known as software life cycle and software process. SDLC have the following stages:
1) Information Gathering
In this phase, information is gathered from the customer. If some information is missing then we need to go to customer and take the required information. Mainly this is done by the Business Analyst as they are the one who are completely involved in Software Development life Cycle.
The Document Prepared during this phase is: Business Requirement Specification (BRS) or Customer Required Specification (CRS) Or User Requirement Specification (URS).
Entry Criteria: BRS OR CRS or URS.
2) Analysis Phase
In this stage the project architect team determines the features and the functions that need to be developed in the project.
Entry Criteria: BRS (Business Requirement Document)
Exit Criteria: SRS (Software Requirement Specification)

3) Design Phase
The actually flow of the project is designed here. System architects, team leads prepares the logical functionality, ER diagram, Data Flow etc. Document prepared during this phase are HLD, LLD
HLD (High Level Design): Gives the overall Hierarchy of the function.
Example: Login into Net Banking. From the root level to the least level is determined in HLD.
LLD (Low Level Design): Internal logic of the project is architect here. Focus is on the internal functionality of the program. Each and every module’s logic is defined.
Entry Criteria: SRS
Exit Criteria: Design Document.
Coding
The coding stage is a widely followed step in software development. Here the design is reduced to code for better understandability. Based on the design document, small-small modules are prepared. All the modules are summed together to form an application.

Testing
The coding stage is followed by the testing phase. This is one of the most important stages of any software development life cycle where extensive testing is done to ensure that coding done by different software developers work together in harmony and adhering to the agreed quality with the client.
Release and Maintantence
In this phase the malignance team will change the software if necessary based on customer end issues.
The are different types of Software Development Life Cycle (SDLC) models existing such as:
• RAD Model
• The General Model
• Spiral Model
• Incremental Model
• V-Shaped Model
• Waterfall Model