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