Continuous Integration Workflow

What is Software Delivery?

Software Delivery is the process of getting a software product to market. Your particular “market” and “product” could be:

  • An alpha product to an early adopter
  • The next release of an internal operations product
  • A first release of a main product for a major company

Regardless of your company size, the consumer, and the technology, you’re engaged in software delivery if you have to build a software product and turn it to users.

Software delivery includes the following groups and actions:

  • Business and product owners for requirements
  • Technology for software development and deployment
  • Quality Assurance for testing and validation

Business and Product Owners are responsible for delivering actionable requirements. An actionable requirement is a written spec of a specific feature. It has only enough information for a developer to deliver the specific feature. This is not a “Waterfall Requirements Document”. It doesn’t cover every feature of the entire system. On average, I find a good requirement takes about 30 minutes to generate. It make take longer if there are complex calculations involved. However, most should be small in scope.

Quality Assurance is responsible to ensure the software being developed meets the specifications. A good QA department works very closely with the business to help define and understand users and their requirements.

The technology group is responsible for building the product. They work with iteratively with the business to flush out the requirements and handle kickbacks from QA. They are responsible for all technical aspects of the product. This includes:

  • Software architecture
  • Software implementation
  • Hardware architecture
  • Performance testing
  • Security testing
  • Deployment process (including how to upgrade)
  • Regulatory compliance

The software delivery team should be run by an experienced technical delivery manager who is dedicated to the project. Having a single person who troubleshoots, coordinates, tracks, and measures progress is critical to the success of any Software Delivery project.