طراحی نرم‌افزار
طراحی نرم‌افزار فرایند پیش‌بینی و تعریف راه حل‌های نرم‌افزاری به یک یا تعدادی از مشکلات است. یکی از اجزای اصلی طراحی نرم‌افزار، نرم‌افزار مورد نیاز تجزیه و تحلیل software requirements analysis]]SRA]] است. SRA بخشی از فرایند توسعه نرم‌افزار است که مشخصات مورد استفاده در مهندسی نرم‌افزار را فهرست می‌کند. اگر نرم‌افزار به‌طور «کامل اتوماتیک» (به معنی بدون کاربر یا رابط کاربری) باشد، طراحی نرم‌افزاری ممکن است به اندازه یک فلوچارت یا متن توصیفی دنباله ای از رویدادهای برنامه‌ریزی شده ساده باشد. همچنین روش‌های نیمه استاندارد مانند زبان مدل‌سازی یکسان و مفاهیم مدل‌سازی اساسی وجود دارد. در هر صورت، بعضی مستندات این طرح معمولاً محصول طراحی است. علاوه بر این، طراحی نرم‌افزار ممکن است یک پلت فرم_مستقل(platform-independent)یا پلت فرم_مشخص(platform-specific) باشد که بسته به دسترسی به تکنولوژی مورد استفاده برای طراحی دارد. تفاوت اصلی بین تجزیه و تحلیل نرم‌افزار و طراحی نرم‌افزار این است که خروجی یک تجزیه و تحلیل نرم‌افزاری از مشکلات کوچکتر برای حل مسئله تشکیل شده‌است. علاوه بر این، تجزیه و تحلیل نباید با تفوت زیادی در میان اعضای تیم یا گروه‌های مختلف، طراحی شود. در مقابل، طراحی بر قابلیت‌ها متمرکز است و بنابراین طرح‌های متعددی برای یک مشکل مشابه می‌تواند وجود داشته باشد. بسته به محیط، طراحی اغلب متفاوت است، چه از طریق چارچوب (frameworks)های قابل اعتماد چه با الگوهای طراحی(design patterns) مناسب پیاده‌سازی شده باشد. نمونه‌های طراحی شامل سیستم‌های عملیاتی، صفحات وب، دستگاه‌های تلفن همراه یا حتی پارادایم ابری جدید است.
تخمین هزینه پروژه‌های نرم‌افزاری
منظور ازSCE ، برآورد هزینه و زمان موردنیاز برای توسعه نرم‌افزار پیش از شروع پروژه می‌باشد که تا پایان تولید و توسعه سیستم ادامه دارد. SCE برای تولید سیستم اطلاعاتی، یکی از دغدغه‌های مهم مدیریت پروژه، تلقی می‌شود. الگوهای SCE که در مراحل اولیه ساخت پروژه، با حداقل اطلاعات موجود از پروژه، هزینه ساخت سیستم را تخمین می‌زنند، سودمند و موردنیاز هستند. روش تخمین هزینه مناسب، امکان کنترل مؤثر زمان و هزینه ساخت سیستم را فراهم می‌نماید. یک پروژه نرم‌افزاری به تدریج تکامل می یابد و به این تر تیب نمی توان یک برآورد قطعی و روشن برای نرم‌افزارها داشت. در حال حاضر نرم‌افزارها و مدل‌های برآوردی وجود دارند که به جای یک برآورد نقطه‌ای برآورد حدودی انجام می دهند و به این ترتیب با متدهای جدید تولید نرم‌افزار هم‌سو می‌شود. ولی برآورد پروژه نرم‌افزاری را می‌توان به یک سری مراحل سیستماتیک تبدیل کرد که برآوردهایی با ریسک قابل قبول فراهم کند . روش‌های الگوریتمی مطرح شده برای SCE از مدل‌های ریاضی برای تخمین هزینه پروژه استفاده می‌کنند. هر مدل الگوریتمی به صورت تابعی از فاکتورهای هزینه تعریف می‌شود. روش‌های الگوریتمی موجود در دو جنبه با یکدیگر متفاوت هستند: مشهورترین و مستندترین مدل الگوریتمی مدل کوکومو می‌باشد که توسط آقای بوهم در سال 1981 مطرح شد. مدل کوکومو برای SCE و زمان مورد نیاز برای توسعه سیستم‌ها استفاده می‌شود.