10 Software Methodologies in Under 10 Minutes
This article will teach you basics of the most popular methodologies used today. It’s important to note that methodologies are a collection of methods and that can include a long list of items. It can be life cycles and stages, practices and values, and even principles. It can also be terms and roles. Sometimes the definitions can be fluid and sometimes they’re rigid and well-defined. Above all, however, these methodologies are software based so a lot of the descriptions include processes and terminology used in the technology sector and consumer electronics. Where necessary, descriptions and definitions are provided for clarity and links are inserted for further information. Now that’s out of the way, let’s begin our journey.
The most popular methodology used today is Agile. It was founded in 2001 by Jeff Sutherland and a team of software engineers. It describes how quality software can be built using rapid delivery and customer feedback. In Agile, software is built in pieces called increments. These are shared with customers to get their ideas about the design. When their ideas change, Agile teams update the software and add more pieces together until it is built. This is done over periods of time called iterations and the purpose is to limit the errors made during software design and be responsive to customer changes as they occur. Sometimes Agile is called a philosophy that other methodologies fall under.
A variation of Agile is Scrum. This is a framework for building quality software that began in the early 1990s by Jeff Sutherland and Ken Schwaber. Like Agile, Scrum calls it blocks of time sprints and its software minimum viable products. It also has roles such as Scrum Masters who help teams overcome issues such as starting meetings on time. The values of Scrum are openness and respect that encourages teams to share ideas and appreciate each other’s input. Scrum, however, relies heavily on a backlog to track issues and recommends daily stand ups to review team progress on building software.
Another popular variation of Agile is Kanban. It was created by Toyota in the 1940s to manage inventory. Kanban means “visual system” in Japanese and it often looks like a board with sticky notes meant to track software project progress. Kanban has categories that represent stages, cards that describe tasks, and a backlog with a list of software issues. Some of the Kanban tasks include identifying a budget, assign team members code blocks, and repairing defects in user interfaces. Kanban is sometimes called a life cycle because it runs in stages; however, stages tend to be defined by the teams that use them so they can vary. The purpose of the model is to visually represent the work being done and track how quickly teams are resolving issues.
4. Extreme Programming
A fourth popular Agile methodology is Extreme Programming. It was invented in the 1999 by Kent Beck who was a software engineer. He proposed teams can build quality software using efficient practices and a key set of values. A practice can include teams programming in pairs while a value is simplicity that means teams only add features the customer requested. Beck outlined a life cycle within Extreme Programming that ran from planning to listening where teams write out software ideas they want to build then record feedback from customers on what they actually built. This is done sequentially and in pieces like the other Agile methodologies, so it minimizes the potential for long term mistakes.
5. Lean Software Development
You may have also heard of another methodology called Lean Development. This is applying Lean concepts to Agile. It was founded in 2003 by Mary and Tom Poppendieck. Its main principles are eliminating waste, delivering software quickly, and keeping teams motivated. The tasks associated with these principles include hosting team meetings frequently, sharing resources, and switching tasks. The purpose of the model is to reduce issues related to building software such as minimizing effort and optimizing delivery to the customer.
Another way software is developed and delivered is Waterfall. This is a methodology that proposes software should be built in gradual and distinct non-overlapping stages unlike Agile. It was first proposed by Winston Royce in the 1970s. Royce theorized software development would move from the requirements stage to maintenance where workers would gather ideas from the customers, build software, then install it. It would be developed all at once rather than in pieces than released to the customer for them to use. The purpose of the model was to provide a road map for building software in a logical and linear fashion without needing to constantly change development plans. Sadly, Waterfall has gradually phased out in popularity over the years.
Another methodology that is similar to Agile but unlike Waterfall is DevOps. This combines software development and IT operations to achieve business goals. It was proposed in 2009 by Patrick Debois and it is still used today. The basic idea behind the model is to move from planning to operate stages building software then release it to IT teams to setup and maintain. This involves developers keep tracking of changes in versions of software, coding in small blocks then combining them, and ensuring things such as virtual machines can run the software without any issues. DevOps values working together and constantly learning to achieve software goals such as frequent meetings. It is known for cutting down on time to deploy software for use.
8. Rapid Application Development
One related model is called Rapid Application Development. It was proposed in the early 90s by James Martin. It involves defining requirements for software, creating a prototype, gathering feedback, and sharing the result with the customer. Priority in this methodology is placed on building an actual model and prototype for the customer review and less on creating paperwork. Development teams tend to work in small groups, and they can produce multiple prototypes on their own. The goal is for the customer to select one that can be rebuilt through repeated development, review, and testing cycles. This is performed over blocks of time called iterations and software tends to be built in pieces called increments like in the broader Agile philosophy.
Another software methodology is Spiral. It was proposed in a paper published by Barry Boehm in 1986. It works by repeating successive iterations or blocks of time where software ideas are proposed, evaluated for their risks, and then built and shown to the customer. A key difference between Spiral and other methodologies is that risks such as software security play a large role in selecting software that should be built. Teams want the fewest risks possible so they must choose a software model that has the least potential for having problems occur. Spiral proposes teams outline their objectives for their software project, identify and resolve their risks, then build software and verify it works. The customer has the ultimate say on whether they will accept the model, but that each time one is built, risks have to be dealt with before building again to keep issues to a minimum.
10. V Model
The final methodology is the V development model. This is similar to the Waterfall methodology since it involves distinct and orderly stages. It was proposed by Barry Boehm in 1979 as a way to perform rapid testing per each stage of design. The V model stages involve analyzing requirements from customers, designing the system and its architecture then begin coding. Testing is done after each design step that can be acceptance, system, or integration tests to check for software flaws. The result is software that has been verified and validated to work and matches what the customer requested. Some of the key practices of the V model include creating documentation on how to resolve issues and designing processes for prioritizing requirements such as assigning them points. One of the main goals of the model is to identify and eliminate defects in software early before it reaches the customer. This keeps development work to a minimum due to all the testing.
If you’d like to learn more about myself or my work please check my profile and other articles on Medium. I am new to the site, so I am only recently publishing articles. They’re on all sorts of topics such as meta-learning, tutorials, and book recommendations. Feel free to follow me and pay close attention for more articles to come in the future. Thank you for listening.