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