فن وعلم تحديد وتوثيق المتطلبات البرمجية - Requirements Specification and Documentation

 

 

 


 

 

 التاريخ يعلمنا أن مصطلح "هندسة البرمجيات" نفسه وُلد في مؤتمر حلف الناتو عام 1968 كصرخة في وجه "أزمة البرمجيات" (Software Crisis)، حيث كانت المشاريع الكبرى تفشل أو تتأخر بشكل كارثي نتيجة غياب المواصفات الدقيقة. لذا، نحن لا نكتب مجرد أوراق، بل نصمم ضمانات للنجاح.

--------------------------------------------------------------------------------

1. جوهر المتطلبات: ما هي ولماذا نوليها كل هذا الاهتمام؟

في عالمنا المهني، لا تُعد المتطلبات مجرد "قائمة رغبات" مرسلة من العميل، بل هي مواصفات دقيقة (Specifications) تُصاغ لتكون خريطة الطريق الوحيدة للمشروع. إنها العملية الجوهرية لتصور وتحديد الحلول البرمجية لمجموعة من المشكلات المعقدة قبل البدء في كتابة سطر كود واحد.

أهمية المتطلبات في ضمان جودة المنتج النهائي:

  • تجنب الكوارث التاريخية: كما تعلمنا من أزمة 1968، فإن المتطلبات الواضحة تمنع التأخير غير المتوقع في التسليم.
  • ضمان الجودة والاتساق: تضمن بناء التطبيق بشكل صحيح ومنظم منذ البداية، مما يقلل من العيوب البرمجية.
  • الالتزام بالمعايير: تفرض الامتثال للقيود التقنية والمعايير المهنية المطلوبة من قبل العميل أو الجهات التنظيمية.
  • دقة التقديرات: تساعد في تقدير الوقت والجهد والموارد اللازمة لإنهاء المشروع دون تجاوز الميزانية.

إن إدراكنا لهذا الجوهر التاريخي والمهني ينقلنا إلى ضرورة فهم "ثنائية المتطلبات" لنتمكن من تصنيفها بدقة.

--------------------------------------------------------------------------------

2. ثنائية المتطلبات: التمييز بين الوظيفي والآدائي

لفهم أي نظام، يجب أن ننظر إليه من زاويتين متكاملتين: ماذا يفعل النظام؟ وكيف يؤدي مهامه؟ وهذا ما يسمى بالمتطلبات الوظيفية ومتطلبات الأداء.

وجه المقارنة

المتطلبات الوظيفية (Functional)

متطلبات الأداء/الجودة (Performance)

التركيز الأساسي

ماذا يفعل النظام؟ (المهام والإجراءات).

كيف يعمل النظام؟ (سمات الجودة والكفاءة).

المحتوى التقني

المدخلات، المخرجات، والقواعد التحويلية (العمليات).

الجداول الزمنية، الجاهزية، الموثوقية، والأمان.

أمثلة توضيحية

قدرة النظام على دمج قوائم العملاء أو حساب فواتير الضرائب.

أن يستجيب النظام في أقل من ثانيتين، أو أن يظل متاحاً بنسبة 99.9%.

القياس

تُقاس بنجاح تنفيذ المهمة المطلوبة.

تُقاس بمدى الامتثال لمعايير الجودة والاستمرارية.

هذا التصنيف هو حجر الأساس لعملية التوثيق الاحترافية، حيث يضمن عدم إغفال كفاءة النظام مقابل التركيز على وظائفه فقط.

--------------------------------------------------------------------------------

3. ميثاق التواصل: أهداف التوثيق وأثره المهني

التوثيق ليس مجرد عبء إداري، بل هو "ميثاق تواصل" استراتيجي يخلق رؤية مشتركة بين المبرمجين والعملاء. وفقاً لمنهجيات (CMMI)، فإن التوثيق هو الآلية التي تنقل المؤسسة من مرحلة "العمل العشوائي" إلى مرحلة "الأداء الأمثل" (Optimized Performance).

تتجلى فوائد التوثيق في ثلاثة محاور كبرى:

  1. الوضوح والشفافية (Visibility): يضمن أن مسار المشروع مرئي للجميع، مما يزيل أي غموض بين توقعات العميل وتنفيذ المبرمج.
  2. التحكم في التغيير (Controlled Change): يحمي المشروع من العشوائية؛ فكل تعديل يجب أن يمر عبر مرجع موثق لتقييم أثره قبل اعتماده.
  3. التتبع (Traceability): ربط كل متطلب بالاختبارات النهائية، لضمان أن كل وظيفة تم التخطيط لها قد تم التحقق منها فعلياً.

لتحقيق هذه الأهداف الاستراتيجية، يجب أن نفهم "تشريح" وثيقة المتطلبات والعناصر التي تجعلها ناجحة.

--------------------------------------------------------------------------------

4. تشريح وثيقة المتطلبات: المكونات الأساسية للنجاح

بناءً على منهجية "بويد ل. سومرز"، يجب أن تتضمن الوثيقة الاحترافية العناصر التالية لتكون دليلاً عملياً شاملاً:

وصف النظام (System Description): لا يكتفي بالهدف العام، بل يجب أن يجيب على أسئلة جوهرية مثل: "أين سيتم استخدام النظام؟"، "ما هي المهام الحرجة التي سيؤديها؟"، و"ما هي الفترة الزمنية المتوقعة لبقائه في الخدمة؟".

المتطلبات التفصيلية (Detailed Requirements): تركز على المهام المحددة والقواعد التحويلية (Transformation Rules)؛ وهي المنطق البرمجي الذي يحدد كيف تتحول المدخلات (بيانات خام) إلى مخرجات مفيدة (معلومات أو نتائج).

القيود (Constraints): العوامل التي تحد من الخيارات التقنية المتاحة، مثل التوافق مع نظام تشغيل معين (Windows/Linux) أو قيود العتاد الصلب المتوفر.

المعايير (Standards): القواعد التنظيمية والتقنية التي يجب الامتثال لها، لضمان أن المنتج يلبي التزامات الشركة القانونية والمهنية.

--------------------------------------------------------------------------------

5. دستور الجودة: أفضل الممارسات في التدوين والتوثيق

لكي تكون الوثيقة "قابلة للتنفيذ" وليست مجرد حبر على ورق، يجب اتباع "دستور الجودة" في الكتابة:

  • الوضوح والدقة: صياغة المهام بكلمات قاطعة لا تقبل التأويل، لتجنب سوء الفهم بين المحلل والمبرمج.
  • قابلة للتحقق (Verification): يجب كتابة كل متطلب بطريقة تسمح باختباره؛ فالمتطلب الذي لا يمكن قياسه أو اختباره لا يمكن اعتباره متطلباً ناجحاً.
  • التتبع الفريد: تخصيص معرف فريد (Unique Identifier) لكل متطلب (مثلاً REQ-01)؛ وهذا يسهل تتبع المتطلب خلال مراحل التصميم والبرمجة والاختبار.
  • التركيز على "ماذا" لا "كيف": المتطلبات تصف احتياج المستخدم، بينما تترك تفاصيل التنفيذ التقني لمرحلة التصميم.

--------------------------------------------------------------------------------

6. التوثيق ككائن حي: حتمية التحديث والمراجعة

هناك حكمة برمجية تقول: "البرمجيات قد تتدهور، لكنها لا تستهلك". هذا يعني أن البرمجيات لا تبلى جسدياً مثل الآلات، بل تفقد قيمتها بسبب تراكم التغييرات غير الموثقة. لذا، يجب أن تُعامل المتطلبات كـ كائن حي يتطور طوال دورة حياة تطوير البرمجيات (SDLC).

إن مفهوم إدارة التغيير (Change Management) ضروري جداً؛ فإهمال تحديث الوثيقة مع كل تعديل يؤدي إلى حدوث عيوب برمجية ناتجة عن تضارب المتطلبات القديمة مع الحلول الجديدة. التحديث المستمر يضمن بقاء الوثيقة كمصدر وحيد للحقيقة، ويحمي المشروع من التدهور الوظيفي.

--------------------------------------------------------------------------------

7. ترسانة المحلل: الأدوات والتقنيات المساعدة

لتعزيز الكفاءة في جمع وتوثيق المتطلبات، نعتمد على ترسانة من الأدوات التي تجعل العملية أكثر احترافية:

  • Rational ClearCase: أداة قوية لإدارة الإصدارات، تتميز بتقنيات "التطوير المتوازي" (Parallel Development) و"الدمج التلقائي" (Automatic Merging)، مما يسمح لفرق العمل بالعمل على نفس الكود والوثائق دون تضارب.
  • Rational ClearQuest: متخصصة في تتبع العيوب (Defects) وطلبات التغيير، وربطها مباشرة بالمتطلبات الأصلية لضمان التحكم الكامل.
  • الأدوات المؤتمتة (Automated Tools): دورها حيوي في الحفاظ على "سجلات التتبع المفصلة" (Detailed Artifacts) التي تُستخدم في عمليات المراجعة والتدقيق (Audits).
  • تقنيات التحليل: تشمل المقابلات الشخصية، ودراسة الأنظمة الحالية، وبناء النماذج الأولية (Prototyping) لفهم أعمق لاحتياجات المستخدم قبل البدء في التنفيذ.

خاتمة تعليمية: إن إتقان فن التوثيق هو ما يفصل بين "المبرمج" و"المهندس المحترف". ابدأ بتطبيق هذه المفاهيم في مشروعك القادم، وحوّل الكلمات إلى جسور تقنية متينة تضمن وصولك إلى منتج عالي الجودة يلبي طموحات مستخدميه.

 

 

 

المصدر: 

 

Boyd L. Summers.  (2020). Effective Methods For Software Engineering.  LINK

 

 

 

 

تعليقات

المشاركات الشائعة من هذه المدونة

مصادر لتقوية لغتك الإنجليزية

منحة كورسيرا عبر تجمع الشباب السوري

توثيق حسابات السوريين والسودانيين على منصة كورسيرا: دليل شامل ومفصل

تعريف بمنصة كورسيرا

ما هي قواعد البيانات ؟