Release notes¶
Versioned under semantic versioning. Before 1.0 a change that breaks a model, a command or a setting raises the minor number; a fix or addition that breaks nothing raises the patch. Every release is tagged in the repository. The notes for all three packages are also on memoarchitect.com/releases.html.
0.16.2¶
- Every view traces to a viewpoint. New rule
CR-ONT-092: a view that traces to no viewpoint is an error. The shipped examples keep a view under the viewpoint it traces to, or underviewpoints/shared/when it traces to several. - ISO 14971. Rules over clauses 5.2, 5.3 and 7.4;
WeighedAgainstlinks a benefit to a risk and places neither in a workspace of its own.TestRunrecords one execution of a verification case.MC-001makes a model's own constraints a tailorable rule. - Added.
NavigatesTo(a UI element to the screen it opens); a function and a scenario carry a precondition and a postcondition;isConnectoron a relation; a regulated device has an intended use and is used with other devices;partNumberandrevisionon a part. - Changed. Measurable attributes are ISQ quantities (durations, frequencies, storage capacity, voltage, current); a function's output summary is
outputDescription; an exchange has no direction of its own, andAR-EXCH-001andAR-EXCH-002hold it to its ports. - Removed.
SoftwareSystem.version,ModeConfiguration.activeElement,regulatoryRegime(a model's regimes are itsRegulatedDevicejurisdictions),UseCase.standalone, and the rulesCR-ONT-086andCR-ONT-087.
0.16.0¶
- No ontology change. The version moves with MEMO Tools and Architect, which now support SysIDE 1.0.
0.15.3¶
- Matrix views and system scope. Matrix view defs for traceability matrices and DSMs, with the system a matrix is about;
ScopedToties an item to the scope of one system;SystemandSystemOfSystemsstate their origin (built by this organisation or by others). - Risk estimates. The ISO 14971 chain is independent elements linked by
EstimatedFor, not owned;RiskstatesresidualProbabilityEstimate,residualSeverityEstimateandresidualBenefitRiskRequired.
0.15.2¶
No change to the ontology; released with tools and Architect 0.15.2, which pin it.
0.15.1¶
MemoKindmarks a definition that extends the ontology.@MemoKind { :>> idPrefix = "AFS"; }on apart defgives that definition, and what is typed by it, its own display-id family (AFS-1). Without it, a project definition is a model element and its ids take the family of the ontology kind it descends from. Tools 0.15.1 reads the marker; before it, every project definition minted a family from the first word of its own name.
0.15.0 (experimental release)¶
This release adds support for the OpenSysML compiler alongside SysIDE. The OpenSysML path is new and has had less use. The next version will be more stable.
Breaking¶
-
A methodology selects packages by importing them; the inclusion lists are gone.
includedLayerandincludedModuleare removed fromMethodologyDefinition,ResolvedMethodologyandProjectMethodBinding, and so isincludedExtension, which an earlier 0.14.0 change had added. What a methodology selects is what the package declaring it publicly imports, followed through public imports transitively; a project adds packages the same way, by publicly importing them in the package that declares its binding. A private import selects nothing. A misspelled package is an import the compiler rejects, so theunavailable-module,unavailable-layerandmissing-extensiondiagnostics are gone with the lists. Each architecture layer is now a package that publicly imports every package in the layer (memo_architecture_operational,…_functional,…_logical,…_implementation,…_realization). The extension methodologies (rosExtensionMethod,cloudExtensionMethod, …, inmemo_extension_<name>_methodology) are deleted: an extension is brought in by importing its facade,memo_extension_<name>, which publicly imports the extension's packages and the extensions it builds on —rosnow publicly imports messaging and container. A package declares at most one methodology, because the package is the selection. To move a methodology, replaceattribute :>> includedLayer = ("memo_architecture_logical", …);andattribute :>> includedModule = ("memo_rules_closure", …);withpublic import memo_architecture_logical::*;andpublic import memo_rules_closure::*;in its package. To move a binding, replaceref :>> includedExtension = rosExtensionMethod;and itsprivate import memo_extension_ros_methodology::rosExtensionMethod;withpublic import memo_extension_ros::*;in the binding's package, and anincludedModulestring the same way. A model that still writes the attributes no longer compiles, which is the point: they named packages by string beside the import that already did. -
A methodology selects standards, artifact kinds and viewpoints by type.
includedStandardandincludedViewpointare references to aRegulatoryStandardand aMemoViewpoint, andincludedArtifactKindis typed byArtifactKind. They were strings, and a string that names nothing selects nothing without a word: the GPCA methodology listed ISO 14155, IEC 62366, IEC 60601-1 and a "RiskManagementPlan" that the ontology does not declare. Writeref :>> includedStandard = (iso14971, iec62304);and import the elements. A compiler that resolves names (SysIDE, asmemo buildruns) now reports a misspelling as a reference error. (Modules and layers are now selected by import; see above.) -
ROS: one statement of each fact.
RosReliabilityKindandRosQosProfile.reliabilityare gone: reliability is the port'sdeliverySemantics(best effort is at-most-once, reliable is at-least-once), which a port could previously contradict.RosServiceClient.timeoutMsis gone; the timeout belongs to the interface (timeoutMs).RosTopicInterfacedefaultsdirectiontooutput, so a topic usage no longer repeats it. -
Interfaceis abstract. Type an interface asLogicalInterface,SoftwareInterfaceorPhysicalInterface. The hardware-signal fields (electricalStandard,nominalVoltageV,nominalCurrentA,bitRateBps,signalRange) moved toPhysicalInterfaceand the API fields (apiStyle,schemaReference) toSoftwareInterface.directionalityis gone (directionalready said it) and the free-textsignalingandsignalKindare replaced bysignalingKind.LogicalInterfacenow specializesInterface. -
SoftwareItemisDataItem;SBOMComponentisSBOMEntry. The item family is exchanged or stored data, so it no longer borrows IEC 62304's term for a program part.SBOMEntryis now apart defthat references aSoftwareElement, itslicenseandhasharelicenseExpressionandchecksum(the spellingOTSSoftwareModuleuses), andSbomFormatKindmoved with it.SBOMComponentis gone;AffectsSBOMComponentandMonitorsSBOMComponentareAffectsSBOMEntryandMonitorsSBOMEntry. -
SOUP is a type.
ModuleKind::soupand thesoupVersion,soupVendor,knownAnomalies,riskAcceptanceandsoupClassificationattributes ofSoftwareModuleare gone. Type the moduleSOUPSoftwareModule(supplier,version,knownAnomalies,riskAcceptance,soupClassification), orOTSSoftwareModulefor off-the-shelf software, which specializes it (IEC 62304 §3.29 counts off-the-shelf software as SOUP) and addslicenseExpression,packageUrlandchecksum. CR-MED-015, 016 and 017 apply toSOUPSoftwareModuleand so to every OTS module; CR-MED-016 readsversionandsupplier. The SOUP DHF templates list both types instead of filtering on a module kind that no longer resolved. To move, replacepart x : SoftwareModule { attribute :>> moduleKind = ModuleKind::soup; attribute :>> soupVendor = ...; attribute :>> soupVersion = ...; }withpart x : SOUPSoftwareModule { attribute :>> supplier = ...; attribute :>> version = ...; }(orOTSSoftwareModule). -
A rule traces to a clause by a dependency. The trace was a
ref enforcesmember of the rule. It is now#EnforcesClause dependency from <Rule> to <clause>, <clause>;, written beside the rule. A rule may name several clauses or none. To move, replace eachref enforces : StandardClause[1..*] = a.b.c;with the dependency, spell the clause with::, and importmemo_artifacts_standards_traceability::EnforcesClause. The previous form is taggedpre-typed-rule-clause-relation. -
One project skeleton. The manifest's
templatesmap andinit.defaultTemplateare replaced byinit.template: ./templates/default, and thesamd,infusion-pump,monitoring-deviceandconnected-devicestarters are removed. Start from an example instead (memo-architect init --example <id>). A manifest in the old form is rejected by tools 0.14.0.
Fixed¶
- Versions agree. A methodology's
version(0.6.5, 0.7.0, 0.1) and the clinical extension's package version (0.6.1) sat far behind the 0.13 product. They carry the product version now, andversion:checkcovers every methodology and extension descriptor, so they cannot drift again.
Added¶
-
One KPAR per extension.
memo buildproduced a singlememo-extensionsarchive holding every extension, so ROS could not be shipped or depended on without clinical and AADL. Each extension is nowmemo-extension-<name>, declaring the base and the extensions its source imports (ROS declares messaging and container).memo-extensionsis no longer built. -
Cybersecurity: product security and threat intelligence.
ThreatActor,AttackTechnique(an external framework's identifier),AttackPath,SecurityProperty,CybersecurityAssumption,SBOMEntry,SecurityFinding,PostmarketProcessandCyberRiskAssessment(inherent or residual, without copying the risk), thirteen relations that link them (ExposesAsset,UsesAttackTechnique,IdentifiesVulnerability,AssessesCyberRisk, ...), andcveReferenceandvulnerabilityDispositionon a vulnerability. Additive: no existing model changes. From a proposal against 0.11.2, merged onto 0.13.2. - One interface per layer.
Interfaceis abstract and holds what every interface states (what crosses, direction, timing, safety and security).LogicalInterface,SoftwareInterfaceand the newPhysicalInterfaceeach add only what their layer can say, so a hardware link is no longer described with software API fields or the reverse.PhysicalInterfaceaddssignalingKind(analog, digital, discrete, pulse, power transfer),mediumKindand the electrical descriptors, and hardware gets its ownPhysicalFlow. The cable or connector that carries a link is a part related byConnectionBinding. -
Security assessment and OTS software.
SecurityAssessmentCaseis a verification case whose method is penetration test, SAST, DAST or SCA; it produces aSecurityAssessmentReport(ProducesEvidence), which holds itsSecurityFindings.SecurityFindingreplacesPenTestFindingfrom the same release, and its status type isSecurityFindingStatusKind.SOUPSoftwareModule,OTSSoftwareModule,OTSSoftwareComponent;SoftwareBillOfMaterials. -
Rule obligation. Every rule states
required,recommendedorbestPractice(RuleObligationKind). Rules that trace to a clause startrequired; the rest startrecommended. A rule that states no severity takeserror,warningorinfofrom it.