![cover image](https://wikiwandv2-19431.kxcdn.com/_next/image?url=https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Coding_Shots_Annual_Plan_high_res-5.jpg/640px-Coding_Shots_Annual_Plan_high_res-5.jpg&w=640&q=50)
مهندسی نرمافزار
تولید و ارائه نرم افزارهای کاربردی / From Wikipedia, the free encyclopedia
مهندسی نرمافزار[1] (به انگلیسی: Software engineering) یعنی استفاده از اصول مهندسی بجا و مناسب برای توسعه و ارائه محصول نرمافزاری با کیفیت که قابل اطمینان و باصرفه بوده و بر روی ماشینهای واقعی بهطور کارآمدی عمل کند.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Coding_Shots_Annual_Plan_high_res-5.jpg/640px-Coding_Shots_Annual_Plan_high_res-5.jpg)
مهندسی نرمافزار یک روش سیستماتیک، منظم و دقیق برای توسعه و ارائه محصولی نرمافزاری با کیفیت است.
مهندسی نرمافزار اغلب شامل فرایند خطی تحلیل، طراحی، پیادهسازی و آزمون است؛ که با بهکارگیری روشهای فنی و علمی از علوم مهندسی موجب توسعه نرمافزاری با کیفیت مطلوب در طول یک فرایند انتخابی مناسب پروژه میشود.
کاربردهای مهندسی نرمافزار دارای ارزشهای اجتماعی و اقتصادی هستند، زیرا بهرهوری مردم را بالا برده، چند و چون زندگی آنان را بهتر میکنند. مردم با بهرهگیری از نرمافزار، توانایی انجام کارهایی را دارند که پیش از آن برای آنان شدنی نبود. نمونههایی از این دست نرمافزارها عبارتاند از: سامانههای توکار، نرمافزار اداری، بازیهای رایانهای و اینترنت.
فناوریها و خدمات مهندسی نرمافزار به کاربران برای بهبود بهرهوری و کیفیت یاری میرساند. نمونههایی از زمینههای بهبود: پایگاه دادهها، زبانها، کتابخانهها، الگوها، فرایندها و ابزار.
مهندسی نرمافزار عبارت است از کاربرد مهندسی برای طراحی نرمافزار، توسعه، پیادهسازی و نگهداری از نرمافزار در یک روش سیستماتیک.[2][3][4]
تعاریف رسمی مهندسی نرمافزار عبارتند از:
- «تحقیقات، طراحی، توسعه و تست سیستمهای عامل در سطح نرمافزار، کامپایلر، نرمافزار شبکه توزیع برای پزشکی، صنعتی، نظامی، ارتباطات، هوا فضا، کسب و کار، علمی و بهطور کلی برنامههای کاربردی محاسباتی.»[5]
- «برنامه سیستماتیک علمی و دانش فناوری و روشها و تجربههایی برای طراحی، پیادهسازی و تست و مستندسازی نرمافزار»[6]
- «برنامهای سیستماتیک و منظم با قابلیت سنجش توسعه و عملکرد و نگهداری از نرمافزار»[7]
- "یکی از رشتههای مهندسی است که در رابطه با تمام جنبههای تولید نرمافزار است "[8]
- و «ایجاد و استفاده از اصول درست مهندسی برای بهدست آوردن نرمافزاری که از لحاظ اقتصادی، قابل اعتماد و بهصرفه است و در ماشینهای واقعی به صورت کارایی عمل میکند.»[9]
- مهندسی نرمافزار (به انگلیسی: Software engineering) یعنی استفاده از اصول مهندسی بجا و مناسب برای توسعه و ارائه محصول نرمافزاری با کیفیت که قابل اطمینان و با صرفه بوده و بر روی ماشینهای واقعی بهطور کارآمدی عمل کند. مهندسی نرمافزار یک روش سیستماتیک، منظم و دقیق برای ساخت و ارائه محصولی نرمافزاری با کیفیت است. مهندسی نرمافزار اغلب شامل فرایند خطی تحلیل، طراحی، پیادهسازی و آزمون است؛ که با بهکارگیری روشهای فنی و علمی از علوم مهندسی موجب تولید نرمافزاری با کیفیت مطلوب در طول یک فرایند انتخابی مناسب پروژه میشود. کاربردهای مهندسی نرمافزار دارای ارزشهای اجتماعی و اقتصادی هستند، زیرا بهرهوری مردم را بالا برده، چند و چون زندگی آنان را بهتر میکنند. مردم با بهرهگیری از نرمافزار، توانایی انجام کارهایی را دارند که پیش از آن برای آنان شدنی نبود. نمونههایی از این دست نرمافزارها عبارتاند از: سامانههای توکار، نرمافزار اداری، بازیهای رایانهای و اینترنت. فناوریها و خدمات مهندسی نرمافزار به کاربران برای بهبود بهرهوری و کیفیت یاری میرساند. نمونههایی از زمینههای بهبود: پایگاه دادهها، زبانها، کتابخانهها، الگوها، فرایندها و ابزار.
در مهندسی نرم افزار، معمولا سه محیط توسعه، تست و محصول تعریف میشود. محیط توسعه، محیطی است که در آن اپلیکیشنها و سرویسهای نرمافزاری، تولید شده و توسعه مییابند. در محیط تست، برنامه نویسان و متخصصین حوزه تضمین کیفیت، کارایی، عملکرد و قابلیت اطمینان محصول را قبل از ورود محصول به بازار میسنجند. در محیط محصول نیز، اپلیکیشنها و سرویسهای نرمافزاری برای استفاده در اختیار کاربران قرار میگیرند.[10]
مهمترین شاخص در مهندسی نرمافزار، توسعه (طراحی و پیادهسازی) نرمافزار با کیفیت متناسب با «نیازهای مشتری» است.