Skip to content

Commit ceab2bb

Browse files
Update README.md
1 parent 3c4d157 commit ceab2bb

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

README.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# SysMLinJava - high precision MBSE
22
## Concept
3-
The SysMLinJava API is A Java-based Model Development Kit (MDK) for high-precision modeling as executable SysML models
3+
The SysMLinJava API is A Java-based model development kit (MDK) for high-precision modeling as executable SysML models
44
Modeling in SysML has traditionally meant using a commercially available tool to draw the structural and behavioral elements of the model as SysML diagrams. This dependence on drawings has more often than not resulted in costly effort to learn and manipulate the drawing tool and imposed considerable frustration in modeling complex behaviors. In addition, the ability of the drawings-based tool to execute/test the model has been frustratingly limited and/or esoteric to the vendor product.
55

66
SysMLinJava was developed to make extensive, precise, and executable models relatively easy to develop, analyze, and test. Whereas SysML is based-on the object-oriented paradigm, it's a natural progession to use an object-oriented programming language to develop and execute SysML models. Rather than fumble with drawing tools to specify model objects, the systems engineer can quickly generate model objects as Java classes using any of the myriad powerful easy-to-use Java software development IDEs available today. And the "ultimate" SysML modeling capability - the executable model - is easily realized through Java's extensive and powerful execution capabilities.
@@ -124,28 +124,31 @@ SysMLinJava also provides supporting classes for extensive executable models to
124124
- Block container for asychronous behaviors across multiple OS processes
125125
- Asychronous constraint block for constraint parameters across multiple threads.
126126

127-
SysMLinJava also supports virtually all of the features of SysMLv2. You can see the complete version of the above as well as other examples of complex SysMLinJava models in the SysMLinJavaExampleModels repository. All the examples can be downloaded for review and are fully executable.
127+
SysMLinJava also supports virtually all of the features of SysMLv2. You can see the complete version of the above example model as well as other examples of complex SysMLinJava models in the SysMLinJavaExampleModels repository. All the examples can be downloaded for review and import into your IDE, and are fully executable.
128128

129129
## How it works
130130
### The SysMLinJava module
131-
SysMLinJava is a java API that can be added as a project or library in an IDE used to develop a SysMLinJava model. Typically, the modeler will create a project in the IDE with the SysMLinJava module as its sole content. Another project will be created/used for the SysMLinJava model with a dependency/build path on the SysMLinJava module.
131+
SysMLinJava is a java API that can be added as a project or library in an IDE used to develop a SysMLinJava model. Typically, the modeler will create a project in the IDE with the SysMLinJava module as its sole content. Another project will be created/used for the SysMLinJava model with a "requires transitive" dependency on the SysMLinJava module.
132132

133133
### SysMLinJava modeling
134-
The modeler will typically develop the system model in an IDE project. Model elements will be constructed as java classes that inherit/extend one of the SysMLinJava classes, e.g. SysMLBlock, StateMachine, SysMLValueType, SysMLFullPort, etc. The model elements will be aggregated in a "domain" class that contains all elements of the domain such as the system of interest as well as all the other systems with which it interfaces. Alternatively, the domain class could be replaced by a SysMLTest and/or SysMLTestCase class that constructs and executes the model as a system test/test case. In either case, the SysMLinJava model classes are compiled and linked into an executable process or processes, each potentiallly executing as multiple threads representing asynchronously behaviing objects in the system and its domain.
134+
The modeler will typically develop the system model in an IDE project. Model elements will be constructed as java classes that inherit/extend one of the SysMLinJava classes, e.g. SysMLBlock, StateMachine, SysMLValueType, SysMLFullPort, etc. The model elements will be aggregated in a "domain" class that contains all elements of the domain such as the system of interest as well as all the other systems with which it interfaces. Alternatively, the domain class could be replaced by a SysMLTest and/or SysMLTestCase class that constructs and executes the model as a SysML test/test case. In either case, the SysMLinJava model classes are compiled and linked into an executable process or processes, each potentiallly executing as multiple threads representing asynchronously behaving objects in the system and its domain.
135135

136136
### Parametric Analysis
137-
Extensive capabilities for parametric analysis are also supported by the SysMLinJava API. The SysMLConstraintBlock provides a base class for all constraint block modeling in SysMLinJava. The constraint block supports "bound" constraint parameters as well as contraint block heirarchies. In addition, the constraint block can be configured to operate asynchronously enabling extensive parameteric analysis of parameters that update asychrounously from other bound parameters and from the constrain block.
137+
Extensive capabilities for parametric analysis are also supported by the SysMLinJava API. The SysMLConstraintBlock provides a base class for all constraint block modeling in SysMLinJava. The constraint block supports "bound" constraint parameters as well as contraint block heirarchies. In addition, the constraint block can be configured to operate asynchronously enabling extensive parameteric analysis with parameters that update asychrounously from other bound parameters and from the constraint block.
138138

139139
## Documentation
140140
The SysMLinJava code includes full javadoc comments, which you can view in the code. You can execute the javadoc program against the code (via your IDE) to generate the javadoc as web pages, if desired.
141141

142142
## Dependencies and License
143143
SysMLinJava uses the Apache license as shown above. It has no dependencies beyond the modules of the Java SDK itself. SysMLinJava has been successfully tested and used on OpenJDK 18.
144144

145+
## Skills Needed
146+
As a java-based modeling language, SysMLinJava necessarily requires the modeler also be capable of Java software development. While most model-base systems engineers have software development skills, many do not. SysMLinJava is based on the more commonly used syntax of the java language with no need for modelers to use the more advanced and essoteric constructs of Java. In fact, the most advanced element of Java used for SysMLinJava modeling is the lambda expression used for activity specification. Of course, for the more highly complex, multi-threaded/multi-process models, the SysMLinJava modeler will need to be fluent in the concurrency and communications aspects of Java.
147+
148+
While some may find modeling in the Java language to be "a bridge too far", there is the alternative of obtaining the skills of a java-developer as a "co-modeler". Oftentimes, systems engineers leverage the skills of java developers to code engineering analyses, reports, calcuations, and experiments during traditional model development. SysMLinJava affords the opportunity to leverage these java developers to assist in actual model development to achieve a more complete and precise executable system model.
149+
145150
## Future Work
146-
SysMLinJava is planned to be extended in terms of more valueTypes, more support for distributed blocks/processes across the internet, and more tool support for faster/cheaper development of the various model elements. In the near term, a tool will be availabel (for a modest fee) that automates model execution and provides a set of graphical displays (state charts, sequence diagrams, timing diagrams, line charts, animations, etc) that can be accessed by the model to display model execution parameters and behaviors. The tool will also provide capabilities to export the model to XMI, generate system requirements from the system model, generate reports on the model's contents, and generate SysMLinJava code from modeler-provided element "forms". Also, a SysMLinJava web site that provides more information and support for the SysMLinJava API will be available soon. The tool and web-sites's availability will be noted on this site as soon as they are available.
151+
SysMLinJava is planned to be extended in terms of more valueTypes, more support for distributed blocks/processes across the internet, and more tool support for faster/cheaper development of the various model elements. In the near term, a tool will be availabel (for a modest fee) that automates model execution and provides a set of graphical displays (state charts, sequence diagrams, timing diagrams, line charts, animations, etc) that can be accessed by the model to display model execution parameters and behaviors. The tool will also provide capabilities to export the model to XMI, generate system requirements from the system model, generate reports on the model's contents, and generate SysMLinJava code from modeler-provided element "forms". Also, a SysMLinJava web site that provides more information and support for the SysMLinJava API will be available soon. The tool and web-sites's availability will be noted on this site as soon as they are known.
147152

148153
## Contact
149154
Comments, questions, or requests for consulting or training can be made via sysmlinjava@earthlink.net.
150-
151-
© 2022 SysMLinJava.com. All Rights Reserved.

0 commit comments

Comments
 (0)