Categories
Uncategorized

An exercise in specifying an MMF for BDD

As an Agile sub-discipline, BDD is a collaborative, goal-based approach to getting feedback and results, faster and earlier in the development cycle. It uses tools like Cucumber, but the key is pulling together all constituents to work collaboratively – on the same team, towards the same goal. Not the old QA vs Dev fights (It’s a bug. No it’s not a bug!), or Business vs Dev tug-of-war (Gotta have this feature by November! But we can’t possibly fit it in!)

The (Role-) Players

A mnemonic I composed, for roles & players in a typical Agile project:
Clint – the Client // Ursula – the User
Reana – the Requirements Analyst
Dom – the Domain Expert
Archie – the Architect
Poe – the Product Owner
Dev /’they,v/ – the Developer
Sendel – the Senior Developer

The client articulates his need

Clint: ‘I read a lot on my Kindle and mark a lot of clips. I’d like to be able to review these in one place. Maybe print them out, or export to a clippings book on my Kindle.

As I read I keep collecting more clips, so I should be able to regenerate the exports with the new clips as well.

The built-in Kindle clip viewer requires me to have the book on device to view all its clips. Navigation is laborious – no way to read all clips in a single book.

If I open the clips file directly, it shows clips in order marked, not collated by book.’

Later, in a meeting

Reana: ‘Clint uses a tool called ‘Calibre’ to manage his ebooks and Kindle. Using Calibre he adds EPUB e-books to the Calibre library. These he then converts to AZW3 or MOBI (proprietary Kindle-supported formats). And finally copies them over to his Kindle.’

Dom: ‘Calibre is an open-source software written in Python 2.x and exposes an API afaik.’

Archie: ‘We will want to see if we can leverage the Calibre API.

We need to collect clippings into an ebook. Epub being an open format we have libraries that support it. The Calibre API might help with the workflow to:

a) import the epub into Calibre & trigger conversion to a proprietary Kindle format

b) push converted format to Kindle’

Dom: There is a Kindle format converter by Amazon. But I think its licensed for personal use.

Archie: If we need to fall back on that option, we might have to build in integration configuration to let the user download the converter on their own, and let him specify the path to that executable.’

First port of call: Define an MMF (minimal marketable feature)

An MMF is a minimal viable product that provides a usable feature of value.

Feature Mining meeting:

Objective: Find key functionality for an MMF

Archie: Let’s start by answering these 4 questions:

(with * for dot-voting)

Q1) Where is the (maximum) Value or Impact?Q2) Why Slice?Q3) What are the risks?(phrase as realised consequences)Q4) What are the uncertainties?
Reana: *** being able to review clips from a book in one place – by printing (.docx), or exporting ebook to kindle
Poe: ** workflow of converting exported epub to Kindle format and copy to Kindle
What might take long to do? Dev: *** workflow for conversion and placing on Kindle
What are there many of? Sendel: * formats for exporting (print vs Kindle) * number of books for which to aggregate clips
Sendel: * We’re not free to use the Kindle converter and (Python) interfacing with Calibre for conversion is not feasible!
Dev ** How to interface w/ Python Calibre API. *** How to use Calibre API for conversion and device deployment workflow.
4 questions for Feature-Mining

Archie: Now let’s consider these questions for slicing. How do we do the following, without taking on all the bigness:

1. How do we get the top impact?

Dom: We can import all the clips and export to a Docx for printing.

Arch: That’s great. It leaves open the question of risks and uncertainties. So, how do we:

2. How do we Mitigate Risk?

Sendel: Find out how to interface with Calibre API and read list of books on Kindle. That will lead to preliminary knowledge of the API and some confidence.

Arch: Yes. That still leaves open the question of how integrating the workflow with Calibre. So we need to:

3. How do we Answer this question?

a) Does Calibre expose APIs to:
i. Import / Add a book into Calibre?
ii. Convert a book to another format?
iii. Send a book format to Kindle device?

Stab at identifying MMFs

Archie: Consider this workflow depicting end-to-end steps for our system processing:

Reana: Looking at the steps in this workflow, a quick win for the user would be to import the clip file and output clips for a single book and generate a docx for printing. Thus cutting the complexity of presenting multiple books for selection, and supporting multiple formats for output.

Workflow

Archie: Indicating a happy path (function realization that provides significant value) with a workflow overlay. So our first MMF could be:

MMF-1: “Parse clip file & generate docx for clips from one book”

The single book to output could be the first clip encountered or random (perhaps the one with most clips).

To create User Stories from the first MMF, we can use any of:
a) unaccounted business rule variations
b) scope omitted in this MMF

c) size of MMF itself – create a work breakdown or decomposition

A User Story is usually in the format:
As aUser (mostly a given),
I want tobe able to (the title),
So thatxyz happens (the description).

User Story:
Title: Export single book clips in Kindle format
Description: Use Calibre API to export clips for a single book in kindle format

User Story: Push Clipbook to Kindle Device
Description: use Calibre API to push to Kindle

User Story: Export multiple book clips in single file
Description: Multiple book clips in a single exported file. A section per book for docx. Or a Chapter per book for ebooks.

User story: Select books to export
Description: Export clips for selected Titles.

User story: Update exported clipbook on device or Calibre library
Description: import expanded or additional clips from clip file and push updated clipbook to device


This is intended to be an illustration of the process of identifying an MMF for use in BDD.

Reference: Richard Lawrence, Paul Rayner, “Behavior-Driven Development with Cucumber: Better Collaboration for Better Software, First Edition”, Addison-Wesley: 2019