Agile methods help to incrementally deliver software product regularly to end users early and often. But, did we wonder whether the software that is being developed at certain cadence are of real use to the customer and whether the end users would really use the product features released? Or, will they be accepting it and would take out time to bring the released features into actual use for which it was envisaged? There are many such questions that need to be considered while planning the development of the product features and it’s delivery to fulfill the business need. The frequency and the interval in which the software would need to be developed and released must be at fixed cadence and ready to be delivered on demand. The released solution should meet the business requirements, considering stakeholders involvement and contribution with appropriate business planning and meeting market demands. End users should be fully aware of the prioritized features likely to be available incrementally well in advance that would fulfill the expected business requirements.
The software increments produced at certain cadence are expected to have a certain level of maturity, as given below –
Working Software – produced at the end of every iteration. Usually, these are potentially shippable or releasable meeting the definition of done and acceptance criteria. Developed product features are good enough for a demo to customer and stakeholders.
Potentially Shippable – produced at the end of one or more sprints that are potentially shippable. Working software produced at the end of every iteration might not be potentially shippable (or releasable) until it’s fully integrated, well tested and bundled with useful features, and any need for test or release pipeline automation should have been completed. Software that is ready to be released on demand is qualified as Potentially Shippable / Releasable Software.
Consumable Solution – produced at the end of a group of sprints (sometimes called as releases) that are potentially releasable, desirable and consumable by end users. Consumable Solution bundles the completed features addressing the real business functions, that provides business values and fully meets to end users requirements as expected. It should also combine all the necessary hardware, software, network, security etc. requirements in order to utilise the solution.
The incrementally delivered products should be focused towards achieving following one or more characteristics …
Continuous delivery of business values
Maximize Return on investment (ROI)
Release valuable features early and often
Increase the number end users feedback loop
- Test new features in order to ascertain acceptability
- End users and stakeholders satisfaction
Usually, product features can be considered to be broken into multiple related user stories, where a certain set of user stories might represent a business theme. These user stories should meet the INVEST criteria – Independent, Negotiable, Valuable, Estimable, Small, and Testable; which when completed; should comply with the Definition of Done and defined Acceptance Criterion. Let’s see how a software meets the requirements of being releasable and consumable in detail.
Potentially Releasable Product Increments: Product increments produced at the end of every iteration are often the working software. But these might not be completely usable and releasable, even if the developed features might be working. If the product increments that have even partially completed features and have been tested thoroughly; then it can be considered as Potentially Shippable/Releasable Software. Here, we can safely assume that a feature might consist of multiple user stories that have been completed as per the definition of done meeting the acceptance criteria defined.
Consumable Product Increments: Normally, software features are defined for a specific set of users to fulfill a certain business function. But it’s possible that completed feature might not be fulfilling all the related must have functional and non-functional requirements along with associated features. If with the developed set of user stories (i.e somehow only the partial features) users are unable to perform the intended function; then such partially completed features may be ‘releasable’ but not ‘consumable’; as it would fail to fulfill requirements in entirety and end users may be unable to execute the intended business function. In such cases, the group of user stories (features) are planned in such a way that by the end of a number of iterations, as a whole; it would be of real use to the end users in order to perform specific intended business function.
Lifecycle of Producing Consumable Solution
How To Maximize Delivery of Consumable Solution:
Though bundling software features in such a way so that it fulfills the expected set of business benefits in delivering values; requires a certain level of planning and reorganization of product features. This could be achieved with appropriate planning, refinement, disciplined development and delivery approach throughout the product engineering lifecycle.
Almost all the well defined Scaled Agile methods like – DAD, SAFe, LeSS etc. directly or indirectly describes producing the Consumable Solution.
Working software produced iteratively and potentially shippable delivered incrementally with the ultimate goal to provide consumable solution for continuous business feedbacks. Agile software development helps in delivering products not only incrementally but also satisfactorily as per the end users and business need.