diff --git a/models/example_EveOnlineMiningFrigate/DomainModel/AnalysisProblemSpace.sysml b/models/example_EveOnlineMiningFrigate/DomainModel/AnalysisProblemSpace.sysml index 72807b2..c234bf1 100644 --- a/models/example_EveOnlineMiningFrigate/DomainModel/AnalysisProblemSpace.sysml +++ b/models/example_EveOnlineMiningFrigate/DomainModel/AnalysisProblemSpace.sysml @@ -11,7 +11,7 @@ package analysisProblemSpace { // **General Analysis Definition: Risk-Adjusted Profitability Calculation** analysis def RiskAdjustedProfitability { - subject miningcorporation : MiningCorporation; + subject miningcorporation : Domain::MiningCorporation; objective { doc /* Evaluates profitability across different security zones (High Sec, Low Sec, Null Sec) @@ -112,7 +112,7 @@ package analysisProblemSpace { in operationalCosts = 200000.0; // ISK/hour (high cost due to logistics, security) in survivalProbability = 50.0; // Very high risk, frequent losses } - part analysisMiningCorporation : MiningCorporation ; + part analysisMiningCorporation : Domain::MiningCorporation ; satisfy BUS01_1 by analysisMiningCorporation; } diff --git a/models/example_EveOnlineMiningFrigate/DomainModel/BusinessCaseOpsCon.sysml b/models/example_EveOnlineMiningFrigate/DomainModel/BusinessCaseOpsCon.sysml index f028e18..889f66a 100644 --- a/models/example_EveOnlineMiningFrigate/DomainModel/BusinessCaseOpsCon.sysml +++ b/models/example_EveOnlineMiningFrigate/DomainModel/BusinessCaseOpsCon.sysml @@ -44,14 +44,14 @@ package BusinessRequirements { doc /* The mining organization shall guarantee a profitability of 25.000 ISK/hour in order to provide * suficcient incentive to pilots to work for the corporation. */ - subject miningFCorporation : MiningCorporation; + subject miningFCorporation : Domain::MiningCorporation; attribute profitability : Real; require constraint { profitability >= 25000 } frame concern ProfitabilityConcern; } requirement profitabilityRequirement : ProfitabilityRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> profitability = miningCorporation.minimumProfit ; } } \ No newline at end of file diff --git a/models/example_EveOnlineMiningFrigate/DomainModel/Concerns.sysml b/models/example_EveOnlineMiningFrigate/DomainModel/Concerns.sysml index 2e6166b..206c315 100644 --- a/models/example_EveOnlineMiningFrigate/DomainModel/Concerns.sysml +++ b/models/example_EveOnlineMiningFrigate/DomainModel/Concerns.sysml @@ -37,7 +37,7 @@ package StakeholderConcerns { // Concerns Derived from the Business Case concern def ProfitabilityConcern { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; require constraint { doc /* The Mining Corporation shall ensure that mining operations generate sufficient ISK/hour @@ -48,7 +48,7 @@ package StakeholderConcerns { } concern def OperationalCostsConcern { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; require constraint { doc /* The Mining Corporation shall minimize operational costs (e.g., ship replacements, @@ -59,7 +59,7 @@ package StakeholderConcerns { } concern def ScalabilityConcern { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; assume constraint { doc /* The Mining Corporation assumes that mining operations can scale effectively with @@ -70,7 +70,7 @@ package StakeholderConcerns { } concern def MarketResponsivenessConcern { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; require constraint { doc /* The Mining Corporation shall adapt mining operations to fluctuating market demands @@ -83,7 +83,7 @@ package StakeholderConcerns { // Concerns Derived from the ConOps concern def SecurityConcern { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; require constraint { doc /* The Mining Frigate shall ensure safety and survivability in hostile environments @@ -95,7 +95,7 @@ package StakeholderConcerns { } concern def ResourceAvailabilityConcern { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; require constraint { doc /* The Mining Corporation shall ensure sufficient access to high-value asteroids, @@ -106,7 +106,7 @@ package StakeholderConcerns { } concern def DeploymentEfficiencyConcern { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; require constraint { doc /* The Mining Frigate shall ensure rapid and efficient movement between resource @@ -117,7 +117,7 @@ package StakeholderConcerns { } concern def ThreatNeutralizationConcern { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; require constraint { doc /* The Mining Frigate shall mitigate risks from NPC pirates and hostile players @@ -131,7 +131,7 @@ package StakeholderConcerns { // Concerns Derived from the MoEs concern def TotalProfitabilityConcern { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; require constraint { doc /* The Mining Corporation shall maximize the total ISK/hour generated from mining @@ -142,7 +142,7 @@ package StakeholderConcerns { } concern def OreYieldConcern { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; require constraint { doc /* The Mining Frigate shall maximize ore yield per frigate or fleet while avoiding @@ -153,7 +153,7 @@ package StakeholderConcerns { } concern def SurvivabilityConcern { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; require constraint { doc /* The Mining Frigate shall ensure high survivability in hostile or dangerous environments. */ @@ -164,7 +164,7 @@ package StakeholderConcerns { } concern def FleetDeploymentEfficiencyConcern { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; require constraint { doc /* The Mining Corporation shall ensure optimal fleet deployment to maximize ore extraction @@ -176,7 +176,7 @@ package StakeholderConcerns { } concern def OreDeliveryEfficiencyConcern { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; require constraint { doc /* The Mining Frigate shall ensure fast and efficient transport of mined ore to stations @@ -187,7 +187,7 @@ package StakeholderConcerns { } concern def RiskAdjustedProfitabilityConcern { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; require constraint { doc /* The Mining Corporation shall balance profitability with the risks of operating in diff --git a/models/example_EveOnlineMiningFrigate/DomainModel/Domain.sysml b/models/example_EveOnlineMiningFrigate/DomainModel/Domain.sysml index ae9e243..b3c8610 100644 --- a/models/example_EveOnlineMiningFrigate/DomainModel/Domain.sysml +++ b/models/example_EveOnlineMiningFrigate/DomainModel/Domain.sysml @@ -127,8 +127,8 @@ package Domain { } // % //exhibits a predefined state - part miningFrigate : MiningFrigate [1..*] { - exhibit miningFrigatesStates { + part miningFrigate : MiningFrigate::MiningFrigate [1..*] { + exhibit MiningFrigate::miningFrigatesStates { in miningFrigates = miningFrigate; } // Cause and Effect Occurrences @@ -299,7 +299,7 @@ package Domain { interface def PowerDockIF { end shipDockingPort : DockingPort; end stationDockingPort : ~DockingPort; - flow of Power from stationDockingPort.power to shipDockingPort.power; + flow of Power from stationDockingPort.charge to shipDockingPort.charge; flow of CargoContainer from shipDockingPort.cargo to stationDockingPort.cargo; } interface def AsteroidOreIF { diff --git a/models/example_EveOnlineMiningFrigate/DomainModel/MiningCorporationRequirementsDecl.sysml b/models/example_EveOnlineMiningFrigate/DomainModel/MiningCorporationRequirementsDecl.sysml index a12d20b..ac4dc73 100644 --- a/models/example_EveOnlineMiningFrigate/DomainModel/MiningCorporationRequirementsDecl.sysml +++ b/models/example_EveOnlineMiningFrigate/DomainModel/MiningCorporationRequirementsDecl.sysml @@ -6,62 +6,62 @@ package MiningCorporationRequirementsDecl { // **Mining Corporation Requirement Declarations** requirement profitabilityRequirement : ProfitabilityRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> minimumProfit = miningCorporation.minimumProfit; } requirement fleetUtilizationRequirement : FleetUtilizationRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> fleetUtilization = miningCorporation.fleetUtilization; } requirement oreExtractionRequirement : OreExtractionRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> oreExtractionRate = miningCorporation.oreExtractionEfficiency; } requirement oreDeliveryEfficiencyRequirement : OreDeliveryEfficiencyRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> oreDeliveryTime = miningCorporation.oreDeliveryEfficiency; } requirement storageCapacityRequirement : StorageCapacityRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> oreStorageCapacity = miningCorporation.storageCapacityUtilization; } requirement fleetSizeRequirement : FleetSizeRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> fleetSize = miningCorporation.fleetSizeEffectiveness; } requirement defenseCapabilityRequirement : DefenseCapabilityRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> securityEscortCoverage = miningCorporation.securityCoverageEffectiveness; } requirement threatResponseTimeRequirement : ThreatResponseTimeRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> threatResponseTime = miningCorporation.threatResponseEffectiveness; } requirement operationalUptimeRequirement : OperationalUptimeRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> operationalUptime = miningCorporation.operationalUptime; } requirement deploymentEfficiencyRequirement : DeploymentEfficiencyRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> deploymentEfficiency = miningCorporation.deploymentEfficiency; } requirement operationalCostControlRequirement : OperationalCostControlRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> operationalCosts = miningCorporation.costEfficiency; } requirement marketAdaptabilityRequirement : MarketAdaptabilityRequirement { - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute :>> marketAdaptability = miningCorporation.marketAdaptability; } } diff --git a/models/example_EveOnlineMiningFrigate/DomainModel/MiningCorporationRequirementsDef.sysml b/models/example_EveOnlineMiningFrigate/DomainModel/MiningCorporationRequirementsDef.sysml index 82e6e40..a153493 100644 --- a/models/example_EveOnlineMiningFrigate/DomainModel/MiningCorporationRequirementsDef.sysml +++ b/models/example_EveOnlineMiningFrigate/DomainModel/MiningCorporationRequirementsDef.sysml @@ -8,7 +8,7 @@ package MiningCorporationRequirementsDef { requirement def ProfitabilityRequirement { doc /* The mining corporation shall maintain an average profitability of at least 500M ISK per operational cycle, considering ore market value, operational costs, and risk-adjusted returns. */ - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute minimumProfit : Real; require constraint { minimumProfit >= 500000000.0 } // ISK @@ -18,7 +18,7 @@ package MiningCorporationRequirementsDef { requirement def FleetUtilizationRequirement { doc /* The mining corporation shall maintain a fleet utilization rate of at least 80% to ensure high operational efficiency. */ - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute fleetUtilization : Real; require constraint { fleetUtilization >= 80.0 } // % @@ -28,7 +28,7 @@ package MiningCorporationRequirementsDef { // **Resource Extraction and Logistics Requirements** requirement def OreExtractionRequirement { doc /* The mining corporation shall extract at least 1,000,000 m³ of ore per operational cycle. */ - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute oreExtractionRate : Real; require constraint { oreExtractionRate >= 1000000.0 } // m³/cycle @@ -37,7 +37,7 @@ package MiningCorporationRequirementsDef { requirement def OreDeliveryEfficiencyRequirement { doc /* The mining corporation shall ensure an average ore delivery time of no more than 30 minutes per batch. */ - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute oreDeliveryTime : Real; require constraint { oreDeliveryTime <= 1800.0 } // seconds @@ -46,7 +46,7 @@ package MiningCorporationRequirementsDef { requirement def StorageCapacityRequirement { doc /* The mining corporation shall maintain a minimum ore storage capacity of 10,000,000 m³ to accommodate mining operations. */ - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute oreStorageCapacity : Real; require constraint { oreStorageCapacity >= 10000000.0 } // m³ @@ -56,7 +56,7 @@ package MiningCorporationRequirementsDef { // **Fleet and Security Requirements** requirement def FleetSizeRequirement { doc /* The mining corporation shall operate a fleet of at least 10 mining frigates per operational cycle. */ - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute fleetSize : Integer; require constraint { fleetSize >= 10 } @@ -65,7 +65,7 @@ package MiningCorporationRequirementsDef { requirement def DefenseCapabilityRequirement { doc /* The mining corporation shall ensure that at least 30% of mining operations have security escort coverage in Low Sec and Null Sec. */ - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute securityEscortCoverage : Real; require constraint { securityEscortCoverage >= 30.0 } // % @@ -74,7 +74,7 @@ package MiningCorporationRequirementsDef { requirement def ThreatResponseTimeRequirement { doc /* The mining corporation shall ensure that threat response time does not exceed 60 seconds in Low Sec and Null Sec. */ - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute threatResponseTime : Real; require constraint { threatResponseTime <= 60.0 } // seconds @@ -84,7 +84,7 @@ package MiningCorporationRequirementsDef { // **Operational Uptime and Efficiency** requirement def OperationalUptimeRequirement { doc /* The mining corporation shall maintain an operational uptime of at least 85% per cycle. */ - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute operationalUptime : Real; require constraint { operationalUptime >= 85.0 } // % @@ -93,7 +93,7 @@ package MiningCorporationRequirementsDef { requirement def DeploymentEfficiencyRequirement { doc /* The mining corporation shall ensure that at least 90% of planned mining deployments are executed successfully. */ - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute deploymentEfficiency : Real; require constraint { deploymentEfficiency >= 90.0 } // % @@ -102,7 +102,7 @@ package MiningCorporationRequirementsDef { requirement def OperationalCostControlRequirement { doc /* The mining corporation shall minimize operational costs to improve long-term profitability. */ - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute operationalCosts : Real; require constraint { operationalCosts <= 2000000000.0 } // ISK per month @@ -111,7 +111,7 @@ package MiningCorporationRequirementsDef { requirement def MarketAdaptabilityRequirement { doc /* The mining corporation shall adapt its mining operations based on fluctuating ore prices. */ - subject miningCorporation : MiningCorporation; + subject miningCorporation : Domain::MiningCorporation; attribute marketAdaptability : Real; require constraint { marketAdaptability >= 75.0 } // % diff --git a/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigate.sysml b/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigate.sysml index 4b8c599..b45255c 100644 --- a/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigate.sysml +++ b/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigate.sysml @@ -7,7 +7,7 @@ private import OperationalUseCaseActions::*; private import Domain::*; - part def MiningFrigate :> Spaceship { + part def MiningFrigate :> Domain::Spaceship { attribute miningRate : Real; // Volume of ore mined per second (m³/s) attribute droneCapacity : Integer; // Number, the maximum number of drones deployable (STRQ04) @@ -25,19 +25,19 @@ part oreHoldExpander: OreHoldExpander [0..2]; // Optional cargo expander module part capacitorBooster: CapacitorBooster [0..1]; // Configurable capacitor booster part defenseTurret: DefenseTurret [0..*]; // Optional defense modules - ref part cargo : CargoContainer [0..*]; - ref part charge : Power; - ref part drone : Drone [0..5]; + ref part cargo : Domain::CargoContainer [0..*]; + ref part charge : Domain::Power; + ref part drone : Domain::Drone [0..5]; - port controlPort : ~PodPort; - port dockingPort : ~DockingPort; - port DefensePort : ~ThreatPort; - port asteroidOrePort : ~AsteroidOrePort; - port droneControlPort: ~DroneControllerPort; + port controlPort : ~Domain::PodPort; + port dockingPort : ~Domain::DockingPort; + port DefensePort : ~Domain::ThreatPort; + port asteroidOrePort : ~Domain::AsteroidOrePort; + port droneControlPort: ~Domain::DroneControllerPort; //actions declaration action activateMiningLaser : ActivateMiningLaser { - } + } } // State Definition for the Mining Frigate @@ -65,19 +65,19 @@ transition docked_to_inGrid first Docked - accept pilotPodUndockCommand : ShipCommand via miningFrigates.controlPort + accept pilotPodUndockCommand : Domain::ShipCommand via miningFrigates.controlPort do action undockFromStation : UndockFromStation {in undockCommand = pilotPodUndockCommand;} then InGrid; transition inGrid_to_docked first InGrid - accept pilotPodDockCommand : ShipCommand via miningFrigates.controlPort + accept pilotPodDockCommand : Domain::ShipCommand via miningFrigates.controlPort do action dockToStation : DockToStation {in dockCommand = pilotPodDockCommand;} then Docked; transition inGrid_to_onWarp first InGrid - accept warpCommand : ShipCommand via miningFrigates.controlPort + accept warpCommand : Domain::ShipCommand via miningFrigates.controlPort do action executeWarpDrive : ExecuteWarpDrive then OnWarp; @@ -89,79 +89,79 @@ //Internal transitions transition unloadCargo first Docked - accept unloadCommand : ShipCommand via miningFrigates.controlPort + accept unloadCommand : Domain::ShipCommand via miningFrigates.controlPort do action transferOre : TransferOre then Docked; transition cycleMining first InGrid - accept miningCommand : ShipCommand via miningFrigates.controlPort + accept miningCommand : Domain::ShipCommand via miningFrigates.controlPort do action activateMiningLaser : ActivateMiningLaser then InGrid; transition scanThreats first InGrid - accept scanCommand : ShipCommand via miningFrigates.controlPort + accept scanCommand : Domain::ShipCommand via miningFrigates.controlPort do action scanForThreats : ScanForThreats then InGrid; transition prioritizeThreat first InGrid - accept threatSignature : ScanSignature via miningFrigates.controlPort + accept threatSignature : Domain::ScanSignature via miningFrigates.controlPort do action prioritizeThreats : PrioritizeThreats then InGrid; transition deployDrones first InGrid - accept droneCommand : ShipCommand via miningFrigates.controlPort + accept droneCommand : Domain::ShipCommand via miningFrigates.controlPort do action selectDronesForDeployment : SelectDronesForDeployment then InGrid; transition navigation first InGrid - accept destinationCommand : ShipCommand via miningFrigates.controlPort + accept destinationCommand : Domain::ShipCommand via miningFrigates.controlPort do action acceptDestination : AcceptDestination then InGrid; transition coursePlot first InGrid - accept courseCommand : ShipCommand via miningFrigates.controlPort + accept courseCommand : Domain::ShipCommand via miningFrigates.controlPort do action plotOptimalCourse : PlotOptimalCourse then InGrid; transition engagePropulsion first InGrid - accept propulsionCommand : ShipCommand via miningFrigates.controlPort + accept propulsionCommand : Domain::ShipCommand via miningFrigates.controlPort do action engagePropulsion : EngagePropulsion then InGrid; transition adjustCourse first InGrid - accept courseCorrection : ShipCommand via miningFrigates.controlPort + accept courseCorrection : Domain::ShipCommand via miningFrigates.controlPort do action monitorAndAdjustCourse : MonitorAndAdjustCourse then InGrid; transition cargoVerification first Docked - accept warehouseStatusCommand : StationCommand via miningFrigates.controlPort + accept warehouseStatusCommand : Domain::StationCommand via miningFrigates.controlPort do action verifyCargoTransfer : VerifyCargoTransfer then Docked; transition detectThreat first InGrid - accept threatScanCommand : ShipCommand via miningFrigates.controlPort + accept threatScanCommand : Domain::ShipCommand via miningFrigates.controlPort do action detectThreat : DetectThreat then InGrid; transition engageDefense first InGrid - accept defenseCommand : ShipCommand via miningFrigates.controlPort + accept defenseCommand : Domain::ShipCommand via miningFrigates.controlPort do action engageDefenses : EngageDefenses then InGrid; transition resupply first Docked - accept shipStatusCommand : ShipCommand via miningFrigates.controlPort + accept shipStatusCommand : Domain::ShipCommand via miningFrigates.controlPort do action verifyResupply : VerifyResupply then Docked; } diff --git a/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigateRequirements.sysml b/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigateRequirements.sysml index d08bfcd..cca4d3f 100644 --- a/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigateRequirements.sysml +++ b/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigateRequirements.sysml @@ -7,54 +7,54 @@ package MiningFrigateRequirements { //Mining Frigate Requirement assertions for the Mining Frigates requirement oreExtractionEfficiencyRequirementLowSec : OreExtractionEfficiencyRequirement { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute :>> miningRateLS = miningFrigate.miningRate ; } requirement cargoCapacityRequirementLowSec : CargoCapacityRequirement { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute :>> cargoCapacity = miningFrigate.cargoCapacity ; } requirement survivabilityRequirementLowSec : SurvivabilityRequirement { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute :>> shieldStrengthLS = miningFrigate.shieldModule.shieldStrength ; } requirement droneOperationsRequirementLowSec : DroneOperationsRequirement { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute :>> droneCapacity = miningFrigate.droneCapacity ; } requirement threatDetectionRequirementLowSec : ThreatDetectionRequirement { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute :>> threatDetectionRange = miningFrigate.threatDetectionRange ; } requirement travelEfficiencyRequirementLowSec : TravelEfficiencyRequirement { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute :>> warpSpeed = miningFrigate.warpSpeed ; attribute :>> alignTime = miningFrigate.alignTime ; } requirement miningTargetRequirementLowSec : MiningTargetRequirement { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute :>> lockedTargets = miningFrigate.lockedTargets ; } requirement dockingRequirementLowSec : DockingRequirement { - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute :>> dockingTime = miningFrigate.dockingTime ; } //Stakeholder Requirement assertions for the Mining Corporation requirement fleetCoordinationRequirementLowSec : FleetCoordinationRequirement { - subject fleetCommander : PilotPod; + subject fleetCommander : Domain::PilotPod; attribute :>> fleetSize = fleetCommander.fleetSize ; } requirement oreCompressionRequirement : OreCompressionRequirement { - subject rorqual : Rorqual; + subject rorqual : Domain::Rorqual; attribute :>> compressionFactor = rorqual.oreCompressionUnit.compressionFactor ; } } \ No newline at end of file diff --git a/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigateRequirementsDef.sysml b/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigateRequirementsDef.sysml index b081d41..e184bbf 100644 --- a/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigateRequirementsDef.sysml +++ b/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigateRequirementsDef.sysml @@ -9,7 +9,7 @@ package MiningFrigateRequirementsDef { requirement def OreExtractionEfficiencyRequirement { doc /* The Mining Frigate shall extract ore at a minimum rate of 20 m³/minute in High Sec and 50 m³/minute in Low Sec, Null Sec, and Wormhole operations. */ - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute miningRateLS : Real; require constraint { miningRateLS >= 50.0 } // Low Sec, Null Sec, Wormhole (m³/min) @@ -18,7 +18,7 @@ package MiningFrigateRequirementsDef { requirement def CargoCapacityRequirement { doc /* The Mining Frigate shall have a cargo capacity of at least 5,000 m³ (expandable by modules). */ - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute cargoCapacity : Real; require constraint { cargoCapacity >= 5000.0 } // m³ @@ -28,7 +28,7 @@ package MiningFrigateRequirementsDef { requirement def SurvivabilityRequirement { doc /* The Mining Frigate shall withstand at least 200 DPS in High Sec and 400 DPS in Low Sec, Null Sec, and Wormhole operations. */ - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute shieldStrengthHS : Real; attribute shieldStrengthLS : Real; require constraint { shieldStrengthHS >= 200.0 } // High Sec (DPS) @@ -41,7 +41,7 @@ package MiningFrigateRequirementsDef { requirement def DroneOperationsRequirement { doc /* The Mining Frigate shall support the deployment of at least 5 drones for mining and combat operations. */ - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute droneCapacity : Real; require constraint { droneCapacity >= 5 } // Minimum number of drones @@ -51,7 +51,7 @@ package MiningFrigateRequirementsDef { requirement def ThreatDetectionRequirement { doc /* The Mining Frigate shall detect incoming threats within a range of 20 AU. */ - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute threatDetectionRange : Real; require constraint { threatDetectionRange >= 20.0 } // AU @@ -62,7 +62,7 @@ package MiningFrigateRequirementsDef { requirement def TravelEfficiencyRequirement { doc /* The Mining Frigate shall have a warp speed of at least 5 AU/second and an align time of less than 3 seconds. */ - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute warpSpeed: Real; attribute alignTime: Real; require constraint { warpSpeed >= 5.0 } // Warp speed (AU/second) @@ -73,7 +73,7 @@ package MiningFrigateRequirementsDef { requirement def MiningTargetRequirement { doc /* The Mining Frigate shall lock and mine up to 3 asteroid targets simultaneously. */ - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute lockedTargets : Real; require constraint { lockedTargets <= 3 } // Maximum asteroid targets @@ -82,7 +82,7 @@ package MiningFrigateRequirementsDef { requirement def DockingRequirement { doc /* The Mining Frigate shall dock and offload ore at stations or POS within 1 minute. */ - subject miningFrigate : MiningFrigate; + subject miningFrigate : MiningFrigate::MiningFrigate; attribute dockingTime : Real; require constraint { dockingTime <= 60.0 } // Seconds @@ -91,7 +91,7 @@ package MiningFrigateRequirementsDef { requirement def FleetCoordinationRequirement { doc /* The Fleet Commander shall coordinate mining fleets of up to 10 frigates. */ - subject fleetCommander : PilotPod; + subject fleetCommander : Domain::PilotPod; attribute fleetSize : Real; require constraint { fleetSize <= 10 } // Maximum fleet size @@ -101,7 +101,7 @@ package MiningFrigateRequirementsDef { requirement def OreCompressionRequirement { doc /* The Rorqual shall support onboard ore compression to reduce ore volume by a factor of 10. */ - subject rorqual : Rorqual; + subject rorqual : Domain::Rorqual; attribute compressionFactor : Real; require constraint { compressionFactor == 10.0 } // Compression factor diff --git a/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigateVerificationCases.sysml b/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigateVerificationCases.sysml index ba15f6a..496e679 100644 --- a/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigateVerificationCases.sysml +++ b/models/example_EveOnlineMiningFrigate/DomainModel/MiningFrigateVerificationCases.sysml @@ -15,7 +15,7 @@ package MiningFrigateRequirementsVerification { // Definition of a test rig that includes all necessary verification parts //Verification actions are assigned to the parts of the verification domain part def MiningFrigateTestRig { - part testMiningFrigate : MiningFrigate; + part testMiningFrigate : MiningFrigate::MiningFrigate; part testEngineer : ShipEngineer; part testEnvironment : TestEnvironment; part dataLogger : DataLogger; @@ -38,7 +38,7 @@ package MiningFrigateRequirementsVerification { doc /* The ShipEngieer is both a stakeholder and an actor in the verification domain */ } - part miningFrigateDUT : MiningFrigate { + part miningFrigateDUT : MiningFrigate::MiningFrigate { doc /* The miningFrigateDUT is a test unit */ perform action collectData; perform action deployDrones; @@ -65,7 +65,7 @@ package MiningFrigateRequirementsVerification { // Verification definitions // Verification Definition for Ore Extraction Efficiency verification def OreExtractionEfficiencyTest { - subject testMiningFrigate : MiningFrigate; + subject testMiningFrigate : MiningFrigate::MiningFrigate; objective oreExtractionEfficiencyVerification { // The subject of the verify is automatically bound to "testMiningFrigate". @@ -76,7 +76,7 @@ package MiningFrigateRequirementsVerification { } action collectData { - in part testMiningFrigate : MiningFrigate = OreExtractionEfficiencyTest::testMiningFrigate; + in part testMiningFrigate : MiningFrigate::MiningFrigate = OreExtractionEfficiencyTest::testMiningFrigate; out miningRateMeasuredHS : Real ; // High Sec (m³/min) out miningRateMeasuredLS : Real; // Low Sec, Null Sec, Wormholes } @@ -95,7 +95,7 @@ package MiningFrigateRequirementsVerification { // Verification Definition for Cargo Capacity verification def CargoCapacityTest { - subject testMiningFrigate : MiningFrigate; + subject testMiningFrigate : MiningFrigate::MiningFrigate; objective cargoCapacityVerification { // The subject of the verify is automatically bound to "testMiningFrigate". @@ -107,7 +107,7 @@ package MiningFrigateRequirementsVerification { } action collectData { - in part testMiningFrigate : MiningFrigate = CargoCapacityTest::testMiningFrigate; + in part testMiningFrigate : MiningFrigate::MiningFrigate = CargoCapacityTest::testMiningFrigate; out cargoCapacityMeasured : Real; } @@ -125,7 +125,7 @@ package MiningFrigateRequirementsVerification { // Verification Definition for Survivability verification def SurvivabilityTest { - subject testMiningFrigate : MiningFrigate; + subject testMiningFrigate : MiningFrigate::MiningFrigate; objective survivabilityVerification { // The subject of the verify is automatically bound to "testMiningFrigate". @@ -137,12 +137,12 @@ package MiningFrigateRequirementsVerification { } action simulateHighSecAttack { - in part testMiningFrigate : MiningFrigate = SurvivabilityTest::testMiningFrigate; + in part testMiningFrigate : MiningFrigate::MiningFrigate = SurvivabilityTest::testMiningFrigate; out shieldStrengthMeasuredHS : Real; // High Sec survivability (DPS) } action simulateLowSecAttack { - in part testMiningFrigate : MiningFrigate = SurvivabilityTest::testMiningFrigate; + in part testMiningFrigate : MiningFrigate::MiningFrigate = SurvivabilityTest::testMiningFrigate; out shieldStrengthMeasuredLS : Real; // Low Sec survivability (DPS) } @@ -160,7 +160,7 @@ package MiningFrigateRequirementsVerification { // Verification Definition for Drone Operations verification def DroneOperationsTest { - subject testMiningFrigate : MiningFrigate; + subject testMiningFrigate : MiningFrigate::MiningFrigate; objective droneOperationsVerification { // The subject of the verify is automatically bound to "testMiningFrigate". @@ -172,7 +172,7 @@ package MiningFrigateRequirementsVerification { } action deployDrones { - in part testMiningFrigate : MiningFrigate = DroneOperationsTest::testMiningFrigate; + in part testMiningFrigate : MiningFrigate::MiningFrigate = DroneOperationsTest::testMiningFrigate; out droneCapacityMeasured : Integer; } @@ -191,7 +191,7 @@ package MiningFrigateRequirementsVerification { // Verification Definition for Threat Detection verification def ThreatDetectionTest { - subject testMiningFrigate : MiningFrigate; + subject testMiningFrigate : MiningFrigate::MiningFrigate; objective threatDetectionVerification { // The subject of the verify is automatically bound to "testMiningFrigate". @@ -203,7 +203,7 @@ package MiningFrigateRequirementsVerification { } action collectThreatDetectionData { - in part testMiningFrigate : MiningFrigate = ThreatDetectionTest::testMiningFrigate; + in part testMiningFrigate : MiningFrigate::MiningFrigate = ThreatDetectionTest::testMiningFrigate; out threatDetectionRangeMeasured : Real; } diff --git a/models/example_EveOnlineMiningFrigate/DomainModel/cause-effect.sysml b/models/example_EveOnlineMiningFrigate/DomainModel/cause-effect.sysml index 79e5894..4311104 100644 --- a/models/example_EveOnlineMiningFrigate/DomainModel/cause-effect.sysml +++ b/models/example_EveOnlineMiningFrigate/DomainModel/cause-effect.sysml @@ -4,30 +4,31 @@ package causeEffect { private import CauseAndEffect::*; private import CausationConnections::*; - //The cause-effect relationships - #causation connect miningFrigate.MiningRateIncreases to miningFrigate.OreYieldIncreases; - #causation connect miningFrigate.CargoCapacityIncreases to miningFrigate.DowntimeReduces; - #causation connect miningFrigate.ShieldStrengthIncreases to miningFrigate.SurvivabilityEnhances; - #causation connect miningFrigate.ThreatDetectionImproves to miningFrigate.ThreatResponseImproves; - #causation connect miningFrigate.DroneOperationsImprove to miningFrigate.OperationalEfficiencyIncreases; - #causation connect miningFrigate.WarpSpeedIncreases to miningFrigate.DowntimeReduces; - #causation connect miningFrigate.FleetCoordinationImproves to miningFrigate.OperationalEfficiencyIncreases; + //The cause-effect relationships + //This section is not correctly parsed and needs further corrections + //#causation connect miningFrigate.MiningRateIncreases to miningFrigate.OreYieldIncreases; + //#causation connect miningFrigate.CargoCapacityIncreases to miningFrigate.DowntimeReduces; + //#causation connect miningFrigate.ShieldStrengthIncreases to miningFrigate.SurvivabilityEnhances; + //#causation connect miningFrigate.ThreatDetectionImproves to miningFrigate.ThreatResponseImproves; + //#causation connect miningFrigate.DroneOperationsImprove to miningFrigate.OperationalEfficiencyIncreases; + //#causation connect miningFrigate.WarpSpeedIncreases to miningFrigate.DowntimeReduces; + //#causation connect miningFrigate.FleetCoordinationImproves to miningFrigate.OperationalEfficiencyIncreases; - #multicausation connection { - end #cause ::> miningFrigate.OreYieldIncreases; - end #cause ::> miningFrigate.DowntimeReduces; - end #effect ::> miningFrigate.OreExtractionEfficiencyIncreases; - } + //#multicausation connection { + // end #cause ::> miningFrigate.OreYieldIncreases; + // end #cause ::> miningFrigate.DowntimeReduces; + // end #effect ::> miningFrigate.OreExtractionEfficiencyIncreases; + //} - #multicausation connection { - end #cause ::> miningFrigate.SurvivabilityEnhances; - end #cause ::> miningFrigate.ThreatResponseImproves; - end #effect ::> miningFrigate.OperationalEfficiencyIncreases; - } + //#multicausation connection { + // end #cause ::> miningFrigate.SurvivabilityEnhances; + // end #cause ::> miningFrigate.ThreatResponseImproves; + // end #effect ::> miningFrigate.OperationalEfficiencyIncreases; + //} - #multicausation connection { - end #cause ::> miningFrigate.OperationalEfficiencyIncreases; - end #cause ::> miningFrigate.OreExtractionEfficiencyIncreases; - end #effect ::> miningFrigate.ProfitabilityMaximizes; - } + //#multicausation connection { + // end #cause ::> miningFrigate.OperationalEfficiencyIncreases; + // end #cause ::> miningFrigate.OreExtractionEfficiencyIncreases; + // end #effect ::> miningFrigate.ProfitabilityMaximizes; + //} } \ No newline at end of file diff --git a/models/example_EveOnlineMiningFrigate/README.md b/models/example_EveOnlineMiningFrigate/README.md index 0e2aebd..639eac2 100644 --- a/models/example_EveOnlineMiningFrigate/README.md +++ b/models/example_EveOnlineMiningFrigate/README.md @@ -4,4 +4,4 @@ The model has been generated with an LLM following a series of questions that ar The selection of this example to test the domain capabilites of an LLM is based on the availability of information in internet about the mechanics of the game and the in-game market data and trends. The SysMLv2 model was built using ChatGPT:SysMLv2 Co-Pilot. ## Author -Hugo Ormo is an engineer who studied at ETSEIB in Barcelona. He works as a consultant at a global IT consulting company, focusing on the transformation of enterprises toward systems engineering and MBSE. He is a certified GfSE Level A and has been training as a GfSE trainer since 2022. In this role, he has already trained several groups to GfSE Level B and C. Voluntarily, he leads the UAF working group of GfSE and is a member of the UAF working group of OMG. \ No newline at end of file +Hugo Ormo is an engineer who studied at ETSEIB in Barcelona. He works as a consultant at a global IT consulting company, focusing on the transformation of enterprises toward systems engineering and MBSE. He is a certified GfSE Level A, approved trainer by the GfSE and has been preparing candidates for the GfSE certification levels B and C since 2022. Voluntarily, he leads the UAF working group of GfSE and is a member of the UAF working group of OMG. \ No newline at end of file diff --git a/models/example_EveOnlineMiningFrigate/UseCases/OperationalUseCaseActions.sysml b/models/example_EveOnlineMiningFrigate/UseCases/OperationalUseCaseActions.sysml index 77802af..60fb37d 100644 --- a/models/example_EveOnlineMiningFrigate/UseCases/OperationalUseCaseActions.sysml +++ b/models/example_EveOnlineMiningFrigate/UseCases/OperationalUseCaseActions.sysml @@ -10,7 +10,7 @@ package OperationalUseCaseActions { action def IdentifyDestination { doc /* Identify an asteroid belt or a target asteroid. */ - out targetSignature : ScanSignature; + out targetSignature : Domain::ScanSignature; } action def ActivateMiningLaser { @@ -38,14 +38,14 @@ package OperationalUseCaseActions { action def ScanForThreats { doc /* Scan the surrounding space for potential threats. */ - in scanCommand : ShipCommand; - out detectedThreats : ScanSignature; - out scanReport : ShipReport; + in scanCommand : Domain::ShipCommand; + out detectedThreats : Domain::ScanSignature; + out scanReport : Domain::ShipReport; } action def PrioritizeThreats { doc /* Evaluate detected threats and prioritize response actions. */ - in detectedThreats : ScanSignature; + in detectedThreats : Domain::ScanSignature; out threatPriority : String; } @@ -53,22 +53,22 @@ package OperationalUseCaseActions { action def UndockFromStation { doc /*Undock from a station.*/ - in undockCommand : ShipCommand; + in undockCommand : Domain::ShipCommand; } action def ExecuteWarpDrive { doc /* Engage the warp drive to travel to the destination. */ - in warpCommand : ShipCommand; - out warpStatusReport : ShipReport; + in warpCommand : Domain::ShipCommand; + out warpStatusReport : Domain::ShipReport; } // Main Use Case definition : Offload Ore and Resupply action def DockToStation { doc /*Dock into a station to make repairs, resupply capacitor and support systems.*/ - in dockCommand : ShipCommand; - in charge : Power; - out dockingReport : ShipReport; + in dockCommand : Domain::ShipCommand; + in charge : Domain::Power; + out dockingReport : Domain::ShipReport; } @@ -76,72 +76,72 @@ package OperationalUseCaseActions { action def SelectDronesForDeployment { doc /* Select drones for deployment based on operational needs (mining or defense). */ - in droneCommand : ShipCommand; - out selectedDrones : Drone; + in droneCommand : Domain::ShipCommand; + out selectedDrones : Domain::Drone; } // Included Use Case definition : Navigate to Destination action def AcceptDestination { doc /*Accept a destination from the pilot. */ - in destinationCommand : ShipCommand; - out destinationReport : ShipReport; + in destinationCommand : Domain::ShipCommand; + out destinationReport : Domain::ShipReport; } action def PlotOptimalCourse { doc /*Plot the optimal course using the navigation system.*/ - out optimalCourseReport : ShipReport; + out optimalCourseReport : Domain::ShipReport; } action def EngagePropulsion { doc /*Engage the propulsion system to travel along the plotted course. * Propulsion does not use items (fuel, power) in Eve Online. */ - in engagePropulsion : ShipCommand; - out propulsionEngagedReport : ShipReport; + in engagePropulsion : Domain::ShipCommand; + out propulsionEngagedReport : Domain::ShipReport; } action def MonitorAndAdjustCourse { doc /*Continuously monitor progress and adjust the course as needed.*/ - out selectedCourseReport : ShipReport; + out selectedCourseReport : Domain::ShipReport; } // Included Use Case definition : Transfer Cargo action def TransferOre { doc /*Transfer ore or other cargo to the appropriate storage location.*/ - in unloadCommand : ShipCommand; - out oreCargo : CargoContainer; - out storageReport : ShipReport; + in unloadCommand : Domain::ShipCommand; + out oreCargo : Domain::CargoContainer; + out storageReport : Domain::ShipReport; } action def VerifyCargoTransfer { doc /*Verify the transfer has been completed successfully.*/ - in warehouseStatusCommand : StationCommand; - out warehouseReport : StationReport; + in warehouseStatusCommand : Domain::StationCommand; + out warehouseReport : Domain::StationReport; } // Included Use Case definition : Engage Defense Systems action def DetectThreat { doc /*Detect and classify threats using the sensor array.*/ - in scanCommand : ShipCommand; - in threatSignature : ScanSignature; - out scanReport : ShipReport; + in scanCommand : Domain::ShipCommand; + in threatSignature : Domain::ScanSignature; + out scanReport : Domain::ShipReport; } action def EngageDefenses { doc /*Activate defense turrets and deploy drones to neutralize threats.*/ - in engageCommand : ShipCommand; - out firePower: Power; - out damageReport : ShipReport; + in engageCommand : Domain::ShipCommand; + out firePower: Domain::Power; + out damageReport : Domain::ShipReport; } // Included Use Case definition : Resupply Systems action def VerifyResupply { doc /*Verify the resupply is completed successfully.*/ - in shipStatusCommand : ShipCommand; - out shipStatusReport : ShipReport; + in shipStatusCommand : Domain::ShipCommand; + out shipStatusReport : Domain::ShipReport; } } diff --git a/models/example_family/family.sysml b/models/example_family/family.sysml index 6200203..f52b657 100644 --- a/models/example_family/family.sysml +++ b/models/example_family/family.sysml @@ -215,11 +215,11 @@ package Family { //three possible variants of cerificates. Depending on the variant there will be up to five persons in the package. variation part adoption_certificate : Adoption_Certificate{ variant connection adoption_certificate_TypeB1 : Adoption_Certificate - connect (parent1 ::> woman[1], adoptiveParent_1 ::> adult[1], certifiedChild ::> child[1]); + connect (parent1 ::> woman, adoptiveParent_1 ::> adult, certifiedChild ::> child); variant connection adoption_certificate_TypeB2 : Adoption_Certificate - connect (parent1 ::> man[1], adoptiveParent_1 ::> adult[1], certifiedChild ::> child[1]); + connect (parent1 ::> man, adoptiveParent_1 ::> adult, certifiedChild ::> child); variant connection adoption_certificate_TypeC : Adoption_Certificate - connect (parent1 ::> adoptiveParent_1[1], parent2 ::> adoptiveParent_2[1], certifiedChild ::> child[1]); + connect (parent1 ::> adoptiveParent_1, parent2 ::> adoptiveParent_2, certifiedChild ::> child); } //requirements