إعادة هندسة البرمجيات Software re-engineering

اقرأ في هذا المقال


إعادة الهندسة هي فحص وتعديل نظام لإعادة تكوينه في شكل جديد، وتسمى مبادئ إعادة الهندسة، وعند تطبيقها على عملية تطوير البرمجيات، فإنها تسمى بإعادة هندسة البرمجيات.

ما هي إعادة هندسة البرمجيات؟

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

أهداف إعادة هندسة البرمجيات:

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

1- زيادة الإنتاجية: تؤدي إعادة هندسة البرمجيات إلى زيادة الإنتاجية عن طريق تحسين الكود وقاعدة البيانات بحيث تصبح المعالجة أسرع.

2- استمرار العمليات: لا يزال من الممكن استخدام وظائف منتجات البرامج القديمة أثناء اختبار البرامج أو تطويرها.

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

4- تقليل المخاطر: بدلاً من تطوير منتج برمجي من نقطة الصفر أو من مرحلة البداية، يقوم المطورون هنا بتطوير المنتج من مرحلته الحالية لتعزيز بعض الميزات المحددة التي يثيرها أصحاب المصلحة أو مستخدميها، هذا النوع من الممارسة يقلل من فرص الخطأ.

5- توفير الوقت: كما ذكرنا أعلاه هنا أن المنتج تم تطويره من المرحلة الحالية بدلاً من مرحلة البداية، لذا فإن الوقت المستغرق في هندسة البرمجيات يكون أقل.

6- التحسين: تعمل هذه العملية على تحسين ميزات النظام ووظائفه وتقليل تعقيد المنتج من خلال التحسين المتسق إلى أقصى حد ممكن.

7- استخدام أفضل للموظفين الحاليين: يمكن الحفاظ على خبرة الموظفين الحالية وتوسيعها، لاستيعاب المهارات الجديدة أثناء إعادة الهندسة.

ما الذي يمكن أن يبسط مهمة إعادة الهندسة؟

أقصى قدر من الأتمتة: الأتمتة هي ما توفر مخاطر أقل وتكاليف أقل لمشروع إعادة الهندسة، يمكن لفريق المشروع استخدام أدوات آلية جاهزة ومخصصة لأنشطة الهندسة العكسية (للتحقق من بنية التطبيق)، وهيكلة الكود، ونمذجة الكود، ومع ذلك، لا تساعد الأتمتة في تقليل وقت المشروع بشكل كبير؛ لأن الخوارزميات المعقدة المستخدمة لإعادة الهيكلة تتطلب الكثير حتى بالنسبة للأجهزة الحديثة.

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

أنشطة إعادة هندسة البرمجيات:

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

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

3. الهندسة العكسية:الهندسة العكسية هي عملية استعادة التصميم، تستخرج أدوات الهندسة العكسية البيانات، ومعلومات التصميم المعماري والإجرائي من برنامج موجود.

4. إعادة بناء الكود: لإنجاز إعادة بناء الكود، يتم تحليل الكود المصدري باستخدام أداة إعادة البناء، يتم ملاحظة انتهاكات بنية البرمجة ثم يتم إعادة بناء الكود، تتم أيضاً مراجعة واختبار الكود المُعاد هيكلته الناتج للتأكد من عدم حدوث أي حالات شاذة.

5. إعادة هيكلة البيانات: تبدأ إعادة هيكلة البيانات بنشاط هندسي عكسي، يتم فحص بنية البيانات الحالية بدقة، ويتم تحديد نماذج البيانات الضرورية، ويتم أيضاً تحديد كائنات البيانات والسمات، ومراجعة هياكل البيانات الموجودة للتأكد من جودتها.

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

المصدر: Software Engineering | Re-engineeringSoftware Re-EngineeringWhat is Software ReengineeringHeld Back by Legacy Software? Reengineering Can Help To Fuel Change


شارك المقالة: