Sequence diagrams from operations and parts: call/return, async, self-calls, opt/alt/par/break fragments, timeouts

Đang mở
#365 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
rust, yaml

Hướng nghiên cứu

Start by reading crates/syscribe-model/src/vis/derive/sequence.rs and the existing golden SVG/IR tests for derived sequence diagrams. Trace how ActionDef and UseCaseDef subjects map actions to messages and fragments, then compare that with the proposal for PartDef, operations, and the additional UML constructs. Done means the listed constructs have golden coverage, part subjects no longer produce W418, and existing diagrams remain byte-for-byte unchanged where no new construct is used.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Part of #363 (items 2 and 3). Builds on A for operation-based messages.

Current state

crates/syscribe-model/src/vis/derive/sequence.rs: subject is an ActionDef/Action or a UseCaseDef/UseCase with actors:. One Message per SendAction/AcceptAction, one alt fragment per IfAction, one loop per LoopAction. The module states its scope: "no return, create or destroy messages". A PartDef/Part as subject is W418 and the diagram is empty.

Proposal

  1. Subjects. A PartDef/Part subject derives a sequence from the actions it performs: (and from the operations it provides, once A lands), instead of W418.
  2. Messages. Call versus return (a sync operation draws a call and a dashed return carrying the return value and declared errors), async (open arrowhead), self-calls, create and destroy where a model field declares them, and message labels op(arg: T): R from the operation signature.
  3. Fragments. opt (an if without else), alt with a visible else divider per branch, par (from Fork/Join), break, and loop with its guard. Nesting as today.
  4. Timeouts. A timeout on a call or accept (after:) drawn as a timing constraint on the message or as a labelled alt branch.
  5. Keep determinism and fixed layout: lifelines at fixed pitch, messages by row, as today.

Acceptance (tests first)

  • Golden SVG/IR tests for each construct: call and return, async, self-call, opt, alt/else, par, break, nested fragments.
  • A PartDef subject with performs: no longer raises W418 and shows its messages.
  • Existing derived sequence diagrams are unchanged byte for byte unless they use a new construct.

Part of #272 (executable MBSE / software design).


Generated by Claude Code

Ngôn ngữ chính
Rust
Star
8
Fork
1
Merge trung bình
4 giờ 44 phút
Pull request đã merge (30 ngày)
51

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của sjames/syscribe

Tất cả issue của sjames/syscribe

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.