Walking Skeleton Shaking Bones for an Agile Architecture Heikki-Pekka Noronen (firstname.lastname@example.org) Some rights reserved
Introduction As questions.. • Do you validate chosen architecture and technologies some time during definition? • If you don’t, why? • If you do, why? • If you do, when? • If you do, how?
Walking Skeleton In a nutshell “ A Walking Skeleton is a tiny implementation of the system that performs a small end-to-end function. It need not use the final architecture, but it should link together the main architectural components. The architecture and the functionality can then evolve in parallel.” Alistair Cockburn in “Crystal Clear : A Human Powered Methodology for Small Teams” • A vertical slice through all the architecture layers • Minimal implementation that proves the architecture through some end-to-end functionality • From heavy architectural design to validating chosen architecture early on • Production code, with production level quality and testing required. • Quite similar with “spanning applications” described in book “Lean Sofware Development: An agile toolkit” by Tom and Mary Poppendieck
Walking Skeleton Why to put the bones together? Walking skeleton as synchronizer Walking skeleton can also work as synchronizer of the work if multiple teams are working on same product. The walking skeleton provides a basic structure and proven way to do things in product where independent teams can then build on. • Get early feedback if chosen architecture and technology is suitable. • Build quality in, by defining the main architectural structure early on and making it be consistent. (but at the same time, not doing whole bottom layers first). • Allows to set up required development environments, such as CI systems, required load testing tools and so on. • Improve knowledge and work estimations • Give a jumpstart to development by setting the baseline onto which build. (skeleton where to hang the flesh, so to speak).
Walking Skeleton Example Case: Video Service . • Lets think of scenario; a project is started to implement a web based service where users can send videos to be shared with others. • The team has no earlier experience with some of the technologies to be used: namely, the WCF web services and Filestream functionality of MS SQL Server, that they plan to use for storing videos. • There is plenty of different functionality in system; think of YouTube and pick any that exists there. • Discuss in groups : what should walking skeleton for this project include?
Walking Skeleton One Solution to given Example • To improve the knowledge about the new technology (WCF and filestream), the simple end-to-end implementation should use both. • Simple walking skeleton could include end-to-end system for sending files into system, storing them, showing list of available files (in very simple view) and opening one from list. • To prove that chosen architecture and technology is suitable, a volume testing and load testing environment is also set up and run. • After walking skeleton is finished, team goes through estimating amount of work to do for the rest of the project and starts working on “real” development to put flesh over the bones. • Instead of having fixed heavy architectural design documents beforehand, team can now also implement design document matching their implementation.