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