إنتاجية البرمجة

تُشير إنتاجية البرمجة (وتُسمى أيضًا إنتاجية البرمجيات أو إنتاجية التطوير ) إلى مدى قدرة المبرمجين الأفراد أو فرق التطوير على بناء وتطوير أنظمة البرمجيات. وتُشير الإنتاجية تقليديًا إلى النسبة بين كمية البرمجيات المُنتجة والتكلفة المُنفقة عليها. ويكمن التحدي هنا في إيجاد طريقة مناسبة لتحديد كمية البرمجيات.

مصطلحات

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

إنتاجية

على الرغم من عدم وجود تعريف متفق عليه للإنتاجية، يبدو أن هناك اتفاقاً على أن الإنتاجية تصف النسبة بين المخرجات والمدخلات:

الإنتاجية = الناتج / المدخلات

مع ذلك، تختلف المفاهيم، ولا سيما وحدات القياس، للمدخلات والمخرجات بين مختلف التخصصات. ففي الصناعات التحويلية، تُستخدم عادةً علاقة مباشرة بين عدد الوحدات المنتجة وعدد الوحدات المستهلكة. [ 4 ] أما في الصناعات غير التحويلية، فتُستخدم عادةً ساعات العمل أو وحدات مشابهة لتمكين المقارنة بين المخرجات والمدخلات.

من الاتفاقات الأساسية أن معنى الإنتاجية ووسائل قياسها تختلف باختلاف السياق قيد التقييم. في شركة تصنيع، تشمل السياقات المحتملة ما يلي: [ 3 ]

  • الآلة الفردية أو نظام التصنيع؛
  • وظيفة التصنيع، على سبيل المثال التجميع؛
  • عملية تصنيع منتج واحد أو مجموعة من المنتجات ذات الصلة؛
  • المصنع؛ و
  • نظام المصنع بأكمله للشركة

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

الربحية

ترتبط الربحية والأداء ارتباطًا وثيقًا، بل غالبًا ما يتم الخلط بينهما. ومع ذلك، تُعرَّف الربحية عادةً بأنها النسبة بين الإيرادات والتكاليف.

الربحية = الإيرادات / التكاليف

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

أداء

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

الكفاءة والفعالية

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

بشكل عام، يُفترض أن الكفاءة يمكن قياسها كمياً، على سبيل المثال من خلال معدلات الاستخدام، بسهولة أكبر بكثير من الفعالية.

جودة

يذكر تانجن: "لا ينبغي إدراج تحسينات الجودة، باستثناء حقيقة أن المنتجات الخالية من العيوب تزيد من مستويات الإنتاج، ضمن مفهوم الإنتاجية." [ 3 ] ومع ذلك، فإن معظم الأدبيات الكلاسيكية في التخصصات غير البرمجية، وخاصة في مجال التصنيع، لا تناقش صراحةً دور جودة المخرجات في نسبة الإنتاجية. [ 6 ] وتركز الدراسات الحديثة من التخصصات غير التصنيعية بشكل أكبر على المعرفة، والعمل المكتبي، أو العمل الإداري، وبالتالي تناقش بشكل متزايد دور الجودة فيما يتعلق بالجودة. [ 5 ] [ 1 ] [ 7 ] [ 8 ] [ 9 ]

يؤكد دراكر على أهمية الجودة لتقييم إنتاجية العاملين في مجال المعرفة: "لذلك، يجب أن تهدف إنتاجية العمل المعرفي أولاً إلى تحقيق الجودة - وليس الحد الأدنى من الجودة، بل الجودة المثلى إن لم تكن القصوى. عندها فقط يمكن للمرء أن يسأل: "ما هو حجم العمل وكميته؟" [ 5 ]

يبرز ساري أهمية الجودة من خلال صيغته الموسعة للإنتاجية: [ 8 ]

الإنتاجية الكلية = (جودة وكمية المخرجات) / (جودة وكمية المدخلات)

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

مثال رائع من الفن

في مجال تطوير البرمجيات، تكون الأمور أكثر تعقيداً من إنتاج السلع. فعملية تطوير البرمجيات هي عملية هندسية.

كوكومو 2

كان بوهم من أوائل الباحثين الذين تناولوا مجال إنتاجية البرمجيات بشكل منهجي. ويُعدّ نموذج تقدير التكلفة الخاص به، كوكومو (COCOMO ) - المعروف الآن باسم كوكومو 2 [ 10 ] - من المعارف الأساسية في هندسة البرمجيات. في هذا النموذج، يُحدد بوهم مجموعة من العوامل المؤثرة على الإنتاجية، مثل الموثوقية المطلوبة وكفاءة المحللين. وقد أُعيد استخدام هذه العوامل على نطاق واسع في مناهج إنتاجية مماثلة أخرى. ويعتمد باقي النموذج على نقاط الوظائف، وأخيرًا على عدد أسطر الكود المصدري (LOC). ومن المعروف جيدًا قصور استخدام عدد أسطر الكود المصدري كمقياس للإنتاجية.

إنتاجية برامج جونز

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

هذه إحدى تلك القوائم:

العوامل العشرون التي تم تحديد تأثيراتها الكمية على مشاريع البرمجيات من البيانات التاريخية هي كالتالي:

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

نقاط الوظائف

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

هندسة البرمجيات القائمة على القيمة

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

ملابس بشرية

سلّط ​​كتاب "Peopleware: Productive Projects and Teams" الشهير ، من تأليف دي ماركو وليستر [ 14 ] ، الضوء على أهمية العوامل المتعلقة بالأفراد، وجذب انتباه جمهور أوسع. وقد جمع المؤلفان، من خلال العديد من مشاريع البرمجيات، تجارب حول ممارسات الإدارة الجيدة والسيئة التي تؤثر على إنتاجية الفريق. وأظهرا، إلى جانب آخرين، أن هذه القضايا حاسمة في هندسة البرمجيات، لكنهما لم يتمكنا إلا من وصفها بشكل غير منهجي.

العوامل المؤثرة على إنتاجية البرمجة

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

تؤثر شخصيات مبرمجي البرمجيات على أساليب البرمجة المستخدمة، والتي بدورها تؤثر على إنتاجية المبرمجين. [ 15 ]

في عام ٢٠٠٧، ساهم موقع xkcd الكوميدي في نشر مفهوم " قمة بالمر" - وهي أن المبرمج، مع جرعة مناسبة من الكحول ، يصل إلى مستوى عالٍ من الإنتاجية. سُميت "قمة بالمر" نسبةً إلى الرئيس التنفيذي السابق لشركة مايكروسوفت، ستيف بالمر ، [ ١٦ ] ومن المرجح أنها تورية على سلسلة خطوط طيف الهيدروجين "بالمر" التي سُميت نسبةً إلى يوهان بالمر . [ ١٧ ]

مراجع

  1. 1 2 3 راميريز، واي دبليو، نيمبهارد، دي إيه. قياس إنتاجية العاملين في مجال المعرفة: تصنيف. مجلة رأس المال الفكري، 2004، 5، 602-628
  2. نيل، أ.، هيسكث، ب.، أندرسون، ن.، أونز، د.س.، سينانجيل، هـ.ك.، فيسفيسفاران، س. (محررون). دليل علم النفس الصناعي والعملي والتنظيمي: الإنتاجية في المنظمات. منشورات سيج المحدودة، 2002، 8-24
  3. 1 2 3 4 تانجن، س. تبسيط مفهومي الإنتاجية والأداء، المجلة الدولية للإنتاجية والأداء، 2005، 54، 34-36
  4. تشو، بي دبليو. دليل عملي لقياس الإنتاجية. مجلة هارفارد للأعمال، 1988، 66، 110-115
  5. 1 2 3 دراكر، بي إف. إنتاجية العاملين في مجال المعرفة: التحدي الأكبر. مجلة كاليفورنيا للإدارة، 1999، 41، 79-94
  6. توماس، بي إي وبارون، جي بي، تقييم إنتاجية العاملين في مجال المعرفة: مراجعة الأدبيات، مختبر أبحاث هندسة الإنشاءات (USACERL)، 1994
  7. الدرب، العلاقات بين الإنتاجية والكفاءة والاستخدام والجودة. دراسة العمل، 2000، 49، 97-104
  8. 1 2 ساري، س. الإنتاجية: النظرية والقياس. في وقائع مؤتمر الإنتاجية الأوروبي (EPC)، 2006
  9. راي، ب.، ساهو، س. قياس وتقييم إنتاجية الموظفين الإداريين. المجلة الدولية لإدارة العمليات والإنتاج، 1989، 9، 28-47
  10. بوهم وآخرون. تقدير تكلفة البرمجيات باستخدام COCOMO II، 2000
  11. جونز، كاسبر (2000). تقييمات البرمجيات، والمعايير، وأفضل الممارسات . بوسطن، ماساتشوستس: أديسون-ويسلي.
  12. 1 2 جونز، كاسبر (1986). إنتاجية البرمجة . نيويورك: شركة ماكجرو هيل للنشر. ص 85-86 . ISBN  9780070328112. OCLC 611260287. تم الاطلاع عليه بتاريخ 14 أبريل 2020 . 
  13. باري بوهم، لي غو هوانغ. هندسة البرمجيات القائمة على القيمة: دراسة حالة. مجلة IEEE للبرمجيات، 2003
  14. توم ديماركو، تيموثي ليستر. Peopleware: مشاريع وفرق عمل منتجة، 1987
  15. كريمي، زهرة؛ باراني-دستجردي، أحمد؛ قاسم-أغائي، ناصر؛ فاغنر، ستيفان (2016). "الروابط بين الشخصيات والأساليب والأداء في برمجة الحاسوب" . مجلة الأنظمة والبرمجيات . 111 : 228-241 . arXiv : 1611.10169 . doi : 10.1016/j.jss.2015.09.011 . S2CID 400518 . 
  16. "قمة بالمر" . xkcd . تم الاطلاع عليه بتاريخ 2023-10-07 .
  17. "323: قمة بالمر - شرح xkcd" . www.explainxkcd.com . تم الاطلاع عليه بتاريخ 7 أكتوبر 2023 .

للمزيد من القراءة

  • تقدير تكلفة البرمجيات باستخدام Cocomo II ، باري دبليو. بوهم وآخرون، برنتيس هول، 2000. ISBN 978-0-13-026692-7.
  • تطوير المنتجات في نصف الوقت: قواعد جديدة، أدوات جديدة ، بريستون ج. سميث ودونالد ج. رينيرتسن، وايلي، 1997. ISBN 978-0-471-29252-4.
  • إنتاجية البرمجة ، كابرز جونز ، ماكجرو هيل، 1986. ISBN 978-0-07-032811-2.
  • تقدير تكاليف البرمجيات ، كابرز جونز ، ماكجرو هيل، 2007. ISBN 978-0-07-148300-1.