Patent ID: 8904349

Claim:
A method for selectively applying overrides to values defined in a version of a component, comprising: obtaining a specification of the component, the specification defining a plurality of properties of the component and for each of the plurality of properties, a corresponding value; defining a variation of the component as being derived from and inheriting through the component, the variation comprising, for each of a first subset of the plurality of properties of the component, an override to the corresponding value thereof; upon a reuse of the component that creates a new version thereof, defining the new version as derived from the variation, wherein the new version comprises, for each of a second subset of the plurality of properties of the component, an override to the corresponding value thereof, wherein the corresponding value of at least one of the plurality of properties of the component is overridden in both the first subset and the second subset; and determining resulting values of the plurality of properties in the new version by selectively applying the overrides, further comprising: for each property not in the first subset or the second subset, determining the resulting value as the value defined in the component specification; for each property in the second subset, determining the resulting value as the overridden value defined in the new version; and for each property in the first subset but not in the second subset, recursively searching each ancestor in an inheritance chain in which the component is an ancestor of the variation and of the new version until locating a specified value for the property, wherein: the variation occurs in the inheritance chain as an ancestor of the new version if the variation is turned on, thereby determining the resulting value as the overridden value defined in the variation; and the variation does not occur in the inheritance chain as the ancestor of the new version if the variation is turned off, thereby determining the resulting value as the value defined in the component specification.