Software Methodologies

Software development life cycle (SDLC)- The process of developing software with high quality with low cost and time.

Different Methodologies:

Waterfall Method:

This was the first process model to be introduced. It is a simple and easy to use process, which is recommended for smaller projects.

6 Stages to the Waterfall Method: Requirements, Design, Development, Testing, Deployment, Maintenance.

Requirements: The potential consumer requirements of the project are analysed and written down for future reference so that future phases does not require further customer interaction until the application is complete.

Design: There are 2 parts. Logical and physical design subphases. Logical subphase is when possible solutions are brainstormed and the design subpahse is when the ideas are put into concrete specifications.

Development: When programmers bring together the requirements and specifications to create actual code.

Testing: After code is created it is sent out to beta testers to find bugs in the program.

Deployment: When the finished program is sent out to consumers for use.

Maintenance: The need for the creators to continually update the programs to correct flaws and upgrade the system according to consumer needs.

Image result for waterfall methodology

Advantages:

  • Simple and easy to understand and use.
  • Easy to manage.
  • Each phase is completed one at a time, they do not overlap.
  • Works well with smaller projects.
  • Easy to manage due to rigidity of the model.

Disadvantages:

  • Once application is in testing phase, it is very difficult to go back and change something.
  • No working software is produced until late in the cycle.
  • High amounts of risk and uncertainty.
  • Not a good model for large, complex projects.
  • Not good for projects where requirements are likely to change.
  • The client is only involved at the beginning and the end so if they are unclear at the beginning the project could fail.

When to use the Waterfall model:

  • Requirements are very known, clear and fixed.
  • When there are no ambiguous requirements.
  • Ample resources with required expertise are available.
  • Project is short.

Spiral Method:

This method goes through the 4 phases multiple times in an iterative process. Each time is an iteration (or spiral in this case). Heavy emphasis is based on risk assessment in this model.

There are 4 phases to the spiral model: Planning, Risk Analysis, Engineering, Evaluation.

These repeat in an iterative process until final product is made.

Planning: Requirements are collected from consumers and aims are recognized and analysed.

Risk analysis: The identification of risks are carried out and solutions are laid out and the best are picked out. The different risks linked with the chosen solutions are then recognized and resolved. A prototype is then produced after this analysis.

Engineering: Here, the software is developed and tested at the end of the phase

Evaluation: This phase allows the customer to evaluate and give feedback on the prototype before the next iteration of the spiral is carried out.

Spiral model

Advantages:

  • Greatly reduced risk as risk analysis is involved.
  • Good for large, important projects.
  • Strong documentation and approval process.
  • Additional features can be added later.
  • Software is produced early in the cycle.

Disadvantages:

  • Can be an expensive model to use.
  • Risk analysis requires highly specific expertise.
  • Project success is highly dependent on risk analysis phase.
  • Does not work well with smaller projects.

When to use Spiral Model:

  • When costs and risk evaluation is important.
  • For medium to high risk projects.
  • Requirements are complex.
  • Users are unsure of their needs.
  • When it is for a new product line.
  • Significant changes are expected during the cycle.

Agile Model:

This model differs significantly from the other models in the sense that it is able to adapt and change quickly and easily according to change in demand. Like the spiral method, this has multiple iterations but are much shorter in duration of each iteration.

In this method, there are no separate phases, everything is done in one phase.

Agile software development refers to a group of software development methodologies based on iterative development.

Advantages:

  • Customer satisfaction from rapid, continuous delivery of useful software.
  • Customers, developers and testers constantly interact with each other.
  • Working software is more frequently delivered, (Weeks rather than months).
  • Able to regularly adapt to changing circumstances.
  • Even changes late in the process are welcomed.
  • Efficient code/ few bugs.
  • Quality of code is very high.

Disadvantages:

  • In some projects, especially large ones, it is difficult to assess the effort required at the beginning of the cycle.
  • Lack of emphasis on the documentation of the process.
  • Project can easily be taken off track if consumer representatives are not clear.
  • May be difficult for inexperienced programmers to do.
  • Increased development cost.

Extreme Programming:

This is a type of agile model.

There are 5 key values of XP: Simplicity, Communication, Feedback, Respect, Courage.

Simplicity: Work done will only be what is needed and asked for and no more. This maximizes efficiency.

Communication: Everyone involved in the development process will communicate face to face daily. Everything in the cycle is worked on together.

Feedback: Every iteration is delivered as working software. Feedback is taken on board and changes are made accordingly.

Respect: Everybody who has contributed feels respected and valuable.

Courage: Tell the truth about progress and time estimations. Excuses for failure are not documented. Adaptation to changes are made if necessary.

Rapid Application Development:

This is a type of agile model which prioritizes rapid prototype releases and iterations.

There are 5 phases to RAD: Requirement gathering, Prototyping, Gather user feedback, Testing, Deployment.

Requirements: Stakeholders come together to discuss and finalize project requirements such as goals and budget.

Prototyping: Designers work closely with clients to create and improve working prototypes.

User Feedback: Prototypes are converted into working models and user feedback is received to tweak and improve prototypes to create the best possible product.

Testing: In this phase you need to test your product, making sure everything works according the customers expectations. The continuation of incorporating user feedback into the redesign and testing is also taking place.

Deployment: This is where the product is released and shown to the consumers.

Advantages:

  • User feels involved.
  • End product more likely to match requirements.

Disadvantages:

  • Regular contact needed with client.
  • Does not scale well to large projects.
  • Not suitable if efficiency of code is priority.

Leave a comment

Design a site like this with WordPress.com
Get started