ما هو التحويل / إعادة كتابة البرامج الناجحة التي قمت بها؟

StackOverflow https://stackoverflow.com/questions/592350

  •  09-09-2019
  •  | 
  •  

سؤال

ما هو التحويل / إعادة الكتابة الناجح الذي قمت به من البرامج التي شاركت بها؟ ماذا حيث اللغات والإطار المشارك في هذه العملية؟ ما حجم البرنامج المعني؟ أخيرا ما هو الجزء العلوي أو شيئين تعلمته من المشاركة في العملية.

هذا يرتبط بهذا سؤال

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

المحلول

انا ذاهب ل "الأكثر سخاء" هنا:

  • قم بتنفيذ محاكاة 8080 مكتوبة في FORTRAN 77 من Decsystem-10 تشغيل قمم -10 إلى الإطار الرئيسي IBM 4381 تشغيل VM / CMS.

نصائح أخرى

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

أكبر شيء تعلمته من القيام بذلك هو: "يستغرق الأمر دائما وقتا أطول مما تعتقد".

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

حصلت عليه إكمال وفحصه قبل أن يبدأ الجميع العمل!

أعدد كتابة تطبيق Web Java كبير على تطبيق ASP.NET لشركة Realty لأسباب مختلفة.

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

هذا هو الأسباب الأكبر، بجد: يبدو الأمر سهلا للغاية للعميل ("فقط إعادة القيام بما لدي بالفعل وأضف بعض الأشياء".).

أروع واحد بالنسبة لي، وأعتقد، كان ميناء مامي إلى iPod. وبعد لقد كانت تجربة تعليمية رائعة مع أجهزة مضمنة، وعليها العمل مع الكثير من الناس العظماء. موقع رسمي.

أقوم بإعادة كتابة نظام إدارة مشاريع داخلي إلى نموذج MVC أكثر قياسية. في مكدس المصباح (PHP) وأنا قريب من المعلم الأول.

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

مثال هو أنني برمجة جميع الوظائف أولا (مثل كنت مستخدما مسؤولين) ثم عند فرزها، أضف تعقيد وجود قيود (مستويات المستخدم وما إلى ذلك)

قمت بإعادة تصميمها / إعادة كتابة / إعادة كتابة برنامج MS-DOS C ++ MS-DOS C ++ بقيمة 30،000 سطر في برنامج Java Swing Swing

تعلمت أبدا أن تأخذ وظيفة أخرى تنطوي على C ++ أو Java.

قمت بتنفيذ تطبيق PowerBuilder Client Server، بضع مئات من الشاشات يستحق، في تطبيق ASP.NET (C #).

نظرا لقضايا الأداء والصيانة، فقد نقلت أكثر من العام السابق طن من SQL غير المدمجة من البرامج النصية من PowerBuilder وإجراءات مخزنة.

على الرغم من أن هذا من شأنه أن يصنع الكثير منكم، فإن وجود الكثير من المنطق التجاري في قاعدة البيانات، فإنه يعني أن تطبيق PowerBuilder كان "خفيفا" نسبيا، وعندما بنينا نهاية .NET الأمامية، فقد يستفيد منه SQL CodeBase ويكون لديك الكثير من الوظائف بنيت بالفعل واختبارها.

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

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

أردنا الاستفادة من ملفات بيانات XML بدلا من الملفات المستندة إلى النص المنظم. كان الرمز الأصلي قديما للغاية وصعبة الحفاظ عليها. استبدلنا هذه الأداة بمجموعة من البرامج النصية XSLT ومكتبة فائدة. لمكتبة المرافق، يمكننا الاستفادة من بعض التعليمات البرمجية في الأداة القديمة.

وكانت النتيجة أن جميع التطبيقات العشرين قد تستفيد الآن من تنسيق الملفات المستندة إلى النص القديم أو تنسيق XML الجديد الجديد. لقد قمت أيضا بتسليم أداة لتوليد التحويل التي تحولت ملفات البيانات القديمة إلى ملفات بيانات XML الجديدة.

بعد إخراج واحد أو إصدارين قررنا الآن أننا لن نؤيد ذلك بالتنسيق القائم على النص القديم والجميع قادر على تحويل بياناتهم إلى XML.

بالكاد نضطر إلى القيام التحويلات اليدوية،

تحويل تطبيق الشركة الرئيسي من ما قبل القياسية C ++ إلى C ++ القياسية. كان لدينا محطة بيع بملايين الدولارات حول جعلها تعمل على عمل AIX، وبعد النظر إليها قررنا أن التحويل إلى C ++ القياسية سيكون سهلا تماما مثل التحويل إلى IBM التقليدي C ++.

لا أعرف عدد الخط، لكن شفرة المصدر هرب إلى مئات ميغابايت.

استخدمنا أدوات UNIX القياسية للقيام بذلك، بما في ذلك السادس والمنظمة التحويلية المتنوعة.

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

أعتقد أن الوجبات الجاهزة الرئيسية كانت: لا تصبح ذكية بفظاعة مع رمز بلغة لم تكن توحدا بعد، أو من المحتمل أن تتغير الأمور بطرق غير متوقعة. كان علينا أن نفعل الكثير من الحفر في بعض التعديلات / الانتهاكات الباقية من تدفقات C ++.

قبل عشر سنوات، قمت بإدارة فريق تحويل نظام CAD من DOS إلى Windows. نسخة DOS المستخدمة المكتبات المنزلية للحصول على رسم الرسومات، يستخدم إصدار Windows MFC. كان البرنامج حوالي 70.000 خطوط من رمز C وقت التحويل. أهم شيء تعلمناه في هذه العملية هو قوة التجريد. تم عزل جميع الإجراءات غير المحمولة الخاصة بالكلا عن الجهاز في عدد قليل من الملفات. لذلك كان من السهل نسبيا استبدال المكالمات إلى المكتبة القائمة على DOS والتي من شأنها أن تعتمد مباشرة من خلال الوصول مباشرة إلى مخزن المؤقت الإطار مع مكالمات Windows API. وبالمثل، للإدخال، استبدلنا فقط حلقة الحدث التي تم فحصها لأحداث لوحة المفاتيح والماوس، مع حلقة حدث Windows المقابلة. واصلنا سياستنا حول عزل رمز عدم المحمولة (هذه المرة الزمنية هذه) من بقية النظام، لكننا لم نجد بعد هذا مفيدا بشكل خاص. ربما في يوم من الأيام سنفكر النظام لنظام التشغيل Mac OS X ويكون شاكرين مرة أخرى.

العديد من. لكنني أذكر واحدة.

كانت أداة نمذجة الأداء. جزء دلفي 1، الجزء توربو باسكال. إنها بحاجة إلى إعادة كتابة آخر لم يكن من السلب البقاء على قيد الحياة. لذلك بدأنا كفريق واحد من 2، لكنني فقط نجا حتى النهاية. وكنت مستعدا قبل الموعد النهائي ؛-).

العديد من الأشياء التي فعلناها:

  • جعلها متعددة الوسائط. الأصلي لديه الكثير من العالم من العالم. لقد أزلت لهم جميعا وكان النموذج المتعدد سهل التكيف.
  • رسائل الخطأ الموسعة. انقر على رسالة واحصل على المساعدة.
  • الكثير من الرسوم البيانية والرسوم البيانية. جميع النقر للحفر لأسفل.
  • محاكاة. تغيير المعلمات مع مرور الوقت ومعرفة كم من الوقت كان التكوين الحالي كافيا.

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

أعد كتابة نظام للشركة التي تعالج الفواتير القانونية - النظام الأصلي كان وحشية VB لم يكن لديه فكرة عن مبادئ OO جيدة - كان كل شيء مختلطا معا. قام HTML ب SQL، وكتب SQL HTML. كان جزء كبير منه محرك قواعد مخصصة يستخدم شيئا مثل XML للقواعد.

قام فريقان بإعادة الكتابة، والتي استغرق حوالي 9 أشهر. قام أحد الفريق بإنهاء ويب واجهة الويب وسير العمل الخلفي، في حين أن الفريق الآخر (الذي كنت أجريته) أعد كتابة محرك القواعد. تمت كتابة النظام الجديد في C #، وتم إجراء اختبار أولا. إضافة قواعد جديدة للنظام عندما تم القيام به كانت الأوساخ بسيطة، وكان كل شيء قابلا للشاهية. على طول الطريقة التي كنا بها أشياء مثل تحويل الشركة من VSS إلى SVN، قم بتطبيق التكامل المستمر، وأتمتة النشر، وتعليم المطورين الآخرين كيفية القيام TDD وغيرها من ممارسات Scrum / XP الأخرى.

كان إدارة التوقعات حاسمة من خلال المشروع. وجود عميل كان ذكيا حول البرنامج كان مفيدا للغاية.

وجود مزيج من الاختبارات الكبيرة (نهاية إلى النهاية) جنبا إلى جنب مع اختبارات وحدة شاملة والتكامل ساعدت الأطنان.

تحويل vBulletin المكتوبة في PHP في C # / ASP.NET. أنا على دراية بكلتا اللغتين، لكن PHP هي أيدي الفائز لبناء هذا البرنامج. كان أكبر الألم في الخلف بحاجة إلى القيام بما يعادل C # من EVER () لاستدعاء القوالب.

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

لقد قمت بتحويل عملية بناء ديناميكية مكتوبة بالكامل في الحلا في بيرل إلى C # / التي أعطاني oppertunity لإضافة وظائف آمنة وفشل في عملية الإنشاء.

قبل أن تسأل - لا - تعذر استخدام مؤسسة سير عمل Microsoft لأنه لا يمكنك تغيير عملية أثناء وقت التشغيل ديناميكيا.

ما تعلمته:

  • أن يكره بيرل مطور
  • تحسين العملية باستخدام محرك WF
  • استراتيجيات الفشل آمنة وفشل فوق
  • بعض القرص C #؛)

في النهاية تغطيها حوالي 5K - 6K (بما في ذلك محرك WF) LOC من أصل 3 200 ملف ملفات Perl. لكنها كانت ممتعة - وأفضل بكثير في النهاية؛)

تحويل رمز C محمول من الناحية النظرية إلى رمز C محمول من الناحية النظرية عبر الهندسة لدعم تغيير الأجهزة يحفظ الشركة x دولار لكل وحدة.

يختلف الحجم - هذه ضرورية شائعة، وقد قمت بمشاريع صغيرة وكبيرة.

تعلمت أن أكتب رمز C أكثر محمول. الأناقة رائعة، ولكن عندما يتعلق الأمر بالهبوط، فإن المترجم يعتني بالأداء، وينبغي أن يكون الرمز بسيطا ومحمولا قدر الإمكان.

استدذ محاكاة مكتوبة في Fortran 77 (على الرغم من المكتوبة في التسعينيات) إلى C / Java لأن الأصل يعمل فقط على مجموعات البيانات الصغيرة. لقد تعلمت أن أحب تدوين كبير o بعد عدة أوقات من شرح سبب نقل جدول البيانات بأكمله إلى ذاكرة في بداية البرنامج لنطاق.

ترحيل برنامج المهمة B-2 Stealth Bomber من Jovial إلى C. 100٪ تحويل تلقائي بالكامل. عنجد!

الدرس الرئيسي: استخدام أدوات التحويل الآلي القابلة للتكوين هو فوز ضخم.

يرى DMS برنامج إعادة هندسة Toolkit.

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