/**
 * <copyright>
 * </copyright>
 *
 * $Id: ReusableAsset.java,v 1.1 2008/01/15 08:52:07 jtham Exp $
 */
package org.eclipse.epf.xml.uma;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Reusable Asset</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * A specific type of guidance that provides a solution to a problem for a given context. The asset may have a variability point, which is a location in the asset that may have a value provided or customized by the asset consumer. The asset has rules for usage which are the instructions describing
 * how the asset should be used.
 * <!-- end-model-doc -->
 *
 *
 * @see org.eclipse.epf.xml.uma.UmaPackage#getReusableAsset()
 * @model extendedMetaData="name='ReusableAsset' kind='elementOnly'"
 * @generated
 */
public interface ReusableAsset extends Guidance {
} // ReusableAsset