SysML Interface Blocks (Continued): The logical Interface.
SysML 1.5 changed how SysML implements ports. For those of us that pass our models to software/firmware teams, these changes simplify the handoff. SysML Interface Blocks allow us to define the logical interfaces in a clear and obvious place.
As a reminder, the problem we are trying to solve is that SysML models the logical interfaces, that is, the name and concept of the interface (e.g., Weight On Wheels), not the physical interface (e.g., bit 3 of word 5 of a MIL-STD-1553 message where the signal is inverse logic). For most of my customers, the Systems Engineers need to define the logical interface when specifying the system and the physical interface used by the software/firmware teams.
Interface blocks look like other blocks. There are key differences, however, because they are interfaces. Interfaces blocks have no contained parts. Though they have operations, those operations have no implementation nor behavior. To use a concept from the software realm, interface blocks are pure virtual classes. It is up to the block that implements the interface to provide the operations and behavior.
Definition time: blocks that implement interface blocks provide the interface. Blocks that call the operations in the interface block require the interface.
Jeff’s Recommendations:
- Populate interface blocks with operations only. Though the language allows passing values, the call of an operation makes defining the physical interface easier, especially when the downstream users – software/firmware teams – will need to make operation calls in their code.
- The operations defined in the interface block should be the only interactions between the two blocks. Again, the language allows calling operations via associations, but limiting the interactions to the operations defined in the interface block ensures that all logical operations get reflected as physical interfaces in the next step.
- Whenever possible, define ports from one point of view. For example, I defined the interface blocks for a subsystem consisting of a monitor that interacts with sensors and actuators from the point of view of the monitor. The monitor requires the interfaces, so I defined the operations and interface blocks from the monitor’s point of view.
- Define two-way interactions as two different interface blocks. In the example, the interface blocks ifMonitor_Ux and ifUx_Monitor implement the interactions between the UX and monitor. Monitor requires ifMonitor_Ux, it provides ifUx_Monitor. I’ve defined the interface blocks from the view of the required interfaces.
Accomplished Systems Engineer specializing in Requirements Elicitation, Analysis, UML/SysML Modeling and Implementations
1yDo you have an example of how you would use one of the interface blocks in an ibd? I'm having trouble getting a full port that is defined in an interface block with an operation to be used in the blocks that I am trying to connect on my ibd.
System architect | MBSE | IREB CPRE
5yHi Jeff. Interesting approach. What about using Directed Feature or Flow Properties instead of operations ? ;-)