| أنماط البرمجة |
| --- |
| * فعلية
* مصفوفية
* ذاتية
* متزامنة
	+ فاعلة
	+ كوريغرافية
	+ متعددة المستويات
	+ نسبية
	+ التزامن المنظم
* توجهية البيانات
* تعريفية (عَكسها: أمرية)
	+ وظيفية
		- وظيفية منطقية
		- وظيفية بحتة
	+ منطقية
		- منطقية تبادلية
		- مجموعة الإجابة
		- منطقية متزامنة
		- وظيفية منطقية
		- منطقية استقرائية
	+ قيدية 
		- منطقية تقييدية 
			* منطقية قيدية متزامنة
	+ نقل المُعطيات
		- تدفقية
		- تفاعلية 
			* تفاعلية وظيفية
	+ أنطولوجية  (أنظر: نطولوجية)
	+ إستعلامية
* تفاضلية
* ديناميكية/نصية
* مدفوعة بالحدث
* المستوى الوظيفي  (عَكسها: مستوى القيمة )
	+ ضمنية 
		- تسلسلية
* عامة
* أمرية (عَكسها: تعريفية)
	+ إجرائية
	+ كائنية التوجه
* مُتعمدة
* لغوية 
	+ مخصصة النطاق
* مُتعلمة
* اللغة الطبيعية
* وصفية
	+ تلقائية 
		- استقرائية
	+ إنعكاسية
		- وسمية
	+ ماكرو
	+ وصفية قالبية
* غير مُهيكلة  (عَكسها: مُهيكلة)
	+ مصفوفية
* غير حتمية
* متوازية  
	+ عملية
* احتمالية
* كمومية
* نظرية المجموعات
* مُكدسة 
	+ كُتلة مُهيكلة
	+ كائنية التوجه
		- موجهة للعميل
		- فصيلية
		- كائنية متزامنة
		- نموذجية
		- من خلال فصل الاهتمامات:
			* جانبية المنحى
			* دُورية
			* موضوعية
	+ تكرارية
* رمزية
* قيمية  (عَكسها: وظيفى )
 |
| * ع
* ن
* ت
 |

**نمط البرمجة**، (بالإنجليزية:  Programming paradigm)‏، هو أسلوب في برمجة الحاسوب (وثمة فرق بينه وبين المنهجية Methodology، والتي هي أسلوب حل مشاكل محددة تتبع لهندسة البرمجيات). تختلف أنماط البرمجة في المفاهيم والتجريدات التي تستخدمها لتمثيل عناصر برنامج (كالكائنات والتوابع والمتحولات والقيود وغيرها) وخطوات العمل والحساب (كالتعيين وبنى التحكم والإيجاد).

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

نظرة إجمالية
------------

ان لغات البرمجة يمكنها أن تدعم العديد من الأنماط. على سبيل المثال لا الحصر في لغة C++ أو في أوبجيكت باسكال Object Pascal أو في لغة Ring يمكن ان يكون البرنامج مكتوب بشكل إجرائي procedural أو كائني object-oriented كاملا. أو يمكن أن يحوي عناصر من كلا النمطين السابقين.

إن متطلبات تصميم البرمجيات والمبرمجين يقررون كيف يتم استعمال عناصر الأنماط.

في البرمجة غرضية التوجه، المبرمج يمكن ان يفكر بالبرنامج من منظور انه يتألف من مجموعة من الكائنات المتفاعلة فيما بينها، بينما في البرمجة الوظيفية functional programming البرنامج يمكن أن ينظر له على أنه سلسلة من تقييمات التوابع المتتالية. عند البرمجة بالحاسب أو أنظمة تملك عدة معالجات فإن نمط process-oriented يسمح للمبرمجين لينظروا للتطبيقات كأنها مجموعة من العمليات المتزامنة تتصرف وفقاً لبنية المعطيات المشتركة.

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

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

في البرمجة الكائنية، ينظر المبرمج إلى البرنامج على أنه مجموعة من الكائنات التي تتفاعل مع بعضها، بينما في البرمجة الوظيفية يمكن اعتبار البرنامج على أنه سلسلة من عمليات إيجاد للتوابع. وعندما تبرمج نظم حاسوبية بمعالجات عديدة، تسمح البرمجة العملياتية (process-oriented programming) للمبرمجين بالنظر إلى البرنامج على أنه مجموعة من العمليات المتزامنة التي تنفذ على مجموعة من بنى المعطيات التي يتم تشاركها بشكل منطقي.

وكما توجد مجموعات مختلفة من المنهجيات في هندسة البرمجيات، توجد مجموعات مختلفة من أنماط البرمجة. حيث صممت بعض اللغات لدعم نمط واحد (مثل Smalltalk التي تدعم البرمجة الكائنية التوجه فقط، وهاسكل التي تدعم البرمجة الوظيفية فقط)، بينما صمم بعضها الآخر لدعم عدة أنماط (مثل أوبجيكت باسكال، سي++، سي شارب، فيجوال بيسك، بايثون، پيرل وغيرها).

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

أنماط البرمجة
-------------

### لغة الآلة Machine Code

المقالة الرئيسة: لغة الآلة
**لغة الآلة** Machine Language هي اللغة البرمجية الوحيدة التي تفهمها وحدة المعالجة المركزية CPU مباشرة بدون وسائط.وهي من لغاة البرمجة المتدنية المستوى low level programming language.تعتبر لغة الآلة من لغات البرمجة الأولية primitive فهي تمثل اخفض مستوى (من ناحية قربه من العتاديات hardware) برمجي يمكن للمبرمج التعامل معه.

إن البرامج المبرمجة وفق لغات البرمجة المترجمة compiled يتم نقل الرماز المصدري الخاص بها إلى لغة الآلة بينما البرامج المبرمجة بلغات مفسرة interpreted لا تمثل بلغة الآلة.

يجب عدم الخلط بين لغة الآلة وبين bytecode التي تنفذ من قبل مفسر interpreter.

لقد تم اعتماد نظام الاعداد الثنائي عن غيرها من أنظمة الاعداد لترميز لغة الآلة نظراً لسهولة تمثيل حالتين في الدارات الإلكترونية on,off التي تقابل 1 و 0

مثال على لغة الترميز الثنائي
000000 00001 00010 00110 00000 000000

### لغة التجميع Assembly languages

المقالة الرئيسة: لغة تجميع
لجعل البرمجة أسهل تم تطوير لغة التجميع assembly languages.
ان لغة التجميع هي لغة برمجة من المستوى المنخفض مخصصة لبرمجة أجهزة الحاسب، المعالجات الصغرية، المايكروكونترولر microcontrollers والدارات المتكاملة.IC integrated circuits.

تعتمد هذه اللغة مبدأ استبدال العديد من تعليمات المعالج الثنائية بتعليمة معينة حرفياً symbolic وذلك بهدف أساسي جعل البرنامج قابل للقراءة من قبل المبرمجين على الرغم من ذلك لم تلغ لغة التجميع عمل لغة الآلة وانما هي تطوير لمقروئية لغة الآلة.

تتميز لغة التجميع بانها تختلف وفقاً للمعالج المبرمج وفقه ففي حين نجد تعليمات لمعالج انتل 86x نجد تعليمات لمعالجات مثل Mips «لالمنشأ لأهداف تعليمية», كما نجد ان البرامج المكتوبة بلغة تدعم معالج 32 بت تختلف عن معالج 64 بت بشكل عام.

تعتبر لغة التجميع ذات مستوى منخفض، أيضاً على الرغم من ذلك إلا انه تعتبر الجيل الثاني لانماط البرمجة.

**=مثال على كود يعتمد لغة تجميع**
مثال على كود يعتمد لغة تجميع (من معالج Mips 3000)

```
MOV AL, 61h
Add $s1,$t2,$s2
```

### اللغات الإجرائية Procedural Languages

المقالة الرئيسة: برمجة إجرائية
الخطوة التالية كانت بتطوير اللغات الإجرائية procedural languages.
في الحقيقة هذا النمط يملك عدة أسماء فالتسمية الرئيسية لهذا النمط من انماط لغات البرمجة يدعى Procedural programming أي لغة اجرائية كونها تعتمد الاجرائيات ويمكن ان تدعى ب imperative programming أي لغة امرية وذلك من كونها لغة امرية بحيث تعتمد على تلقين الحاسب الحل خطوة بخطوة كما قد نجد تسمية structured programming أي برمجة هيكلية بحيث تعتمد على مفهوم استدعاء الاجرائيات أو كما هي معروفة بالروتين.

تعتمد هذه اللغة عدة مبادئ:

* تقسيم البرنامج إلى عدة اقسام جزئية لتسهيل القراءة واعادة الاستخدام تسمى هذه الاجزاء بعدة أسماء:
	+ Procedures اجراءات
	+ functions توابع
	+ methods منهجيات
	+ routines روتين
	+ subroutines روتين فرعي
* توصيف حل المشكلة خطوة بخطوة والتي تعد من مساوئ هذا النمط حيث يجب على المبرمج ان يقوم بحل المشكلة المتناولة بنفسه وليس الحاسب.

هذا النمط كان يعتبر الجيل الثالث من انماط البرمجة.

### اللغات غرضية التوجه object-oriented languages

المقالة الرئيسة: برمجة غرضية التوجه
ظهر فيما بعد **مفهوم** اللغات غرضية التوجه object-oriented languages في هذا المفهوم يفرض ان المعطيات والتوابع يجب أن تكون مغلفة وعندما نريد استعمالها يجب أن يكون لدينا غرض من هذا العنصر كي نستعمل التوابع والمعطيات

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

لقد كانت لغات البرمجة غرضية التوجه هي تطوير للغات الإجرائية ولا تختلف اختلافاً جذرياً إلا ببعض المفاهيم كالتغليف والوراثة.... الخ

### اللغات الأمرية Imperative Languages

المقالة الرئيسة: برمجة أمرية
ظهر فيما بعد اللغات الامرية imperative
نمط اللغات الامرية هي نمط من انماط لغات البرمجة التي تصف الحوسبة وفق تعليمات تغير حالة البرنامج. تعبر اللغات الامرية عن الاوامر لفعل عمل محدد. كما انها تصف سلسلة من التعليمات كي يؤديها الحاسب.

يستخدم مصطلح البرمجة الامرية لوصف مصطلح مضاد للبرمجة التصريحية declarative programming الني نعبر عن ما يراد الوصول إليه من دون شرح كيفية الوصول إليه.

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

### اللغات المنطقية Logic Languages

المقالة الرئيسة: برمجة منطقية
ظهر نمط برمجة هو نمط البرمجة المنطقية الذي يصف الحوسبة كآلة اتومات للاستنتاج وذلك وفقاً لمعطيات ومعارف متوافرة تدعى بالحقائق.

تستخدم هذه اللغات قواعد الاستلال inference لإيجاد الجواب المراد الحصول عليه.

اللغات متعددة أنماط البرمجة
===========================

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

على سبيل المثال توفر لغة #C نمطاً برمجياً أمرياً وآخراً غرضي التوجه بالإضافة إلى دعمها البرمجة الوظيفية إلى حد ما عبر التوابع غير المسماة واستنباط الأنماط والاستعلامات المدمجة باللغة (بالإنجليزية: Language Integrated Query)‏. توفر لغات أخرى مثل لغة #F وScala وظيفية شبيهة لتلك الموجودة في #C إضافة إلى دعم كامل للبرمجة الوظيفية (بما فيها ميزة الكاريينغ (بالإنجليزية: Currying)‏ ومطابقة النماذج وأنماط البيانات الجبرية والتقييم الكسول والعودية الذيلية والثبوتية (بالإنجليزية: immutability)‏ وغيرها). إن لغة البرمجة Oz هي مثال صارخ عن تعددية أنماط البرمجة إذ أنها تشتمل على أنماط برمجة منطقية ووظيفية وغرضية التوجه وتدفق معطيات متوازي بالإضافة إلى أنماط أخرى. استغرق تصميم لغة البرمجة Oz عشر سنوات تم خلالها التوفيق بين أنماط برمجة مختلفة في لغة واحدة.

تاريخ أنماط البرمجة
===================

في بداية ظهور الحاسوب كانت البرامج مرتبطة جدا بالعتاد ولذلك استخدمت الكود الثنائي (بالإنجليزية: Binary code)‏، وقد كان هذا نمط برمجة منخفض المستوى لشدة ارتباطه بالعتاد.

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

التطور التالي كان بظهور لغات البرمجة التي تستخدم البرمجة الوظيفية، والتي سميت **لغات برمجة عالية المستوى**. مثل: فورتران.

ظهرت بعد ذلك لغات البرمجة التي تدعم البرمجة كائنية التوجه. مثل: سي++.

انظر أيضا
=========

* برمجة وظيفية
* سلسلة عملية يحركها الحدث
* دراكون
* برمجة كائنية التوجه
* برمجة جانبية المنحى
* بنية خدمية التوجه
* لغة نمذجة
* بارادايم
* رينج (لغة برمجة)

 مراجع
------

1. ↑  Overview of the four main programming paradigms*. Aalborg University, 9 May 2011. Retrieved 22 September 2012. نسخة محفوظة 24 يناير 2018 على موقع واي باك مشين.*
2. ↑  Frank Rubin (مارس 1987). "'GOTO Considered Harmful' Considered Harmful" (PDF). *Communications of the ACM*. ج. 30 ع. 3: 195–196. DOI:10.1145/214748.315722. مؤرشف من الأصل (PDF) في 2009-03-20.
3. ↑  "Richard+Stallman"+oop&rnum=5&hl=en "Mode inheritance, cloning, hooks & OOP (Google Groups Discussion)". مؤرشف من الأصل في 2013-05-28.
4. ↑  "What exactly is a programming paradigm?". *freeCodeCamp.org*. 12 نوفمبر 2019. مؤرشف من الأصل في 2022-04-19. اطلع عليه بتاريخ 2022-05-13.
5. ↑  *Programming Languages: Principles and Paradigms* (بالإنجليزية). DOI:10.1007/978-1-84882-914-5. Archived from the original on 2022-05-13.
6. ↑  "Introduction of Programming Paradigms - GeeksforGeeks". *www.geeksforgeeks.org*. مؤرشف من الأصل في 2021-07-16. اطلع عليه بتاريخ 2022-05-13.
7. ↑  "What Is A Programming Paradigm? Data Defined". *Indicative* (بالإنجليزية الأمريكية). Archived from the original on 2022-04-19. Retrieved 2022-05-13.

وصلات خارجية
------------

* أنماط البرمجة
* تصنيف لغات البرمجة الأساسية

|  |  |
| --- | --- |
| مشاريع شقيقة | في كومنز صور وملفات عن: نمط برمجة |



| * ع
* ن
* ت
لغات برمجة |
| --- |
| 
* إي شارب (.نت)
* أيدا
* أكشن سكربت
* إرلانج
* باسكال
* بايثون
* بلو
* برولوغ
* بوو
* بي إتش بي
* بيرل
* بيسيك
* بيتا
* تايب سكريبت
* جافا
* جافا سكريبت
* ديبول
* رياكت
* جايثون
* دلفي
* دي
* هاسكل
* روبي
* سكالا
* سي
* سي#
* سويفت
* سي++/سي إل آي
* سي++
* غراف كيو إل
* فورتران
* فيجوال بيسك
* كوبول
* كريستال
* كومال
* كريبتون
* كوتلن
* كوبرا
* لغة تجميع
* ليسب
* لنكس
* مودولا
* نيم

* ***القائمة***

 |

| * ع
* ن
* ت
علم الحاسوب |
| --- |
| يعتمد هذا القالب على تصنيف أنظمة الحوسبة  الذي أنجزته جمعية آلات الحوسبة في عام 2012 |
| العتاد | 
* اللوحات المطبوعة
* المُلحقات
* الدارات المُتكاملة
* التكامل بالغ مقاس الاتساع
* نظام على رقاقة
* الحوسبة الخضراء
* أتمتة التصميم الإلكتروني
* تسريع العتاد

 |
| بنية الأنظمة | 
* المعماريَّة
* الأنظمة المُضمَّنة
* الحوسبة في الزمن الحقيقي
* الاعتمادية

 |
| الشبكات | 
* المعماريَّة
* البروتوكولات
* العتاد
* الجدولة
* الأداء
* الخدمات

 |
| بنية البرمجيات | 
* المُفسِّرات
* برمجيات وسيطة
* آلة افتراضية
* أنظمة التشغيل
* جودة البرمجيات

 |
| نظرية لغات البرمجة وأدواتها | 
* الأنماط
* اللغات
	+ البرمجة
	+ النمذجة
	+ مخصصة النطاق
* المُحوِّلات
* أُطُر العمل
	+ بيئة التطوير المتكاملة
* المكتبات
* المُستودعات

 |
| تطوير البرمجيات | 
* المتغيرات
* عملية التطوير
* تحليل المتطلبات
* التصميم
* البناء
* النشر
* الصيانة
* فريق البرمجة
* البرمجيات حُرَّة المصدر

 |
| نظرية الحوسبة | 
* نموذج حوسبة
* لغة شكلية
* نظريات
	+ التشغيل الذاتي
	+ الحاسوبيَّة
	+ التعقيد الحسابي
* المنطق
* علم الدلالة الشكلي

 |
| الخوارزميات | 
* التحليل
* الكفاءة
* خوارزمية عشوائية
* هندسة مُحوسبة

 |
| رياضيات الحوسبة | 
* رياضيات مُتقطِّعة
* الاحتمالات
* الإحصاء
* برمجية رياضية
* نظرية المعلومات
* التحليل
	+ الرياضي
	+ العددي
* علم الحاسوب النظري

 |
| نظم المعلومات | 
* أنواع
	+ التخزين
		- قواعد البيانات
		- الوسائط المتعددة
	+ اقتصادية
	+ اجتماعية
	+ جغرافية
	+ دعم القرارات
	+ التحكُّم في العمليات
* تنقيب في البيانات
* مكتبة رقمية
* منصة حوسبة
* التسويق الرقمي
* شبكة عالمية المجال
* استرجاع المعلومات

 |
| الأمن | 
* أنواع
	+ العتاد
	+ الشبكات
	+ المعلومات
	+ التطبيقات
	+ الخدمات
* علم التعمية
* طريقة شكلية
* أنظمة كشف التسلسل

 |
| التفاعل الإنساني الحاسويبي | 
* حوسبة
	+ اجتماعية
	+ سائدة
* تصميم التفاعل
* تمثيل مرئي
* إمكانية الوصول

 |
| تزامن | 
* أنواع
	+ مُتزامِنة
	+ مُتوازيَّة
	+ مُوزَّعة
* تشعب مُتعدِّد
* مُعالَجة مُتعدِّدة

 |
| الذكاء الاصطناعي | 
* معالجة اللغة الطبيعية
* تمثيل المعرفة
* رؤية حاسوبية
* التخطيط الآلي والجدولة
* الاستمثال
* نظرية التَّحكُّم
* الفلسفة
* ذكاء اصطناعي مُوزَّع

 |
| تعلم الآلة | 
* أنواع التَّعلُّم
	+ مُراقَب
	+ غير مُراقَب
	+ مَدعُوم
	+ مُتعدِّد المهام
* التصديق المُتقاطِع

 |
| رسوميَّات | 
* التحريك
* الاستخلاص
* صور
	+ التَّلاعُب
	+ الضَّغط
* وحدة معالجة الرسوميَّات
* وُقُع
	+ افتراضي
	+ مُعزَّز
	+ مُختلَط
* نمذجة المُجسَّمات

 |
| الحوسبة التطبيقيَّة | 
* اختصاصات محوسبة
	+ رياضيات
	+ كيمياء
	+ فيزياء
	+ علم الأحياء
	+ هندسة
	+ العلوم الاجتماعية
* معلوماتية صحية
* التجارة الرقميَّة
* الفن الرقمي
* النشر الرقمي
* حرب رقمية عبر الشبكة
* التصويت الإلكتروني
* ألعاب الفيديو
* مُعالِجات النصوص
* بحوث العمليات
* تقنيات التعليم

 |
| 
* **تصنيف**
* **مُختصَر موجز**
* **مشروع**
* **كُومُنز**

 |

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

 |
| المُستوي | 
* التجميع
* مُجمعة
* مُفسرة
* الآلة

* منخفضة المستوى
* عالية المستوى
* فائقة المستوى

 |
| الجيل | 
* الأول
* الثاني
* الثالث
* الرابع
* الخامس

 |
| ذا صلة | 
* غير إنجليزية
* مرئية

 |

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

 |
| مفاهيم | 
* نمذجة البيانات
* هيكلية الشركات
* مواصفة وظيفية
* لغة نمذجة
* 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

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

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

 |

|  |  |
| --- | --- |
| ضبط استنادي: وطنية عدلها في ويكي بيانات | 
* الملف الاستنادي المتكامِل (GND)

 |

* أيقونة بوابةبوابة برمجة الحاسوب
* أيقونة بوابةبوابة تقانة المعلومات
* أيقونة بوابةبوابة علم الحاسوب