ScholarGate
دستیار

ساخت و کیفیت نرم‌افزار

ساخت و کیفیت نرم‌افزار به ایجاد منظم کد عملیاتی و تکنیک‌هایی — شامل آزمایش، تأیید، بازبینی و اندازه‌گیری — می‌پردازد که اطمینان حاصل می‌کنند نرم‌افزار الزامات و اهداف کیفی خود را برآورده می‌کند.

یافتن موضوع با PaperMindبه‌زودیFind papers & topics
Tools & resources
دریافت اسلایدها
Learn & explore
ویدیوبه‌زودی

Definition

ساخت نرم‌افزار، ایجاد دقیق نرم‌افزار عملیاتی از طریق کدنویسی، تأیید، تست واحد و اشکال‌زدایی است، و کیفیت نرم‌افزار، میزان برآورده شدن الزامات بیان شده و ضمنی نرم‌افزار است که از طریق تأیید، اعتبارسنجی و فعالیت‌های مدیریت کیفیت تضمین می‌شود.

Scope

این حوزه شامل شیوه‌های ساخت نرم‌افزار از جمله استانداردهای کدنویسی، برنامه‌نویسی دفاعی و تست واحد؛ سطوح و تکنیک‌های تست نرم‌افزار؛ تأیید و اعتبارسنجی؛ تحلیل ایستا و پویا؛ بازبینی کد و بازسازی؛ ویژگی‌ها و معیارهای کیفیت نرم‌افزار؛ و روش‌های رسمی برای اثبات صحت است. این حوزه فعالیت‌هایی را که نرم‌افزار قابل اعتماد تولید و تضمین می‌کنند، یکپارچه می‌سازد.

Sub-topics

Core questions

  • چه شیوه‌هایی کدی تولید می‌کنند که صحیح، خوانا و قابل نگهداری باشد؟
  • نقص‌ها چگونه از طریق تست، بازبینی و تحلیل شناسایی می‌شوند؟
  • کیفیت نرم‌افزار چگونه تعریف، اندازه‌گیری و تضمین می‌شود؟
  • چه زمانی می‌توان صحت را با اثبات رسمی و نه تنها با تست، برقرار کرد؟

Key theories

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

Clinical relevance

فعالیت‌های ساخت و کیفیت، قابلیت اطمینان، امنیت و قابلیت نگهداری یک سیستم را تعیین می‌کنند و بخش عمده‌ای از هزینه نقص‌ها را تشکیل می‌دهند؛ تأیید زودهنگام و سیستماتیک، خرابی‌های میدانی و بازکاری را کاهش می‌دهد که برای ارائه نرم‌افزار قابل اعتماد حیاتی است.

Evidence & guidelines

ISO/IEC 25010 یک مدل کیفیت محصول نرم‌افزاری را تعریف می‌کند، و حوزه‌های دانش SWEBOK در مورد ساخت نرم‌افزار، تست و کیفیت، راهنمایی مرجع اجماعی را ارائه می‌دهند.

History

تست سیستماتیک توسط مایرز در دهه 1970، برنامه‌نویسی ساختاریافته و تأیید توسط دایکسترا و هور در همان دوران، و مهارت ساخت توسط مک‌کانل در دهه 1990 مطرح شد؛ مدل‌ها و استانداردهای کیفیت مانند ISO/IEC 25010 ویژگی‌ها و اندازه‌گیری کیفیت را یکپارچه کردند.

Debates

تست در مقابل تأیید رسمی
در مورد اینکه آیا اطمینان به صحت باید بر تست گسترده یا بر اثبات رسمی استوار باشد، بحث وجود دارد؛ تست برای سیستم‌های بزرگ مقیاس‌پذیر است اما نمی‌تواند صحت را تضمین کند، در حالی که روش‌های رسمی تضمین‌های قوی‌تری با هزینه بالاتر ارائه می‌دهند و برای اجزای حیاتی رزرو شده‌اند.

Key figures

  • Glenford Myers
  • Steve McConnell
  • C. A. R. Hoare
  • Edsger Dijkstra

Related topics

Seminal works

  • myers2011
  • mcconnell2004
  • swebok2014

Frequently asked questions

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

Methods for this concept

Related concepts