In a traditional software design process, there are multiple handoff points were artifacts are given from person-to-person, group-to-group. These handoffs are places where errors can be introduced into the product.
In general, there are two types of handoffs; transformative and non-transformative(1). With a transformative handoff, the artifact is changed; either through updating of existing material or translating it from one form to another (for example taking textual requirements and writing C code)
Each handoff introduces a potential error point where mistakes in translation can occur. The most common errors occur during translation handoffs but they are common even in update events.
Why do handoff errors occur?
Errors are introduced in the development cycle due to imprecise communication. This miscommunication can be compared to the errors introduced in the party game “Telephone.” Even the best intentions cannot prevent them.
How do you minimize handoff errors?
If handoff errors cannot be fully prevented how then do you minimize them?
- Minimize translation handoffs: As covered in previous posts use of models enable handoffs between roles using a single source of truth.
- Build verification activities into translation handoffs: Verification of the design intent between transformative handoffs. Use of test suites and verifying against requirements. (Note: this requires that the requires are written in a clear fashion)
Note: Regression testing can be used for update handoffs.
- Minimize hands offs: Through the use of models the total number of handoffs in the development process can be reduced.
- Stress clarity in communication: Clear communication begins with well-written requirement documents and continues with documented models. Send engineers to classes on requirements writing and reading, enforce coding standards that promote understandable models.
Communication errors will occur during the design process; our objective is to minimize them. They range from famous, like the Mars orbiter metric/English crash to the more prosaic, like recipes that write “salt to taste” (2) in giving a recipe. By stressing the 4 ways to minimize handoff errors the total development time and costs can be minimized.
- Non-transformative hand offs include things such as design reviews or migration of code into a compiler chain.
- The problem with “salt-to-taste” is that many modern cooks avoid the use of salt and, as a result, end up with bland food.