SYS// BRSTD-2026
UPLINK // AUTH_OK
LAT 24.86°N
LNG 67.00°E
ATELIER // v3.04
SIG ▮▮▮▮▮
PWR 98.4%
TEMP 36.6°C
FREQ 2400.0 MHz
PING 012 ms
PKTS 000000
RNG 000.0m
VEC 0.000,0.000
ID 0x000000
brainiac/studio

Digital Studio

نخدم قطر

العربيةEnglish
02 · تطوير الويب والتطبيقات / تحديث البرمجيات القديمة

استبدل النظام القديم من دون أن توقف العمل.

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

مرّر
باختصار

نحدّث الأنظمة القديمة قطعةً قطعة بدل استبدالها دفعة واحدة. يعمل القديم والجديد جنباً إلى جنب، وتنتقل الحركة إلى الجديد تدريجياً كلما أثبت نفسه، وتستطيع التوقف عند نهاية أي مرحلة محتفظاً بما أُنجز. نبدأ بقراءة الكود وتقرير مكتوب عن حالته، ونتفق على ترتيب المراحل ومواعيدها كتابةً قبل البدء.

آخر تحديث نوفمبر 2026

الخيار الذي يبدو أنظف يفشل أكثر.

إعادة الكتابة الكاملة لا تسلّم شيئاً حتى النهاية. أما الاستبدال على مراحل فيسلّم باستمرار.

REWRITE, OR REPLACE IN STAGESFull rewriteNo benefit until it is finished.You maintain two systems meanwhile.All the risk in one weekend.You cannot stop halfway — you have nothing.StagedBenefit from the first stage.Old system keeps running.One piece switched at a time.Stop at any stage and keep what is done.
ما الذي يعنيه هذا فعلاً

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

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

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

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

ما نبنيه

كيف ننجزه.

— 01

تقييم صادق أولاً

في أي حال الكود، ما الخطِر، وما السليم. أحياناً يكون الجواب أن النظام يحتاج أقل مما كنت تخشى.

— 02

القطعة الأخطر أولاً

لا الأسهل. الجزء الذي يصبح رحيل شخص واحد عنه مشكلة حقيقية.

— 03

الجديد بجانب القديم

الاثنان يعملان، والحركة مقسومة بينهما، وتنتقل تدريجياً كلما أثبتت قطعة نفسها.

— 04

بيانات متّسقة بين النظامين

ما دام النظامان يعملان، يجب أن يتفقا. هذا أصعب جزء تقنياً، وهنا تهم العناية.

— 05

اختبارات قبل التغيير

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

— 06

توثيق ونحن نتقدم

غالباً أول توثيق حقيقي يحصل عليه النظام. له قيمة حتى لو توقفت مبكراً.

— 07

فريقك جزء من العمل

لتنتقل المعرفة إليه، بدل أن تنتقل من نقطة ضعف واحدة إلى نقطة ضعف أخرى.

— 08

نقطة توقف في كل مرحلة

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

إعادة كتابة كاملة، أم استبدال على مراحل؟

كلاهما مشروع. أحدهما يفشل أكثر بكثير، وهو الذي يبدو أنظف على الورق.

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

متى يحين وقت التحديث.

— 01

شخص واحد فقط يفهم النظام

السبب الأكثر شيوعاً والأكثر إلحاحاً. هذه مخاطرة على العمل، لا مسألة تقنية.

— 02

التغييرات البسيطة تستغرق أسابيع

حين تحتاج ميزة صغيرة شهراً، فالنظام يتقاضى منك فائدة على كل قرار.

— 03

لا تجد من توظّفه له

إذا كانت التقنية تُصعّب التوظيف، فالأمر يسوء كل عام.

— 04

لا تشترِ هذا إذا كان النظام يعمل ونادراً ما يتغير

نظام مستقر لا يحتاج أحد إلى تعديله ليس مشكلة. سنقول لك أن تتركه وشأنه، وأن تنفق الميزانية في مكان آخر.

طريقة العمل

كيف نعمل.

— 01

نقرأ الكود

كما ينبغي، ونخبرك بحاله، بما في ذلك حين يكون الجواب الصادق أن التحديث ليس عاجلاً.

— 02

نجد المخاطرة الحقيقية

ليست عادةً الكود الأقدم، بل الجزء الذي لا يفهمه إلا شخص واحد.

— 03

نتفق على الترتيب

أي قطعة أولاً، وما الذي تسلّمه كل مرحلة وحدها، ومتى، كتابةً.

— 04

نضيف الاختبارات أولاً

حول القطعة التي نستبدلها، لتعرف إن تغيّر سلوكها.

— 05

نشغّل الاثنين معاً

الجديد يتولى جزءاً من الحركة والقديم الباقي، والنسبة تتحرك مع ازدياد الثقة.

— 06

نحوّل ثم نزيل

فقط بعد أن تعمل القطعة الجديدة بنظافة. يبقى الكود القديم متاحاً إلى أن تنتفي الحاجة إليه فعلاً.

— 07

نسلّم كل مرحلة

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

أسئلة شائعة

تحديث البرمجيات القديمة

7 أسئلة مع إجاباتها. لديك سؤال آخر؟ تواصل معنا.

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