OpenSpace?, XP Agile Universe 2004, Calgary
System Integration (SI) is a crucial step in deployment and acceptance testing of software products that have to 'fit into' an existing environment. Any true measure of product quality depends on doing this right. That means you must address system integration as part of your test and development strategy.XP proponents have done little to address this important area. It leaves the impression that XP is only for 'internal' projects or standalone applications.
- Top Issues of Concern....
- Real SI Tests often take too long to use as check-in tests
- SI Tests run in background or overnight, thus bugs decoupled from source change cause
- SI API themselves can have bugs in them... documentation is incorrect!
- SI usually require experience or even expertice in the XP team to be successful
- A hierarchical test strategy is needed, complicating the development of new tests
- SI API changes over time, requires coupling with specifically tested versions since you cannot ensure a fully abstract model... at some level...
- Large or expensive SI APIs usually require some Simulation/Emulation to make 'continous integration' testing practical
- XP practices ignore these issues
- Currently Known Strategies to Address these issues....
- Define 'special pairs' of developers who have experience in with this SI... breaks the 'no tower of knowledge' objective
- Team ownership of all SIs, simulators and APIs... works only if you have a couple of SIs to deal with, quickly becomes impractical if there are many SIs
- Create a separate XP project with teams dedicated to supporting all aspects of the SI.
- own the simulator
- own the API version tracking and expertice
- own the abstraction layers that hide non-essential functionality and behaviors
- own the 'live' integration with the core product team, FIT tests, etc.
- exchanges story cards with core team, manage the relationships
- 'Customer' is core team
- Develop robust tests that anticipate SI failure modes in the field
Workable Strategy?
Given the last point above Many of these issues could be 'rolled up' into a topic of "Managing Coupled Agile Teams" which is also an essential topic of Agile development is every going to 'grow up' to large projects.... an observation made by several people this week!
Thank you all for your time and input!
Peter Flynn, Spirent Communications.