طراحی نرم‌افزار
طراحی نرم‌افزار فرایند حل مسئله و برنامه‌ریزی در راستای ساختن یک نرم‌افزار است. طراحی نرم‌افزار فرایندی است که توسط آن یک عامل، مشخصه ای از نرم‌افزار را طراحی می‌کند که هدف آن، به انجام رساندن اهداف از پیش تعیین شده با استفاده از مجموعه ای از اجزای اولیه و با توجه به محدودیت‌ها است. طراحی نرم‌افزار می‌تواند به عنوان "تمام فعالیت‌های مربوط به مفهوم سازی، طراحی، اجرا، راه اندازی و در نهایت اصلاح سیستم‌های پیچیده" یا "فعالیت‌های مشخص مورد نیاز و قبل از برنامه‌نویسی و … [در] یک پروسه مهندسی نرم‌افزار. طراحی نرم‌افزار معمولاً شامل حل مسئله و برنامه‌ریزی یک راه حل نرم‌افزاری است که شامل طراحی جزئی اجزا و طراحی الگوریتم و طراحی معماری سطح بالا می‌باشد."
چارچوب نرم‌افزاری
طراح‌های چهارچوب‌های نرم‌افزاری با هدف آسان کردن توسعه نرم‌افزاری به برنامه نویسان و طراحان نرم‌افزاری اجازه می‌دهند تا وقت خود را برای تأمین نیازهای نرم‌افزاری خود اختصاص داده و به جزئیات استاندارد سطح پایین‌تر ارائه سیستم کاری نپردازند، که نتیجه آن کاهش زمان کلی توسعه و برنامه سازی است. به عنوان مثال، تیمی که از یک چهارچوب وب برای ساخت یک وبسایت بانکی استفاده می‌کند می‌تواند تمرکز بیشتری بر روی نوشتن کدهای مخصوص بانکی داشته باشد تا مکانیک‌های درخواست پاسخ وبسایت یا state management.