ما نقطة COSMIC الوظيفية، وبماذا تختلف عن تقدير الساعات؟

تقيس Mesterséges Intelligencia Központ Kft.، شركة تطوير البرمجيات في بودابست بالمجر، حجم البرمجيات بنقاط COSMIC الوظيفية: فيصبح الحجم بذلك خاصية للبرنامج، لا انطباعًا لدى المقدِّر، ولذلك يمكن التحقق منه وإعادة قياسه، ومقارنة عرضين على أساسه.

الخلاصة: تقيس COSMIC (ISO/IEC 19761) الحجم الوظيفي للبرمجيات: كل حركة بيانات، سواء أكانت إدخالًا أم إخراجًا أم قراءة أم كتابة، تساوي نقطة COSMIC وظيفية واحدة (1 CFP). يخبر تقدير الساعات بمقدار العمل الذي يتوقعه المقدِّر؛ أما الحجم المقاس فيخبر بحجم المهمة. ولذلك يمكن التحقق منه وإعادة قياسه، ومقارنة عرضين على أساسه، ويمكن بعد ذلك استنتاج الجهد من الحجم ومن الإنتاجية المستمدة من التجربة.

ما قياس الحجم الوظيفي؟

يمكن التعبير عن حجم البرمجيات بطرق كثيرة: بأسطر الشيفرة، أو بالساعات، أو بالنقاط. ويقيس قياسُ الحجم الوظيفي (functional size measurement، FSM) ما يجب أن يؤديه البرنامج من منظور مستخدميه، لا طريقة تنفيذه. وتحدّد مفاهيمَه الأساسية المواصفةُ القياسية ISO/IEC 14143-1:2007؛ وبحسب وصف المواصفة، فإن الهدف تحديدًا أن يركّز القياس على الوظائف التي يطلبها المستخدم بدلًا من طريقة التنفيذ.

يقوم القياس على مجموعة المتطلبات الوظيفية للمستخدم (functional user requirements، FUR): أي ذلك الجزء من متطلبات المستخدم الذي يصف المهام والخدمات التي يجب أن يؤديها البرنامج. أما الأداء، والأمن، والتقنية المختارة، فلا تندرج هنا؛ ونكتب عنها أدناه، عند الحديث عن الحدود.

توجد عدة طرق معيارية لقياس الحجم الوظيفي. وأشهرها COSMIC (ISO/IEC 19761:2011) وطريقة IFPUG (ISO/IEC 20926:2009)؛ كما اعتمدت ISO طرقًا أخرى مواصفاتٍ قياسية (NESMA، وFiSMA، وMk II). وكلها تنطلق من المتطلبات، لكن بقواعد مختلفة ووحدات قياس مختلفة، ولذلك لا يمكن المقارنة مباشرة بين الأرقام المقاسة بطرق مختلفة.

ما COSMIC؟

اسم COSMIC اختصار لـCommon Software Measurement International Consortium: وهي منظمة غير ربحية ترعى الطريقة وتنظّم اعتماد القائمين بالقياس. نشأت الطريقة في أواخر التسعينيات تطويرًا لطرق نقاط الوظائف السابقة، وأصبحت مواصفة ISO قياسية في 2003، والإصدار الساري حاليًا هو ISO/IEC 19761:2011. ويمكن تنزيل الوصف التفصيلي للطريقة، أي الإصدار 5.0 من COSMIC Measurement Manual، مجانًا؛ وقد صدر جزؤه الأول في 2021، وجزؤه الثاني في 2024.

وبحسب المواصفة، تصلح الطريقة لقياس البرمجيات التطبيقية (مثل أنظمة الأعمال)، والبرمجيات العاملة في الوقت الفعلي، والبرمجيات التي تجمع بين النوعين، أي إنه يمكن بها قياس نظام ERP أو CRM أو متجر إلكتروني، وكذلك برمجيات التحكم.

مفاهيم نموذج COSMIC

يصف COSMIC البرنامج بنموذج بسيط: يتبادل البرنامج البيانات مع مستخدميه الوظيفيين عبر حدّه، ويقرأ داخل هذا الحد من التخزين الدائم ويكتب فيه.

المفهوممعناهمثال
المستخدم الوظيفيمن يرسل بيانات إلى البرنامج أو ينتظر منه بيانات، إنسانًا كان أو برنامجًا آخر أو جهازًاموظف المعاملات، ونظام الفوترة
الحدّواجهة افتراضية بين البرنامج المقاس ومستخدميه الوظيفيينواجهة الويب والواجهة المفتوحة للأنظمة الأخرى
الحدث المُطلِقحدث يبدأ المستخدم الوظيفي استجابةً له عملية ماتقدُّم عميل جديد
العملية الوظيفيةوحدة أولية من المتطلبات قابلة للتنفيذ باستقلالية، وهي سلسلة مترابطة من حركات البيانات«تسجيل عميل جديد»
مجموعة البياناتمجموعة من عناصر البيانات تخص شيئًا واحدًا يجب على البرنامج معالجة بيانات عنهالعميل: الاسم، والعنوان، والرقم الضريبي، والبريد الإلكتروني
حركة البياناتنقل مجموعة بيانات واحدة؛ ولها أربعة أنواعانظروا أدناه

حركات البيانات الأربع:

وهذه بعض قواعد القياس التي تحدّد العدّ:

تقع النتيجة على مقياس نسبي (ratio scale)، أي إن الأحجام يمكن جمعها ومقارنتها: فجزءان حجم كلٍّ منهما 40 CFP يساويان معًا 80 CFP، ويمكن إظهار المجموع الجزئي لكل مجموعة وظائف أيضًا.

مثال محلول: «تسجيل عميل جديد»

لنأخذ متطلبًا بسيطًا: «يسجّل موظف المعاملات بيانات العميل الجديد (الاسم، والعنوان، والرقم الضريبي، والبريد الإلكتروني). ويتحقق النظام من أن العميل غير مسجّل من قبل، ويحفظه، ويُبلغ بالنجاح أو بالخطأ.» خطوات القياس:

  1. المستخدم الوظيفي هو موظف المعاملات، والحدث المُطلِق هو تقدّم عميل جديد.
  2. مجموعة البيانات هي العميل؛ فعناصر البيانات الأربعة تخص الشيء نفسه، ولذلك فهي مجموعة واحدة.
  3. حركات البيانات نحدّدها من جمل المتطلب، ونعدّ كلًّا منها.
الخطوةحركة البياناتمجموعة البياناتالحجم
يرسل موظف المعاملات النموذجEntry (الإدخال)العميل1 CFP
يتحقق النظام مما إذا كان العميل موجودًا بالفعلRead (القراءة)العميل1 CFP
يحفظ النظام العميل الجديدWrite (الكتابة)العميل1 CFP
الإبلاغ بالنجاح أو بأي خطأExit (الإخراج)رسالة الخطأ والتأكيد1 CFP
المجموعأربع حركات بياناتمجموعة بيانات واحدة4 CFP

وعلى النحو نفسه يُبنى مثال «تسجيل موظف جديد» في الدليل المنشور على موقع COSMIC. وتظهر تغييرات المتطلب في الحجم على النحو التالي:

ويُظهر المثال أيضًا لماذا يمكن التحقق من القياس: فوراء كل CFP متطلب مسمّى، ومجموعة بيانات، وقاعدة. وإذا اعترض أحد، أمكن تحديد السطر المقصود بالضبط.

القياس مبكرًا، والتدقيق لاحقًا

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

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

المقارنة: الساعات، ونقاط القصة، وIFPUG، وCOSMIC

المعيارتقدير الساعاتنقطة القصة (story point)نقطة IFPUG الوظيفيةنقطة COSMIC الوظيفية
ما الذي تعبّر عنهالعمل الذي يتوقعه المقدِّرالتقدير النسبي للفريق؛ وليس واضحًا دائمًا أهو تقدير للحجم أم للجهد أم للوقتالحجم الوظيفيالحجم الوظيفي
هل هي معياريةلالانعم، ISO/IEC 20926:2009نعم، ISO/IEC 19761:2011
علامَ تتوقفعلى خبرة المقدِّر وحذره وفريقهعلى الفريق المعني؛ وتعني شيئًا مختلفًا من فريق إلى آخرعلى المتطلباتعلى المتطلبات
هل يمكن التحقق منها من الخارجفقط بناءً على شرح المقدِّربالكاد خارج الفريقنعم، وفق قواعد منشورةنعم، وفق قواعد منشورة ومتاحة مجانًا
وحدة القياسالساعةالنقطة الخاصة بالفريقنقطة IFPUG الوظيفيةCFP، و1 CFP = حركة بيانات واحدة
أنسب استخدام لهاتخطيط المهام القصيرة والمعروفة جيدًاتخطيط السبرنت (sprint) الخاص بالفريققياس الحجم، والمقارنةقياس الحجم، والمقارنة، وأساسًا للعرض والجدول الزمني

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

لماذا يُعدّ الحجم المقاس أساسًا أكثر موثوقية؟

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

ويستشهد دليل COSMIC بعدة دراسات كان فيها الحجم المقاس بـCFP أوثق ارتباطًا بالجهد الفعلي من التقدير المعبَّر عنه بنقاط القصة. وينبّه الدليل نفسه أيضًا إلى أن الجهد المقدَّر من الحجم يكون موثوقًا إذا كانت عملية التطوير قابلة للتكرار بدرجة كافية، وكان الحجم هو المحدد الأول للجهد. فالحجم المقاس إذن نقطة انطلاق أفضل، لكن التقدير الجيد يتطلب معرفة الإنتاجية أيضًا.

ما الذي لا تقيسه COSMIC؟

يقيس حجم COSMIC الوظائف، ويصرّح وصف الطريقة بذلك علنًا. أما ما لا يعبّر عنه:

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

كيف نستخدمها في عملنا؟

نقيس الحجم الوظيفي للتطوير بنقاط COSMIC الوظيفية. وقد بنينا للقياس مسار عمل خاصًا بنا مدعومًا بالذكاء الاصطناعي، ويتحقق إنسان من النتيجة في جولة مراجعة. والخطوات:

  1. مواصفات بندًا بندًا: نقسّم التطوير إلى مجموعات وظائف، ونصف كلًّا منها بالقالب نفسه: الهدف، والجهات الفاعلة، والبيانات، والوظائف، ووظائف الذكاء الاصطناعي، وما لا يدخل ضمنه (انظروا: كيف نعمل).
  2. عدة عمليات عدّ مستقلة: تَعُدّ عدة نماذج لغوية كل مجموعة وظائف عدة مرات؛ ويُظهر تشتّت نتائج العدّ درجة عدم اليقين.
  3. جولة تنسيق: تضمن أن تُحتسب كل عملية وظيفية مرة واحدة بالضبط، حتى إن وردت في عدة أوصاف.
  4. المراجعة: نراجع القياس، ونوضّح النقاط غير المؤكدة، ونتجاوز يدويًا، عند الحاجة، عمليات الدمج الآلية.
  5. التثبيت: يمكن تثبيت القياس المكتمل نسخةً غير قابلة للتغيير، وتصبح هذه النسخة أساس العقد.

وعند تطوير نظام قائم، نصف الجزء القائم بشكل منفصل، فلا يدخل في الحجم إلا الجزء الجديد. ويشير القياس أيضًا إلى ما لا يعبّر عنه الحجم الوظيفي.

كيف يصبح الحجم عرضًا وجدولًا زمنيًا؟

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

مقارنة عرضين على أساس الحجم

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

  1. المواصفات نفسها: يتلقى كل مقدّم عرض الوصف المفصّل نفسه بندًا بندًا.
  2. الحجم وقائمة العمليات: اطلبوا معرفة الحجم والعمليات الوظيفية التي حُدِّد السعر على أساسها.
  3. أسباب الاختلافات: إذا اختلف عرضان، فتحقّقوا مما إذا كان الاختلاف في الحجم، أم في البنود التي لا يعبّر عنها الحجم، أم في السعر لكل وحدة حجم.
  4. البنود المنفصلة: اسألوا عمّا يرد في سطر منفصل (التكامل، وترحيل البيانات، والتشغيل)، وعمّا لا يشمله السعر.
  5. إدارة التغييرات: اسألوا كيف تُقاس التغييرات التي تطرأ أثناء العمل وكيف تُسعَّر.

وإذا كان أحد مقدّمي العروض لا يقيس الحجم الوظيفي، فيمكن مع ذلك مقارنة عرضه إذا كان قد سعّر قائمة العمليات المفصّلة نفسها. ونكتب عن سائر معايير اختيار المطوّر في مقال كيف نختار شركة لتطوير البرمجيات؟؛ أما ما إذا كانت هناك حاجة إلى تطوير مخصّص أصلًا، فيساعد على تحديده مقال برمجيات مخصّصة أم حل جاهز (SaaS)؟.

الأسئلة الشائعة

ما نقطة COSMIC الوظيفية؟

نقطة COSMIC الوظيفية (CFP) هي وحدة قياس الحجم الوظيفي للبرمجيات وفق المواصفة ISO/IEC 19761. وCFP واحدة تساوي حركة بيانات واحدة: إدخال مجموعة بيانات، أو إخراجها، أو قراءتها، أو كتابتها في عملية وظيفية. وحجم البرنامج هو مجموع حركات البيانات في عملياته.

بماذا تختلف عن تقدير الساعات؟

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

ما الذي لا تقيسه COSMIC؟

بحسب المواصفة، لم تُصمَّم لقياس الخوارزميات الرياضية المعقدة ومعالجة الإشارات المستمرة (الصوت، والصورة)، ولا تعبّر بـCFP عن المتطلبات غير الوظيفية الحقيقية، مثل قيود الأداء أو القيود التقنية. ويُظهر العرض الجيد هذه العناصر بنودًا منفصلة.

مَن يجري القياس، وهل يمكن التحقق منه؟

يجري القياسَ مختصٌّ يعرف الطريقة؛ ولدينا يتولى العدَّ مسارُ عمل مدعوم بالذكاء الاصطناعي، ويراجع إنسانٌ النتيجة. والقواعد علنية، والقياس موثّق لكل عملية، ولذلك يستطيع مختص آخر يعرف الطريقة التحقق منه انطلاقًا من المواصفات نفسها.

كيف يصبح الحجم عرضًا؟

ينتج السعر عن الحجم المقاس، مضافًا إليه ما لا يعبّر عنه الحجم: التكاملات، والمتطلبات غير الوظيفية، والرسومات المخصّصة، وتعدد المنصات، وترحيل البيانات. ويُبنى الجدول الزمني على الحجم لكل مجموعة وظائف، ونقيس التغييرات بالطريقة نفسها. والتفاصيل في صفحة التسعير.

كيف نساعدكم؟

إذا كنتم تخطّطون لـبرمجيات مخصّصة، نكتب معًا المواصفات المفصّلة بندًا بندًا، ونقيس حجمها بنقاط COSMIC الوظيفية، ومنه نُعدّ العرض والجدول الزمني. ونوقّع عند الطلب اتفاقية عدم إفصاح (NDA)، وبعد التسليم نتولى التشغيل والصيانة أيضًا. وتخضع الشيفرة المصدرية وحقوق الاستخدام لأحكام العقد. الاستشارة الأولى مجانية: اكتبوا لنا عبر بيانات التواصل الواردة في صفحة التواصل.

المصادر