Before going through the most common software development methodologies and frameworks, we need to understand first what is software engineering and how does SDLC relates to it.
IEEE defines software engineering as the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.
SDLC: Software (application) Development Life Cycle refers to the common phases (stages) followed in creating high-end, low-cost, and effective digital products within a short delivery time meeting customer, client, or final user’s needs and expectations.
The SDLC process is detached into the following ordered phases:
So, we can deduce that SDLC is the implementation of software engineering principles in a set of coherent stages in order to deliver the most optimal and efficient software possible.
Now, let’s jump into a list of common software development methodologies that are in use today by different teams in the industry.
These approaches can hugely vary on their real-world implementation as teams are of different sizes (from a one-man job to teams of hundreds or even thousands of people), with different mindsets, and certainly working on different projects with different scopes and objectives.
Waterfall Development Methodology
Beginning with the earliest SDLC method that has been widely used for building useful programs and systems, the waterfall software development methodology is basically a grouping of project tasks and actions into linear phases. Each phase strongly depends on the output of the preceding one and matches a specific set of common and related activities.
This approach is painless and quite easy to understand since it makes project management simple and effortless as well as it is one of the most popular among developers.
By dividing the entire plan into smaller pieces i.e stages, team members and managers can get a sort of high level and more clear understanding of the entire procedure of software creation.
Each stage’s amount of needed time and work can vary widely. Therefore, some applications may take months to build, and no running software is obtained until finishing the whole development cycle.
This can be a big downside, especially in today’s market where frequent changes occur on a regular basis, and businesses may (and will) happily take advantage of the absence of their competitors at any given chance.
The V-model is an SDLC model in which processes are executed sequentially in a V-shape. The Verification and Validation model is another name for it. The V-Model is built on the association of a testing phase for each relevant development step, and it is an extension of the waterfall model.
The Spiral Model
The spiral model blends the idea of iterative development with the waterfall model’s methodical, regulated characteristics. This Spiral approach combines an iterative development process model with a sequential linear development model, i.e. the waterfall model, with a strong focus on risk analysis. It enables for incremental product releases or enhancement during each iteration around the spiral.
Agile Software Development Methodology
The Agile SDLC model combines iterative and incremental process models with a focus on process adaptation and customer satisfaction through the delivery of a working software product quickly. Agile methods divide a project into small, incremental steps. Iterations of these builds are available. Each repetition lasts anywhere from one to three weeks and a working product is shown to the client and other key stakeholders at the end of each iteration.
Extreme Programming (XP)
Extreme Programming (XP) is an agile software development approach that attempts to deliver better software while also improving the development team’s quality of life. In terms of proper engineering methods for software development, XP is the most detailed of the agile frameworks.
XP has five values which are communication, simplicity, feedback, courage, and respect.
Scrum Development Methodology
Scrum is a lightweight framework that aids individuals, teams, and organizations in creating value by allowing them to adapt to complicated situations. The Scrum Guide was written by Scrum co-creators Ken Schwaber and Jeff Sutherland to explain Scrum clearly and succinctly.
Scrum’s accountabilities, events, artifacts, and the rules that bind them together are all included in this description.
In a nutshell, Scrum calls for a Scrum Master to create an environment in which:
- A Product Owner orders work for a complicated problem into a Product Backlog.
- During a Sprint, the Scrum Team turns a selection of work into a value increment.
- The Scrum Team, as well as its stakeholders, inspect the results and adjust for the next Sprint.
Kanban Development Methodology
Kanban is a well-known framework for agile and DevOps software development. It necessitates real-time capacity communication and complete work openness. On a kanban board, work items are visually depicted, allowing team members to see the status of each piece of work at any moment.
Lean Software Development (LSD)
The application of lean manufacturing ideas and techniques to the software development domain is known as lean software development. It is emerging with the assistance of a pro-lean subculture within the Agile community, having been adapted from the Toyota Production System. Lean provides a solid conceptual framework, values and principles, as well as proven techniques that assist agile organizations.
DevOps Development Methodology
DevOps is a collection of principles that require development and operations teams to work together throughout the software development lifecycle. It leverages Agile methods to break down team silos, automate manual processes, and boost productivity through regular feedback.
Prototyping Software Development Methodology
The prototyping model is a software development method in which a prototype is created, tested, and changed until it is acceptable. It also serves as a foundation for the creation of the final system or software. It’s best used in situations where the project’s requirements aren’t fully understood. It is an iterative, trial-and-error process that occurs between the developer and the client.
Dynamic Systems Development Method (DSDM)
DSDM (formerly known as Dynamic System Development Technique) is an Agile method that focuses on the complete project lifecycle. It was founded in 1994 as project managers utilizing RAD (Rapid Application Development) sought additional governance and discipline to this new iterative style of working.
DSDM is vendor-agnostic, spans the whole project lifecycle, and provides best practice guidelines for delivering projects on time and on budget, with proven scalability to manage projects of all sizes and across all industries.
DSDM encourages the employment of various tried-and-true methods, including:
- Facilitated Workshops
- Modelling and Iterative Development
- MoSCoW Prioritisation
- Time boxing
Joint Application Development (JAD)
JAD (Joint Application Development) is a method for speeding up the development of information technology solutions. JAD employs consumer participation and group dynamics to effectively reflect the user’s perspective on the business need and to collaboratively build a solution. Prior to the introduction of JAD, requirements were determined by conducting individual interviews with stakeholders.
JAD takes a collaborative approach to the creation of information management systems, emphasizing a problem-solving methodology based on agreement. JAD allows system requirements to be documented more rapidly and precisely than a traditional approach by incorporating led workshops and promoting a culture of partnership. JAD integrates technological and business requirements in a consistent, repeatable, and efficient approach.
Feature Driven Development (FDD)
Feature-driven development is a method of software development that is iterative and incremental. It is a lightweight or Agile software development method. FDD combines several industry-recognized best practices into a unified whole. From a client-valued functionality standpoint, these approaches are driven.
Rapid Application Development (RAD)
Rapid Application Development (RAD) is an agile software development process that emphasizes prototype releases and revisions as quickly as possible. RAD, unlike the Waterfall method, prioritizes the usage of software and user feedback over meticulous planning and requirements documentation.
Which Software Development Methodology(ies) do Google teams use?
Here’s a response from someone at Google (Amanda) :
I’ve worked on waterfall projects, agile projects, DoD projects (which are their own adventure), and now Google. Steve’s rant is spot on, but there’s more than one way to look at things. Overall, Google generally fits the spirit of agile methods, and in fact some groups use XP, or Scrum, or whatever, but it’s up to each team, and the methodology a team choses to use is definitely secondary to the results it produces, so nobody cares about buzzword compliance. The corporate philosophy seems to be “we’d rather underconstrain people than overconstrain them”. Some projects are time critical–and they use schedules, milestones, etc. (though not, that I have seen, MS Project) as a way to keep themselves on track. Some people do pair programming as a way to be more productive, but that’s up to them. That’s what’s most different from other large development organizations: process is intentionally not centralized except where absolutely necessary. It’s the polar opposite of, say, CMMI.
And yes, setting the hiring bar very, very high does make a real difference.
Sign up to get the blog’s latest posts and updates delivered to your mailbox!