مهمترین رکن مهندسی نرم افزار ، دریافت درکی درست از نیازمندیها، و سپس طراحی راه حلی است که به شکلی موثر به آنها پاسخ دهد. این شامل گردآوری، مستندسازی و اعتبار سنجی نیازمندیها و سپس طراحی معماری نرم افزار و ماجولهای آن به شکلی است که قابل نگهداری(توسعه قابل برنامه‌ریزی و تکرارپذیر باشد)، مقیاس پذیر، موثر، قابل اعتماد و با کیفیت باشد. مهندسی نرم‌افزار باید شامل مجموعه‌ای از حوزه‌ها و فرآیندهای کلیدی باشد تا بتواند چرخه‌ی عمر یک نرم‌افزار را از ایده تا پیاده‌سازی و نگهداری به‌صورت ساخت‌یافته مدیریت کند. فرآیند مهندسی نرم افزار بایستی در زمان مشخص، با هزینه و بودجه مشخص(مقرون به صرفه) و کیفیت قابل قبول، به روش‌های سیستماتیک، قابل اندازه‌گیری و مهندسی‌شده انجام گیرد.
مهندسی نرم‌افزار، نحوه نوشتن راه ‌حل نیست، بلکه شناسایی آنچه باید در راه ‌حل باشد است.

https://github.com/jamsahar/Documents/blob/main/Software_Engineering_V02.pdf