package VehicleRequirementDerivation {
private import RequirementDerivation::*;
part vehicle {
attribute mass :> ISQ::mass;
part chassis {
attribute mass :> ISQ::mass;
}
part engine {
attribute mass :> ISQ::mass;
}
}
requirement def MassRequirement {
subject mass :> ISQ::mass;
attribute massLimit :> ISQ::mass;
require constraint { mass <= massLimit }
}
requirement vehicleMassRequirement : MassRequirement {
subject :>> mass = vehicle.mass;
}
requirement chassisMassRequirement : MassRequirement {
subject :>> mass = vehicle.chassis.mass;
}
requirement engineMassRequirement : MassRequirement {
subject :>> mass = vehicle.engine.mass;
}
#derivation connection {
end #original ::> vehicleMassRequirement;
end #derive ::> chassisMassRequirement;
end #derive ::> engineMassRequirement;
}
}