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

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

ربات‌های نرم‌افزاری معمولاً برای انجام وظایف، پیشنهاد اقدامات، ایجاد گفت‌وگو و ترویج جنبه‌های اجتماعی و فرهنگی یک پروژه نرم‌افزاری به‌کار می‌روند.

واژهٔ bot از کلمهٔ ربات (robot) گرفته شده‌است. با این وجود، در حالی که ربات‌ها در دنیای فیزیکی عمل می‌کنند، ربات‌های نرم‌افزاری تنها در فضاهای دیجیتال فعال هستند.
برخی از ربات‌های نرم‌افزاری به گونه‌ای طراحی و رفتار می‌کنند که همانند چت‌بات‌ها هستند، اما همهٔ چت‌بات‌ها ربات نرم‌افزاری به شمار نمی‌روند. بررسی‌ها در مورد گذشته و آیندهٔ ربات‌های نرم‌افزاری نشان می‌دهد که این ربات‌ها سال‌هاست مورد استفاده قرار می‌گیرند.
## کاربرد
ربات‌های نرم‌افزاری برای پشتیبانی از فعالیت‌های توسعه، مانند ارتباط میان توسعه‌دهندگان نرم‌افزار و خودکارسازی وظایف تکراری استفاده می‌شوند. ربات‌های نرم‌افزاری توسط چندین جامعه مرتبط با توسعه نرم‌افزار، همچون جوامع متن‌باز در گیت‌هابو استک اورفلو پذیرفته شده‌اند.

ربات‌های گیت‌هاب دارای حساب کاربری هستند و می‌تواننددرخواست‌های کشش (pull request)و مشکلات (issue) را باز، بسته یا دربارهٔ آن‌ها نظر دهند. این ربات‌ها برای تعیین بررسی‌کننده‌ها، درخواست امضای توافق‌نامه مجوز مشارکت‌کننده، گزارش خطاهای یکپارچه‌سازی مستمر، بازبینی کدها و درخواست‌های کشش، خوشامدگویی به تازه‌واردان، اجرای تست‌های خودکار، ادغام درخواست‌های کشش، رفع اشکالات و آسیب‌پذیری‌هاو غیره به کار می‌روند.

ابزار اسلک یک API برای توسعه ربات‌های نرم‌افزاری فراهم می‌کند. برخی ربات‌های اسلک برای مدیریت فهرست انجام کارها (todo list)، هماهنگی جلسات ایستاده و رسیدگی به تیکت‌های پشتیبانی ساخته شده‌اند. محصولات شرکت ChatBotاین فرآیند ساخت ربات شخصی اسلک را ساده‌تر می‌کنند.

در ویکی‌پدیا، ربات‌های ویکی‌پدیا طیفی از وظایف را خودکار می‌کنند؛ از ایجاد مقاله‌های کوتاه گرفته تا به‌روزرسانی هماهنگ قالب چندین صفحه و موارد مشابه. ربات‌هایی نظیر ClueBot NG توانایی شناسایی تخریب و حذف خودکار محتوای مخرب را دارند.
## طبقه‌بندی‌ها و چارچوب‌های رده‌بندی
Lebeuf و همکارانش یک رده‌بندی چندبُعدی برای توصیف ربات‌ها بر اساس مرور ادبیات ارائه داده‌اند. این رده‌بندی شامل سه بُعد اصلی است: (۱) ویژگی‌های محیطی که ربات در آن ساخته شده‌است؛ (۲) ویژگی‌های ذاتی خود ربات؛ و (۳) تعاملات ربات با محیط خود. آن‌ها هریک از این ابعاد اصلی را به مجموعه‌هایی از زیر‌ابعاد نیز تقسیم کرده‌اند.

Paikari و van der Hoekمجموعه‌ای از ابعاد را برای مقایسه ربات‌های نرم‌افزاری (به طور خاص، چت‌بات‌ها) تعریف کرده‌اند. این ابعاد عبارت‌اند از:

* **نوع** (Type): هدف اصلی ربات (اطلاعات، همکاری یا خودکارسازی)
* **جهت** (Direction): جهت «مکالمه» (ورودی، خروجی یا دوسویه)
* **هدایت** (Guidance): واسطه‌گری انسانی یا خودگردان بودن ربات (human-mediated یا autonomous)
* **پیش‌بینی‌پذیری** (Predictability): قطعی بودن یا قابلیت تحول (deterministic یا evolving)
* **سبک تعامل** (Interaction style): یکنواخت، واژگان جایگزین، سازنده رابطه، انسان‌گونه (dull، alternate vocabulary، relationship-builder، human-like)
* **کانال ارتباطی** (Communication channel): متن، صوت یا هر دو (text، voice یا both)
Erlenhov و همکارانش به تفاوت میان یک ربات و خودکارسازی ساده اشاره کرده‌اند، چرا که بسیاری از پژوهش‌ها در حوزهٔ ربات‌های نرم‌افزاری، واژهٔ «ربات» را برای توصیف ابزارهای مختلفی به کار می‌برند و گاهی نیز صرفاً به ابزارهای توسعه متعارف اطلاق می‌کنند. پس از مصاحبه و بررسی نظرسنجی بیش از ۱۰۰ توسعه‌دهنده، نویسندگان دریافتند که نه یک، بلکه سه تعریف غالب در جامعه وجود دارد. آنان سه شخصیت (persona) بر اساس این تعاریف ایجاد کردند و تفاوت برداشت این سه شخصیت از معنای ربات، عمدتاً به نسبت دادن مجموعه‌ای متفاوت از ویژگی‌های انسان‌مانند بازمی‌گردد.
* **شخصیت ربات گفت‌وگومحور (Charlie):** این دیدگاه، ربات را ابزاری می‌داند که از طریق یک رابط زبان طبیعی (معمولاً مبتنی بر صدا یا چت) با توسعه‌دهنده ارتباط برقرار می‌کند و اهمیت چندانی به اینکه ربات چه وظایفی انجام می‌دهد یا چگونه این وظایف را پیاده‌سازی می‌کند، نمی‌دهد.
* **شخصیت ربات خودگردان (Alex):** این دیدگاه، ربات را ابزاری می‌بیند که به صورت مستقل (بدون نیاز به ورودی زیاد از طرف توسعه‌دهنده) وظایفی را انجام می‌دهد که معمولاً باید توسط انسان انجام شوند.
* **شخصیت ربات هوشمند (Sam):** این دیدگاه، ربات‌ها را بر اساس میزان هوشمندی (یا پیشرفتگی فنی) از ابزارهای توسعه رایج جدا می‌کند. برای Sam، نحوهٔ ارتباط ابزار اهمیت کمتری دارد و بیشتر به این توجه می‌کند که ابزار تا چه حد به‌طور غیرمعمول خوب یا سازگار در انجام وظیفهٔ خود عمل می‌کند.
نویسندگان توصیه می‌کنند که پژوهشگران یا افرادی که دربارهٔ ربات‌ها می‌نویسند، تلاش کنند کار خود را در قالب یکی از این شخصیت‌ها ارائه دهند، زیرا هر شخصیت انتظارات و چالش‌های متفاوتی با ابزارهای ربات دارد.
## نمونه‌هایی از ربات‌های برجسته
* **Dependabot** و **Renovatebot** وابستگی‌های نرم‌افزاری را به‌روزرسانی کرده و آسیب‌پذیری‌ها را شناسایی می‌کنند. (https://dependabot.com/)
* **Probot** یک سازمان است که ربات‌هایی را برای گیت‌هاب ایجاد و نگهداری می‌کند. نمونه‌هایی از ربات‌های ساخته شده با Probot عبارت‌اند از:
** **Auto Assign** (https://probot.github.io/apps/auto-assign/)
** **license bot** (https://probot.github.io/)
** **Sentiment bot** (https://probot.github.io/apps/sentiment-bot/)
** **Untrivializer bot** (https://probot.github.io/apps/untrivializer/)
* **Refactoring-Bot** (https://github.com/Refactoring-Bot/Refactoring-Bot): بازآرایی (Refactoring) کد را بر پایه تحلیل ایستای کد انجام می‌دهد.

* **Looks good to me bot** (LGTM): یک محصول از شرکت Semmle که درخواست‌های کشش pull request را در گیت‌هاب برای بررسی سبک کد و شناسایی موارد ناامن تحلیل می‌کند.
## مسائل و تهدیدها

ربات‌های نرم‌افزاری ممکن است به خوبی توسط انسان‌ها پذیرفته نشوند. یک مطالعه از دانشگاه آنتورپ مقایسه کرده است که چگونه توسعه‌دهندگان فعال در Stack Overflow  پاسخ‌های تولیدشده توسط ربات‌های نرم‌افزاری را درک می‌کنند. یافته‌ها نشان می‌دهد وقتی هویت ربات نرم‌افزاری آشکار باشد، کیفیت پاسخ‌های تولیدشده توسط ربات در نظر توسعه‌دهندگان به‌طور قابل توجهی پایین‌تر ارزیابی می‌شود. در مقابل، پاسخ‌هایی که با هویت انسانی از سوی ربات ارسال شده‌اند، بهتر پذیرفته می‌شوند. در عمل، در پلتفرم‌هایی مانند GitHub یا ویکی‌پدیا، نام کاربری ربات‌ها معمولاً به وضوح نشان می‌دهد که آن‌ها ربات هستند؛ برای نمونه: DependaBot، RenovateBot، DatBot، SineBot.

ربات‌ها ممکن است مشمول مقررات ویژه‌ای باشند. برای مثال، شرایط خدمات GitHub وجود «ربات» را نمی‌پذیرد اما حساب‌های ماشین (machine account) را قبول می‌کند؛ به‌طوری که «حساب ماشین» دو ویژگی دارد: ۱) یک انسان تمام مسئولیت اقدامات ربات را می‌پذیرد ۲) این حساب نمی‌تواند حساب دیگری ایجاد کند.
## جستارهای وابسته
* چت‌بات
* ChatBot(دیمون (سرویس‌پرداز))
* ربات اینترنتی
* عامل نرم‌افزاری

## منابع

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