#UX101: The software development life-cycle

Why a section on software development process in an introduction to user experience? Because you will need to know and integrate with such processes as part of your job as a UX professional, that’s why. You will need to know the basic software development life-cycle (or SDLC) that your company or team uses in order to understand what you will do and when.

While there are many “variations on a theme”, there are only two different types of SDLCs: “Waterfall” and Agile. We will cover both at a fairly high level here, and recommend you do additional research on your own (especially before you join a software development project).

“Waterfall”

This is the “tried and true” method of software development, which is a stepped approach. This process is incremental, in that each phase must be completed before the next phase begins. The “timekeeper” is the project manager, who often creates incredibly complicated project plans to track and report where the team are to stakeholders.

There are typically five phases in the Waterfall process:

Requirements. The gathering and documentation of requirements, usually in the form of narrative documents called use cases.
Design. The creation of the screens and interactions in the software.
Construction (aka Implementation). The coding and development of the designed solution/offering.
Testing. The formal testing of the solution/offering by dedicated quality assurance team members, who use test cases (often extrapolated and mapped to use cases).
Production. The “shipping” of the offering to the end users of the system.

The Waterfall process has come under a great amount of criticism, for several reasons: it’s front-loaded and heavy in documentation that needs to be interpreted by developers and testers… and this can result in unnecessary complexity and “defects.” Additionally, when schedules are compressed this takes away from test or development team.

UX activities in a waterfall process can start during the requirements stage, but most of the UX process will take place – appropriately enough – in the design phase.

Agile

Also known as XP or Scrum, this is a more accelerated method of development that is more evolutionary than waterfall. Instead of “figuring everything out” in a Requirements phase, this process allows teams to start coding with a very thin set of requirements… often high level ones. The project team works closely together, with designers and developers frequently collaborating on whiteboards and in “code” to create the initial design.

The work takes place in iterations or “sprints” that usually last two weeks, with clear goals in mind for each sprint. Unlike “Waterfall,” activities such as requirements definition, design and development take place simultaneously, with the goal of having something tangible to show stakeholders at the end of every sprint.

Agile is very much an “evolutionary” process, focused on iterating and incrementally improving versus a more formal domain-driven process like Waterfall. As such, and since UX is an iterative process, aligning with an agile process should be easy… Except it’s not.

Agile has been criticized by some as being TOO rapid, without a lot of time to do the up-front analysis that is called for in a full UX process. It’s also very feature-focused, and this sometimes means that the experience design is given less effort and emphasis.

Closing

Advocates of the different SDLCs will always argue that their method is the “right” way to product software. Who’s right? It depends, in the end, on preference, the timelines and talents of the team, and scope and size of the software is being developed. But UX design is an important part of ALL software development processes. Not all software organizations are convinced of this, yet… but we’re getting there.