Software Development

SDLC – Software Development Life Cycle

Whether you plan it or not, every piece of software goes through a similar path from idea to launch day. Collectively, the steps of this path are called the software development lifecycle (or SDLC for short). The SDLC is the sequence of steps that take place during the development of a piece of software.

formalized SDLC has a number of other benefits:

  • Creates a common vocabulary for each step along the way
  • Defines communication channels and expectations between developers and project stakeholders
  • Sets clear roles and responsibilities for your entire team (developers, designers, project managers, etc…)
  • Provides an agreed-upon “definition of done” for each step to stop scope creep and help keep the project moving
  • Formalizes how to handle bugs, feature requests, and updates

Analysis and Planning

The planning phase ensures you’re starting off on the right foot. So try to make sure you include all of the departments that are going to be impacted by this project, including project managers, developers, operations, security, and key stakeholders.

Requirements

The next step is to understand the technical requirements of this project. Every piece of software—whether it’s an app, website redesign, or new feature—needs to solve a customer problem.

Design and Prototyping

Depending on the software development process you’re following, this phase of the SDLC might mean you create simple wireframes to show how interactions will work in the software, or make more full-fledged prototypes using a tool like Marvel or InVision to test with users. Alternatively, you might decide you need more user feedback and do a design sprint to quickly get a feature or idea in front of your users.

Software Development

This phase is obviously the hardest and potentially riskiest stage of the SDLC (and each of the software development processes we’ll discuss below handle it differently.) However, whether you’re working in Agile sprints, building out an MVP, or using the more traditional waterfall method, the goal here is to stick to the SOW, avoid scope creep, and build clean, efficient software.

Testing

While testing could be another long stage of the SDLC, it’s important to make sure you’re not shipping buggy software to real customers. As we wrote in our guide to bug tracking tools and workflows, bugs can kill your reputation, make you lose revenue, and, worst of all, take up hours of development time that could’ve been put towards building new features.

Deployment

With the heavy lifting (and coding) out of the way, it’s time to launch your software to all of your users. What we’re talking about here is pushing your code into production. Not coming up with and implementing a go-to-market strategy (that’s more up to your sales and marketing teams).

Maintenance and Updates

Requirements and customer needs are always evolving. And as people begin to use your software, they’ll undoubtedly find bugs, request new features, and ask for more or different functionality.

Agile and Scrum

Agile is all about moving fast, releasing often, and responding to the real needs of your users, even if it goes against what’s in your initial plan. This means you don’t need a full list of requirements and a complete SOW before starting work. Instead, you’re essentially moving in one direction with the understanding that you’ll change course along the way.

Phases:

  1. Product Backlog
  2. Sprint backlog
  3. Sprint (Design & Develop)
  4. Release working software
  5. Feedback and validation (add to backlog)
  6. Plan next sprint

Who it’s for

Dynamic teams doing continuous updates to products.

As it becomes easier to do small releases and gather user feedback, Agile allows companies to move faster and test theories without risking their entire livelihood on a major release their users hate. Also, as testing takes place after each small iteration, it’s easier to track bugs or roll back to a previous product version if something more serious is broken.

Who it’s not for

Team’s with extremely tight budgets and timelines.

Agile’s dynamic nature means projects can easily go over their initial timeframe or budget, create conflicts with existing architecture, or get derailed by mismanagement. This means it’s not the best choice for risk-averse or resource-strapped teams.

Incremental and Iterative

The incremental and iterative software development processes are a middle-ground between the structure and upfront planning of the Waterfall process and the flexibility of Agile.

While both follow the idea of creating small bits of software and exposing them to users for feedback, they differ in what you create during each release.

Incremental Phases:

  1. Increment Planning
    • Specifications
    • Development
    • Validation
  2. Repeat for each version

Who it’s for

Teams with clear requirement who want more flexibility than the Waterfall method provides.

With the incremental process, you get early feedback on your core feature, which can help you validate your business case right away. Whereas the iterative approach gives users an early look at what the full product could be so you’re able to get better and more focused feedback.

Who it’s not for

Team’s without a clear long-term technology plan.

Additionally, both of these models (and the iterative approach especially) require heavy planning and architecture-building early on. Meaning they aren’t ideal for smaller projects or teams who are still testing out use-cases and trying to find product-market fit.