Assets are the "soft" artifacts associated with engineering lifecycle of the products, the building blocks of the products in the product line. Assets can be whatever artifacts are representable with software and either compose a product or support the engineering process to create a product. These can include, but are not limited to the following:
As you can see, some assets are delivered with the product (for example, user documentation) while other assets remain behind in the factory.
In Product Line Engineering (PLE), assets are engineered to be shared across the product line. Assets are designed to include built-in variation points, which are places in the asset that change depending on the product in which the asset is used.
When a product is built, a statement of the product's distinguishing characteristics is applied to "exercise" these variation points (that is, cause the change in the asset to occur to meet the needs of the product).
Variation points use variation mechanisms to impart product line diversity. In early generation approaches, these mechanisms have been specific to each kind of asset and have included macro's in code, substituting one variant of the artifact for another; runtime conditionals and configuration files; attributes and filters; model and text transformations; feature mappings, parameterization, and many more. Second Generation PLE emphasizes the use of a small, unified set of variation mechanisms that work for all of the assets.