Software Design Intro: Agile & Non-agile

Amber Spadafora
3 min readFeb 13, 2022

--

Learning to create software is more than knowing a programming language. It is important to understand how to design a software system based on its users requirements, before sitting down to code. Part of knowing software design is understanding the different philosophies that exist, or the different ways of working.

In this post I’m going to discuss the difference between an agile mindset versus a more traditional approach, the waterfall methodology.

A venn-diagram showing the differences between agile and non-agile methodologies

Waterfall methodology

A traditional method of designing software that splits the software development lifecycle into 6 different phases

  • Collect and analyze requirements phase
  • Defining the architecture phase
  • Implementation phase
  • Verification phase
  • Deployment phase
  • Maintenance phase

This model requires us to clarify all of the requirements and create a detailed plan of execution upfront. As a result, the waterfall approach is criticized for not adapting well to changing business needs.

The waterfall methodology has important applications in creating life-saving devices where the requirements are rigid and will not change down the line. For projects where the requirements are not so easily defined, or may evolve, using an agile methodology may be a better path.

Agile way of thinking

Agile in and of itself is not a software design methodology, it is a way of thinking that is guided by values and principles set forth in the Agile Manifesto (very short read, I highly recommend it if you are working on an agile team or are planning to).

Scrum and Kanban are two discrete methodologies that are informed by the agile approach.

The four values outlined in the Agile Manifesto are as follows

Individuals & interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

This list of values comes with the caveat

That is, while there is value in the items on
the right, we value the items on the left more. — Agile Manifesto

By the way, that is the entire manifesto- the other valuable information on the agile manifesto site is the Principles behind the Agile Manifesto

An agile approach has the benefits of continuously delivering functional software iteratively, instead of delivering a completed project all at once.

Tldr; Agile methods are good for projects where the client doesn’t know what the finished product will look like at the onset, where requirements are likely to change as the project goes on, and therefore requires a software design that is flexible and extendable

The waterfall or linear approach of designing software has important applications when a software’s requirements are rigid and unlikely to change over time.

Continued Reading

https://en.wikipedia.org/wiki/Waterfall_model

--

--