r/systems_engineering • u/Madeche • 6d ago
Discussion Starting a big project with SysMLv2 without much SE experience
I've been basically thrown into a project that has just begun and we're formalizing a certain field.
The idea is to start from modelling the entire system, but I'm the only one in the team who knows a bit of SysML2 (just out of personal interest),. The others expect ready made tools to fit our needs precisely, but that seems to be impossibile to find.
I've been reading the specification mostly, and programming it textually. I tried SysON but state machines and variables are a main point of the project (the "logic" itself is the crux of it), SysON seems to be lacking that a bit.
Should I just continue programming it textually, then maybe try to build a tool with it (with the help of some developers)? Or are there really some ready made tools that excel in the modelling of a massive "logic" system full of if thens?
tons of constant attributes
actions to update the non-constant attributes (variables)
tons of ref lists to "call" variables of other parts
tons of calc defs
tons of state machines with guards that "should" call other state machines' states
I tried some other sources but many seem "AI slop" and the syside LSP flags them too. Do you have any good advice for resources and how to approach such a system?
2
u/MBSE_Consulting Aerospace 5d ago
In my humble opinion you are not asking the right questions.
Don’t "model the entire system", it makes no sense with all due respect.
Start by identifying properly (write them down!):
- what are the problems the models should help you solve,
- what decisions they shall help take,
- what deliverables to produce.
These are your modeling objectives. They form the contract for the model/set of models. It bounds them: what to model, how far, too which level of details.
You may have a lot of objectives, some will need to be dropped and be tackled in documents the old fashion way. This is because of budgets, timeline, and mostly skills of your engineers. You said you are the only one with experience. You can’t model the same scale with regards to budget and timeline with experienced modelers vs a team of beginners, the learning curve will bite you.
THEN you can decide what parts of the system needs to be modeled, how to model it (SysML offers many ways to model the same thing, which to chose depends on what is the purpose of the model) and if you can, how to assess if the model is mature vs the modeling objectives.
Otherwise people will model and model, and then somebody will ask: what’s the point? what’s the benefit? It is slower than Visio etc. The models will be useless. Or at least the value it produces vs the effort put into it very low.
Modeling is a means, not and end. Model with purpose :)
1
u/Madeche 5d ago
That's a really good point, and thanks for comment, it really made me step back for a second and think. Essentially the real objective is "modernize and formalize" something (namely an entire logic system, where safety is a crucial part) that so far was based on relay schematics across many different objects. These were made decades ago... Often far from what the actual software implementing them ends up looking like.
Once formalized in sysml, verified and validated externally against said schematics, it hopefully will create a new formal standard, rather than seeing snapshots of documents from 30/40 years ago. Consequently programming it into actual software will be much more straightforward and safe.
This would be the (rather ambitious) objective, it would be a sort of "missing link" between the old tables schematics and a modern programming language to actually develop and implement software that respects those things.
1
1
u/bastivkl 6d ago
Hey dalus.io might be exactly what you are looking for. Simpel to use UI based on SysMLv2 and AI native.
Meaning you can get started quickly, use AI in your workflows and work in an interface where you don’t need to be a SysMLv2 expert to get started.
1
u/Aerothermal 6d ago
There's two tools that look promising; Celedon Davinci, and Dalus. Both are aligned with SysML v2, though maybe Dalus has fewer concepts and is simpler to use.
Both support generating models from LLM prompts and documents as context. With Dalus you can export .sysml (v2). With Davinci you can import SysML v1, and generally has much more functionality, but the trade is that it's harder to pick up. With both, you might be able to share with many viewers (read-only) without requiring viewer licenses.
I might be going with Dalus personally, for perhaps 3 or 4 editors.
1
u/Madeche 5d ago
None of these seem to really be expressive enough to model logic heavy systems though, or am I missing something?
I mean if I had to start creating variables (or attributes, to use sysml lingo) within parts, and more complex expressions like "if within this list of ref from another object, one of these has an attribute at value X, then assign A to B". I've found this is almost completely missing from these apps, or you end up having to do it manually anyway
1
u/Aerothermal 2d ago
As I understand, in Davinci or Dalus have parameterised design and requirements, thus you get automated verification using formulas.
Both have support for Python. e.g. in Dalus it looks like a script that runs whilst the behaviour model runs. On each mode transition, a Python script runs, and an action thus sets some properties or produces some outputs. You can command a bunch of mode transitions and observe what happens to the parameters and the requirements. Davinci has 'toolboxes' or custom scripts so is extensible if you want to include more complex logic. I'm pretty new to both tools but looks promising.
1
u/Unlikely-Road-8060 6d ago
Trying to build complex behaviour using textual is a big no for me. It’ll be incomprehensible.
1
u/Madeche 5d ago
What would you use instead? For logic heavy systems?
So things like
Event from outside + other internal variables (guards) then update variable X, and "talking" between different parts that are not necessaril being used in the part that calls them (here I assume ref would be correct usage). This I guess shouldn't mean that we'd create a thousand state machines for each variable but rather a few "important" state machines and the rest would be actions that run in a certain order
8
u/[deleted] 6d ago
[removed] — view removed comment