أسس تحسين اقتصاديات هندسة البرمجيات



    في اقتصاد تطوير البرمجيات، يلاحظ أنها تأخذ موارد ضخمة في وقت وجهد إنشائها وتصميمها، وكتابة رموزها أو شفرات برامجها، واختبارات تشغيلها، الخ. ولكن بمجرد إنتاج البرمجيات، فإن تكلفتها الهامشية أو الحدية يجب أن تكون في حدها الأدنى، كما يمكن أن تحاكي نهائيا وتوزع عالميا في ثوان معدودة. إضافة لذلك، فإن منتجات البرمجيات يمكن أن تكون مدخلا في كتابة برامج أخرى، وأن قدرة الأفراد تنمو وتتأصل كل يوم في كتابة برامج جديدة، وتصبح تكلفة كتابة هذه البرامج في انخفاض مستمر، كما أن برمجيات كتابة البرامج تجعل  العمليات المتضمنة في ذلك أبسط وأسرع وأرخص. 
وقد فتح التقدم السريع في الإلكترونيات عوائد جديدة لمنتجات برمجيات جديدة بصفة مستمرة. علي سبيل المثال، الأدوات اللاسلكية، منتجات الأشكال والرسومات، وألجوريثمات المعايرة والتدرج لاختبار وقياس الأجهزة. وطبقا للتوجه الأول أصبحت البرمجيات سلعا قابلة للتداول، كما أنه في نطاق التوجه الثاني يستمر تطوير البرمجيات في طلب موارد متنامية ومتعاظمة للبحث والتطوير. والنتيجة المستخلصة من ذلك تتمثل في أن صناعة البرمجيات وتكنولوجيا المعلومات تتأثر بكل من الاتجاهين.
   وفي إطار نظرية الاقتصاد تنشأ السوق التنافسية  لتسعير التكلفة الهامشية أو الحدية لمنتجات البرمجيات، كما أنه في إطار متوسط تكلفة إنتاج البرمجيات وتكلفة توزيعها الهامشية الصفرية فإن تسعير التكلفة الهامشية تكون غير ممكنة المساندة والمؤازرة التجارية. وفي هذا النطاق، تعتبر البرمجيات الحرة والمجانية غير تجارية بطبيعتها، إلا أنها يمكن أن تكون مساندة تجاريا عندما يأتي العائد من مصادر أخري. [TIF, 2004]   والتحسينات في اقتصاديات تطوير البرمجيات ليست صعبة التحقيق فقط، ولكنها تعتبر صعبة القياس والتثبيت أيضا. وفي الوثائق والكتابات المنشورة عن البرمجيات، يمكن ملاحظة تواجد كثير من الألفاظ والتعبيرات الدارجة، ووحدات القياس غير المتطابقة، وعدم التوافق بين الباحثين والغلو اللانهائي المرتبط بذلك الموضوع، وعلي ذلك إذا فحصنا أحد أوجه تحسين البرمجيات فقط يمكننا التوصل إلي استنتاجات ضيقة. وتشبها بذلك، عند تركز منظمة تطوير برمجيات علي تحسين أحد أوجه عملية تطوير برمجياتها فقط، فإنها لن تحقق أي تحسينات اقتصادية ذات توجه جوهري، حتى عندما تقوم بتحسينات واضحة في هذا الوجه الواحد من العمليات.
وعلي ذلك، فإن مفتاح أو أساس التحسين يكمن في أداء عمليات التطوير كلها من خلال حلول متوازية خلال الأبعاد الأساسية التي يجب أن تتضمن في نموذج تكلفة البرمجيات. وتتمثل هذه الأبعاد في: التعقيد، وعمليات التطوير، وفرق العمل، والأدوات، والمعايير المستخدمة. وتعتبر هذه الأبعاد ذات أولوية لمعظم مجالات البرمجيات. وفي هذا الصدد، يمكن تحديد الأسس والمفاتيح الأساسية لتحسين تطوير البرمجيات التي يمكن أن تلعب دورا أساسيا في تحسين اقتصاديات تطوير البرمجيات وتكاملها.
والعرض التالي يوضح أسس تحسين اقتصاديات تطوير البرمجيات في التالي:
1. تخفيض الحجم أو تقليل درجة تعقيد ما يحتاج إلي تطويره:
   - إدارة المجال،
   - تقليل كمية الأكواد أو الشفرات المنتجة بشريا من خلال التكنولوجيا المبنية علي المكون،
   - زيادة مستوي التجريد واستخدام النمذجة المرئية لإدارة التعقيد.
2. تحسين عملية التطوير:
   - تقليل الأبعاد الثانوية أو الهامشية وإعادة العمل بواسطة النقل من عملية دورة الحياة الخطية
     إلي عمليات التطوير التعاقبية المعاصرة،
   - مجابهة الأخطار الرئيسية من البداية خلال معمارية مرتكزة علي نقطة البدء،
- استخدام برمجيات المزاولات الأحسن.
3. تشكيل فرق عمل أكثر كفاية:
   - تحسين المهارات الفردية،
   - تحسين بيئة فريق عمل المشروع،
   - تحسن القدرة التنظيمية لفريق العمل.
4. استخدام أدوات متكاملة تستخدم آلية أكبر:
   - تحسين الإنتاجية البشرية من خلال مستويات آلية متقدمة،
   - استبعاد مصادر الخطأ البشري،
   - دعم ومساندة تحسينات عمليات التطوير.
وتتمثل عمليات أو مراحل دورة حياة تطوير البرمجيات بالتالي:
· دراسة الجدوى،
· تحديد وتحليل الحاجات والمتطلبات،
·تصميم المنتج،
·التصميم التفصيلي،
·البرمجة أو التشفير،
·التكامل، التنفيذ،
·الصيانة .
والتي تتمثل في النموذج العملي التالي لهندسة تطوير البرمجيات وخاصة البرمجيات التعليمية:

شكل (6): نموذج عملي لهندسة البرمجيات
وتتضمن كل مرحلة من المراحل السبع المشار إليها سابق عمليات التدقيق والتصحيح.
وفي هذا الصدد يجب القيام بالتالي:
(1) التبرير الاقتصادي لنموذج دورة الحياة:
- لتحقيق منتج برمجيات ناجح يجب تحقيق كل الأغراض الفرعية المرتبطة بالعواقب المكلفة التي يجب تجنبها،
 - أي طلب لأهداف فرعية مختلفة سوف ينتج برمجيات أقل نجاحا، لذلك يجب الكشف المبكر علي الأخطاء وعلي وجه الخصوص الكامنة في المتطلبات سوف يؤدي إلي  تغييرات بسيطة وأقل تكلفة محتاج إليها.
(2) التطوير التعاقبي:
 - تعاقب القدرة الأساسية للتشغيل، تعاقب قدرات توجه الإنتاج ذات القيمة المضافة، الخ.
 - المزايا يجب أن تكون أكثر إفادة وأسهل للاختبار، تتضمن خبرة المستخدم بطريقة أقل تكلفة، وتقلل تكاليف العمل، الخ.
(3) التعزيزات والتقدم المستمر:
 - التوثيق المرتبط بتفسير الأهداف والخطط المفصلة لأنشطة تطوير البرمجيات، وإنتاج إصدارات تجريبية لتوثيق المستخدمين.
 - المزايا تختص بتقليل التكاليف الكلية بالحد من الوقت والطاقة المبذولة في أنشطة غيرإنتاجية، وإعادة توزيع التكاليف من خلال الاستثمار المبدئي الذي يقلل تكاليف الاستثمار المتأخر.
(4) نموذج التكلفة الإنشائي Constructive Cost Model
   - منتجات مطورة ذات الحجم الصغير إلي المتوسط،
   - يختص بنظام تقدير تكاليف البرمجيات.
(5) المعاني والمسلمات Definitions and Assumptions
   - باعث التكلفة الأولي يمثل عددا مكن تعليمات المصدر الناتجة  Derived Source Instructions المطورة بواسطة المشروع.
   - تبدأ فترة التطوير في مرحلة التصميم وتنتهي في مرحلة التكامل والاختبار،
   - تغطي تلك الأنشطة المبنية علي برمجيات هيكل تجزيء العمل Work Breakdown Structure
   - تغطي كل العمالة المباشرة علي المشروع،
   - يشتمل رجل – شهر علي 152 ساعة عمل.
   - العمل غير المنتج يبقي في حده الأدنى،
   - يفترض أن توصيف المتطلبات لا يتغير جوهريا بعد مرحلة الخطط والمتطلبات.
(6) رجل – شهر في مواجهة التقديرات بالعملة الصعبة:
   - تكاليف بالدولار الأمريكي مثلا يجب تجنبها،
   - رجل – شهر تمثل كمية القياس الثابتة،
   - لتحويل رجل – شهر إلي تقديرات بالدولار مثلا يطبق متوسط سعر الدولار لأشكال الرجل – شهر.
(7) جهد وجدول التطوير:
   - تقدم معادلات جهد وجدول لمعظم أنواع مشروعات تطوير البرمجيات الأساسية،
   (8) توزيع مرحلة التطوير:
        - نسبة توزيع جهد وجدول البرمجيات في نطاق مراحل التطوير.
        - منحني العمالة يتبع منحني مستمر،
        - يفسر ذلك بأن عوامل التكيف حيث تكون أحجام المشروع غير معيارية.
(9) تكلفة جودة الإنتاج:
يحدد الشكل التالي معالم تكلفة جودة تطوير البرمجيات:

شكل (7): تكلفة جودة البرمجيات
يلاحظ من الشكل السابق أن تكاليف جودة البرمجيات ترتبط بالتالي:
· تكاليف الإنجاز Achievement  تختص بكل من:
- تكاليف التقييم Appraisal التي ترتبط بتكاليف تقدير جودة البرمجيات فيما يخص: مراجعات تصميم الأداء،  اختبار الأداء، وتدقيق وتصحيح البرمجيات. ويرتبط ذلك بأداء أدوات القياس. علي سبيل المثال، عند قياس تقري ما إن كانت البرمجيات تلبي أهداف الأداة.
- تكاليف المنع Prevention تختص بتكاليف تأكيد جودة البرمجيات الخاصة بكل من:
أجور ومرتبات العاملين، تكلفة الأدوات والتصميم الموجه نحو الأداء ومراجعاته. وتختص بقياس جمع بيانات لإنشاء نماذج أداء.
 - تكاليف عدم التطابق Non-conformance تختص بكل من تكاليف الفشل الداخلي التي تحدث قبل إمداد وإتاحة البرمجيات فيما يتعلق بالتعديل وإعادة التصميم. كما تختص بتكاليف الفشل الخارجي التي تحدث بعد إمداد البرمجيات فيما يخص المرتجعات أوالمردود، والتدرج وعواقب التعاقد.
  - تكاليف الفشل الداخلي تختص بتكاليف الأخطاء المعمارية والتصميم وتتضمن تعريف وتقرير المشكلة،  تصحيح المعمارية والتصميم، الاختبار الإضافي نتيجة التصحيح، المكونات المهدرة نتيجة تغييرات المعمارية والتصميم. هذا بالإضافة إلي تكاليف التعديل الخاصة أيضا بتعريف وتقرير المشكلة، إعادة عمل المكونات الصحيحة، والاختبار الإضافي نتيجة للتصحيح.
  - تكاليف الفشل الخارجي تختص بتكاليف كل من: الدعم الفني، المنتجات المرتجعة أو المعادة، إصدارات الصيانة، العقوبات، المبيعات المفقودة، الخ.