Wednesday, March 5, 2014

Rage Dictionary: tracking development

Tracking development is a special case of recurring engineering in which the integration of an outside (typically third-party) application or code base comonent requires non-trivial revision in a glue layer or the component code itself every time the foreign component is revised.  It should be avoided for several reasons.
  • Recurring engineering generally exceeds the one-time cost of proper up-front design over the life of the product.
  • It complicates component upgrades and reduces the incentive to stay current.
  • Pollution of third-party code bases may introduce defects for which the third-party vendor's test program has no test.
  • It is a common omission in workflow when a project is transfered among developers.
  • End users who know the component is included may be surprised when it behaves different from how they expect.
Tracking development is not merely coping with changes introduced in newer versions of a foreign component.  That is ordinary software refreshment and occurs on an ad hoc basis according to the component's development plan.  Instead, tracking development denotes modifications made to the foreign component itself for inter-operation with the host system, such as adding local options to a configuration file by means of modifying the parsing function.  These modifications must be repeated for every release of the component.

Techniques for avoiding the burden of tracking development include (in order of preference)
  1. Careful selection of the foreign component, and limiting interaction with it to its documented out-of-the-box behavior.
  2. Collaboration with the component vendor to support the needed interaction.
  3. Wrappers and glue layers that translate between the component's out-of-the-box behavior and the needed behavior.
  4. Expression code-level modifications as patch(1) files.

No comments:

Post a Comment