مهندسی نرم افزار

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
یک مهندس نرم افزار که برای بنیاد ویکی برنامه نویسی می کند.

مهندسی نرم افزار عبارت است از کاربرد مهندسی برای طراحی، توسعه ، پیاده سازی و نگهداری از نرم افزار در یک روش سیستماتیک .[۱][۲][۳]

تعاریف رسمی مهندسی نرم افزار عبارتند از:

  • "تحقیقات، طراحی ،توسعه و تست سیستم های عامل در سطح نرم افزار،کامپایلر ، نرم افزار شبکه توزیع برای پزشکی, صنعتی, نظامی, ارتباطات, هوا فضا, کسب و کار, علمی و به طور کلی برنامه های کاربردی محاسباتی."[۴]
  • "برنامه سیستماتیک علمی و دانش فن آوری و روش ها و تجربه هایی برای طراحی, پیاده سازی و تست و مستندسازی نرم افزار"[۵]
  • "برنامه ای سیستماتیک و منظم با قابلیت سنجش توسعه و عملکرد و نگهداری از نرم افزار"[۶]
  • "یک از رشته های مهندسی است که در رابطه با تمام جنبه های تولید نرم افزار است "[۷]
  • و "ایجاد و استفاده از اصول درست مهندسی برای بدست اوردن نرم افزاری که از لحاظ اقتصادی، قابل اعتماد و صرفه است ودر ماشین های واقعی بصورت کارایی عمل می کند."[۸]
  • مهندسی نرم‌افزار (به انگلیسی: Software engineering) یعنی استفاده از اصول مهندسی بجا و مناسب برای تولید و ارائه محصول نرم‌افزاری با کیفیت که قابل اطمینان و با صرفه بوده و برروی ماشین‌های واقعی به طور کارآمدی عمل کند. مهندسی نرم‌افزار یک روش سیستماتیک، منظم و دقیق برای ساخت و ارائه محصولی نرم‌افزاری با کیفیت است. مهندسی نرم‌افزار اغلب شامل فرایند خطی تحلیل، طراحی، پیاده‌سازی و آزمون است؛ که با به کارگیری روش‌های فنی و علمی از علوم مهندسی موجب تولید نرم‌افزاری با کیفیت مطلوب در طول یک فرایند انتخابی مناسب پروژه می‌شود. کاربردهای مهندسی نرم‌افزار دارای ارزش‌های اجتماعی و اقتصادی هستند، زیرا بهره‌وری مردم را بالا برده، چند و چون زندگی آنان را بهتر می‌کنند. مردم با بهره‌گیری از نرم‌افزار، توانایی انجام کارهایی را دارند که قبل از آن برای‌شان شدنی نبود. نمونه‌هایی از این دست نرم‌افزارها عبارت‌اند از: سامانه‌های توکار، نرم‌افزار اداری، بازی‌های رایانه‌ای و اینترنت. فناوری‌ها و خدمات مهندسی نرم‌افزار به کاربران برای بهبود بهره‌وری و کیفیت یاری می‌رساند. نمونه‌هایی از زمینه‌های بهبود: پایگاه داده‌ها، زبان‌ها، کتابخانه‌ها، الگوها، فرایندها و ابزار.

تاریخچه[ویرایش]

اصطلاح مهندسی نرم‌افزار پس از سال ۱۹۶۸ میلادی شناخته شد. این اصطلاح طی نشست «مهندسی نرم‌افزار ناتو ۱۹۶۸» (که در گارمیش-پارتنکیرشن، آلمان برگزار شد) توسط ریاست نشست فریدریش ال باوئر معرفی شد و از آن پس به‌طور گسترده مورد استفاده قرار گرفت. اصطلاح مهندسی نرم‌افزار عموماً به معانی مختلفی به‌کار می‌رود: به‌عنوان یک اصطلاح غیر رسمی امروزی برای محدوده وسیع فعالیت‌هایی که پیش از این برنامه‌نویسی و تحلیل سامانه‌ها نامیده می‌شد. به‌عنوان یک اصطلاح جامع برای تمامی جنبه‌های عملی برنامه‌نویسی رایانه، در مقابل تئوری برنامه‌نویسی رایانه، که علوم رایانه نامیده می‌شود. به‌عنوان اصطلاح مجسم‌کننده طرفداری از یک رویکرد خاص نسبت به برنامه‌نویسی رایانه که اصرار می‌کند، مهندسی نرم‌افزار، به‌جای آنکه هنر یا مهارت باشد، باید به‌عنوان یک رشته عملی مهندسی تلقی شود و از جمع‌کردن و تدوین روش‌های عملی توصیه‌شده به شکل متدولوژی‌های مهندسی نرم‌افزار طرفداری می‌کند. مهندسی نرم‌افزار عبارت است از: کاربرد یک رویکرد سامانه‌شناسی، انتظام‌یافته، قابل سنجش نسبت به توسعه، عملکرد و نگهداری نرم‌افزار، که کاربرد مهندسی در نرم‌افزار است. مطالعه روش‌های موجود در استاندارد IEEE

زیر شاخه های مهندسی نرم افزار[ویرایش]

مهندسی نرم افزار را می توان به 15 زیر رشته تقسیم کرد:

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

ارجاعات[ویرایش]

  1. Abran et al. 2004, pp. 1–1
  2. ACM (2007). "Computing Degrees & Careers". ACM. Retrieved 2010-11-23. 
  3. Laplante, Phillip (2007). What Every Engineer Should Know about Software Engineering. Boca Raton: CRC. ISBN 978-0-8493-7228-5. Retrieved 2011-01-21. 
  4. The Bureau of Labor Statistics
  5. “Systems and software engineering - Vocabulary,” ISO/IEC/IEEE std 24765:2010(E), 2010.
  6. “IEEE Standard Glossary of Software Engineering Terminology,” IEEE std 610.12-1990, 1990.
  7. Sommerville, Ian (2007) [1982]. "1.1.2 What is software engineering?". Software Engineering (8th ed.). Harlow, England: Pearson Education. p. 7. ISBN 0-321-31379-8. Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use. In this definition, there are two key phrases:
    1. Engineering discipline Engineers make things work. They apply theories, methods and tools where these are appropriate [. . .] Engineers also recognize that they must work to organizational and financial constraints. [. . .]
    2. All aspects of software production Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production.
     
  8. "Software Engineering". Information Processing (North-Holland Publishing Co.) 71: 530–538. 1972.