البرمجيات (إعادة استخدام-)
برمجيات (اعاده استخدام)
Software reuse and metrics -
محمد الحميد
تُبنى عملية التصميم في معظم العلوم الهندسية على إعادة استخدام نظم أو مكوّنات جاهزة، ولا يحدِّد مهندسو الميكانيك أو الكهرباء عادة نظاماً يتطلب تصنيع كل مكوِّن من مكوِّناته، بل يبنونه اعتماداً على عناصر مجرّبة ومختبرة في نظم أخرى.
هندسة البرمجيات المبنية على إعادة الاستخدام software reuse هي استراتيجية مشابهة، إذ تكون عملية التطوير مجهّزة لإعادة استخدام برمجيات جاهزة.
أنواع إعادة استخدام البرمجيات وفوائدها
اقتصرت التجارب الأولى لإعادة استخدام البرمجيات على إعادة استخدام النصوص البرمجية، سواءٌ تلك المكتوبة بلغة برمجة عالية المستوى أم بلغة الآلة، وجرى التركيز خلال تلك الفترة على تطوير لغات البرمجة التي يمكن أن تدعم أساليب مختلفة من تجميع المكونات البرمجية، والبرمجة المهيكلة، وتطوير الحزم البرمجية والمكتبات ذات الاستخدام الواسع، والبرمجة الغرضية التوجه، والبرمجة المتعددة الطبقات.
حدث الانتقال التدريجي من تطوير البرمجيات التقليدية إلى البرمجيات القابلة لإعادة الاستخدام خلال السنوات العشر الأخيرة، استجابةً لمتطلبات خفض تكاليف صيانة البرمجيات وإنتاجها، والإسراع في تسليم النظم البرمجية ورفع جودتها.
ومن الأنواع الممكنة لإعادة استخدام البرمجيات:
- إعادة استخدام كامل التطبيق: يجري ذلك بتضمينه كاملاً من دون أي تعديلات، ويمكن تحقيق ذلك بتهيئة البرنامج لعدة زبائن، أو بتطوير مجموعات من التطبيق تملك بنية معمارية مشتركة ولكن مخصّصة لمستخدمين محدّدين.
- إعادة استخدام المكوّنات: تتباين مكوّنات التطبيق في حجمها من نظم جزئية إلى أغراض مفردة يمكن إعادة استخدامها.
- إعادة استخدام التوابع والأغراض: وهي مكوّنات البرمجية التي تنفّذ عملية مفردة مثل التوابع الرياضية أو الأغراض من الأصناف التي يمكن إعادة استخدامها. ومثال ذلك مكتبات التوابع والأصناف، ومنصّات التطوير التي تسمح بربطها برماز code تطبيقات أخرى.
- إعادة استخدام المفهوم: بدلاً من إعادة استخدام المكوّنات يمكن جعل الكيان المعاد استخدامه أكثر تجرّداً، بحيث يمكن ضبطه وملاءمته لمجموعة من الحالات. يمكن ضمان هذا النوع بعدّة طرق، مثل نماذج التصميم، ومنتجات النظم القابلة لإعادة التهيئة، ومولّدات التطبيقات.
تفيد عملية إعادة الاستخدام في خفض الكلفة الإجمالية لتطوير البرمجيات، بسبب تخفيض عدد المكوّنات الواجب تطويرها، ويبيّن الجدول (1) أهم فوائدها.
الجدول (1) فوائد إعادة استخدام البرمجيات | ||||||||||||
|
وثمة مشكلات لإعادة استخدام البرمجيات (الجدول 2)، منها معرفة قابلية مكوّن منتج ما لإعادة الاستخدام في وضعية معينة، واختبار ذلك المكوّن لضمان استقلاليته.
الجدول(2) مشكلات إعادة استخدام البرمجيات. | ||||||||||
|
تقنيات دعم إعادة استخدام البرمجيات:
طُوّر خلال السنوات الماضية العديد من التقنيات لدعم إعادة استخدام البرمجيات. وقد استغلت ميزة التشابه بين النظم ضمن مجال التطبيق الواحد.
يوضح الجدول (3) عدداً من هذه التقنيات. ويعتمد اختيار التقنية المناسبة على متطلبات النظام الذي هو قيد التطوير، وعلى التقانة والمكوّنات المتوافرة، وعلى خبرة فريق التطوير.
الجدول(3) طرق دعم إعادة استخدام البرمجيات | ||||||||||||||||||||||||
|
عوامل إعادة استخدام البرمجيات:
ثمة عوامل رئيسية يجب أخذها بالحسبان في أثناء إعادة استخدام البرمجيات:
- البرنامج الزمني لتطوير البرمجيات.
- دورة حياة البرمجيات المتوقعة.
- الخلفية العلمية والمهارات وخبرة فريق التطوير.
- حساسية البرمجيات ومتطلباتها غير الوظيفية وخطورتها
- مجال تطبيق البرنامج: في بعض المجالات، مثل مجالات التصنيع ونظم المعلومات الطبية، تتوافر منتجات عديدة يمكن إعادة استخدامها بإعادة ضبطها على حالات خاصة محلية.
- منصة تشغيل البرنامج.
عند إعادة استخدام مكوّن تنفيذي ينبغي التقيد بشروط التصميم التفصيلية التي وضعها منفّذو هذه المكوّنات، وذلك بدءاً من الخوارزميات المستخدمة لتنفيذ ذلك المكوّن وانتهاءً بالأغراض وأنماط المعطيات في الواجهات.
ولتفادي تعارض شروط التصميم مع المتطلبات الخاصة يمكن حلّ المشكلة بإعادة استخدام تصاميم مجرّدة لا تتضمن تفاصيل تنفيذية، تُعرف هذه الطريقة بنماذج التصميم أو قوالب التصميم.
النموذج هو توصيف مشكلة معينة وآلية حلّها، وبذلك يمكن إعادة استخدام الحلّ وفقاً لإعدادات مختلفة. تعتمد النماذج عادةً على ميزات الكائنات، مثل الوراثة وتعددية الأشكال لتحقيق العمومية. ويُعدّ استخدام النماذج طريقة فعّالة لإعادة استخدام البرمجيات.
ثمة عناصر رئيسية أربعة لنموذج التصميم، وهي:
- اسم النموذج.
- توصيف فضاء المشكلة التي يمكن استخدام النموذج لحلّها.
- توصيف حلّ المشكلة: ويتضمن أجزاء هذا الحلّ، والعلاقات والمسؤوليات الخاصة بكل منها.
- تصريح خرج النموذج: ويتضمن النتائج والعلاقات المتبادلة الناجمة عن تطبيق النموذج.
إعادة استخدام البرمجيات باستخدام المولّدات:
هي طريقة بديلة يجري فيها التقاط المعرفة المعاد استخدامها بوساطة نظام توليد تطبيقات برمَجهُ خبراءُ في هذا المجال، باستخدام لغة برمجة خاصة بمجال الدراسة، أو بوساطة أداة حالة تفاعلية تدعم عملية توليد النظم.
تستفيد هذه الطريقة من مبدأ اشتراك التطبيقات ضمن مجال التطبيق نفسه بالبنية المعمارية وتنفيذها وظائف قابلة للمقارنة. وتستفيد هذه الطريقة من ميزة البنية والهيكلية المشتركة للتطبيقات ضمن مجال العمل.
أثبتت هذه الطريقة نجاحها في نظم التطبيقات التجارية خصوصاً، وتتوافر منتجات مختلفة لتوليد برامج النظم التجارية. ويمكن لهذه المولّدات توليد تطبيقات تجارية بكاملها أو أن تقوم بأتمتة جزئية لعملية توليد التطبيق وتترك للمبرمج مهمة تحديد بعض التفاصيل المحدّدة.
تُستخدم هذه الطريقة في مجالات متعددة، منها: توليد المحلّلات اللغوية في برامج معالجة اللغات، وتوليد الرماز بأداة هندسة البرمجيات بمعونة الحاسوب (Computer Aided Software Engineering (CASE، وفي نظم التحكم واتخاذ القرار.
تُعدّ إعادة استخدام البرمجيات باستخدام المولّدات عملية مكلفة تجارياً في بعض التطبيقات، فمن الأسهل للمبرمجين النهائيين تطوير برامج باستخدام المولّدات مقارنةً بالطرق الأخرى لإعادة الاستخدام والمبنية على استخدام المكوّنات الجاهزة. ومن غير المجدي استخدام هذه الطريقة في النظم التي تتطلب أداءً عالياً أو متطلبات كبيرة لحجم المعطيات المعالَجة.
اقترح الأنصار الأوائل لتقنية البرمجة الغرضية التوجه أن الأغراض objects هي أفضل تمثيل مجرّد لمبدأ إعادة الاستخدام، إلا أن التجربة أثبتت أن الأغراض غالباً ما تكون تمثيلاً سطحياً متعلقاً بتطبيق معين. وعوضاً عن ذلك أصبح من الواضح دعم إعادة الاستخدام بوساطة أطر العمل frameworks؛ وهي تصميم لنظام جزئي مكوّن من مجموعة من الأصناف الصلبة والمجرّدة والواجهات interfaces بينها.
يجري بناء تفاصيل معينة للنظام الجزئي لتطبيق ما بإضافة مكوّنات وتطبيقات للأصناف الصلبة في إطار العمل.
وفي الحالة العامة تُبنى التطبيقات عادةً بدمج عدد من أطر العمل. ويمكن تصنيف أطر العمل إلى ثلاث فئات:
- أطر عمل لأنظمة البنى التحتية: تدعم تطوير نظم البنى التحتية مثل الاتصالات، وواجهات المستخدم والمترجمات.
- أطر عمل لتطبيقات البرمجيات الوسطى middleware: وهي مجموعة من المعايير والأصناف المرافقة التي تدعم مكوّن الاتصالات وتبادل المعلومات.
- أطر عمل لتطبيقات المشاريع الضخمة: تهتم بمجالات تطبيقات محدّدة مثل الاتصالات أو الأنظمة المالية. يسيطر هذا التطبيق المدمج على المعرفة ويدعم تطوير تطبيقات تهتم بالمستخدم.
ولتوسيع إطار العمل تلزم إضافة أصناف صلبة ترث عمليات من الأصناف المجرّدة في إطار العمل نفسه. إضافةً إلى ذلك ينبغي تعريف ما يسمى الاستدعاء الرجعي callback، وهو طريقة تُستدعى من قبل أحداث معرّفة في إطار العمل.
المشكلة الأساسية في أطر العمل هي وراثتها المعقدة والوقت اللازم لتعلّمها. لا يوجد أدنى شك في أن هذا المفهوم يكون فعّالاً لإعادة الاستخدام، لكنه مكلف.
إعادة الاستخدام في نظم التطبيقات:
وتتضمن إعادة الاستخدام للنظم التطبيقية كلها عن طريق تهيئة النظام لبيئة مخصّصة أو دمج نظام واحد أو أكثر لإنشاء نظام جديد، وهي غالباً من أكثر التقنيات فعالية في إعادة الاستخدام؛ إذ تتضمن إعادة الاستخدام لموارد متنوعة وعريضة يمكن بسهولة أن تهيئ لإنشاء نظام جديد.
يمكن إعادة الاستخدام باستخدام خطوط الإنتاج، وهي مجموعة من النظم المرتكزة على معمارية مركزية شائعة وعدد من المكوّنات المشتركة. يُصمّم النظام النواة لكي يكون مهيأ ومكيفاً ليناسب حاجات مختلف مستخدمي النظام.
- إعادة الاستخدام لمنتجات تجارية جاهزة :Commercial Off- The- Shelf (COTS)
هو منتج جاهز للتسويق التجاري والبيع، وهو نظام برمجي يمكن استخدامه مقابل مبلغ مادي. تتضمن البرمجيات الجاهزة COTS عادةً العديد من الميزات والوظائف التي تكسبها ميزة إعادة الاستخدام في العديد من التطبيقات والبيئات. ومثال ذلك نظم قواعد المعطيات التي يُعاد استخدامها على نحو متكرر.
من الشائع في النظم البرمجية الكبيرة تعريف وبناء واجهة التطبيق البرمجية Application Programming Interface (API) التي تسمح لبرنامج آخر بالدخول واستخدام وظائف النظام، ويعني ذلك أن بناء نظم كبيرة- مثل نظم التجارة الإلكترونية- ممكن بدمج مجال من النظم الجاهزة COTS. ومن الممكن إنقاص التكاليف ومواعيد التسليم وإنقاص المخاطر مقارنةً بـتطوير نظام برمجي جديد.
وكما هي الحال في طرق أخرى ينبغي عند استخدام النظم الجاهزة فهم واجهات النظام وموازنة المتطلبات المخصّصة مع التطوير السريع وإعادة الاستخدام، وتصميم معمارية نظام تسمح للمنتجات الجاهزة بالعمل معاً.
تعاني هذه الطريقة المثالبَ التالية:
- نقص التحكم في الوظائفية والأداء: فمع أن الواجهة المتاحة لمنتج قد تظهر وكأنها تزوّد بالوظائفية المطلوبة ربما لا تكون مبرمجة جيداً، ويجب على المستخدمين العثور على طرق للالتفاف على هذه المشكلة.
- مشكلات في العمليات الداخلية للمنتج الجاهز: قد يكون من الصعب جعل عدة منتجات جاهزة تعمل معاً، لأن لكل منتج افتراضاته الخاصة المتعلقة بكيفية الاستخدام.
- عدم إمكان التحكم في تطوير النظام: إذ يتخذ منتجو النظم الجاهزة قراراتهم الخاصة بتطوير أنظمتهم استجابة لمتطلبات السوق، وربما لا تكون متوافقة مع كل الإصدارات السابقة.
- الدعم المقدّم من منتجي النظم الجاهزة: إن مستوى الدعم الفني المتوافر من قبل منتجي النظم الجاهزة متفاوت إلى حدّ كبير.
- ارتفاع كلفة صيانة النظام وتطويره.
على الرغم من إمكان وجود هذه المشكلات تبقى الفوائد من إعادة استخدام المنتجات الجاهزة جمّة؛ لأن هذه الأنظمة تقدّم وظائفية كبيرة ومفيدة في إعادة الاستخدام. ويمكن تحقيق توفير كبير في مدة التطوير عند إعادة استخدام نظام موجود.
من أكثر المفاهيم الفعالة في إعادة الاستخدام إنشاء خطوط إنتاج برمجية أو جماعات تطبيقية. تجري إعادة استخدام النواة المشتركة لجماعة التطبيقات عند كل تطبيق جديد مطلوب. ويتضمن التطوير الجديد تهيئة مكوّن خاص، وتطبيق مكوّنات إضافية، وتكييف بعض المكوّنات لتجاري المتطلبات الجديدة.
يمكن استخدام أنواع مختلفة من التخصيصات لخط إنتاج برمجي، منها:
- تخصيص منصة العمل: يجري تطوير عدة إصدارات من التطبيق لتُستخدم في عدة منصات عمل. ومثال ذلك: توفر التطبيق لتشغيله على منصات عمل ويندوز، وسولاريز Solaris، ولينكس
Linux. في هذه الحالة لا تتغير وظائفية التطبيق، ولكن يجري تغيير المكوّنات التي تتخاطب مع العتاد ونظام التشغيل.
- تخصيص البيئة: يجري إنشاء عدة إصدارات من التطبيق للتعامل مع بيئات تشغيل وأجهزة محيطية معينة. ومثال ذلك: يمكن توفر نظام خدمات الطوارئ في عدة إصدارات تبعاً لنظام الإرسال الراديوي المستخدم، وفي هذه الحالة تعدّل مكوّنات النظام لتبرِز منتجات الاتصال والوظائفية المستخدمة.
- تخصيص الوظائفية: يجري إنشاء عدة إصدارات من التطبيق لمستخدمين معينين، ولكل مستخدم متطلبات مختلفة عن الآخر. وعلى سبيل المثال يمكن تعديل نظام أتمتة مكتبة بحسب استخدامه في مكتبة عامة أو خاصة أو مكتبة في جامعة. وفي هذه الحالة يجري تعديل المكوّنات التي تطبّق الوظائفية وتُضاف مكوّنات جديدة إلى ذاك النظام.
- تخصيص العملية: يجري تكييف النظام ليتماشى مع متطلبات العمل. وعلى سبيل المثال يمكن تكييف نظام طلب ليتماشى مع نظام طلب مركزي في شركة واحدة وعملية موزّعة في شركة أخرى.
تُصمّم خطوط إنتاج البرمجيات لتكون قابلة لإعادة التهيئة، ويتضمن ذلك إضافة مكوّنات من النظام أو حذفها، وتعريف موسطات (بارامترات) parameters وقيود لمكوّنات النظام، ونحو ذلك.
من أشهر الأمثلة على مبدأ إعادة الاستخدام نظام تخطيط موارد المؤسسة Enterprise Resource Planning (ERP) الذي يتضمن عدداً كبيراً من المكوّنات المشكّلة بطرق مختلفة لإنشاء نظام مخصّص. تتضمن عملية التهيئة اختيار أي من المكوّنات الواجب اعتمادها، ثم تجري تهيئة هذه المكوّنات الإفرادية، وتعريف آليات العمل وقواعد العمل، وتعريف بنية قاعدة معطيات النظام وهيكليتها.
وثمة مفهوم بديل لإعادة استخدام جماعة التطبيقات، وهو تهيئة المزوّد للنظام قبل التسليم للزبون. يبدأ المزوّد بنظام عام، وبعدها عن طريق تعديل المكوّنات في النظام وتوسيعها، يجري إنشاء نظام مخصّص يلبّي الوظائفية المطلوبة من قبل المستخدم، يتضمن هذا المفهوم عادةً تعديل رماز نواة النظام وتوسيعها لإكسابها مرونة أكبر وقت التطوير.
مراجع للاستزادة: - J. Bosch, C. C. Krueger, Software Reuse: Methods, Techniques, and Tools, Springer, 2004. - W. C. Lim, Managing software reuse: a comprehensive guide to strategically reengineering the organization for reusable components, Prentice Hall, 1998. - W. Zhao, Software Reuse and Industrialization, VDM Verlag Dr. Müller Publisher, 2009. |
- التصنيف : كهرباء وحاسوب - النوع : كهرباء وحاسوب - المجلد : المجلد الرابع مشاركة :