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