Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
39 changes: 25 additions & 14 deletions models/example_EveOnlineMiningFrigate/DomainModel/Concerns.sysml
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,10 @@ package StakeholderConcerns {
private import StakeholdersDef::*;
private import MiningFrigate::*;

// The concerns are directly declared without definition, beacuse they aren't going to be reused in the scope of this model.
// Concerns Derived from the Business Case

concern def ProfitabilityConcern {
concern ProfitabilityConcern {
subject miningCorporation : Domain::MiningCorporation;

require constraint {
Expand All @@ -47,7 +48,7 @@ package StakeholderConcerns {
stakeholder miningCEO : MiningCEO;
}

concern def OperationalCostsConcern {
concern OperationalCostsConcern {
subject miningCorporation : Domain::MiningCorporation;

require constraint {
Expand All @@ -58,7 +59,7 @@ package StakeholderConcerns {
stakeholder operationsManager : OperationsManager;
}

concern def ScalabilityConcern {
concern ScalabilityConcern {
subject miningCorporation : Domain::MiningCorporation;

assume constraint {
Expand All @@ -69,7 +70,7 @@ package StakeholderConcerns {
stakeholder fleetCommander : FleetCommander;
}

concern def MarketResponsivenessConcern {
concern MarketResponsivenessConcern {
subject miningCorporation : Domain::MiningCorporation;

require constraint {
Expand All @@ -82,7 +83,7 @@ package StakeholderConcerns {

// Concerns Derived from the ConOps

concern def SecurityConcern {
concern SecurityConcern {
subject miningFrigate : MiningFrigate::MiningFrigate;

require constraint {
Expand All @@ -94,7 +95,7 @@ package StakeholderConcerns {
stakeholder shipEngineer : ShipEngineer;
}

concern def ResourceAvailabilityConcern {
concern ResourceAvailabilityConcern {
subject miningCorporation : Domain::MiningCorporation;

require constraint {
Expand All @@ -105,7 +106,7 @@ package StakeholderConcerns {
stakeholder fleetCommander : FleetCommander;
}

concern def DeploymentEfficiencyConcern {
concern DeploymentEfficiencyConcern {
subject miningFrigate : MiningFrigate::MiningFrigate;

require constraint {
Expand All @@ -116,7 +117,7 @@ package StakeholderConcerns {
stakeholder operationsManager : OperationsManager;
}

concern def ThreatNeutralizationConcern {
concern ThreatNeutralizationConcern {
subject miningFrigate : MiningFrigate::MiningFrigate;

require constraint {
Expand All @@ -130,7 +131,7 @@ package StakeholderConcerns {

// Concerns Derived from the MoEs

concern def TotalProfitabilityConcern {
concern TotalProfitabilityConcern {
subject miningCorporation : Domain::MiningCorporation;

require constraint {
Expand All @@ -141,7 +142,7 @@ package StakeholderConcerns {
stakeholder miningCEO : MiningCEO;
}

concern def OreYieldConcern {
concern OreYieldConcern {
subject miningFrigate : MiningFrigate::MiningFrigate;

require constraint {
Expand All @@ -152,7 +153,7 @@ package StakeholderConcerns {
stakeholder operationsManager : OperationsManager;
}

concern def SurvivabilityConcern {
concern SurvivabilityConcern {
subject miningFrigate : MiningFrigate::MiningFrigate;

require constraint {
Expand All @@ -163,7 +164,7 @@ package StakeholderConcerns {
stakeholder shipEngineer : ShipEngineer;
}

concern def FleetDeploymentEfficiencyConcern {
concern FleetDeploymentEfficiencyConcern {
subject miningCorporation : Domain::MiningCorporation;

require constraint {
Expand All @@ -175,7 +176,7 @@ package StakeholderConcerns {
stakeholder operationsManager : OperationsManager;
}

concern def OreDeliveryEfficiencyConcern {
concern OreDeliveryEfficiencyConcern {
subject miningFrigate : MiningFrigate::MiningFrigate;

require constraint {
Expand All @@ -186,7 +187,7 @@ package StakeholderConcerns {
stakeholder operationsManager : OperationsManager;
}

concern def RiskAdjustedProfitabilityConcern {
concern RiskAdjustedProfitabilityConcern {
subject miningCorporation : Domain::MiningCorporation;

require constraint {
Expand All @@ -198,4 +199,14 @@ package StakeholderConcerns {
stakeholder fleetCommander : FleetCommander;
}

//Viewpoints
viewpoint 'Operational profitability'{
frame ProfitabilityConcern;

require constraint {
doc /*TBD*/
}
}


}
52 changes: 32 additions & 20 deletions models/example_EveOnlineMiningFrigate/DomainModel/Domain.sysml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ package Domain {
part miningCorporation: MiningCorporation;
part drone : Drone[1..*];
}

part domain : Domain;

// Definitions of domain objects
part def Spaceship {
#mop cargoCapacity : Real; // Maximum ore cargo capacity (m³)
#mop survivalProbability : Real; // Probability of surviving an operation (%)
Expand All @@ -33,8 +35,6 @@ package Domain {
attribute dockingTime : Real; // seconds, the time required to dock and offload ore (STRQ08)
attribute shieldStrength : Real ; //Strength of the core shield (STRQ03)
}

// Definitions of domain objects

part def MiningCorporation {
#moe minimumProfit : Real {
Expand Down Expand Up @@ -132,25 +132,25 @@ package Domain {
in miningFrigates = miningFrigate;
}
// Cause and Effect Occurrences
event occurrence MiningRateIncreases;
event occurrence CargoCapacityIncreases;
event occurrence ShieldStrengthIncreases;
event occurrence ThreatDetectionImproves;
event occurrence DroneOperationsImprove;
event occurrence WarpSpeedIncreases;
event occurrence FleetCoordinationImproves;

event occurrence OreYieldIncreases;
event occurrence DowntimeReduces;
event occurrence SurvivabilityEnhances;
event occurrence ThreatResponseImproves;
event occurrence OperationalEfficiencyIncreases;
event occurrence OreExtractionEfficiencyIncreases;
event occurrence ProfitabilityMaximizes;
timeslice miningRateIncreases;
timeslice cargoCapacityIncreases;
timeslice shieldStrengthIncreases;
timeslice threatDetectionImproves;
timeslice droneOperationsImprove;
timeslice warpSpeedIncreases;

}
part rorqual : Rorqual [1..*];
ref part pilotPod : PilotPod [1..*] ;
part fleet : Fleet [1..*];
part fleet : Fleet [1..*]{
timeslice fleetCoordinationImproves;
timeslice downtimeReduces;
timeslice survivabilityEnhances;
timeslice threatResponseImproves;
timeslice operationalEfficiencyIncreases;
timeslice oreExtractionEfficiencyIncreases;
timeslice profitabilityMaximizes;
}

//interactions at the enterprise level
occurrence def MiningAsteroid {
Expand Down Expand Up @@ -241,6 +241,7 @@ package Domain {
#mop oreContent : Real; // Quantity of ore available (m³)
#mop depletionRate : Real; // Rate at which ore is extracted (m³/hour)
port asteroidOrePort : AsteroidOrePort;
timeslice oreYieldIncreases;
}

part def HostileShip {
Expand Down Expand Up @@ -373,5 +374,16 @@ package Domain {
item def ScanSignature {
attribute type: String;
attribute priority: String;
}
}

//Views and views definition
view def 'Domain Structure View'{
satisfy StakeholderConcerns::'Operational profitability';

filter @SysML::PartUsage;
}
view 'Mining Frigate structure Table View' : 'Domain Structure View' {
expose MiningCorporation::miningFrigate::*;
//render asElementTable;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
private import ParametersOfInterestMetadata::*;
private import OperationalUseCaseActions::*;
private import Domain::*;
private import StakeholderConcerns::*;

part def MiningFrigate :> Domain::Spaceship {

Expand Down Expand Up @@ -40,6 +41,9 @@
}

}

part miningFrigate:MiningFrigate;

// State Definition for the Mining Frigate
state miningFrigatesStates {
in miningFrigates : MiningFrigate;
Expand Down Expand Up @@ -220,5 +224,6 @@
part def NavigationModule {
attribute agilityBonus : Real; // Improves ship align time
attribute warpSpeedBonus : Real; // Boost to warp speed
}
}

}
129 changes: 129 additions & 0 deletions models/example_EveOnlineMiningFrigate/DomainModel/OPSCON.sysml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
package OPSCON {

private import DocumentStructureMetadata::*;

// The OPSCON document instance
#document OPSCON {
title = "OPSCON for Mining Frigate-Based Resource Extraction";
status = "Draft";

// Chapter 1 – Mission Overview
#chapter missionOverview {
title = "1. Mission Overview";
#section overviewSection {
heading = "Overview";
content = "The Mining Corporation operates fleets of mining frigates in
asteroid belts and wormholes. The goals are maximizing profitability,
ensuring operational safety, and sustaining long-term operations. The
central command coordinates deployments using PilotPods with tactical
oversight from Fleet Commanders.";
}
}

// Chapter 2 – Operational Context
#chapter context {
title = "2. Operational Context";
#section environment {
heading = "Operational Environment";
content = "Operations take place in High Sec, Low Sec, Null Sec, and
Wormhole space, involving hostile encounters, asteroid depletion, and
resupply via stations or POS. System elements and context are defined
in Domain and ConceptOfOperations packages.";
}
}

// Chapter 3 – Stakeholders and Roles
#chapter stakeholders {
title = "3. Actors and Roles";
#section actorRoles {
heading = "Actor Definitions";
content = "Actors include Mining CEO, Operations Manager, Fleet Commander,
Ship Engineer, and Market Analyst. Responsibilities span strategy, cost
control, fleet survivability, system design, and market alignment.";
}
}

// Chapter 4 – System Elements
#chapter systemElements {
title = "4. System Elements";
#section elementsOverview {
heading = "System Components";
content = "Primary elements include MiningFrigate, PilotPod, Rorqual,
Drone, and Station. These components are defined in the Domain and MiningFrigate
packages.";
}
}

// Chapter 5 – Use Cases
#chapter useCases {
title = "5. Use Case Overview";
#section useCasesSummary {
heading = "Operational Use Cases";
content = "Main use cases include Mine Asteroids, Plot Course and Navigate,
Detect Threats and Engage Defenses, Offload Ore and Resupply, and Deploy Drones.
Each is modeled in the MiningFrigateUseCases package and leverages reusable
included use cases.";
}
}

// Chapter 6 – Operational Requirements
#chapter requirements {
title = "6. Operational Requirements";
#section requirementSummary {
heading = "Performance and Capability Requirements";
content = "MiningFrigates are required to extract ≥ 50 m³/min, have ≥ 5000 m³
cargo capacity, survive 400 DPS, detect threats within 20 AU, warp at ≥ 5 AU/s,
align in ≤ 3 sec, and dock/unload in ≤ 60 sec. These are defined and bound
in MiningFrigateRequirements and MiningFrigateRequirementsDef.";
}
}

// Chapter 7 – Verification Strategy
#chapter systemVerification {
title = "7. Verification Strategy";
#section strategy {
heading = "Verification through Simulation and Testing";
content = "Requirements are verified using formal verification definitions
(e.g., OreExtractionEfficiencyTest) implemented in MiningFrigateRequirementsVerification.
The MiningFrigateTestRig simulates conditions, logs data, and compares outcomes
against defined constraints.";
}
}

// Chapter 8 – Measures of Effectiveness
#chapter moes {
title = "8. Measures of Effectiveness";
#section moesSummary {
heading = "MoEs and Decision Criteria";
content = "MoEs include profitability (ISK/hour), ore throughput, survivability,
threat response time, storage utilization, fleet deployment efficiency, and
adaptability. These are modeled in the Domain and BusinessRequirements packages
and trace to StakeholderConcerns.";
}
}

// Chapter 9 – Risk Considerations
#chapter risk {
title = "9. Risk Considerations";
#section riskAnalysis {
heading = "Risk-Adjusted Decision Making";
content = "The analysisProblemSpace package provides a model-based method for
calculating profitability adjusted by risk factors like survival probability,
operational cost, and market ore prices across different zones.";
}
}

// Chapter 10 – Lifecycle Considerations
#chapter lifecycle {
title = "10. Lifecycle Considerations";
#section traceability {
heading = "Model Traceability and Lifecycle Use";
content = "The full model supports requirement declaration, use case-driven
behavior, formal verification, and traceability across viewpoints. All aspects
are integrated through packages including MiningFrigateRequirementsDecl,
MiningFrigateRequirementsVerification, and StakeholderConcerns.";
}
}

}
}
Loading
Loading