With Document.Factory you can generate a customised version of a document to suit a particular release of a product.

To illustrate, consider the case of Treyton Edds, lead developer of the Budget development team at the Acme MegaCorp. Treyton’s agile team developed the original system and is currently delivering a new release every six weeks.

The entire Budget system has more than a dozen deployable components, including:

  • The core application server - provides core functionality and enforces all business rules.

  • A departmental portal - a single-page web application used by department heads and their executive assistants for day-to-day updates within each department.

  • A full function client application (written using WPF, used for defining and tracking the budget each year).

  • A payroll system interface (used to recompense staff for approved expense claims).

  • Banking system interface (used to make payment of approved invoices).

  • A staff portal - a single page web application used by individual staff to lodge expense & reimbursement claims, and to track the approval and payment process.

  • Mobile expense claim applications (separately developed for each of iOS, Android, Windows Phone and Windows 8).

With just a six week sprint between releases, it’s clear that Treyton’s team doesn’t deliver updates to every component with every release. Instead, they focus on deploying new functionality in a backward compatible fashion, concentrating their efforts on updates to just a small number of components.

Treyton used to spend around a day and a half every sprint writing up the release notes and deployment documentation. A tedious and repetitive job requiring a lot of copy and paste from other documents, Treyton needed to ensure the documents correctly described only the components being released.

By integrating Document.Factory into the formal build process, Treyton can now ensure the documentation is current and correct in just a few minutes. Instead of making wholesale changes to the documents, he configures the desired output by setting (or unsetting) switches at the start of the document; Document.Factory does the rest.