بازبینی نرم‌افزار

**بازبینی در مهندسی نرم‌افزار** (به انگلیسی: Software inspection) به فرایند بازبینی همتایانه (Peer reviews) محصولات نرم‌افزاری توسط افراد آموزش‌دیده گفته می‌شود؛ این افراد با استفاده از یک فرایند تعریف‌شده و منظم به جستجوی خطاها و نقص‌ها می‌پردازند. این فرایند گاهی با عنوان بازبینی فاگان (Fagan inspection) نیز شناخته می‌شود؛ نامی برگرفته از **مایکل فاگان**، که یکی از فرایندهای پرکاربرد بازبینی نرم‌افزار را ایجاد کرد.

## معرفی
بازبینی یکی از رایج‌ترین شیوه‌های مرور در پروژه‌های نرم‌افزاری است. هدف اصلی بازبینی، **شناسایی نقص‌ها و خطاها** در محصولات نرم‌افزاری است. از جمله محصولات متداولی که تحت بازبینی قرار می‌گیرند می‌توان به **مشخصات نیازمندی‌های [[نرم‌افزار]]** و **برنامه‌های آزمون** اشاره کرد.

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

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

## فرآیند بازبینی
فرایند بازبینی در **میانهٔ دههٔ ۱۹۷۰** توسعه یافت و بعدها گسترش و اصلاح شد.

برای آغاز فرایند بازبینی، باید معیارهای ورود مشخصی وجود داشته باشد که آمادگی محصول کاری برای بازبینی را تعیین می‌کنند. وجود این معیارها از ورود محصولات **ناتمام یا ناقص** به فرایند بازبینی جلوگیری می‌کند. معیارهای ورود می‌توانند شامل فهرستی از مواردی مانند «سند از نظر نگارشی بررسی شده‌است» باشند.
مراحل فرایند بازبینی عبارت‌اند از: **برنامه‌ریزی، جلسهٔ مروری کلی، آماده‌سازی، جلسهٔ بازبینی، بازکاری، پیگیری**.

مراحل «آماده‌سازی»، «جلسهٔ بازبینی» و «بازکاری» ممکن است چند بار تکرار شوند تا تمام نقص‌ها شناسایی و اصلاح گردند.

* **برنامه‌ریزی:** فرایند بازبینی توسط ناظر برنامه‌ریزی می‌شود.
* **جلسهٔ مروری کلی:** نویسنده زمینه و پیش‌زمینهٔ محصول کاری را برای اعضای تیم توضیح می‌دهد.
* **آماده‌سازی:** هر بازبین به‌صورت جداگانه محصول کاری را بررسی می‌کند تا نقص‌های احتمالی را شناسایی کند.
* **جلسهٔ بازبینی:** در این جلسه، خواننده متن محصول کاری را بخش‌به‌بخش قرائت می‌کند و بازبین‌ها نقص‌ها را در هر بخش اعلام می‌کنند.
* **بازکاری:** نویسنده با توجه به برنامه‌های اقدام اصلاحی که در جلسهٔ بازبینی پیشنهاد شده‌اند، تغییرات لازم را در محصول کاری اعمال می‌کند.

* **پیگیری:** تغییرات انجام‌شده توسط نویسنده بررسی می‌شوند تا از **درستی و کامل بودن اصلاحات** اطمینان حاصل گردد.
فرایند بازبینی زمانی پایان می‌یابد که ناظر تشخیص دهد معیارهای خروج که از پیش تعیین شده‌اند، برآورده شده‌اند. اصطلاح «بازبینی» به یکی از **مهم‌ترین** اجزای کل فرایند توسعه و اجرای موفق یک پروژهٔ مهندسی نرم‌افزار اشاره دارد.

## نقش‌های بازبینی
در یک بازبینی، نقش‌های زیر تعریف می‌شوند:

* **نویسنده:** فردی که محصول کاری مورد بازبینی را ایجاد کرده است.
* **ناظر:** مسئول هدایت بازبینی. او وظیفهٔ برنامه‌ریزی، هماهنگی و مدیریت کل فرایند را بر عهده دارد.
* **خواننده:** شخصی که سند یا محصول کاری را بند به بند می‌خواند. دیگر بازبین‌ها هنگام خواندن، اشکالات را شناسایی می‌کنند.
* **دبیر یا ثبت‌کننده:** کسی که اشکالات مطرح‌شده را در طول جلسه بازبینی ثبت و مستند می‌کند.
* **بازبین:** فردی که محصول کاری را بررسی می‌کند تا اشکالات احتمالی را شناسایی نماید.

## انواع بازبینی مرتبط

### بازبینی کد (Code review)
بازبینی کد، نوعی خاص از فرایند بازبینی است که در آن، تیمی از برنامه‌نویسان بخشی از کد را بررسی می‌کنند و خطاهای موجود در آن را برطرف می‌سازند. در بازبینی کد، «خطا» به بخشی از کد گفته می‌شود که یا الزامات مورد نظر را به‌درستی پیاده‌سازی نکرده باشد، یا عملکرد آن با هدف برنامه‌نویس تطابق نداشته باشد، یا حتی اگر نادرست هم نباشد، قابلیت بهبود داشته باشد (برای نمونه، خوانایی آن افزایش یابد یا عملکرد بهتری پیدا کند).

افزون بر شناسایی و رفع اشکالات، بازبینی کد به تیم‌ها کمک می‌کند تا برنامه‌نویسان مختلف با کدهای یکدیگر آشنا شوند (آموزش متقابل)، و نیز برنامه‌نویسان کم‌تجربه با تکنیک‌های جدید برنامه‌نویسی آشنا شوند.

### بازبینی همتایان
بازبینی همتایان یکی از بهترین روش‌های پذیرفته‌شدهٔ صنعت برای شناسایی زودهنگام نقص‌های نرم‌افزاری و آشنایی با مصنوعات نرم‌افزاری به‌شمار می‌رود. این نوع بازبینی شامل **گشت‌زنی نرم‌افزار (walkthrough)** و **بازبینی نرم‌افزار** است و بخشی جدانشدنی از فعالیت‌های مهندسی محصول نرم‌افزاری محسوب می‌شود.

اجرای بهینهٔ بازبینی همتایان نیازمند مجموعه‌ای هماهنگ از دانش، مهارت‌ها و رفتارهای مشخص است. از جمله عناصر کلیدی در بازبینی همتایان می‌توان به **فرایند بازبینی ساخت‌یافته**، **[[چک‌لیست|چک‌لیست‌]]<nowiki/>های استاندارد کیفیت محصول**، **نقش‌های تعریف‌شده برای شرکت‌کنندگان**، و **فرم‌ها و گزارش‌های ثبت‌شده** اشاره کرد.

بازبینی‌های نرم‌افزار دقیق‌ترین و ساخت‌یافته‌ترین شکل بازبینی همتایان به‌شمار می‌روند و از همهٔ عناصر بازبینی برای شناسایی نقص‌ها بهرهٔ کامل می‌برند. گشت‌زنی‌های نرم‌افزار به‌صورت انتخابی از این عناصر استفاده می‌کنند تا به تولیدکننده در درک عمیق‌تر یک مصنوع نرم‌افزاری و رسیدن به اجماع میان شرکت‌کنندگان کمک کنند.

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

## جستارهای وابسته

* مهندسی نرم‌افزار
* مدل تکامل قابلیت

## منابع

رده:نرم‌افزار