memo_architecture_operational_use_cases¶
| Public namespace | memo::architecture::operational::use_cases |
| Declared package | memo_architecture_operational_use_cases |
| Source | src/architecture/operational/use_cases/memo_use_cases.sysml |
Namespace hierarchy¶
memo → memo::architecture → memo::architecture::operational → memo::architecture::operational::use_cases
Packages¶
| Package |
|---|
memo_architecture_operational_use_cases |
Imports¶
| Visibility | Target |
|---|---|
| private | Metaobjects::SemanticMetadata |
| private | ScalarValues::* |
| private | memo_core_common::* |
| private | memo_core_enumerations::* |
| private | memo_core_relationships::* |
| private | memo_architecture_operational_context_actors::* |
| private | memo_architecture_operational_context_use_context::* |
| private | memo_assurance_requirements_needs::* |
Declarations¶
| Name | SysML kind | Description | Specializes |
|---|---|---|---|
UseCaseKind |
enum def |
Controlled values for use case: clinical, service, manufacturing, development. |
— |
UseCase |
use case def |
Use case definition specializing MemoUseCase. |
MemoUseCase |
Motivates |
connection def |
Typed relationship from Need to UseCase. |
MemoRelationship |
UseCaseKind¶
enum def UseCaseKind| Property | Value |
|---|---|
| Description | Controlled values for use case: clinical, service, manufacturing, development. |
| Kind | enum def |
| Abstract | No |
| Specializes | — |
| Owning package | memo_architecture_operational_use_cases |
UseCase¶
use case def UseCase :> MemoUseCase, UseCases::UseCase| Property | Value |
|---|---|
| Description | Use case definition specializing MemoUseCase. |
| Kind | use case def |
| Abstract | No |
| Specializes | MemoUseCase |
| Owning package | memo_architecture_operational_use_cases |
Motivates¶
connection def Motivates :> MemoRelationship| Property | Value |
|---|---|
| Description | Typed relationship from Need to UseCase. |
| Kind | connection def |
| Abstract | No |
| Specializes | MemoRelationship |
| Owning package | memo_architecture_operational_use_cases |
Source¶
architecture/operational/use_cases/memo_use_cases.sysml
// Use cases (§5). A UseCase is a goal a person or organization wants to
// achieve with system support — there is no separate Goal class. Clinical,
// service, manufacturing, and development use cases specialize the same base.
package memo_architecture_operational_use_cases {
private import Metaobjects::SemanticMetadata;
private import ScalarValues::*;
private import memo_core_common::*;
private import memo_core_enumerations::*;
private import memo_core_relationships::*;
private import memo_architecture_operational_context_actors::*;
private import memo_architecture_operational_context_use_context::*;
private import memo_assurance_requirements_needs::*;
enum def UseCaseKind {
enum clinical;
enum service;
enum manufacturing;
enum development;
}
// Specializes the STANDARD library use case as well as MEMO's base. Before
// this it specialized only `MemoUseCase` and so shadowed `UseCases::UseCase`
// — same name, same metaclass, none of the semantics — which is why the
// subject/actor features below had to be re-declared by hand instead of
// being inherited. The wrapper survives only to carry the display label and
// lifecycle status; identity comes from `@MemoIdentity`.
use case def UseCase :> MemoUseCase, UseCases::UseCase {
// Text of this use case's goal; this is not a separate Goal element.
attribute goalStatement : String;
attribute trigger : String;
attribute preCondition : String;
attribute successOutcome : String;
attribute failureOutcome : String;
attribute postCondition : String;
// clinical / service / manufacturing / development
attribute useCaseKind : UseCaseKind;
// The device or system under consideration supports the goal. Native
// `subject`, not `ref` (R10-S6): a use case needs an explicit subject
// before it can declare `actor` (the subject parameter comes first),
// and "the device/system under consideration"
// is exactly what a case's subject means, so this was a duplicate
// waiting to surface once `actor` needed a subject to attach to.
subject supportingSystem : MemoPart[0..1];
ref useContext : UseContext[0..1];
// Who takes part is native `actor` (`actor <role> = <participant>;`),
// inherited from `UseCases::UseCase`. `primaryUser` and
// `supportingActors` refs stood here as a second way of saying the
// same thing and were removed; which actor initiates is carried by
// the actor's name, as the note on `Initiates` below says.
}
connection def Motivates :> MemoRelationship {
end motivatingNeed : Need :>> source;
end motivatedUseCase : UseCase :>> target;
}
abstract connection motivatesLinks : Motivates[*];
metadata def <motivates> MotivatesMetadata :> SemanticMetadata {
:> annotatedElement : SysML::ConnectionDefinition;
:> annotatedElement : SysML::ConnectionUsage;
:>> baseType = motivatesLinks meta SysML::Usage;
}
// `Initiates` and `ParticipatesIn` are native `actor` (R10-S6): both were
// a bare typed edge onto UseCase with no attributes of their own, and
// native `actor` does not distinguish an initiating actor from a
// participating one — that distinction now lives in how the actor is
// named on the use case, not in a relationship type. Write
// `actor <role> = <existingElement>;` inside the use case instead.
// UML use-case decomposition (`Includes`) is native `include use case` /
// `include` (R10-S6); write that instead of a connection here. SysML v2
// has no use-case `extend` (the textual BNF defines IncludeUseCaseUsage
// and nothing for extend), and MEMO does not add one: an optional path
// through a use case is an alternate scenario, not a second use case.
}