إعادة هيكلة الكود
في برمجة الحاسوب وتصميم البرمجيات ، تُعرف إعادة هيكلة الشيفرة المصدرية بأنها عملية إعادة تنظيم الشيفرة المصدرية الموجودة - أي تغيير هيكلتها - دون تغيير سلوكها الخارجي. تهدف إعادة الهيكلة إلى تحسين تصميم البرنامج وبنيته وتنفيذه ( خصائصه غير الوظيفية )، مع الحفاظ على وظائفه . تشمل المزايا المحتملة لإعادة الهيكلة تحسين قابلية قراءة الشيفرة وتقليل تعقيدها ؛ مما يُحسّن من سهولة صيانة الشيفرة المصدرية ، ويُنشئ بنية داخلية أو نموذج كائنات أبسط وأكثر وضوحًا وتعبيرًا لتحسين قابلية التوسع . هدف آخر محتمل لإعادة الهيكلة هو تحسين الأداء؛ إذ يواجه مهندسو البرمجيات تحديًا مستمرًا لكتابة برامج أسرع أداءً أو أقل استهلاكًا للذاكرة. على الرغم من توفر مقاييس لتقييم هذه الخصائص، غالبًا ما لا يعتمد المطورون عليها عند اتخاذ قرارات إعادة الهيكلة نظرًا لمخاوفهم بشأن جدواها العملية. [ 1 ]
عادةً، تتضمن عملية إعادة هيكلة الكود سلسلة من عمليات إعادة الهيكلة الأساسية المعيارية ، كل منها عبارة عن تغيير طفيف في شفرة المصدر لبرنامج الحاسوب، يحافظ على سلوك البرنامج أو على الأقل لا يُغير من توافقه مع المتطلبات الوظيفية. توفر العديد من بيئات التطوير دعمًا آليًا لتنفيذ الجوانب التقنية لهذه العمليات الأساسية. إذا أُجريت عملية إعادة هيكلة الكود بشكل صحيح، فقد تُساعد مطوري البرامج على اكتشاف وإصلاح الأخطاء أو الثغرات الخفية أو الكامنة في النظام، وذلك من خلال تبسيط المنطق الأساسي وإزالة مستويات التعقيد غير الضرورية. أما إذا أُجريت بشكل خاطئ، فقد لا تُحقق شرط عدم تغيير الوظائف الخارجية، وبالتالي قد تُؤدي إلى ظهور أخطاء جديدة.
من خلال التحسين المستمر لتصميم الكود، نجعل التعامل معه أسهل فأسهل. وهذا يتناقض تمامًا مع ما يحدث عادةً: قلة إعادة هيكلة الكود والتركيز الشديد على إضافة ميزات جديدة بسرعة. إذا اعتدت على عادة إعادة الهيكلة المستمرة، ستجد أن توسيع الكود وصيانته أسهل.
— جوشوا كيرييفسكي، إعادة هيكلة الكود باستخدام الأنماط [ 2 ]
تحفيز
عادةً ما يكون الدافع وراء إعادة هيكلة الكود هو ملاحظة وجود خلل فيه . [ 3 ] على سبيل المثال، قد تكون الدالة قيد الدراسة طويلة جدًا، أو قد تكون نسخةً شبه مكررة من دالة أخرى قريبة. بمجرد تحديد هذه المشكلات، يمكن معالجتها عن طريق إعادة هيكلة الكود المصدري، أو تحويله إلى شكل جديد يؤدي نفس الوظيفة السابقة ولكنه خالٍ من الخلل.
بالنسبة للروتينات الطويلة، يمكن استخراج روتين فرعي واحد أو أكثر. أما في حالة الروتينات المكررة، فيمكن إزالة التكرار واستبداله بدالة مشتركة واحدة. قد يؤدي إهمال إعادة هيكلة الكود إلى تراكم الديون التقنية ؛ ومن جهة أخرى، تُعد إعادة الهيكلة إحدى الوسائل الأساسية لسداد هذه الديون. [ 4 ]
فوائد
هناك فئتان عامتان من الفوائد المترتبة على عملية إعادة هيكلة الكود.
- سهولة الصيانة . يسهل إصلاح الأخطاء لأن شفرة المصدر سهلة القراءة ويسهل فهم الغرض من كتابتها. [ 5 ] يمكن تحقيق ذلك عن طريق اختزال الإجراءات المتجانسة الكبيرة إلى مجموعة من الدوال الموجزة والواضحة ذات الغرض الواحد. كما يمكن تحقيقه بنقل دالة إلى فئة أكثر ملاءمة أو بإزالة التعليقات المضللة.
- قابلية التوسع . يسهل توسيع قدرات التطبيق إذا كان يستخدم أنماط تصميم معروفة ، ويوفر ذلك بعض المرونة حيث لم تكن موجودة من قبل. [ 2 ]
يمكن لهندسة الأداء إزالة أوجه القصور في البرامج، والمعروفة باسم تضخم البرمجيات، والناجمة عن استراتيجيات تطوير البرمجيات التقليدية التي تهدف إلى تقليل وقت تطوير التطبيق بدلاً من وقت تشغيله. كما يمكن لهندسة الأداء تخصيص البرمجيات لتتوافق مع الأجهزة التي تعمل عليها، على سبيل المثال، للاستفادة من المعالجات المتوازية ووحدات المتجهات. [ 6 ]
التوقيت والمسؤولية
هناك وقتان محتملان لإعادة هيكلة الكود.
- إعادة هيكلة وقائية – يقوم المطور الأصلي للكود بتحسين متانته عندما يكون خالياً من العيوب البرمجية لمنع ظهورها في المستقبل. [ 7 ]
- إعادة هيكلة تصحيحية – يقوم مطور لاحق بإعادة هيكلة الكود لتصحيح عيوب الكود عند ظهورها. [ 7 ]
إحدى الطرق التي توازن بين إعادة هيكلة الكود الوقائية والتصحيحية هي "المسؤولية المشتركة عن إعادة الهيكلة". يقسم هذا النهج عملية إعادة الهيكلة إلى مرحلتين ودورين. يقوم المطور الأصلي للكود بإعداده لإعادة الهيكلة، وعندما تظهر عليه علامات الخلل ، يتولى مطور آخر تنفيذ عملية إعادة الهيكلة الفعلية. [ 7 ]
التحديات
تتطلب إعادة هيكلة البرمجيات استخراج بنية النظام البرمجي، ونماذج البيانات، والتبعيات الداخلية للتطبيق لاستعادة المعرفة بالنظام البرمجي الحالي. [ 8 ] يؤدي تغيير فرق العمل إلى نقص أو عدم دقة المعلومات المتعلقة بالحالة الراهنة للنظام، وبالقرارات التصميمية التي اتخذها المطورون المغادرون. وقد تتطلب أنشطة إعادة هيكلة الشيفرة بذل جهد إضافي لاستعادة هذه المعلومات. [ 9 ] تُحدث أنشطة إعادة الهيكلة تعديلات معمارية تُضعف البنية الهيكلية للنظام البرمجي. ويؤثر هذا الضعف على خصائص معمارية مثل سهولة الصيانة والفهم، مما قد يؤدي إلى إعادة تطوير كاملة للأنظمة البرمجية. [ 10 ]
الاختبار
ينبغي إعداد اختبارات الوحدة التلقائية قبل إعادة هيكلة الكود لضمان استمرار عمل الإجراءات كما هو متوقع. [ 11 ] يمكن لاختبارات الوحدة أن تُحسّن استقرار عمليات إعادة الهيكلة الكبيرة حتى عند تنفيذها بعملية دمج ذرية واحدة . ومن الاستراتيجيات الشائعة للسماح بإعادة هيكلة آمنة وذرية تشمل مشاريع متعددة، تخزين جميع المشاريع في مستودع واحد ، يُعرف باسم المستودع الأحادي . [ 12 ]
مع تطبيق اختبارات الوحدات، تصبح إعادة هيكلة الكود دورة تكرارية تتضمن إجراء تعديلات طفيفة على البرنامج ، واختبارها للتأكد من صحتها، ثم إجراء تعديل طفيف آخر. إذا فشل أي اختبار في أي مرحلة، يُلغى التعديل الطفيف الأخير ويُعاد بطريقة مختلفة. من خلال خطوات صغيرة متعددة، ينتقل البرنامج من حالته السابقة إلى الحالة المطلوبة. لكي تكون هذه العملية التكرارية عملية، يجب أن تُنفذ الاختبارات بسرعة فائقة، وإلا سيضطر المبرمج إلى قضاء جزء كبير من وقته في انتظار انتهائها. يصف مؤيدو البرمجة المتطرفة وغيرها من منهجيات تطوير البرمجيات الرشيقة هذا النشاط بأنه جزء لا يتجزأ من دورة تطوير البرمجيات . تنطبق إعادة الهيكلة على كود الاختبار وكود الإنتاج على حد سواء؛ تُظهر الدراسات التجريبية أن إعادة هيكلة الاختبار تستهدف بشكل أساسي كود الاختبار منخفض الجودة الذي يُظهر عيوبًا في الاختبار ، وتُحسّن ترابط كود الاختبار وتماسكه وحجمه، على الرغم من أنها لا تُحسّن بالضرورة تغطية الكود. [ 13 ]
التقنيات
فيما يلي بعض الأمثلة على عمليات إعادة البناء الجزئية؛ قد ينطبق بعضها على لغات برمجة أو أنواع لغات محددة فقط. يمكن الاطلاع على قائمة أطول في كتاب مارتن فاولر عن إعادة البناء [ 3 ] وموقعه الإلكتروني [ 14 ] . توفر العديد من بيئات التطوير دعمًا آليًا لهذه العمليات. على سبيل المثال، يمكن للمبرمج النقر على اسم متغير ثم اختيار إعادة البناء "تغليف الحقل" من قائمة السياق . بعد ذلك، ستطلب بيئة التطوير المتكاملة (IDE) تفاصيل إضافية، عادةً مع قيم افتراضية مناسبة ومعاينة لتغييرات الكود. بعد تأكيد المبرمج، ستُجري التغييرات المطلوبة في جميع أجزاء الكود.
التحليل الثابت
يكشف تحليل البرنامج الثابت (الذي يسمى "التحليل الدقيق" عند إجرائه على لغات تفسيرية أقل صرامة) عن المشاكل في برنامج صالح ولكنه دون المستوى المطلوب.
- مخطط تبعية البرنامج - تمثيل صريح لتبعيات البيانات والتحكم [ 15 ]
- مخطط تبعية النظام - تمثيل استدعاءات الإجراءات بين PDG [ 16 ]
- تحليل التعقيد الدوري .
- الذكاء البرمجي - الهندسة العكسية للحالة الأولية لفهم التبعيات الداخلية الموجودة للتطبيق
التحولات
تُعدّل التحويلات التمثيل النحوي للبرنامج. بعض هذه التعديلات تُغيّر دلالات البرنامج أو بنيته بطريقة تُحسّن مرونته أو متانته. تتطلب هذه التعديلات معرفة مجال المشكلة والمنطق المقصود، ولذا يصعب أتمتتها. توجد تعديلات أخرى تُسهّل قراءة البرنامج وتعديله، لكنها لا تُغيّر منطق البرنامج الأساسي؛ ويمكن أتمتة هذه التحويلات.
- تقنيات تسمح بمزيد من التجريد
- تغليف الحقل – إجبار الكود على الوصول إلى الحقل باستخدام دوال الوصول والتعديل (getter و setter).
- تعميم النوع – إنشاء أنواع أكثر عمومية للسماح بمشاركة أكبر للتعليمات البرمجية
- استبدل رمز التحقق من النوع بالحالة/الاستراتيجية [ 17 ]
- استبدل الشرطي بتعدد الأشكال [ 18 ]
- تقنيات لتقسيم التعليمات البرمجية إلى أجزاء أكثر منطقية
- تعمل عملية تقسيم المكونات على تجزئة الكود إلى وحدات دلالية قابلة لإعادة الاستخدام تقدم واجهات واضحة ومحددة جيدًا وسهلة الاستخدام.
- تقوم وظيفة استخراج الفئة بنقل جزء من التعليمات البرمجية من فئة موجودة إلى فئة جديدة.
- تُستخدم دالة الاستخراج لتحويل جزء من دالة أكبر إلى دالة جديدة. بتقسيم الكود إلى أجزاء أصغر، يصبح فهمه أسهل. وينطبق هذا أيضًا على الدوال .
- تقنيات لتحسين أسماء ومواقع التعليمات البرمجية
- نقل الأسلوب أو نقل الحقل - نقل إلى فئة أو ملف مصدر أكثر ملاءمة
- إعادة تسمية الطريقة أو إعادة تسمية الحقل - تغيير الاسم إلى اسم جديد يوضح الغرض منه بشكل أفضل
- اسحب للأعلى – في البرمجة الكائنية التوجه (OOP)، انتقل إلى فئة أساسية
- ادفع للأسفل - في البرمجة الكائنية، انتقل إلى فئة فرعية [ 14 ]
- الكشف التلقائي عن النسخ [ 19 ]
إعادة هيكلة الأجهزة
بينما كان مصطلح إعادة هيكلة البرمجيات يشير في الأصل حصراً إلى إعادة هيكلة كود البرمجيات، فقد شمل إعادة الهيكلة في السنوات الأخيرة الكود المكتوب بلغات وصف الأجهزة . ويُستخدم مصطلح "إعادة هيكلة الأجهزة" اختصاراً لإعادة هيكلة الكود المكتوب بلغات وصف الأجهزة. ولأن معظم مهندسي الأجهزة لا يعتبرون لغات وصف الأجهزة لغات برمجة ، [ 20 ] فإن إعادة هيكلة الأجهزة تُعتبر مجالاً منفصلاً عن إعادة هيكلة الكود التقليدية.
اقترح زينغ وهوس إعادة هيكلة آلية لوصف الأجهزة التناظرية (في لغة VHDL-AMS ). [ 21 ] في منهجهما، تحافظ إعادة الهيكلة على السلوك المحاكى لتصميم الأجهزة. ويتمثل التحسين غير الوظيفي في إمكانية معالجة الكود المُعاد هيكلته بواسطة أدوات التركيب القياسية، بينما لا يمكن معالجة الكود الأصلي. كما بحث مايك كيتينغ، زميل شركة سينوبسيس ، في إعادة هيكلة لغات وصف الأجهزة الرقمية، وإن كانت إعادة هيكلة يدوية. [ 22 ] [ 23 ] ويهدف إلى جعل الأنظمة المعقدة أسهل فهمًا، مما يزيد من إنتاجية المصممين.
تاريخ
أول استخدام معروف لمصطلح "إعادة هيكلة" في الأدبيات المنشورة كان في مقال نُشر في سبتمبر 1990 بقلم ويليام أوبدايك ورالف جونسون . [ 24 ] على الرغم من أن إعادة هيكلة الشيفرة البرمجية تُمارس بشكل غير رسمي منذ عقود، إلا أن أطروحة الدكتوراه التي قدمها ويليام جريسولد عام 1991 [ 25 ] تُعدّ من أوائل الأعمال الأكاديمية الرئيسية حول إعادة هيكلة البرامج الوظيفية والإجرائية، تلتها أطروحة ويليام أوبدايك عام 1992 [ 26 ] حول إعادة هيكلة البرامج الموجهة للكائنات، [ 27 ] مع العلم أن جميع النظريات والآليات كانت متاحة منذ فترة طويلة كنظم لتحويل البرامج . توفر جميع هذه المصادر قائمة بالأساليب الشائعة لإعادة الهيكلة؛ ويتضمن كل أسلوب وصفًا لكيفية تطبيقه ومؤشرات تدل على متى يجب (أو لا يجب) تطبيقه.
كتاب مارتن فاولر " إعادة الهيكلة: تحسين تصميم الكود الحالي" هو المرجع الأساسي.
استُخدم مصطلحا "التحليل إلى عوامل" و"الاستخراج من العوامل" بهذا الشكل في مجتمع فورث منذ أوائل الثمانينيات على الأقل. وقد خُصص الفصل السادس من كتاب ليو برودي " التفكير في فورث " (1984) [ 28 ] لهذا الموضوع.
في البرمجة المتطرفة، فإن تقنية إعادة هيكلة الأساليب المستخرجة لها نفس المعنى الأساسي للتحليل في لغة فورث: تقسيم "كلمة" (أو دالة ) إلى دوال أصغر وأسهل في الصيانة.
يمكن أيضًا إعادة بناء عمليات إعادة الهيكلة [ 29 ] بعد ذلك لإنتاج أوصاف موجزة لتغييرات البرامج المعقدة المسجلة في مستودعات البرامج مثل Git .
أدوات
تتضمن العديد من أدوات تطوير البرمجيات ميزات لإعادة هيكلة البرمجيات. ومن الأمثلة على ذلك:
- أندرويد ستوديو
- يدعم إعادة هيكلة أكواد Java و C++.
- رمز التطبيق
- يدعم إعادة هيكلة Objective-C و C و C++.
- دلفي
- يدعم إعادة هيكلة Object Pascal .
- مجموعة أدوات إعادة هندسة برمجيات إدارة المستندات
- يدعم إعادة هيكلة واسعة النطاق للغات C و C++ و C# و COBOL و Java و PHP وغيرها من اللغات.
- كسوف
- يدعم إعادة هيكلة Java عبر الإضافات، وبدرجة أقل C++ وPHP و Ruby و JavaScript
- IntelliJ IDEA
- يدعم إعادة هيكلة كود جافا.
- JDeveloper
- يدعم إعادة هيكلة كود جافا.
- نت بينز
- يدعم إعادة هيكلة كود جافا.
- PhpStorm
- يدعم إعادة هيكلة كود PHP.
- باي تشارم
- يدعم إعادة هيكلة كود بايثون.
- PyDev
- يدعم إعادة هيكلة كود بايثون .
- أحاديث قصيرة
- تتضمن معظم اللهجات أدوات إعادة هيكلة قوية. ويستخدم العديد منها متصفح إعادة الهيكلة الأصلي الذي أنتجه رالف جونسون في أوائل التسعينيات .
- المساعدة البصرية
- يدعم إعادة هيكلة كود C# و C++.
- Visual Studio
- يدعم إعادة هيكلة .NET و C++.
- Visual Studio Code
- يدعم إعادة هيكلة العديد من اللغات عبر الإضافات
- ويب ستورم
- يدعم إعادة هيكلة جافا سكريبت.
- بيئة تطوير وينغ
- يدعم إعادة هيكلة كود بايثون.
- Xcode
- يدعم إعادة هيكلة لغات البرمجة C و Objective-C و Swift . [ 30 ]
- منشئ Qt
- يدعم إعادة هيكلة C++ و Objective-C و QML [ 31 ]
انظر أيضاً
مراجع
- ↑ تيمبيرو، إيوان؛ رالف، بول (16 مارس 2026)، جعل مقاييس البرمجيات مفيدة ، arXiv، doi : 10.48550/arXiv.2603.16012 ، arXiv:2603.16012 ، تاريخ الاسترجاع : 20 مارس 2026
- 1 2 كيريفسكي، جوشوا (2004). إعادة هيكلة الكود باستخدام الأنماط . أديسون ويسلي.
- 1 2 فاولر، مارتن (1999). إعادة هيكلة الكود: تحسين تصميم الكود الحالي . أديسون-ويسلي. ص 63 وما بعدها . ISBN 978-0-201-48567-7.
- ↑ سوريانارايانا، جيريش (نوفمبر 2014). إعادة هيكلة البرمجيات لمعالجة عيوب التصميم . مورغان كوفمان. ص 258. ISBN 978-0-12-801397-7.
- ↑ مارتن، روبرت (2009). الكود النظيف . برنتيس هول.
- ↑ ليسرسون، تشارلز إي.؛ طومسون، نيل سي.؛ إيمر، جويل إس.؛ كوزماول، برادلي سي.؛ لامبسون، بتلر دبليو.؛ سانشيز، دانيال؛ شاردل، تاو بي. (2020). "هناك متسع كبير في القمة: ما الذي سيدفع أداء الكمبيوتر بعد قانون مور؟" . مجلة ساينس . 368 (6495) eaam9744. Bibcode : 2020Sci...368m9744L . doi : 10.1126/science.aam9744 . PMID 32499413 .
- 1 2 3 فرايفرت، دوف؛ لورنز، ديفيد هـ. (2022). "دعم اللغة لمنع تدهور قابلية إعادة الهيكلة". وقائع المؤتمر الدولي الحادي والعشرين لجمعية ACM SIGPLAN حول البرمجة التوليدية: المفاهيم والتجارب . الصفحات 122-134 . doi : 10.1145/3564719.3568688 . ISBN 978-1-4503-9920-3.
- ↑ هاندلر، ثورستن؛ نيومان، غوستاف (2019). "إطار عمل لتقييم وتدريب كفاءات إعادة هيكلة البرمجيات". وقائع المؤتمر الدولي المشترك الحادي عشر حول اكتشاف المعرفة وهندسة المعرفة وإدارة المعرفة . الصفحات 307-316 . doi : 10.5220/0008350803070316 . ISBN 978-989-758-382-7. S2CID 204754665 .
- ↑ نصيف، ماثيو؛ روبيلارد، مارتن ب. (نوفمبر 2017). إعادة النظر في فقدان المعرفة الناتج عن دوران الموظفين في مشاريع البرمجيات . المؤتمر الدولي لهندسة وصيانة وتطوير البرمجيات (ICSME) لعام 2017. الصفحات 261-272 . doi : 10.1109/ICSME.2017.64 . ISBN 978-1-5386-0992-7. S2CID 13147063 .
- ↑ فان جورب، جيلز؛ بوش، جان (مارس 2002). "تآكل التصميم: المشاكل والأسباب". مجلة الأنظمة والبرمجيات . 61 (2): 105-119 . doi : 10.1016/S0164-1212(01)00152-2 .
- ↑ فاولر، مارتن (1999). إعادة هيكلة الكود: تحسين تصميم الكود الحالي . ريدينغ، ماساتشوستس: أديسون-ويسلي. ISBN 978-0-201-48567-7. OCLC 41017370 .
- ↑ سمارت، جون فيرغسون (2008). أدوات جافا القوية . دار نشر أورايلي ميديا، ص 301. ISBN 978-1-4919-5454-6تم الاطلاع عليه بتاريخ 26 يوليو 2018 .
- ↑ مارتينز، لوانا؛ بونتيلو، فاليريا؛ كوستا، هيتور؛ فيروتشي، فيلومينا؛ بالومبا، فابيو؛ ماتشادو، إيفان (2024). "الكشف عن إعادة هيكلة كود الاختبار: أين وكيف يؤثر ذلك على جودة كود الاختبار وفعاليته؟". هندسة البرمجيات التجريبية . 30 (1): 27. doi : 10.1007/s10664-024-10577-y .
- 1 2 (هذه تتعلق فقط بالبرمجة الكائنية التوجه). تقنيات إعادة هيكلة البرمجيات في موقع فاولر لإعادة هيكلة البرمجيات
- ↑ فيرانتي، جين؛ أوتينشتاين، كارل جيه؛ وارين، جو دي. (يوليو 1987). "مخطط تبعية البرنامج واستخدامه في التحسين" . معاملات ACM في لغات البرمجة والأنظمة . 9 (3). ACM: 319-349 . doi : 10.1145/24039.24041 . S2CID 505075 .
- ↑ دونغلين، ليناغ؛ هارولد، إم جيه (نوفمبر 2008). "تقسيم الكائنات باستخدام رسوم بيانية لاعتمادية النظام". وقائع المؤتمر الدولي لصيانة البرمجيات (رقم التصنيف 98CB36272) . معهد مهندسي الكهرباء والإلكترونيات. الصفحات 319-349 . doi : 10.1109/ICSM.1998.738527 . ISBN 978-0-8186-8779-2. S2CID 18160599 .
- ↑ "استبدل رمز التحقق من النوع بـ State/Strategy" .
- ↑ "استبدل الشرطي بتعدد الأشكال" .
- ↑ برونتينك، م.؛ فان ديورسن، أ.؛ توروي، ت.؛ فان إنجيلين، ر. (2004). "تقييم تقنيات الكشف عن الاستنساخ للمخاوف المتداخلة". وقائع المؤتمر الدولي العشرين لهندسة البرمجيات التابع لمعهد مهندسي الكهرباء والإلكترونيات . IEEE. doi : 10.1109/ICSM.2004.1357804 .
- ↑ لغات وصف الأجهزة#لغات وصف الأجهزة ولغات البرمجة
- ↑ كايبينغ زينغ، سورين أ. هوس، "تحسينات معمارية من خلال إعادة هيكلة كود نماذج VHDL-AMS السلوكية". ISCAS 2006
- ↑ م. كيتينغ، "التعقيد والتجريد وتحديات تصميم الأنظمة المعقدة"، في ورشة عمل DAC'08تمت أرشفة هذا المقال بتاريخ 28-03-2016 على موقع Wayback Machine بعنوان "سد فجوة التحقق: من لغة C++ إلى RTL للتصميم العملي"
- ↑ M. Keating, P. Bricaud: Reuse Methodology Manual for System-on-a-Chip Designs , Kluwer Academic Publishers, 1999.
- ↑ أوبدايك، ويليام ف .؛ جونسون، رالف إي. (سبتمبر 1990). "إعادة هيكلة الكود: أداة مساعدة في تصميم أطر التطبيقات وتطوير الأنظمة الموجهة للكائنات". وقائع ندوة البرمجة الموجهة للكائنات مع التركيز على التطبيقات العملية (SOOPPA) . ACM.
- ↑ غريسولد، ويليام ج. (يوليو 1991). إعادة هيكلة البرامج كوسيلة مساعدة لصيانة البرمجيات (ملف PDF) (أطروحة دكتوراه). جامعة واشنطن . تاريخ الاسترجاع: 24 ديسمبر 2011 .
- ↑ أوبدايك، ويليام ف. (يونيو 1992). إعادة هيكلة أطر البرمجة الكائنية (مضغوطة بصيغة بوستسكريبت) (أطروحة دكتوراه). جامعة إلينوي في أوربانا-شامبين . تاريخ الاسترجاع: 12 فبراير 2008 .
- ↑ "مارتن فاولر، "إم إف بليكي: أصل كلمة إعادة الهيكلة"" .
- ↑ برودي، ليو (2004). التفكير المستقبلي . دار نشر فيج ليف، فورث إنترست. الصفحات 171-196 . ISBN 0-9764587-0-5أُرشف من الأصل في 16 ديسمبر 2005. تم الاطلاع عليه في 3 مايو 2020 .
- ↑ سوكولوف، أندري. "ما هي إعادة هيكلة الكود؟" .
- ↑ "ما الجديد في Xcode 9" .
- ↑ "نظرة عامة | وثائق Qt Creator" .
للمزيد من القراءة
- ويك، ويليام سي. (2003). كتاب تمارين إعادة هيكلة البرمجيات . أديسون-ويسلي. رقم ISBN 978-0-321-10929-3.
- مينز، ت.؛ توروي، ت. (فبراير 2004). "دراسة استقصائية لإعادة هيكلة البرمجيات" . معاملات IEEE في هندسة البرمجيات . 30 (2): 126-139 . Bibcode : 2004ITSEn..30..126M . doi : 10.1109/tse.2004.1265817 . ISSN 0098-5589 . S2CID 206778272 .
- فيذرز، مايكل سي (2004). العمل بفعالية مع البرامج القديمة . برنتيس هول. ISBN 978-0-13-117705-5.
- كيريفسكي، جوشوا (2004). إعادة هيكلة البرمجيات باستخدام الأنماط . أديسون-ويسلي. ISBN 978-0-321-21335-8.
- أرسينوفسكي، دانييل (2008). إعادة هيكلة احترافية في فيجوال بيسك . دار نشر وروكس. رقم ISBN 978-0-470-17979-6.
- أرسينوفسكي، دانيجيل (2009). إعادة هيكلة احترافية في C# وASP.NET . وروكس. رقم ISBN 978-0-470-43452-9.
- ريتشي، بيتر (2010). إعادة هيكلة الكود باستخدام فيجوال ستوديو 2010. باكت. رقم ISBN 978-1-84968-010-3.
روابط خارجية
- ما هي عملية إعادة هيكلة البرمجيات؟ (مقال من موقع c2.com)
- الصفحة الرئيسية لمارتن فاولر حول إعادة هيكلة البرمجيات
- إعادة هيكلة الكود
- البرمجة المتطرفة
- مصطلحات جديدة في مجال التكنولوجيا
