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

دعم اللغة
---------

تشمل لغات البرمجة الداعمة لمفهوم الوحدات رسميًا لغات أيدا (لغة برمجة)Ada وBlitzMax وكوبولCOBOL وComponent Pascal وD وErlang وF وFortran وHaskell وAssembler IBM/360 وIBM RPG وML وModula-2 و Morpho وOberon وOCaml وPascal وPerl وPL/1 وPython وRuby. ويستخدم نظام IBM System i الوحدات أيضًا في لغات البرمجة CL وCOBOL وRPG عند البرمجة في بيئة اللغة المتكاملة. ويمكن تنفيذ البرمجة التركيبية حتى لو كانت لغة البرمجة تفتقر إلى القواعد النحوية الواضحة لدعم وحدات معينة.
كما يمكن لأدوات البرامج إنشاء وحدات أكواد تركيبية من مجموعات من المكونات. ويمكن لمكتبات المكونات المبنية من وحداتٍ مجمعة بشكل منفصل أن تندمج في مكتبة برمجية مكتبة واحدة عن طريق استخدام الرابط.

الجوانب الرئيسية
----------------

في البرمجة التركيبية، يتم فصل الشواغل بحيث لا تعتمد أية وحدات (أو بعضها) على وحدات أخرى في النظام]محل شك – ناقش[. والهدف من ذلك هو تقليل الاعتماد قدر الإمكان ]محل شك – ناقش[.
وعند إنشاء نظام تركيبي بدلاً من إنشاء تطبيق أحادي (حيث يكون الكل هو أصغر مكون)، يتم بناء عدة وحدات أصغر (يتم تجميعها في العادة) بشكل منفصل بحيث تقوم ببناءترجمة في الوقت المناسب وهو برنامج تطبيق قابل للتنفيذ حينما تُترجم هذه الوحدات معًا. وقد يساهم المُترجم في الوقت المناسب في جانب من هذا البناء «بحركة دؤوبة» في وقت التشغيل.
وهذا من شأنه جعل النظم التركيبية المصممة، إذا تم إنشاؤها بشكل صحيح، قابلة لإعادة الاستخدام أكثر بكثير من التصميم الأحادي التقليدي، نظرًا لأن كل (أو كثير من) هذه الوحدات يمكن إعادة استخدامها حينئذٍ (بدون تغيير) في مشاريع أخرى. كما ييسر ذلك من «تحليل» المشاريع (من خلال مبدأ «فرق تسد») إلى عدة مشاريع أصغر. ونظريًا، سيتم تجميع مشروع برامج تركيبية بشكل أسهل بواسطة فِرق كبيرة، حيث لا يقوم أي أعضاء فريق بإنشاء النظام بالكامل، أو لا يضطرون لمعرفة النظام ككل، وإنما يمكنهم التركيز فحسب على المهمة الأصغر المسندة إليهم (يُقال أن هذا يواجه الافتراض الأساسي لمقالات The Mythical Man Month (أشهر رجل أسطوري) – الذي يجعل من الممكن حقًا إضافة مطورين إلى مشروع برامج أخير – دون تأخيره إلى وقت لاحق).

التطبيق
-------

في الآونة الأخيرة، تفوق تمرير الرسائل على واجهات «الاتصال» السابقة الأكثر تقليدية`Call` ليصبح الرابط الأكثر هيمنة بين الوحدات المنفصلة وذلك في محاولة لحل «مشكلة الإصدارات» (التي تحدث أحيانًا عند استخدام الوجهات للاتصال بين الوحدات).

الخلفية التاريخية
-----------------

تم استخدام لغات البرمجة التقليدية لدعم البرمجة التركيبية - منذ عقد الستينيات على أقل تقدير. ويعتبر مفهوم البرمجة التركيبية مفهومًا فضفاضًا ليس له تعريف رسمي؛ وهو، في جوهره، مجرد تقنية برمجية ]محل شك – ناقش[. وحيثما تنتهي البرمجة التركيبية بالضبط وتبدأمكتبة الربط الديناميكي وبرمجة كائنية التوجه، تكون في هذا السياق ذاتية. كما يمكن تعريفها بأنه السلف الطبيعي للبرمجة كائنيه التوجه، أو أنها، وفقًا لوجهة نظر، خطوة تطورية متقدمة عنها.

انظر أيضًا
----------

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

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

1. ↑  Jürgen Haas. "Modular programming". : About.com. Modular programming is a programming style that breaks down program functions into modules, each of which accomplishes one function and contains all the source code and variables needed to accomplish that function.
 ونظريًا، تتيح الوحدات فصل الشواغل وتحسين القابلية للصيانة عن طريق فرض حدود منطقية بين المكونات. وعادة ما تكون الوحدات مضمنة في البرامج من خلال الواجهات. `{{استشهاد ويب}}`: line feed character في `|اقتباس=` في مكان 215 (مساعدة)، الوسيط `|تاريخ الوصول` بحاجة لـ `|مسار=` (مساعدة)، الوسيط `|مسار=` غير موجود أو فارع (مساعدة)، وروابط خارجية في ``|مكان=`` (مساعدة)

* O2 Software Process

  

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

|  |  |
| --- | --- |
| ضبط استنادي: وطنية عدلها في ويكي بيانات | 
* المكتبة الوطنية الفرنسية (BnF)
* المكتبة القومية الإسرائيلية (J9U)
* مكتبة الكونغرس (LCNAF)
* المعرف NDL لـ 00567885 غير صحيح.

 |