Skip to content

Commit

Permalink
Updated for 2021-09.
Browse files Browse the repository at this point in the history
  • Loading branch information
seidewitz committed Oct 22, 2021
1 parent b4460d9 commit ae9f0d2
Show file tree
Hide file tree
Showing 39 changed files with 230 additions and 76 deletions.
Binary file modified doc/1-Kernel_Modeling_Language.pdf
Binary file not shown.
Binary file modified doc/2-OMG_Systems_Modeling_Language.pdf
Binary file not shown.
Binary file modified doc/3-Systems_Modeling_API_and_Services.pdf
Binary file not shown.
Binary file modified install/eclipse/org.omg.sysml.site.zip
Binary file not shown.
Binary file modified install/jupyter/README.pdf
Binary file not shown.
2 changes: 1 addition & 1 deletion install/jupyter/install.bat
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

@echo off

set /A SYSML_VERSION="0.15.2"
set /A SYSML_VERSION="0.16.0"

echo --- Step 1: Testing Conda installation ---
where conda
Expand Down
2 changes: 1 addition & 1 deletion install/jupyter/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

set -e

SYSML_VERSION="0.15.2"
SYSML_VERSION="0.16.0"

echo "--- Step 1: Testing Conda installation ---"
command -v conda || (echo "Conda is not installed. Please install Conda and re-run." && return 1)
Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/BaseFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines a basic set of functions defined on all kinds of values.
* Most correspond to similarly named operators in the KerML expression syntax.
*/
package BaseFunctions {
private import Base::Anything;
private import Objects::Object;
Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/BooleanFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines functions on Boolean values, including those corresponding to
* (non-conditional) logical operators in the KerML expression notation.
*/
package BooleanFunctions {
import ScalarValues::*;

Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/CollectionFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines functions on Collections (as defined in the Collections package).
* For functions on general sequences of values, see the SequenceFunctions package.
*/
package CollectionFunctions {
private import Base::Anything;
private import ScalarValues::*;
Expand Down
5 changes: 5 additions & 0 deletions sysml.library/Kernel Library/Collections.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
/**
* This package defines a standard set of Collection data types. Unlike sequences of values
* defined directly using multiplicity, these data types allow for the possibility of collections
* as elements of collections.
*/
package Collections {
private import Base::*;
private import ScalarValues::*;
Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/ComplexFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines functions on Complex values, including concrete specializations of the
* general arithmetic and comparison operations.
*/
package ComplexFunctions {
import ScalarValues::*;

Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/ControlFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines functions that correspond to operators in the KerML expression notation
* for which one or more operands are expressions whose evaluation is determined by another operand.
*/
package ControlFunctions {
private import Base::Anything;
private import ScalarValues::ScalarValue;
Expand Down
8 changes: 6 additions & 2 deletions sysml.library/Kernel Library/ControlPerformances.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines Behaviors to be used to type Steps that control the sequencing of performance
* of other Steps.
*/
package ControlPerformances {
private import ScalarValues::Boolean;
private import SequenceFunctions::size;
Expand Down Expand Up @@ -28,7 +32,7 @@ package ControlPerformances {
* target the MergePerforance behavior. All such Successions must subset the incomingHBLink
* feature of the target MergePerformance. For each instance of MergePerformance, the
* incomingHBLink is an instance of exactly one of the Successions, ordering the
* MergePerformance as happening after an instance of the source of that Succcession.
* MergePerformance as happening after an instance of the source of that Succession.
*/
behavior MergePerformance specializes Performance {
/**
Expand Down Expand Up @@ -58,7 +62,7 @@ package ControlPerformances {
}

/**
* An IfElsePerformance is an IfPerformance where the elseCaluse occurs after and only
* An IfElsePerformance is an IfPerformance where the elseClause occurs after and only
* after the ifTest evaluation result is not true.
*/
behavior IfElsePerformance specializes IfPerformance {
Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/DataFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines the abstract base functions corresponding to all the unary and binary operators
* in the KerML expression notation that might be defined on various kinds of DataValues.
*/
package DataFunctions {
private import Base::DataValue;
private import ScalarValues::Boolean;
Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/FeatureAccessPerformances.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines Behaviors used to read and write values of a referenced Feature of an Occurrence
* as of the time the Performance of the Behavior ends.
*/
package FeatureAccessPerformances {
private import Base::Anything;
private import Base::things;
Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/IntegerFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines functions on Integer values, including concrete specializations of the
* general arithmetic and comparison operations.
*/
package IntegerFunctions {
import ScalarValues::*;

Expand Down
6 changes: 6 additions & 0 deletions sysml.library/Kernel Library/KerML.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
/**
* This package contains a reflective KerML model of the KerML abstract syntax.
*
* NOTE: This model is currently incomplete. It includes all KerML abstract syntax metaclasses,
* but none of their properties.
*/
package KerML {

struct Element;
Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/NaturalFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines functions on Natural values, including concrete specialization of the
* general arithmetic and comparison operations.
*/
package NaturalFunctions {
import ScalarValues::*;

Expand Down
3 changes: 3 additions & 0 deletions sysml.library/Kernel Library/NumericalFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
/**
* This package defines abstract functions on Numerical values for general arithmetic and comparison operations.
*/
package NumericalFunctions {
import ScalarValues::*;

Expand Down
2 changes: 1 addition & 1 deletion sysml.library/Kernel Library/Objects.kerml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* This package defines classifiers and features that are related to the typing of objects and links.
* This package defines classifiers and features that are related to the typing of objects, including link objects.
*/
package Objects {
private import Base::Anything;
Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/RationalFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines Functions on Rational values, including concrete specializations of the
* general arithmetic and comparison operations.
*/
package RationalFunctions {
import ScalarValues::*;

Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/RealFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines Functions on Real values, including concrete specializations of the
* general arithmetic and comparison operations.
*/
package RealFunctions {
import ScalarValues::*;

Expand Down
3 changes: 3 additions & 0 deletions sysml.library/Kernel Library/ScalarFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
/**
* This package defines abstract functions that specialize the DataFunctions for use with ScalarValues.
*/
package ScalarFunctions {
import ScalarValues::*;
private import ControlFunctions::reduce;
Expand Down
5 changes: 5 additions & 0 deletions sysml.library/Kernel Library/ScalarValues.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
/**
* This package contains a basic set of primitive scalar (non-collection) data types.
* These include Boolean and String types and a hierarchy of concrete Number types, from
* the most general type of Complex numbers to the most specific type of Positive integers.</p>
*/
package ScalarValues {
private import Base::DataValue;

Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/SequenceFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines functions that operate on general sequences of values. (For functions that
* operate on Collection values, see CollectionFunctions.)
*/
package SequenceFunctions {
private import Base::Anything;
private import ScalarValues::*;
Expand Down
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/StatePerformances.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package contains a library model of the semantics of state-based behavior,
* including the performance of (behavioral) states and the transitions between them.
*/
package StatePerformances {
private import ScalarValues::Boolean;
private import TransitionPerformances::TransitionPerformance;
Expand Down
8 changes: 7 additions & 1 deletion sysml.library/Kernel Library/StringFunctions.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package defines functions on String values, including those corresponding to string concatenation
* and comparison operators in the KerML expression notation.
*/
package StringFunctions {
import ScalarValues::*;

Expand All @@ -13,5 +17,7 @@ package StringFunctions {

function '==' specializes DataFunctions::'==' (x: String[0..1], y: String[0..1]): Boolean[1];

function ToString specializes BaseFunctions::ToString (x: String[1]): String[1];
function ToString specializes BaseFunctions::ToString (x: String[1]): String[1] {
x
}
}
4 changes: 4 additions & 0 deletions sysml.library/Kernel Library/TransitionPerformances.kerml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* This package contains a library model of the semantics of conditional transitions between occurrences,
* including the performance of specified Behaviors when the transition occurs.
*/
package TransitionPerformances {
private import ScalarValues::Boolean;
private import Occurrences::HappensBefore;
Expand Down
42 changes: 42 additions & 0 deletions sysml.library/Systems Library/Connections.sysml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,19 @@
*/
package Connections {
private import Base::Anything;
private import Occurrences::Occurrence;
private import Objects::LinkObject;
private import Objects::linkObjects;
private import Objects::BinaryLinkObject;
private import Objects::binaryLinkObjects;
private import Transfers::Transfer;
private import Transfers::transfers;
private import Transfers::TransferBefore;
private import Transfers::transfersBefore;
private import Parts::Part;
private import Parts::parts;
private import Actions::Action;
private import Actions::actions;

/**
* Connection is the most general class of links between things within some
Expand All @@ -27,6 +34,25 @@ package Connections {
end target: Anything[0..*] :>> BinaryLinkObject::target;
}

/**
* FlowConnection is the class of binary connections that represent a transfer
* of objects or values between two occurrences. It is the base type of all
* FlowConnectionUsages.
*/
abstract connection def FlowConnection :> BinaryConnection, Transfer {
end source: Occurrence[0..*] :>> BinaryConnection::source, Transfer::source;
end target: Occurrence[0..*] :>> BinaryConnection::target, Transfer::target;
}

/**
* SuccessionFlowConnection is the subclass of flow connections that represent
* temporally ordered transfers. It is the base type of all SuccessionFlowConnectionUsages.
*/
abstract connection def SuccessionFlowConnection :> FlowConnection, TransferBefore {
end source: Occurrence[0..*] :>> FlowConnection::source, TransferBefore::source;
end target: Occurrence[0..*] :>> FlowConnection::target, TransferBefore::target;
}

/**
* connections is the base feature of all ConnectionUsages.
*/
Expand All @@ -36,4 +62,20 @@ package Connections {
* binaryConnections is the base feature of all binary ConnectionUsages.
*/
abstract connection binaryConnections: Connection[0..*] nonunique :> connections, binaryLinkObjects;

/**
* flowConnections is the base feature of all FlowConnectionUsages.
*/
abstract connection flowConnections: FlowConnection[0..*] nonunique :> binaryConnections, transfers {
end source: Occurrence[0..*] :>> FlowConnection::source, binaryConnections::source, transfers::source;
end target: Occurrence[0..*] :>> FlowConnection::target, binaryConnections::target, transfers::target;
}

/**
* successionFlowConnections is the base feature of all SuccessionFlowConnectionUsages.
*/
abstract connection successionFlowConnections: SuccessionFlowConnection[0..*] nonunique :> flowConnections, transfersBefore {
end source: Occurrence[0..*] :>> SuccessionFlowConnection::source, flowConnections::source, transfersBefore::source;
end target: Occurrence[0..*] :>> SuccessionFlowConnection::target, flowConnections::target, transfersBefore::target;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ package 'Flashlight Example' {
}

interface userToFlashlight connect user.onOffCmdPort to flashlight.onOffCmdPort {
perform illuminateRegion.onOffCmdFlow;
ref stream :> illuminateRegion.onOffCmdFlow
from source.onOffCmd to target.onOffCmd;
}

part flashlight {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,22 +67,22 @@ package ServerSequenceRealization_2 {

part realization_2 : PubSubSequence {
part :>> producer :> producer_2 {
event occurrence :>> publish_source_event = producerBehavior.publish;
event producerBehavior.publish[1] :>> publish_source_event;
}

part :>> server :> server_2 {
event occurrence :>> subscribe_target_event = serverBehavior.subscribing.accepter;
event occurrence :>> publish_target_event = serverBehavior.delivering.accepter;
event occurrence :>> deliver_source_event = serverBehavior.delivering.effect;
event serverBehavior.subscribing.accepter[1] :>> subscribe_target_event;
event serverBehavior.delivering.accepter[1] :>> publish_target_event;
event serverBehavior.delivering.effect[1] :>> deliver_source_event;
}

part :>> consumer :> consumer_2 {
event occurrence :>> subscribe_source_event = consumerBehavior.subscribe;
event occurrence :>> deliver_target_event = consumerBehavior.delivery;
event consumerBehavior.subscribe[1] :>> subscribe_source_event;
event consumerBehavior.delivery[1] :>> deliver_target_event;
}

message :>> publish_message = producer_2.producerBehavior.publish.outgoingTransfer;
message :>> subscribe_message = consumer_2.consumerBehavior.subscribe.outgoingTransfer;
message :>> deliver_message = server_2.serverBehavior.delivering.effect.outgoingTransfer;
message :> producer_2.producerBehavior.publish.outgoingTransfer :>> publish_message;
message :> consumer_2.consumerBehavior.subscribe.outgoingTransfer :>> subscribe_message;
message :> server_2.serverBehavior.delivering.effect.outgoingTransfer :>> deliver_message;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -117,36 +117,36 @@ package ServerSequenceRealization_3 {

part realization_2 : PubSubSequence {
part :>> producer :> producer_3 {
event occurrence :>> publish_source_event = producerBehavior.publish;
event producerBehavior.publish[1] :>> publish_source_event;
}

part :>> server :> server_3 {
event occurrence :>> subscribe_target_event = serverBehavior.subscribing;
event occurrence :>> publish_target_event = serverBehavior.publishing;
event occurrence :>> deliver_source_event = serverBehavior.delivering;
event serverBehavior.subscribing[1] :>> subscribe_target_event;
event serverBehavior.publishing[1] :>> publish_target_event;
event serverBehavior.delivering[1] :>> deliver_source_event;
}

part :>> consumer :> consumer_3 {
event occurrence :>> subscribe_source_event = consumerBehavior.subscribe;
event occurrence :>> deliver_target_event = consumerBehavior.delivery;
event consumerBehavior.subscribe[1] :>> subscribe_source_event;
event consumerBehavior.delivery[1] :>> deliver_target_event;
}

stream :>> publish_message from producer.producerBehavior.publish.request to server.serverBehavior.publishing.request {
perform producer.producerBehavior.publish;
perform publication_interface.publish_request;
perform server.serverBehavior.publishing;
event producer.publish_request[1];
then event publication_interface.publish_request[1];
then event server.publish_request[1];
}

stream :>> subscribe_message from consumer.consumerBehavior.subscribe.request to server.serverBehavior.subscribing.request {
perform consumer.consumerBehavior.subscribe;
perform subscription_interface.subscribe_request;
perform server.serverBehavior.subscribing;
event consumer.subscribe_request[1];
then event subscription_interface.subscribe_request[1];
then event server.subscribe_request[1];
}

stream :>> deliver_message from server.serverBehavior.delivering.response to consumer.consumerBehavior.delivery.response {
perform server.serverBehavior.delivering;
perform subscription_interface.deliver_response;
perform consumer.consumerBehavior.delivery;
event server.deliver_response[1];
then event subscription_interface.deliver_response[1];
then event consumer.deliver_response[1];
}
}
}
4 changes: 3 additions & 1 deletion sysml/src/examples/Simple Tests/AllocationTest.sysml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ package AllocationTest {
}
}

allocation def Logical_to_Physical {
allocation def A;

allocation def Logical_to_Physical :> A {
end logical : Logical;
end physical : Physical;
}
Expand Down
Loading

0 comments on commit ae9f0d2

Please sign in to comment.