แผนภาพความต้องการ
แผนภาพความต้องการให้การมองเห็นข้อมูลของความต้องการและความสัมพันธ์ระหว่างกัน ตลอดจนความสัมพันธ์กับองค์ประกอบเอกสารอื่น ๆ
คัดลอก
ฝัง
requirementDiagram
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
element test_entity {
type: simulation
}
test_entity - satisfies -> test_req
ไวยากรณ์
แผนภาพความต้องการประกอบด้วยองค์ประกอบสามประเภท: ความต้องการ องค์ประกอบ และความสัมพันธ์
คำที่แสดงด้วยวงเล็บเหลี่ยมคือคีย์เวิร์ด enum เช่น โดยตัวเลือกของมันอธิบายไว้โดยละเอียดในตาราง user_defined... ใช้ในทุกที่ที่ต้องให้ผู้ใช้ป้อนข้อมูล
หมายเหตุสำคัญเกี่ยวกับข้อความของผู้ใช้: อินพุตทั้งหมดสามารถล้อมด้วยเครื่องหมายอัญประกาศคู่หรือไม่ล้อมก็ได้ อย่างไรก็ตาม ผู้ใช้ต้องระมัดระวังเมื่อใช้อินพุตที่ไม่ล้อมด้วยเครื่องหมายอัญประกาศ หากตรวจพบคีย์เวิร์ดอื่น เอดิเตอร์จะเรนเดอร์ล้มเหลว
ความต้องการ
คำจำกัดความของความต้องการประกอบด้วยประเภทความต้องการ ชื่อ ID ข้อความ ความเสี่ยง และวิธีการตรวจสอบ ไวยากรณ์มีดังนี้:
คัดลอก
ฝัง
<type> user_defined_name {
id: user_defined_id
text: user_defined text
risk: <risk>
verifymethod: <method>
}
ประเภท ความเสี่ยง และวิธีการเป็น enum ที่กำหนดใน SysML
| คีย์เวิร์ด | ตัวเลือก |
|---|---|
| ประเภท | ความต้องการ, ความต้องการเชิงหน้าที่, ความต้องการเชิงอินเทอร์เฟซ, ความต้องการด้านประสิทธิภาพ, ความต้องการทางกายภาพ, ข้อจำกัดการออกแบบ |
| ความเสี่ยง | ต่ำ, ปานกลาง, สูง |
| วิธีการตรวจสอบ | การวิเคราะห์, การตรวจสอบ, การทดสอบ, การสาธิต |
องค์ประกอบ
คำจำกัดความขององค์ประกอบประกอบด้วยชื่อองค์ประกอบ ประเภท และการอ้างอิงเอกสาร ซึ่งทั้งสามเป็นสิ่งที่ผู้ใช้กำหนด ฟีเจอร์ขององค์ประกอบมีจุดประสงค์เพื่อให้มีน้ำหนักเบา ในขณะเดียวกันก็อนุญาตให้เชื่อมโยงความต้องการกับเนื้อหาส่วนอื่นของเอกสารได้
คัดลอก
ฝัง
element myElement {
type: string
docref: some/doc/path
}
รูปแบบ Markdown
ในส่วนที่อนุญาตให้ผู้ใช้กำหนดข้อความเอง (เช่น ชื่อ ข้อความความต้องการ การอ้างอิงเอกสารขององค์ประกอบ เป็นต้น) คุณสามารถ:
- ล้อมข้อความด้วยเครื่องหมายอัญประกาศคู่
- ใช้รูปแบบ markdown ภายในเครื่องหมายอัญประกาศคู่
คัดลอก
ฝัง
requirementDiagram
requirement "__test_req__" {
id: 1
text: "*italicized text* **bold text**"
risk: high
verifymethod: test
}
ความสัมพันธ์
ความสัมพันธ์ประกอบด้วยโหนดต้นทาง โหนดปลายทาง และประเภทความสัมพันธ์
ปฏิบัติตามรูปแบบการกำหนดต่อไปนี้:
คัดลอก
ฝัง
{name of source} - <type> -> {name of destination}
หรือ
คัดลอก
ฝัง
{name of destination} <- <type> - {name of source}
"โหนดต้นทาง" และ "โหนดปลายทาง" ควรเป็นชื่อของโหนดความต้องการหรือโหนดองค์ประกอบที่กำหนดไว้ที่อื่น
ประเภทความสัมพันธ์อาจเป็นหนึ่งใน contains, copies, derives, satisfies, verifies, refines หรือ traces
ตัวอย่างโดยละเอียด
ตัวอย่างนี้ใช้ฟีเจอร์ทั้งหมดของแผนภาพนี้
คัดลอก
ฝัง
requirementDiagram
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
functionalRequirement test_req2 {
id: 1.1
text: the second test text.
risk: low
verifymethod: inspection
}
performanceRequirement test_req3 {
id: 1.2
text: the third test text.
risk: medium
verifymethod: demonstration
}
interfaceRequirement test_req4 {
id: 1.2.1
text: the fourth test text.
risk: medium
verifymethod: analysis
}
physicalRequirement test_req5 {
id: 1.2.2
text: the fifth test text.
risk: medium
verifymethod: analysis
}
designConstraint test_req6 {
id: 1.2.3
text: the sixth test text.
risk: medium
verifymethod: analysis
}
element test_entity {
type: simulation
}
element test_entity2 {
type: word doc
docRef: reqs/test_entity
}
element test_entity3 {
type: "test suite"
docRef: github.com/all_the_tests
}
test_entity - satisfies -> test_req2
test_req - traces -> test_req2
test_req - contains -> test_req3
test_req3 - contains -> test_req4
test_req4 - derives -> test_req5
test_req5 - refines -> test_req6
test_entity3 - verifies -> test_req5
test_req <- copies - test_entity2
ทิศทาง
สามารถใช้คำสั่ง direction เพื่อตั้งค่าการเรนเดอร์แผนภาพในทิศทางต่าง ๆ ค่าที่ถูกต้องได้แก่:
- TB - จากบนลงล่าง (ค่าเริ่มต้น)
- BT - จากล่างขึ้นบน
- LR - จากซ้ายไปขวา
- RL - จากขวาไปซ้าย
คัดลอก
ฝัง
requirementDiagram
direction LR
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
element test_entity {
type: simulation
}
test_entity - satisfies -> test_req
สไตล์
ความต้องการและองค์ประกอบสามารถกำหนดสไตล์ได้โดยใช้สไตล์โดยตรงหรือคลาส โดยทั่วไป เมื่อนำสไตล์หรือคลาสไปใช้ จะรับรายการชื่อความต้องการหรือองค์ประกอบและรายการชื่อคลาส ซึ่งอนุญาตให้กำหนดหลายคลาสได้ในคราวเดียว ข้อยกเว้นเดียวคือไวยากรณ์แบบย่อ ::: ตัวดำเนินการสามารถกำหนดหลายคลาสได้ แต่กำหนดให้กับความต้องการหรือองค์ประกอบได้ทีละหนึ่งเท่านั้น
สไตล์โดยตรง
คัดลอก
ฝัง
requirementDiagram
requirement test_req {
id: 1
text: styling example
risk: low
verifymethod: test
}
element test_entity {
type: simulation
}
style test_req fill:#ffa,stroke:#000, color: green
style test_entity fill:pink,stroke:#333, color: blue
การกำหนดคลาสมีดังตัวอย่างต่อไปนี้:
ใช้ classDef เพื่อกำหนดสไตล์ที่นำกลับมาใช้ซ้ำได้:
คัดลอก
ฝัง
requirementDiagram
requirement test_req {
id: 1
text: "class styling example"
risk: low
verifymethod: test
}
element test_entity {
type: simulation
}
classDef important fill:#f96,stroke:#333,stroke-width:4px
classDef test fill:#ffa,stroke:#000
คลาสเริ่มต้น
หากคลาสใดมีชื่อว่า default มันจะถูกนำไปใช้กับโหนดทั้งหมด ควรกำหนดสไตล์และคลาสเฉพาะหลังจากนี้ เพื่อเขียนทับสไตล์เริ่มต้นที่ถูกนำไปใช้แล้ว
คัดลอก
ฝัง
classDef default fill:pink,stroke:#333,stroke-width:4px;
คลาสแอปพลิเคชัน
คลาสสามารถนำไปใช้ได้สองวิธี:
1. ใช้ไวยากรณ์ class:
คัดลอก
ฝัง
class test_req,test_entity important
2. ใช้ตัวดำเนินการ ::: ไวยากรณ์แบบย่อในระหว่างหรือหลังการกำหนด:
คัดลอก
ฝัง
requirement test_req:::important {
id: 1
text: class styling example
risk: low
verifymethod: test
}
คัดลอก
ฝัง
element test_elem {}
test_elem:::myClass
ตัวอย่างการรวมกัน
คัดลอก
ฝัง
requirementDiagram
requirement test_req:::important {
id: 1
text: "class styling example"
risk: low
verifymethod: test
}
element test_entity {
type: simulation
}
classDef important font-weight:bold
class test_entity important
style test_entity fill:pink,stroke:#333