ساخت و کیفیت نرمافزار
ساخت و کیفیت نرمافزار به ایجاد منظم کد عملیاتی و تکنیکهایی — شامل آزمایش، تأیید، بازبینی و اندازهگیری — میپردازد که اطمینان حاصل میکنند نرمافزار الزامات و اهداف کیفی خود را برآورده میکند.
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
- آیا تست میتواند ثابت کند که یک برنامه صحیح است؟
- خیر. تست مجموعهای محدود از ورودیها را بررسی میکند و میتواند نقصها را آشکار کند اما نمیتواند عدم وجود آنها را نشان دهد؛ اثبات صحت برای همه ورودیها نیازمند تأیید رسمی است که تنها برای بخشهای محدود یا حیاتی یک سیستم امکانپذیر است.
- آیا کیفیت همان عدم وجود باگ است؟
- خیر. کیفیت نرمافزار چندبعدی است و شامل صحت عملکردی به علاوه ویژگیهایی مانند قابلیت اطمینان، عملکرد، امنیت، قابلیت استفاده و قابلیت نگهداری میشود؛ برنامهای با باگهای کم ممکن است همچنان کیفیت پایینی داشته باشد اگر غیرقابل نگهداری یا ناامن باشد.