Register
Process Type
Graphical expression
Mind Type
Structured expression
Note Type
Efficient expression

مخطط المتطلباتالصيغة

مخطط المتطلبات

يوفّر مخطط المتطلبات تصوّرًا للمتطلبات وعلاقاتها ببعضها البعض وعلاقاتها بعناصر المستندات الأخرى.

كود
                            
نسخ
تضمين
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