|  |
New Use-Case Only
- Uses characteristics already in place.
- Most common in-field enhancement.
- Has cross-cutting cutting concerns from user to branches.
- Moderate code inflation.
- Division around new use-case is most efficient but may unbalance tree.
- Division through new use-case causes high data/control interaction.
Examples:
- Moving/adapting system based on load and bandwidth.
|
New Use-Cases w/ New Characteristics
- Adding/removing new characteristics with use-case support.
- Most common product-line enhancement.
- Has cross-cutting concerns from user to program leaves.
- Most code inflation.
- Division around new use-case is most efficient but may unbalance tree.
- Division through new use-case causes high data/control interaction.
- Division must be around new devices.
- Division through new non-devices may show little ROI if tightly integrated.
Examples:
- Adding GPS to a system: devices in one release and decoding in another.
- Adding an enhanced user interfacer to one release and support algorithms to another.
- Adding echolocation to a system with scattered sensors and triangulators.
|
 |
No New Features
- Division around use-case is most efficient but may unbalance tree.
- Division through use-case causes high data/control interaction.
- Division must be around devices.
- Division through non-devices may show little ROI if tightly integrated.
Examples:
- Auto-componentization of OpenOffice use-cases, e.g., “print document”.
- Distribution of motes' sensors in a sensory network.
- Redundant systems for unreliable or CMM-5 systems.
|
New Characteristics Only
- Similar devices already exist, use-case support exists.
- Least common enhancement due to in-field logistics.
- Few (if any) cross-cutting concerns from leaves to branches.
- Typically least code inflation.
- Division must be around new devices.
- Division through new non-devices may show little ROI if tightly integrated.
Examples:
- Grouping and varying watering zones in a sprinkler system.
- Grouping and number of sensors (light, radio, etc.) on a mote ["specialization"].
- Placing encrypt() and decrypt() on different, collaborating releases.
|