As a language developer, you could provide the user with a set of standard components to be used for modeling.
Components could be .json files stored in src/main/resources/components.
The format could be something like:
{
"language": {
"id": "org.mal-lang.mylang",
"version": "1.0.0"
},
"name": "MyComponent",
"category": "Computers",
"assets": [
{
"type": "Computer",
"id": "1",
"name": "Home laptop 1",
"overrides": {
"attackSteps": {
"compromise": "Exponential(0.5)"
},
"defenses": {
"antiVirus": true,
"aslr": false,
"passwordProtected": 0.5
}
}
},
{
"type": "Computer",
"id": "2",
"name": "Home laptop 2"
}
],
"associations": [
{
"sourceId": "1",
"targetId": "2",
"sourceField": "receivingComputer",
"targetField": "transmittingComputer"
}
]
}
We should also allow users to create components themselves.
We need a method to validate a component against a MAL language.
As a language developer, you could provide the user with a set of standard components to be used for modeling.
Components could be
.jsonfiles stored insrc/main/resources/components.The format could be something like:
{ "language": { "id": "org.mal-lang.mylang", "version": "1.0.0" }, "name": "MyComponent", "category": "Computers", "assets": [ { "type": "Computer", "id": "1", "name": "Home laptop 1", "overrides": { "attackSteps": { "compromise": "Exponential(0.5)" }, "defenses": { "antiVirus": true, "aslr": false, "passwordProtected": 0.5 } } }, { "type": "Computer", "id": "2", "name": "Home laptop 2" } ], "associations": [ { "sourceId": "1", "targetId": "2", "sourceField": "receivingComputer", "targetField": "transmittingComputer" } ] }We should also allow users to create components themselves.
We need a method to validate a component against a MAL language.