Syndeia 3.1, released May 2017, offers a new feature to help users try out their ideas in this area. The network of inter-model connections managed directly by Syndeia and the intra-model connections in the central SysML model can be exported together into a Neo4j graph database, where a flexible and powerful graph query language Cypher can be applied.
For our examples below, we used the free Community Edition of Neo4j and a UAV sample SysML model connected to elements in Windchill, Jama, JIRA, GitHub, Simulink and MySQL. The resulting Syndeia export to Neo4J contained 1225 nodes and 2510 relationships (edges).
Query – Show me all the …
One simple query is to show all the elements or all the relationships of a particular type in the database. In Figure 1, we ask the database for all Jama requirements connected by model transform connections to SysML elements. In one millisecond, it returned 36 records. In Figure 1, the yellow circles represent SysML requirements and the gray circles are Jama requirements. The yellow circles are connected to the gray circles by REQUIREMENT_JAMA_MODEL_TRANSFORM_CONNECTIONs, while the yellow circles are connected to each other by the SysML containment relationships that create the requirement hierarchy inside the SysML model.
Cypher can also return the results in tabular form, which is frequently more useful when the number of records is high. In general, we believe such queries can be useful for model size and completeness metrics as the system project proceeds.
Figure 1 Identifying all Jama requirements connected to SysML elements
Show me all the Requirements that affect a specific Part.
A CAD designer, a software engineer, or a simulation analyst needs to know all the requirements affecting the system element they are responsible for. In Figure 2, the Cypher query asks for all Jama requirements (gray) affecting the cUAV block or its part properties to the third generation (blue). Simply identifying requirements directly satisfied by the top-level block is relatively easy with a good SysML tool. Here, there is only one, “UAS_Cost”. But in many cases, the indirect impact of requirements on an element’s subsystems or behaviors is also critical.
Figure 2 Identifying all Jama requirements satisfied by cUAV or its part properties to the third generation
Show me all the … Elements connected to a specific Requirement
As the system development proceeds, changes to requirements arise, or at least must be considered in light of cost, schedule, or management dictate. This reverses the query; what system elements would be potentially affected by a change in a specific requirement? In Figure 3, we ask for commit elements in GitHub, a software configuration management repository, that are connected to the Jama requirement, “Search”. The results show one GitHub commit (the red circle, id lower left), connected to a SysML block “Flight SW”, which satisfies a SysML requirement “Search” connected by model transform to the original Jama requirement. The software engineering team responsible can be notified and the effect of any requirement changes analyzed quickly.
Figure 3 Neo4j Graph Query for GitHub commits connected to Jama requirement “Search”
A similar query in shown in Figure 4. The Jama requirement is a structural requirement for an auxiliary power unit “APU” and the query asks which Windchill parts in the PLM system would be impacted by a change. In this case, the Windchill parts are the APU itself, its owner, the electrical system, and its owner, the aircraft platform (the overall UAV system does not appear because it is not a part in this Windchill bill-of-materials).
Figure 4 Neo4j Graph Query for Windchill parts connected to Jama requirement “APU”
Are two specific elements connected?
A deceptively simple question, but one that draws on the full power of a graph query engine, is to ask whether two system elements are connected, and, if so, how? The challenge arises when the connection is not direct, but through one or more multi-step chains, possibly extending across multiple tools. For large models, the number of possibilities to be checked increases rapidly and efficient search algorithms are critical.
In Figure 5, we check whether the Windchill part “ElectricalSystem (A.5)” and the Jama requirement “APU” are connected. In this case, they are, by a
- BLOCK_WC_MODEL_TRANSFORM_CONNECTION to the SysML block “ElectricalSystem”,
- PartProperty relationship to the SysML block “APU”,
- Satisfy relationship to the SysML requirement “APU”
- REQUIREMENT_JAMA_MODEL_TRANSFORM_CONNECTION to the Jama requirement “APU”
One of the special challenges of systems engineering is to identify non-obvious chains of causation, like the 2011 Fukashima earthquake where the reactor failure was not due to the earthquake itself, but to the combined effects of earthquake, tsunami, flooding, failure of backup generators and loss of pump power. Tools that can help identify such chains of connections may be particularly important in safety and reliability evaluation.
The export to Neo4j described in this blog post is not the final solution for Syndeia. The Neo4j database is not the database where Syndeia v3.1 maintains the inter-model connections (we use Cassandra for this) and does not support multiple projects and users in this application. Equally important, a better interface for generating these queries needs to be developed, balancing the flexibility of general purpose query languages with ease-of-use. However, we hope that this feature will encourage Syndeia users to start thinking about these matters and give us feedback on what they would like to see.