# نشر البرمجيات

نشر البرمجيات (بالإنجليزية: software deployment)‏ هو جميع الأنشطة التي تجعل من نظام البرامج قابلاً للاستخدام.
تتألف عملية النشر عموماً من أنشطة متشابكة، بالإمكان حدوث تحولات وانتقالات بينها. قد تكون تلك الأنشطة من طرف المُنتِج أو من طرف المستهلك، وقد يمارس الطرفان تلك الأنشطة. وبما أن كلّ نظامٍ للبرامج فريد، فمن الصعب وصف أو تحديد العمليات أو الإجراءات التي تحدث ضمن كلّ نشاط. بالتالي يجب تفسير كلمة «نشر» على أنها الإجراء أو المعالجة الخاصة التي تُجرى وفقاً لمتطلبات أو مواصفات خاصة.

## تاريخ

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

## النشاطات المتعلقة بالنشر
### الإصدار

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

### التنصيب والتفعيل

في الأنظمة البسيطة، يقتضي التنصيب خلق أمر أو اختصار أو نص أو برنامج كعفريت النظام من أجل تنفيذ البرمجيات (يدوياً أو أوتوماتيكياً). أما في الأنظمة المعقدة، فقد تشمل العملية تهيئة النظام –عادة عن طريق طرح أسئلة على المستخدم تتعلق بما ينوي القيام به، أو سؤال المستخدم مباشرة عن طريقة التهيئة - و/أو تجهيز جميع الأنظمة الفرعية المطلوبة. التفعيل هو نشاطٌ يتم عن طريقه تشغيل العنصر التنفيذي من البرمجيات للمرة الأولى (يرجى عدم الخلط بينه وبين الاستخدام الشائع لمصطلح «تفعيل» فيما يخص ترخيص البرمجيات، وهو من اختصاص أنظمة إدارة الحقوق الرقمية).
أما النشر الأكبر للبرمجيات، والذي يجري على الخوادم، فبالإمكان تنصيب النسخة الرئيسة من البرمجيات -والتي ستُستخدم من طرف المستخدمين- على خادم الإنتاج في محيط إنتاجي. تُنصب النسخ الأخرى من البرمجيات المنشورة في محيط الاختبار ومحيط التطوير ومحيط التعافي من الكوارث.
في محيط التوصيل المستمر المعقد و/أو أنظمة البرمجيات كخدمة، قد توجد نسخ من النظام مُهيئة بشكل مختلف عن بعضها، وفي آن واحد، ضمن محيط الإنتاج للعملاء الداخليين أو الخارجيين المختلفين، أو قد تُطرح وتصبح متاحة بشكل تدريجي وموازٍ لمجموعات مختلفة من العملاء، من المحتمل أيضاً إلغاء واحدة أو أكثر من تلك النُسخ المنشورة سوية. على سبيل المثال، يُشتهر موقع تويتر باستخدام الأسلوب الأخير في اختبار A/B (اختبار عشوائي لمتغيرَين) للمزايا الجديدة والتغييرات التي ستطرأ على الواجهة التفاعلية. بالإمكان أيضاً إنشاء مجموعة «مخفية نشطة» ضمن محيط الإنتاج، تتألف من خوادم غير متصلة بعد بموازن الحِمل الخاص بالإنتاج، بهدف النشر بتقنية الأزرق والأخضر (تقنية تهدف إلى تخفيض الوقت الضائع واحتمال الخطر عن طريق تشغيل محيطين إنتاجيين متطابقين يُدعيان الأزرق والأخضر، فيجري الاختبار على واحدٍ من المحيطين، أحدهما نشط والآخر عاطل).

### إبطال التفعيل

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

### إلغاء التنصيب (أو إلغاء التثبيت)

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

### التحديث

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

### تحديث مُدرجٌ في النظام

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

### تعقب النسخة

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

## أدوار النشر

عزز تعقيد وتنوّع المنتجات البرمجية ظهور أدوارٍ مصممة خصيصاً لتنسيق وهندسة عملية النشر. في أنظمة الحواسيب المكتبية، أصبح المستخدمون «ناشرين للبرمجيات» عندما ينصِّبون حزمة البرمجيات على أجهزتهم. تشمل عملية نشر برمجيات المؤسسات الكثير من الأدوار، وتتغير تلك الأدوار مع تقدّم التطبيق من مرحلة الاختبار (ما قبل الإنتاج) إلى محيط الإنتاج. قد تشمل الأدوار النمطية لنشر البرمجيات في التطبيقات التابعة للمؤسسات ما يلي:
* في محيط ما قبل الإنتاج:
** مطورو التطبيقات
** مهندسو البناء والإصدار
** مديرو الإصدار
** منسقو النشر
* في محيط الإنتاج
** مدير النظام
** مدير قاعدة البيانات
** منسقو الإصدار
** مديرو مشروع العمليات