One of the 7 main principles in Lean Software Development is “Build Integiry In”. “Integrity” is defined as “free from flaw, defect, and decay”. Although there are many ways to build integrity into our products I wanted to suggest how Scrum and XP practices can assist in achieving this goal.
- Free from “flaw”: In order to reduce flaw in our products we must align development with the driving business factors. We can do this by allowing business to provide a prioritized Product Backlog which is stack ranked with the highest value items at the top. We may also automate our acceptance criteria for the features pulled into a Sprint Backlog as “executable requirements” which may be regressed to make sure the intent of the implemented features continue to meet customer need. You may use a tool like StoryTestIQ to automate your acceptance tests.
- Free from “defect”: In traditional approaches we may design and code our feature implementations and then hand off our builds to the QA team to run manual tests against the build. The amount of time from when a bug is introduced to when it is discovered, handed back to the development team, and then ultimately fixed could be weeks or months. The introduction of Test-Driven Design has decreased the amount of time to progress from introduction of a bug to fix into minutes or even seconds. Writing the tests first improves overall test coverage in our product development and enables automated regression of unit level tests.
- Free from “decay”: Again, the prioritized Product Backlog which places the highest value items on the top to be implemented first in the product development life cycle decreases the amount of decay introduced into the product. The third leg of the Test-Driven Design mantra, “refactor”, also decreases decay in our products by continually evolving the design to meet the current needs. If our test coverage is high enough to allow modifications to the product design but still assure the functional integrity then refactoring may be performed with minimal risk. Continuous Integration is another practice that we may use to minimize decay in our products by notifying the delivery team when flaws, defects, and integration issues have been introduced. If we develop in large batches of features over extended periods of time there is technical debt which accrues and must be dealt with in stabilization phases to remove the decay from our product.
It is important to understand “integrity” and how we can build it into our products. This will allow us to deliver incrementally in short iterations, attain the benefits of emergent design, and increased value of product features for our customers.


