According to the book called 'Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing', there are basically three processes for software engineering (the book explains those using the word 'lifecycle'):
- Waterfall lifecycle
- Spiral lifecycle
- Agile lifecycle
As a student who is willing to be a professional in this field, I thought it is very important that I aware of the fact that there are different kinds of software engineering processes and consciously make use of those with an appropriate manner. So, I would like to write and briefly summarize here what I learned about the each approach of software engineering from the book as my notes.
1. Waterfall lifecycle
The main characteristic of the waterfall lifecycle is that people start out with the process of very focused designing before they start coding so that they try to prevent any difference or contradiction from occurrence.
The drawback of this lifecycle, however, is that because it focuses on designing and attempting to prevent any errors and bugs, it typically takes 6 and 18 months to eventually release the product.
The Waterfall model can work well with well-defined tasks like NASA space flights, but it runs into trouble when customers are unclear on what they want. - Patterson, David; Fox, Armando (2012-07-11)
2. Spiral lifecycle
Spiral lifecycle, which is somewhat similar to waterfall lifecycle, is basically consisted of four phases:
- Determine objectives and constraints of this iteration
- Evaluate alternatives and identify and resolve risks
- Develop and verify the prototype for this iteration
- Plan the next iteration
The spiral lifecycle goes those four phases over and over to refine the product until it reaches a 'satisfied' level.
The Spiral lifecycle combines Waterfall with prototyping. It starts at the center, with each iteration around the spiral going through the four phases and resulting in a revised prototype until the product is ready for release. - Patterson, David; Fox, Armando (2012-07-11)
3. Agile lifecycle
Finally, agile lifecycle - The main difference of this and other two approaches of development is that this Agile lifecycle focuses on continual changing by interacting with its customers to refine and finalize the product while also checking if the product is becoming what their customer has been waiting for.
Regarding software lifetimes, the Agile software lifecycle is so quick that new versions are available every two weeks, so they are not even special events as in the Waterfall or Spiral models. - Patterson, David; Fox, Armando (2012-07-11)
Agile lifecycle was introduced in 2001, and it was kind of a reformation of software engineering process since people could realize in an instance that this way of developing software is the most efficient and 'accurate' way to create something that people are willing to obtain.
It was interesting to see how each process of software development differs to the others, and how Agile lifecycle penetrates to most of the software development projects nowadays.