التصحيح (الحوسبة)

التصحيح هو بيانات تُستخدم لتعديل مورد برمجي موجود ، مثل برنامج أو ملف ، وغالبًا ما يكون ذلك لإصلاح الأخطاء والثغرات الأمنية . [ 1 ] [ 2 ] والتصحيح هو أيضًا عملية تطبيق هذه البيانات على المورد الموجود. يتضمن تصحيح النظام تطبيق تصحيح. قد يُنشأ التصحيح لتحسين الوظائف أو سهولة الاستخدام أو الأداء . يمكن إنشاء التصحيح يدويًا، ولكن عادةً ما يُنشأ باستخدام أداة تُقارن بين نسختين من المورد وتُولد بيانات تُستخدم لتحويل إحداهما إلى الأخرى.

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

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

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

يُخلط أحيانًا بين تحديث البرامج والتصحيح، مع أنهما ليسا مترادفين . يمكن تنفيذ التحديث باستخدام ملفات التصحيح وعملية التصحيح. وقد يرى البعض أن التصحيح لا يقتصر على تعديل محتوى الملفات، بل يشمل إضافة الملفات أو حذفها أو استبدالها. عادةً ما يشير التصحيح إلى تغيير صغير نسبيًا، لذا قد يُطلق على التصحيح كبير الحجم أو النطاق اسم تحديث البرامج العام ، أو اسمًا أكثر تحديدًا مثل حزمة الخدمة . يستخدم نظام التشغيل Windows NT والإصدارات اللاحقة له (بما في ذلك Windows 2000 و Windows XP و Windows Vista و Windows 7 ) مصطلح حزمة الخدمة . [ 3 ] تاريخيًا، استخدمت شركة IBM مصطلحي FixPak و Corrective Service Diskette لمثل هذه التحديثات. [ 4 ]

تاريخ

شريط برنامج لجهاز هارفارد مارك 1 لعام 1944 ، وهو أحد أوائل الحواسيب الرقمية. لاحظ الرقع المادية المستخدمة لتصحيح الثقوب المثقوبة بتغطيتها.

تاريخيًا، كان مورّدو البرامج يوزّعون التحديثات على أشرطة ورقية أو بطاقات مثقبة ، متوقعين من المستلم قصّ الجزء المُشار إليه من الشريط الأصلي (أو مجموعة الأقراص)، وتركيب الجزء البديل (ومن هنا جاء الاسم). لاحقًا، استُخدم الشريط المغناطيسي لتوزيع التحديثات. ثم، بعد اختراع محركات الأقراص القابلة للإزالة، أصبحت التحديثات تصل من مطوّر البرامج عبر قرص ، أو لاحقًا عبر قرص مضغوط (CD-ROM) عن طريق البريد . مع انتشار الإنترنت ، أصبح تحميل التحديثات من موقع المطوّر الإلكتروني أو من خلال التحديثات البرمجية التلقائية متاحًا للمستخدمين النهائيين. بدءًا من نظامي التشغيل Mac OS 9 من Apple و Windows ME من Microsoft ، اكتسبت أنظمة تشغيل الحواسيب الشخصية القدرة على الحصول على تحديثات برمجية تلقائية عبر الإنترنت.

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

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

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

يستخدم

ترقيع ثنائي

تُوزّع عادةً تصحيحات البرامج الاحتكارية كملفات تنفيذية بدلاً من شفرة المصدر . عند تشغيل هذه الملفات، يتم تحميل برنامج في الذاكرة يتولى إدارة تثبيت شفرة التصحيح في البرنامج (البرامج) المستهدف على القرص.

تُوزَّع تصحيحات البرامج الأخرى عادةً كملفات بيانات تحتوي على رمز التصحيح. يقرأ هذه الملفات برنامج مساعد للتصحيح يقوم بتثبيت التصحيح. يُعدِّل هذا البرنامج المساعد الملف التنفيذي للبرنامج المستهدف - أي رمز الآلة الخاص به - عادةً عن طريق استبدال بايتاته ببايتات تُمثِّل رمز التصحيح الجديد. إذا كان الرمز الجديد يتسع في المساحة (عدد البايتات) التي يشغلها الرمز القديم، فيمكن تثبيته مباشرةً فوق الرمز القديم. يُسمى هذا التصحيح بالتصحيح المضمن. أما إذا كان الرمز الجديد أكبر من الرمز القديم، فسيُضيف برنامج التصحيح سجل (سجلات) تحميل تحتوي على الرمز الجديد إلى ملف كائن البرنامج المستهدف الذي يتم تصحيحه. عند تشغيل البرنامج المُصحَّح، يُوجَّه التنفيذ إلى الرمز الجديد مع تعليمات التفرع (القفزات أو الاستدعاءات) المُصحَّحة فوق الموضع المطلوب في الرمز القديم. في أجهزة الكمبيوتر الصغيرة المبكرة ذات 8 بت، على سبيل المثال Radio Shack TRS-80 ، يتضمن نظام التشغيل أداة PATCH/CMD التي تقبل بيانات التصحيح من ملف نصي وتطبق الإصلاحات على الملفات الثنائية القابلة للتنفيذ للبرنامج المستهدف.

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

يمكن تطبيق تصحيحات صغيرة لرمز الآلة في الذاكرة يدويًا باستخدام أداة تصحيح الأخطاء في النظام، مثل أداة DDT في نظام CP/M أو أداة DEBUG في نظام MS-DOS . وكان المبرمجون الذين يعملون بلغة BASIC المفسرة يستخدمون غالبًا الأمر POKE لتغيير وظائف روتين خدمة النظام أو المفسر نفسه.

ترقيع شفرة المصدر

تُحدد رقعة الكود المصدري كيفية تعديل نص ملفات الكود. عادةً ما تكون هذه الرقعة ملفًا نصيًا يُشفّر الاختلافات بين نسختين من الملف. ولأن هذا النوع من الرقع يُنشأ غالبًا باستخدام الأمر diff، فإن ملف الرقعة يُعتبر أيضًا ملف مقارنة.

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

تطوّر خادم Apache HTTP في الأصل من خلال مجموعة من التصحيحات التي جمعها برايان بهليندورف لتحسين NCSA HTTPd ، ومن هنا جاء اسمه الذي يوحي بأنه مجموعة من التصحيحات ( "خادم غير مكتمل" ). تشير الأسئلة الشائعة على الموقع الرسمي للمشروع إلى أن اسم "Apache" اختير احترامًا لقبيلة أباتشي من السكان الأصليين لأمريكا . مع ذلك، فإن تفسير "خادم غير مكتمل" ورد في البداية على موقع المشروع الإلكتروني. [ 5 ]

انظر أيضاً

مراجع

  1. «مايكروسوفت تُصدر أكبر تحديث برمجي في التاريخ» . رويترز. ١٤ أكتوبر ٢٠٠٩. مؤرشف من الأصل في ١٦ أكتوبر ٢٠٠٩.
  2. "ما هو إصلاح الأخطاء؟ - تعريف من Techopedia" . techopedia.com . مؤرشف من الأصل بتاريخ 2018-07-03 . تم الاطلاع عليه بتاريخ 2015-07-29 .
  3. "مركز حزم الخدمة والتحديثات" . windows.microsoft.com . مؤرشف من الأصل بتاريخ 2015-06-01 . تم الاطلاع عليه بتاريخ 2015-06-01 .
  4. "مسرد المصطلحات" . Tavi.co.uk. مؤرشف من الأصل بتاريخ 1 ديسمبر 2016. تم الاطلاع عليه بتاريخ 23 نوفمبر 2016 .
  5. "مشروع خادم Apache HTTP" . 15 يونيو 1997. مؤرشف من الأصل في 15 يونيو 1997.{{cite web}}: CS1 maint: bot: حالة عنوان URL الأصلي غير معروفة ( رابط )