بناء البرمجيات  بناء البرمجيات هو أحد تخصصات هندسة البرمجيات. وهو الإنشاء التفصيلي لبرمجية عاملة مفيدة من خلال الجمع بين عمليات الترميز، والتحقق، واختبار الوحدة، واختبار التكامل، وتصحيح الأخطاء. وهو مرتبط بجميع تخصصات هندسة البرمجيات الأخرى، وخاصة بتصميم البرمجيات واختبار البرمجيات.  تدفع الحاجة إلى تقليل التعقيد بشكل أساسي بالقدرة المحدودة لمعظم الأشخاص على الاحتفاظ ببنى ومعلومات معقدة في ذاكرتهم العاملة. يقلل التعقيد من خلال التأكيد على إنشاء كود بسيط ومقروء بدلًا من كود ذكي. ويحقق بالاستفادة من المعايير والعديد من التقنيات المحددة في كتابة التعليمات البرمجية، ويدعم بتقنيات الجودة التي تركز على البناء.  يساعد توقع التغيير مهندسي البرمجيات على بناء برمجيات قابلة للتوسيع، ما يعني أنهم يستطيعون تحسين المنتج البرمجي دون تعطيل البنية الأساسية. أظهرت الأبحاث على مدى 25 عامًا أن تكلفة إعادة العمل قد تزيد بمقدار 10 أضعاف إلى 100 ضعف (من 5 إلى 10 أضعاف للمشاريع الأصغر) عن تكلفة الحصول على المتطلبات الصحيحة في المرة الأولى. ولأن 25% من المتطلبات تتغير أثناء عملية تطوير مشروع متوسط، فإن الحاجة إلى تقليل تكاليف إعادة العمل توضح الحاجة إلى توقع التغيير.  بناء البرمجيات بغرض التحقق يعني بناء البرمجيات بطريقة تسمح لمهندسي البرمجيات بكشف الأخطاء بسهولة أثناء كتابة البرمجيات، وكذلك أثناء الاختبارات المستقلة والأنشطة التنفيذية. تشمل التقنيات المحددة التي تدعم البناء للتحقق اتباع معايير الترميز لدعم مراجعات الكود، واختبار الوحدات، وتنظيم الكود لدعم الاختبار الآلي، وتقييد استخدام بنى لغات برمجية معقدة أو يصعب فهمها أكثر من غيرها.  يمكن أن تتيح إعادة الاستخدام المنتظمة تحسينات كبيرة في إنتاجية البرمجيات وجودتها وتكلفتها. لإعادة الاستخدام جانبين مترابطين بشكل وثيق:   تشمل المعايير، سواء كانت خارجية (أنشأتها المنظمات الدولية)، أو داخلية (أنشئت على مستوى الشركة)، والتي تؤثر مباشرة على مسائل البناء، ما يلي:   أنشئت نماذج عديدة لتطوير البرمجيات، بعضها يركز على البناء أكثر من غيره. تكون بعض النماذج أكثر خطية من وجهة نظر البناء، مثل نموذجي الشلال والتسليم المرحلي لدورة حياة تطوير البرمجيات. تعامل هذه النماذج البناء على أنه نشاط يحدث فقط بعد إكمال المتطلبات الأساسية الهامة، بما في ذلك العمل ذو المتطلبات المفصلة، وأعمال التصميم الشاملة والتخطيط التفصيلي. أما النماذج الأخرى فهي أكثر تكرارية، مثل النمذجة التطورية، والبرمجة القصوى، والسكروم. تميل هذه النهج إلى معاملة البناء كنشاط يحدث بالتزامن مع أنشطة تطوير البرمجيات الأخرى، مثل تحديد المتطلبات والتصميم والتخطيط، أو يتداخل معها.  يعد اختيار طريقة البناء جانبًا رئيسيًا من عملية تخطيط البناء. يؤثر اختيار طريقة البناء على مدى تنفيذ متطلبات البناء (مثل تحليل المتطلبات، وتصميم البرمجيات، إلخ)، وترتيب تنفيذها، والدرجة التي يتوقع أن تكملها قبل بدء أعمال البناء. يحدد تخطيط البناء أيضًا ترتيب إنشاء وتكامل المكونات، وعمليات إدارة جودة البرمجيات، وتخصيص المهام المكلفة لمهندسي برمجيات محددين، والمهام الأخرى، وفقًا للطريقة المختارة.  يمكن قياس العديد من أنشطة أو أدوات البناء، بما في ذلك تطوير الكود، وتعديله، وإعادة استخدامه، وتدميره، وتعقيده، وإحصائيات فحص الكود، ومعدلات إصلاح وإيجاد الأخطاء، والمحاولات والجدولة. يمكن أن تكون هذه القياسات مفيدة لأغراض إدارة البناء، وضمان الجودة أثناء البناء، وتحسين عملية البناء، وأسباب أخرى.  يعتمد بناء البرمجيات على العديد من الاعتبارات العملية:  يجب إجراء بعض تعديلات التصميم أثناء بناء البرنامج على نطاق صغير أو كبير لتوضيح تفاصيل تصميم البرمجيات، لحصر الثغرات غير المتوقعة في تصميم البرمجيات.  وجد الباحثون أن تقليل عدد المخارج هو أحد خصائص التصميم المفيدة. وأثبت أن إخفاء المعلومات هو أسلوب تصميم مفيد في البرامج الكبيرة لأن من السهل تعديلها بمعدل 4 أضعاف.  تتضمن لغات البناء جميع أشكال الاتصال التي يمكن أن يستخدمها الإنسان لتحديد حل لمشكلة قابلة للتنفيذ للكمبيوتر. تشمل لغات التكوين ولغات مجموعة الأدوات ولغات البرمجة:   وجد أن المبرمجون العاملون بلغة استخدموها لمدة ثلاث سنوات أو أكثر هم أكثر إنتاجية بنحو 30% من المبرمجين الذين لديهم نفس الخبرة ولكنهم جدد في استخدام لغة برمجة ما. تحقق لغات البرمجة عالية المستوى مثل سي++، وجافا، وسمول توك، وفيجوال بيزك، إنتاجية وموثوقية وبساطة وشمولية أفضل بـ5 إلى 15 مرة من اللغات منخفضة المستوى مثل لغة أسيمبلي ولغة سي. ثبت أن التعليمات البرمجية تنفذ بسطور أقل في اللغات عالية المستوى مقارنة باللغات ذات المستوى الأدنى.  تطبق الاعتبارات التالية على عملية ترميز بناء البرمجيات: