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