/**
 * Copyright (c) 2017 CEA LIST.
 * 
 *  All rights reserved. This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License v1.0
 *  which accompanies this distribution, and is available at
 *  http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *   S�bastien Gerard (CEA LIST) <sebastien.gerard@cea.fr> - Initial API and implementation
 *   Yupanqui Munoz Julho (CEA LIST) <yupanqui.munozjulho@cea.fr> - Initial API and implementation
 * 
 */
package org.eclipse.papyrus.requirements.sysml14.papyrusre.requirementgenericcharacteristics;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Requirement</b></em>'.
 * <!-- end-user-doc -->
 *
 *
 * @see org.eclipse.papyrus.requirements.sysml14.papyrusre.requirementgenericcharacteristics.RequirementGenericCharacteristicsPackage#getRequirement()
 * @model
 * @generated
 */
public interface Requirement extends AgreementStatusReqCharac, ImportanceReqCharac, org.eclipse.papyrus.sysml14.requirements.Requirement, VerifierNameReqCharac, AbstractionLevelReqCharac, ApprovalAuthorityReqCharac, LifeCyclePhaseReqCharac, MaturityReqCharac, OwnerReqCharac, PriorityReqCharac, QualificationStatusReqCharac, QualityNatureReqCharac, ReviewStatusReqCharac, SatifiactionStatusReqCharac, SourceReqCharac, ValidatorNameReqCharac {

} // Requirement
