مهندسی نرمافزار را میتوان به ۱۵ زیر رشته تقسیم کرد:
شناخت:
بررسی و استخراج نیازمندیهای نرمافزار که شامل استخراج، تحلیل و اعتبارسنجی خواسته ها و تهیه مستندات مربوطه جهت طراحی نرمافزار می باشد.
طراحی نرمافزار:
فرایند تعریف معماری، اجزا، واسط و دیگر مشخصههای سیستم یا اجزا را گویند. همچنین این زیر بخش بعنوان خروجی فرایند نیز تعریف میشود.
طراحی نرمافزار # توجهات طراحی:سازگاری، توسعه پذیری، تحمل خطا، قابلیت نگهداری، ماژولمند بودن، قابلیت اطمینان، قابلیت استفاده مجدد، استحکام ، امنیت، قابلیت استفاده، کارایی، قابلیت حمل، مقیاس پذیری.
ساخت نرمافزار:
جزئیات مربوط به ایجاد کار با معنی برای نرمافزار از طریق برنامهنویسی، بازنویسی و تأیید، تست واحدها و اجزا، تست یکپارچگی، و اشکالیابی.
تست نرمافزار:
بررسی فنی -تجربی، برای ارائه به سهامداران و ذی نفعان که اطلاعاتی در مورد کیفیت محصول و یا خدمات تحت تست بیا ن میکند.
تعمیر و نگهداری نرمافزار:
کلیه فعالیتهای مورد نیاز برای ارائه پشتیبانی مقرون به صرفه در نرمافزار است.
مدیریت پیکربندی نرمافزار:
شناسایی پیکربندی یک سیستم در نقاط مشخصی از زمان به منظور کنترل سیستماتیک تغییرات پیکربندی و حفظ و نگهداری یکپارچگی برنامه و ردیابی پیکربندی در طول چرخه عمر سیستم را گویند.
مدیریت نرمافزارهای مهندسی:
نرمافزار مدیریت فعالیتها و برنامهریزی، هماهنگی، اندازهگیری، نظارت، کنترل و گزارش گیری به منظور حصول اطمینان از توسعه و نگهداری سیستماتیک، منضبط و اندازهگیری شونده نرمافزار است.
فرایند نرمافزار:
تعریف، اجرا و پیادهسازی، ارزیابی، اندازهگیری، مدیریت، ایجاد تغییر و بهبود فرایند چرخه حیات خود نرمافزار را گویند.
روشهای مهندسی نرمافزار و مدلهای تحمیل ساختار در مهندسی نرمافزار با هدف سیستماتیک و منظم کردن فعالیت، قابل تکرار بودن و در نهایت افزایش کیفیت نرمافزار و موفقیت امیزتر بودن ان ایجاد میشود.
تمرین مهندسی نرمافزار حرفهای دربارهٔ دانش، مهارت و نگرشهای مهندسی نرمافزار است که مهندسان نرمافزار باید تمرین مهندسی نرمافزار را بصورت حرفهای، مسئولانه و اخلاقی بکنند.
اقتصاد مهندسی نرمافزار در مورد تصمیمگیری در زمینه کسب و کار تجاری مهندسی نرمافزار است.
مبانی ریاضی و محاسباتی
مبانی مهندسی
ابزار مهندسی نرمافزار و روشها:
ابزارهایی مبتنی بر کامپیوتر برای مهندسی نرمافزار ایجاد شدهاند تا به فرآیندهای چرخه حیات نرمافزار و روشهایی که ساختاری را بر فعالیتهای مهندسی نرمافزار اعمال میکنند کمک کندتا به هدف ساخت فعالیتهای سیستماتیک و در نهایت به موفقیت بتوان رسید.