مهندسی نرمافزار یعنی استفاده از اصول مهندسی بجا و مناسب برای تولید و ارائه محصول نرمافزاری با کیفیت که قابل اطمینان و با صرفه بوده و بر روی ماشینهای واقعی بهطور کارآمدی عمل کند.
مهندسی نرمافزار یک روش سیستماتیک، منظم و دقیق برای ساخت و ارائه محصولی نرمافزاری با کیفیت است.
مهندسی نرمافزار اغلب شامل فرایند خطی تحلیل، طراحی، پیادهسازی و آزمون است؛ که با بهکارگیری روشهای فنی و علمی از علوم مهندسی موجب تولید نرمافزاری با کیفیت مطلوب در طول یک فرایند انتخابی مناسب پروژه میشود.
کاربردهای مهندسی نرمافزار دارای ارزشهای اجتماعی و اقتصادی هستند، زیرا بهرهوری مردم را بالا برده، چند و چون زندگی آنان را بهتر میکنند. مردم با بهرهگیری از نرمافزار، توانایی انجام کارهایی را دارند که قبل از آن برایشان شدنی نبود. نمونههایی از این دست نرمافزارها عبارتاند از: سامانههای توکار، نرمافزار اداری، بازیهای رایانهای و اینترنت.
فناوریها و خدمات مهندسی نرمافزار به کاربران برای بهبود بهرهوری و کیفیت یاری میرساند. نمونههایی از زمینههای بهبود: پایگاه دادهها، زبانها، کتابخانهها، الگوها، فرایندها و ابزار.
تعاریف رسمی مهندسی نرمافزار عبارتند از:
«تحقیقات، طراحی، توسعه و تست سیستمهای عامل در سطح نرمافزار، کامپایلر، نرمافزار شبکه توزیع برای پزشکی، صنعتی، نظامی، ارتباطات، هوا فضا، کسب و کار، علمی و بهطور کلی برنامههای کاربردی محاسباتی.»
«برنامه سیستماتیک علمی و دانش فن آوری و روشها و تجربههایی برای طراحی، پیادهسازی و تست و مستندسازی نرمافزار»
«برنامهای سیستماتیک و منظم با قابلیت سنجش توسعه و عملکرد و نگهداری از نرمافزار»
“یک از رشتههای مهندسی است که در رابطه با تمام جنبههای تولید نرم افزار است ”
و «ایجاد و استفاده از اصول درست مهندسی برای بدست آوردن نرمافزاری که از لحاظ اقتصادی، قابل اعتماد و صرفه است و در ماشینهای واقعی به صورت کارایی عمل میکند.»
مهمترین شاخص در مهندسی نرمافزار تولید(طراحی و پیاده سازی) نرمافزار با کیفیت متناسب با «نیازهای مشتری» است.