سؤال

نعم، كلمة "M" اللعينة.

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

ما كنت تنوي القيام به؟

سيساعدك {المحرر المفضل} وGrep على البدء في اكتشاف الكهوف من خلال الشجاعة المعقدة لقاعدة التعليمات البرمجية، ولكن ما هي الأدوات الأخرى التي يجب أن تكون موجودة في صندوق أدوات مهندسي الصيانة؟

لبدء دحرجة الكرة؛لا أعتقد أنني أستطيع العيش بدونها مصدر البصيرة من أجل استكشاف الكهوف C/C++.(تنصل:أنا لا أعمل لديهم).

هل كانت مفيدة؟

المحلول

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

  • إعادة هيكلة الكود
  • التنقل بالرمز
  • تحليل الكود

هذه بعض الميزات العديدة التي تساعد الشخص على أداء المهام التي تستغرق وقتًا طويلاً.

نصائح أخرى

تمامًا مثل أكل الفيل - قضمة واحدة في كل مرة :)

في بعض الأحيان يمكن أن تكون الصورة الكبيرة مثبطًا حقيقيًا، وتحتاج إلى اختيار نقطة ومعالجتها قطعة قطعة.

وبطبيعة الحال، لا تزال بحاجة إلى اختيار الشيء للبدء فيه ...عادةً ما يكون هذا هو الدافع الأكبر من قبل المستخدمين/الأعمال التجارية مع إجراء تغييرات محددة ذات أولوية قصوى مطلوبة (أمس...) ولكن إذا كان لديك القليل من المرونة أو وقت التعريف، فغالبًا ما تكون المقاييس مفيدة.الأدوات هنا تختلف باختلاف التكنولوجيا واللغة، ولكن الأدوات مثل نديبند و JDepend, أو أي مقاييس كود مضمنة (كما هو الحال في Visual Studio Team System أو المكونات الإضافية المتنوعة لـ Eclipse المتوفرة) أو أداة مثل قردي للتعرف على حجم مشكلة النسخ واللصق.

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

وكما قال الآخرون - بافتراض توفر الخيارات للغة - يعد IDE الجيد مع التنقل في التعليمات البرمجية وإعادة البناء الآلي أمرًا ضروريًا (Eclipse وVisual Studio (مع أو بدون ReSharper).

مجموعة من الكتب لرفع المعنويات:

حظ سعيد :)

يمكن أن تساعدك محركات البحث عن الأكواد في العثور على قاعدة ضخمة من المصادر.

يمكن الاطلاع محرك بحث كود مصدر SD.يمكنه التعامل مع العديد من اللغات في نفس الوقت.يمكن إجراء عمليات البحث لأنماط في langauge محددة ، أو أنماط عبر اللغات (مثل "العثور على معرفات تتضمن الضريبة").من خلال الحساسية لرموز Langauge ، يتم تقليل عدد الإيجابيات الخاطئة ، مما يوفر الوقت للمستخدم.فهو يفهم C وC++ وC# وCOBOL وJava وECMAScript وJava وXML وVerilog وVHDL وعدد من اللغات الأخرى.

(أنا مهندس الأدوات).

عادةً ما أبدأ باستخدام Emacs + CScope على Linux.يحتوي Visual Studio على بعض أدوات الفحص التي تمنحك قدرة مماثلة لنظام التشغيل Windows.يمكن أن يكون Doxygen مفيدًا جدًا أيضًا - فهو سينشئ مستندات يمكن أن تكون مفيدة حتى لو لم تكن المصادر تحتوي على تعليقات توثيقية.

سأقوم بتشغيل بعض أدوات UML (ربما دفتر ملاحظات بسيط بقلم =)) و/أو أدوات لبناء الفئات والمكالمات والتسلسلات الهرمية للأساليب (مدمجة في IDE).ثم سأشاهد الديناميكيات باستخدام مصحح الأخطاء أو اختبارات الوحدة البسيطة.باستخدام هذه الأشياء سأحاول إجراء نوع من الهندسة العكسية لمعرفة التصميم.

في مثل هذه الحالات، سأستخدم فهم لC++

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

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

يعد السجل المكتوب مفيدًا أيضًا، بحيث يمكنك توثيق النظام أثناء المضي قدمًا.

نعم، ضرب المسمار على الرأس.إن غلاف Unix وبرنامج Notepad++ المفيد هو ما اعتدت استخدامه عندما كنت أقوم بأعمال الصيانة في ColdFusion وPHP وPerl وما إلى ذلك.من الجيد عدم تبديل المحررين وتعقب جميع الإشارات إلى الاسم/المعلمة/المتغير.

الآن أقوم فقط بالنقر بزر الماوس الأيمن والضغط على "البحث عن جميع المراجع" في Visual Studio، والذي يبدو وكأنه غش لأكون صادقًا.يشعر شباب PHP بغيرة شديدة، حيث يضطرون إلى استخدام vi للتحرير.;)

ستكون الأداة المهمة هي الشيء الذي يسمح لك بالتنقل (وتحرير) قاعدة التعليمات البرمجية لمساعدتك على الفهم.

من المفيد جدًا أن يكون لديك شيء يمكنه عرض علاقة الفصل (في حالة استخدام لغة OO).تعد القدرة على عرض أشجار الاتصال (الثابتة) مفيدة جدًا أيضًا عندما تريد قياس تأثير التغيير الذي ستجريه.

لقد ذكرت مصدر البصيرة.مشروع مفتوح المصدر طويل الأمد هو الملاح المصدر.ويبدو أن التنمية قد بدأت من جديد بعد ركود لفترة من الوقت.

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

NDepend هي أداة مخصصة ل إعادة هندسة الكود القديم, ، وخاصة قواعد التعليمات البرمجية القديمة المتشابكة الكبيرة تنصل:أنا أحد مطوري الأدوات

يقتبس سكوت هانسيلمان الذي كتب مرة واحدة على مدونته: "يمنحني NDepend نظرة ثاقبة لتطبيقاتي لم تكن لدي من قبل (...) وبمجرد أن أدركت عمق واتساع المعلومات التي كنت أنظر إليها، كنت مثل طفل في متجر للحلوى."

بعض ميزات NDepend المفيدة لإعادة الهندسة هي:

يجب أن تكون قادرًا على ذلك التنقل في جميع أنحاء قاعدة التعليمات البرمجية.إذا كان IDE المفضل لديك يسمح بذلك، فيمكنك استخدام مفهرس مثل فهم لC++ (سبق ذكره)، lxr, ، أو أوبن جروك.

في عجلة من امرنا، يمكنك الاعتماد عليها جريب (1 ثانية) أو - أفضل - أك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top