مخطط المتطلبات
يوفّر مخطط المتطلبات تصوّرًا للمتطلبات وعلاقاتها ببعضها البعض وعلاقاتها بعناصر المستندات الأخرى.
نسخ
تضمين
requirementDiagram
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
element test_entity {
type: simulation
}
test_entity - satisfies -> test_req
الصيغة
يحتوي مخطط المتطلبات على ثلاثة مكوّنات: المتطلب والعنصر والعلاقة.
الكلمات الممثَّلة بالأقواس الزاوية هي كلمات تعداد مفتاحية، مثل ، وخياراتها مفصّلة في الجدول. ويُستخدم user_defined... في أي موضع يتطلّب إدخالًا من المستخدم.
ملاحظة مهمة حول نص المستخدم: يمكن إحاطة جميع المدخلات بعلامات اقتباس مزدوجة أو تركها دون علامات اقتباس. ومع ذلك، يجب على المستخدم توخّي الحذر عند استخدام مدخلات دون علامات اقتباس. وإذا اكتُشفت كلمات مفتاحية أخرى، فسيفشل تصيير المحرّر.
المتطلب
يحتوي تعريف المتطلب على نوع المتطلب والاسم والمعرّف ID والنص والخطر وطريقة التحقق. والصيغة كما يلي:
نسخ
تضمين
<type> user_defined_name {
id: user_defined_id
text: user_defined text
risk: <risk>
verifymethod: <method>
}
النوع والخطر والطريقة تعدادات معرَّفة في 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}
"العقدة المصدر" و "العقدة الهدف" يجب أن يكونا اسمَي عقدة متطلب أو عنصر معرَّفة في موضع آخر.
يمكن أن يكون نوع العلاقة واحدًا من: يحتوي، ينسخ، يُشتق، يُلبّي، يتحقق، يصقل، أو يتتبّع.
حالة مفصّلة
يستخدم هذا المثال جميع وظائف هذا المخطط.
نسخ
تضمين
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;
تطبيق الفئة
يمكن تطبيق الفئة بطريقتين:
١. استخدام صيغة class:
نسخ
تضمين
class test_req,test_entity important
٢. استخدام المعامل ::: بالصيغة المختصرة أثناء التعريف أو بعده:
نسخ
تضمين
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