Software development model or software development lifecycle (SDLC) model would be the same.
Under some definitions, a software development lifecycle (SDLC) model may use one or many development models.
This post features some software development models.
Software development models can be complemented with the more general process improvement frameworks, featured on this post.
List of Software Development Models
The main software development models are:
- Plan-Driven
- Waterfall
- V model
- Iterative
- Incremental
- Unified Process
- Rapid Application Development (RAD)
- Evolutionary
- Spiral
- Whirlpool
- Pinball
- Adaptive
- Cluster
- Agile
- Scrum
- Extreme Development (XD)
- Kanban
- SAFe (Scaled Agile Framework)
- Formal
- Singular
Plan-Driven
Plan-driven have rigid phases that are defined before the project is started, and it consist of a single loop.
Waterfall
Waterfall is a sequential development process that flows like a waterfall through all phases of a project (analysis, design, development, and testing, for example), with each phase completely wrapping up before the next phase begins.
It was invented by Winston Royce.
V model
V model is an extension of waterfall model.
It pairs a testing phase with each development stage. Each phase starts only after the testing for the previous phase is done. Thus, at the requirements phase, the requirements are reviewed (or tested), and at the design phase, a test phase for the system design is completed before coding is started.
Iterative
Iterative includes several loops.
Incremental
Incremental is a process of software development where requirements are divided into multiple standalone modules of the software development cycle. In this model, each module goes through the requirements, design, implementation and testing phases. Every subsequent release of the module adds function to the previous release. The process continues until the complete system achieved.
Its a serialization of waterfall models.
The requirements are completely known, but the implementation is split.
Prototype incremental is a mixed of watefall and prototype model. It involves that the project is developed in layers.
You can read this post about software prototyping.
Unified Process
Unified Process (UP) focuses on structure. It was first described in the book “The Unified Software Development Process” (1999) by Ivar Jacobson, Grady Booch and James Rumbaugh.
Unified Process may be referred as Proceso Unificado de Desarrollo de Software (PUDS) in Spanish.
Rational Unified Process (RAP) is an refinement of Unified Process, and it is the most popular and documented among the UP implementations. It is proprietary and belongs to Rational Software, that is a subsidiary of IBM.
The open unified process (OpenUP) was an implementation based on open standard. It that was donated to the Eclipse Foundation and was later incorporated as a method to the Eclipse Foundation Process (EFP) project. The EFP project was archived in February 2023, and you can still download the archive EFP project.
The agile unified process (AUP) is an alternative implementation that is a simplification of the UP. It was superseded by the discipline agile delivery (DAD), that is a hybrid model.
Rapid Application Development (RAD)
Rapid Application Development (RAD) is an iterative process that relies on building prototypes. Unlike many other methods, it has no planning phase; instead, planning is done as the software is written. RAD relies on functional components of the cod being developed in parallel and then integrated to produce the finished product.
RAD can provide a highly responsive development environment.
Evolutionary
Evolutionary combines the iterative waterfall and incremental models.
In other definitions (such as in the article “Effort estimation and prediction of object-oriented systems” by P, Nesi and T. Querci), evolutionary would be a family of lifecycle models composed on many lifecycle models, including spiral, fountain, cluster, whirlpool and pinball. According to this article, the distinction of phases is partially lost in all these models.
There is a website, probably based in the previous article, that summarizes the evolutionary models coining them as “object-oriented models”. I doubt on the full accuracy of this article. You can read the article “Modelos Orientados a Objetos” written by an anonymous collaborator from the Universidad Politécnica Territorial Norte del Táchira Manuela Sáenz.
Spiral
Spiral provides a systematic and iterative approach to software development. In its diagrammatic representation, looks like a spiral with many loops. The exact number of loops of the spiral is unknown and can vary from project to project.
It was proposed by Boehm in 1986.
Fountain
It is suited for object-oriented software projects.
It was proposed by Henderson-Sellers and Edwards in 1990.
It can be translated into Spanish as “fuente“.
Whirlpool
It can be considered object-oriented.
It was proposed by Williams in 1996.
It can be translated into Spanish as “remolino“.
Pinball
It can be considered object-oriented.
It was proposed by Ambler in 1994.
Adaptive
The adaptive model expects changes at any time, not even in windows like agile.
Cluster
The cluster model can be translated into Spanish as “agrupamiento“.
It is object-oriented.
It was proposed by Bertrand Meyer in 1990, in the book “Software-oriented software construction. Second Edition” (1990) by Bertrand Meyer. You can download the book.
Agile
Agile is a group of methodologies that focus on iterative cycles rather than a one-way cycle. Its goal is to deliver faster that waterfall methodology by fostering direct collaboration between product and development teams.
The predecessor to the Agile concepts is the Integrated Production Team (IPT) devised by the Defense Department of the USA in 1995.
Agile was popularized by the Manifesto for Agile Software Development, published in 2002.
Some of the most relevant software development frameworks or project management methodologies based on within Agile:
- Scrum
- Extreme Development (XD)
- Kanban
Read more about Agile software development.
Big Bang SDLC
It relies on no planning or process. Instead, it focuses on making resources available and simply starting coding based on requirements as they are revealed. The Big Bang model does not scale well, but it is a common model for individual developers working on their own code.
Formal
Formal methods are techniques that involve mathematical expressions to model “abstract representation” of the system.
Singular
Singular groups all other methodologies that are specific to companies or industries.
Software Development Frameworks
MEDEA is developed by the University of Murcia in Spain.
MEDEA at Spain Administration’s Portal de Administración electrónica (PAe)
Considerations about Software Development Models
In my opinion, most companies or institutions tend to think they are using a very specific methodology when they are not really using it in an orthodox way. They usually cherry-pick features from different existing development methodologies and call it like one of them, while they are really taking customized or hybrid approach.
As agile methodologies sounds more modern and flexible that waterfall, many people involved in software projects have a tendency to rush to say they do “agile” approach even when they do not really know what it means. The worst thing of it is that they think there is no improvement margin (as they think the 100% of their processes is already “agile”, for instance) and are usually reluctant to hear the proposal of something in the custom or hybrid approach because they think of it as a step back, though they are actually already in that situation but unaware of it.
Choosing a Software Development Model
In a general line, this is my advice when recommending a development methodology:
- Hybrid or pure methodology?
- Changes in development methodology require a process of change management. Both product and development team may be reluctant for the change, so you may need to adapt the methodology to the current processes as a hybrid methodology.
- When going for hybrid methodologies, the processes must be very clear, negotiated and approved by all stakeholders and always accessible. The biggest risk of going for a hybrid methodology is that it is unclear and every stakeholder do what they want based on their own criteria.
- Use a pure methodology (e.g., orthodox waterfall or agile methodologies) in case there is no possibility of agreement among the different stakeholders. Then, it can always be said that the industry best practices are the chosen ones, and not a particular opinion within the group.
- Waterfall or Agile? These are my recommendations.
- In case of doubt, go to Agile or use it as a template and then add waterfall/singular characteristics. Generally, agile has better press and is more welcomed by stakeholders than waterfall. Waterfall is perceived as outdated, and agile as the natural replacement.
- Use waterfall if ANY of these characteristics is met:
- Trust and true collaboration cannot be established between product and dev teams, or there is interest than the other team fails or is publicly exposed. Example: there is a strong competition between both teams, and everything done in a team is used against itself.
- Project takes several months, requirements can be defined in advanced, they are very rigid and there are inflexible deadlines. Agile has the drawback that as there are short sprints and it is more difficult to plan in the long run.
- Note: You can add agile characteristics to waterfall to strengthen the weak points. Example: add periodical demos to share progress to product team, or organize daily stand-ups.
- Use agile if these characteristics are met:
- Specifications are not clear from the beginning. There is no clear understanding of the product or the desired outcome.
- Trust can be built between product and development team
- There is no need to strongly document the requirements. If it is needed, some time on each sprint can be reserved to create documentation, but this will make the process less “agile”, in all senses.
- There is no frequent rotation of employees
You might also be interested in…
External Reference
- Geek for Geeks; “SDLC“; Geek for Geeks