|  |
| --- |
| جزء من سلسلة مقالات حول |
| عملية تطوير البرمجيات |
|  |
| نشاطات رئيسة
* التطوير
* التحليل
* التصميم
* البناء
* الفحص
* تتبع الأخطاء
* النشر
* صيانة البرمجيات
 |
| نماذج العمل
* هندسة البرمجيات
* أجايل
* تصميم الغرفة النظيفة
* تطوير متكرر وتصاعدي
* صناعة النماذج الأولية
	+ النموذج اللولبي
	+ نموذج V
	+ نموذج الشلال
 |
| منهجيات التطوير وأُطُره
* تطوير البرمجيات المُتكيِّف  (ASD)
* ديف أوبس (DevOps)
* التوصيل المنضبط وفق أجايل  (DAD)
* طريقة تطوير النظم الديناميكية (DSDM)
* تطوير مقاد
	+ بالميزات  (FDD)
	+ بالنموذج  (MDD)
* التطوير المتكرر والتصاعدي (IID)
* كانبان (Kanban)
* تطوير برمجيات مرن
* إطار عمل حلول مايكروسوفت  (MSF)
* تطوير التطبيقات السريع (RAD)
* إطار عمل أجايل المُتدرِّج  (SAFe)
* سكرم (Scrum)
* سيمات (SEMAT)
* عملية البرمجة
	+ الفردية (PSP)
	+ الجماعية  (TSP)
* عملية التطوير المُوحَّدة (UP)
	+ لراشيونال (RUP)
* المفتوحة  (OpenUP)
* البرمجة القصوى (XP)
 |
| اختصاصات داعمة
* إدارة التهيئة
* التوثيق
* ضمان الجودة
* إدارة المشروع
* تصميم تجربة المستخدم
 |
| تطبيقات بالممارسة
* تطوير مقاد
	+ بالاختبار (TDD)
	+ باختبار القبول  (ATDD)
	+ بالسلوك (BDD)
* الإدماج المُستمِر (CI)
* تسليم مستمر (CD)
* تصميم مقاد بالنطاق (DDD)
* برمجة زوجية (PP)
* بالأمثلة (SBE)
* اجتماع وقوفاً
 |
| أدوات
* المُحوِّل
* المُنقِّح
* مُنمِّط
* باني واجهة المستخدم الرسومية
* أداة نمذجة
* بيئة التطوير المُتكامِلة (IDE)
* أتمتة بناء البرمجيات
* أتمتة إصدارات التطبيق
* البنية التحتية بصيغة نص برمجي
* الاختبار
 |
| منظَّمات ومعايير
* أدلة معرفية
	+ لإدارة المشاريع (BABOK)
	+ تحليل الأعمال (PMBOK)
	+ لهندسة البرمجيات  (SWEBOK)
* تكامل نموذج نضوج المقدرة (CMMI)
* جمعية معايير معهد مهندسي الكهرباء والإلكترونيات
* أيزو 9000 (ISO 9001)
* اللجنة التقنية المشتركة الأولى  (JTC 1)
* مكتبة البنية التحتية لتقانة المعلومات (ITIL)
* المجلس الهندسي للمتطلبات الدولية  (IREB)
 |
| شعار بوابة بوابة برمجيات |
| * ع
* ن
* ت
 |

**نشر** **البرمجيات** (بالإنجليزية: software deployment)‏ هو جميع الأنشطة التي تجعل من نظام البرامج قابلاً للاستخدام.

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

تاريخ
-----

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

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

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

النشاطات المتعلقة بالنشر
------------------------

### الإصدار

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

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

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

أما النشر الأكبر للبرمجيات، والذي يجري على الخوادم، فبالإمكان تنصيب النسخة الرئيسة من البرمجيات -والتي ستُستخدم من طرف المستخدمين- على خادم الإنتاج في محيط إنتاجي. تُنصب النسخ الأخرى من البرمجيات المنشورة في محيط الاختبار ومحيط التطوير ومحيط التعافي من الكوارث.

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

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

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

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

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

### التحديث

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

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

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

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

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

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

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

* في محيط ما قبل الإنتاج:
	+ مطورو التطبيقات
	+ مهندسو البناء والإصدار
	+ مديرو الإصدار
	+ منسقو النشر
* في محيط الإنتاج
	+ مدير النظام
	+ مدير قاعدة البيانات
	+ منسقو الإصدار
	+ مديرو مشروع العمليات

المراجع
-------

1. ↑  *معجم المصطلحات المعلوماتية* (بالعربية والإنجليزية)، دمشق: الجمعية العلمية السورية للمعلوماتية، 2000، ص. 99، OCLC:47938198، QID:Q108408025
2. ↑  Roger S. Pressman Software engineering: a practitioner's approach (eighth edition)
3. ↑  Rees-Carter، Stephen (13 يوليو 2018). "How to Install and Configure Ansible on Ubuntu 18.04". *ديجيتال أوشن*. مؤرشف من الأصل في 9 يونيو 2019. اطلع عليه بتاريخ 8 يونيو 2019. Configuration management systems are designed to make controlling large numbers of servers easy for administrators and operations teams. They allow you to control many different systems in an automated way from one central location.

| * ع
* ن
* ت
هندسة البرمجيات |
| --- |
| مجالات | 
* برمجة
* متطلبات البرمجيات
* نشر البرمجيات
* تصميم البرمجيات
* صيانة البرمجيات
* فحص البرمجيات
* تحليل النظم
* أساليب رسمية

 |
| مفاهيم | 
* نمذجة البيانات
* هيكلية الشركات
* مواصفة وظيفية
* لغة نمذجة
* Orthogonality
* نمط برمجة
* برمجية
* معمارية برمجيات
* منهجية تطوير برمجيات
* عملية تطوير البرمجيات
* جودة البرمجيات
* ضمان الجودة (برمجيات)
* برمجيات علم الآثار
* التحليل الإنشائي
* مهندس برمجيات
* كود قديم

 |
| توجهات | 
* تطوير البرمجيات أجايل
* Aspect-oriented
* برمجة كائنية التوجه
* أنطولوجية (علم المعلومات)
* البنية الخدمية
* دورة حياة تطوير البرمجيات

 |
| النماذج | 

|  |  |
| --- | --- |
| تطوير  | 
* تطوير البرمجيات أجايل
* EUP
* Executable UML
* نموذج بناء تدريجي  ‏
* تطوير متكرر ومتزايد
* العملية الموحدة لراشيونال IBM
* سكرم
* نمذجة البرمجيات
* النموذج اللولبي
* V-Model
* نموذج الشلال
* برمجة قصوى

 |
| أخرى  | 
* أيزو/آي إي سي 15504
* تكامل نموذج نضوج المقدرة
* نماذج بيانات
* طريقة الكيانات والعلاقات
* Function model
* نموذج المعلومات
* Metamodeling
* Object model
* Systems model
* View model

 |
| لغات  | 
* IDEF
* لغة النمذجة الموحدة
* SysML

 |

 |
| مهندسو برمجيات | 
* كينت بيك
* Grady Booch
* فريد بروكس
* باري بوهم
* وورد كانينغهام
* توم ديماركو
* مارتن فاولر
* ماري جان هارولد
* توني هور
* واتس همفري
* مايكل جاكسون (عالم حاسوب)
* إيفار جاكوبسون
* Stephen J. Mellor
* برتراند ماير
* David Parnas
* جورج ونستون رويس
* جيمس رامبوغ
* نيكلاوس ويرث
* إدوارد يوردون
* Victor Basili

 |
| مجالات مشابهة | 
* علم الحاسوب
* هندسة حاسبات
* إدارة المشاريع
* هندسة أنظمة

 |
| 
* تصنيف:هندسة البرمجيات
* كومنز

 |

* أيقونة بوابةبوابة تقانة
* أيقونة بوابةبوابة برمجيات