Concepts: Hierarchical Product Lines

Organizations, even small ones, often have separate divisions at work to support their product line. Large organizations almost certainly do. These divisions may be geographically or organizationally isolated from each other. In this case, it is impractical to expect everyone to work on the same feature model, the same set of shared assets, and so forth.

Certainly having one global collection of feature declarations for an entire production line is impractical when features may number in the hundreds or even thousands. Large feature sets engender intractable and incomprehensible combinatorics. Subsystem engineers have no interest or need to see all of the feature diversity in other subsystems. For example, engineers for an automotive transmission system do not need to see feature abstractions that capture the diversity in the entertainment or GPS navigation system. It makes no sense to commingle them.

A hierarchical production line constitutes an architecture-like construct, in that there are interfaces and relationships among the nested product lines.

It makes much more sense to modularize the feature model in a way that corresponds to the organizational structure of the enterprise. Although these structures can change over time, they make an excellent starting point and let the organization begin to adopt PLE using familiar units.

For example, an automotive vehicle is composed from combinations of dozens of subsystems, all the way from the engine and transmission down to the subsystems that defog the mirrors and heat the driver's seat. Each of these subsystems has features of its own, which allow a vehicle team to pick and choose in order to define a car. In this way, an automobile (like many complex systems in product lines) is more like a system of systems, which is managed as a product-line-of-product-lines.

Each of these units represents a domain, by which we mean a body of knowledge. These pockets of deep knowledge are often part of the fabric of the company. In a PLE context, that specialized knowledge becomes knowledge about the feature variations that are possible, and the result is a number of product lines that each contribute instances to the overall product. At every level, the same small and elegant set of concepts work to capture the inherent variation. This lets engineers work largely independently within the confines of their own organizational units and domain expertise.

A hierarchical production line constitutes an architecture-like construct, in that there are interfaces and relationships among the nested product lines. There is the parent-child relationship for product lines that typically mirrors the system-subsystem decomposition in the vehicle architecture. Product line features can be partitioned, encapsulated, and scoped within the primary subsystems that realize the features. Features can also be shared among product lines by establishing an import relationship, which is crucial for establishing feature constraints and asset variation points among interrelated subsystems (e.g., a high-end flavor of cruise control that slows the car if there's traffic ahead requires a flavor of the braking system that supports braking via software command).