بخشی از مقاله
چکیده
خطاهای نرمافزاری به صورت قابل ملاحظهای، بهرهوری و نیز کیفیت نرمافزار را تحت تأثیر قرار میدهند. لذا این مسأله، تبدیل به دغدغه بسیار مهم در مهندسی نرمافزار شده است. اشکالزدایی فعالیتی زمانبر، طاقتفرسا و هزینهبر در بهبود قابلیت اطمینان سیستمهای نرمافزاری محسوب میشود. به منظور کاهش هزینه اشکالزدایی، در سالهای اخیر، رویکردهای خودکار اشکالزدایی مختلفی پیشنهاد شده است اما با وجود نقاط قوت بسیار در آنها، توسعهدهندگان در عمل به این رویکردها اعتماد نداشته و به روشهای سنتی روی میآورند.
ضمن آنکه، رویکردهای موجود مکانیابی، قادر به تعمیر برنامه نیستند و ترمیم نرمافزار را به توسعهدهندگان میسپارند که فرآیندی دشوار و پرهزینه است. هدف ازاین پژوهش، ارائه راه حلی به منظور افزایش انگیزهی افراد در جهت مکانیابی و ترمیم خطاهای پنهان برنامه بوده و بازیگونهسازی به عنوان ابزاری جهت پیشروی به سمت رفتار مطلوب، یک کاندیدای ایدهآل برای استفاده در نظر گرفته میشود. به همین جهت، انطباق قوانین بازیگونهسازی با اشکالزدایی، هسته اصلی این پژوهش قرار گرفته است.
در این تحقیق، با استفاده از بازیگونهسازی، روش مکانیابی جدیدی برای خطاهای برنامه و نیز ترمیم آن ایجاد شده است بطوریکه درنهایت با روش جدید مبتنی بر بازیگونهسازی، انگیزه در جهت دقت در مکانیابی و رفع خطاها افزایش یابد.
به عبارت دیگر، خروجی این تحقیق، یک محیط تحت وب بازیگونهشده برای مکانیابی و رفع خطا است. برای ارزیابی این سامانه دو گروه آماری از توسعهدهندگان نرمافزار، سامانه بازیگونه و غیربازیگونه شده را مورد استفاده قرار دادند. سپس عملکرد دو محصول نرمافزاری در مدل بازیگونه و غیربازیگونه به منظور بررسی تأثیر بازیگونهسازی در میزان سودمندی در زمینه مکانیابی خطا و رفع آن مورد ارزیابی قرار گرفت. نتایج حاصله، بیانگر بهبود فرآیند اشکالزدایی در سامانه بازیگونه شده و در طی زمان قابل قبول در مقایسه با سامانه غیربازیگونه شده است.
- 1 مقدمه
علیرغم تلاشهای صورت گرفته از سوی توسعهدهندگان نرمافزار در فرایند آزمون و اشکالزدایی همچنان بسیاری از خطاها توسط کاربران به شکلهای مختلفی همچون شکست1 و یا خروجی ناموفق2 هویدا میگردند.[1][2][3]3 حتی در صورت نبود خطاهای نرمافزاری، تغییرات در نسخههای مختلف موجب بروز اشکالاتی میشود که وجودشان به شکل قابل ملاحظهای کیفیت نرمافزار را تحت تأثیر قرار میدهند. در پاسخ به این مسئله، در طول سالهای اخیر فنون مکانیابی خودکار خطاهای نرمافزاری نیز مطرح شده-اند
اگر چه اهمیت این فنون خودکار با عنایت به تحقیقات انجام شده بر هیچکس پوشیده نیست و موجب کاهش زمان و هزینههای تولید نرمافزار نیز شدهاند، اما بسیاری از آنها به دلیل پیچیدگی موضوع و تنوع گسترده خطاهای معنایی4 و وجود چندین خطای همزمان در برنامهها، کارایی لازم را برای برنامهنویسان ندارند. از طرفی، آزمایشهای اخیر نشان دادهاند که فنون مکانیابی آماری5 خطای موجود نیز کمک زیادی به برنامهنویسان نمیکنند
به عنوان مثال، گزارش دادن جملات مجزای برنامه به ترتیب امتیاز خطای آنها موجب سردرگمی برنامهنویس میشوند.6 لذا، برنامهنویسان ضمن بررسی جملات دارای بیشترین امتیاز، در صورتی که به ریشه اصلی خطا نرسند انگیزه خود را از دست داده و به مکانیابی خطای سنتی رو میآورند
به عبارت دیگر، زمانیکه هیچ یک از روشهای خودکار کافی نباشد منبع نهایی اشکالزدایی نرمافزار، انسان خواهد بود .[10] حال چنانچه از روشهای کارآمد اشکالزدایی برنامهها استفاده نگردد، هزینهها و خسارات حاصل از وجود خطاهای نرمافزاری سرسامآور خواهد بود. چرا که صنعت نرمافزار رشد نمایی قابل ملاحظهای داشته و از طرفی نیز، دستمزد برنامهنویسان و نیاز به نرمافزارهای سفارشی نیز افزایش یافته است
بر همین اساس، پژوهش حاضر با استفاده از یکی از روشهای مکانیابی خطای خودکار - شناخته شده با نام - [12] Tarantula در کنار بهرهمندی از مزایای روش سنتی، سعیبر شناسایی کُد مشکوک به خطا را دارد. علاوه بر این، با ترکیب عناصر بازیگونه-سازی7، انتظار میرود که روش مکانیابی جدیدی برای خطاهای محتمل پنهان برنامه و متعاقباً ترمیم آن، انتخاب یا ایجاد شود؛ بطوریکه انگیزه برنامهنویسان در جهت دقت در مکانیابی و رفع خطاها افزایش یابد. چرا که غرض از بازیگونهسازی این است که وفاداری کاربران، بهرهوری و اشتیاق آنها در استفاده از سیستم افزایش یابد . [13] در ادامه، به برخی پژوهشهای انجام شده در حوزه بازی و بازیگونهسازی مهندسی نرمافزار پرداخته شده است.
- 2 پیشینه پژوهش
نزدیکترین مطالعهای که میتوان مورد بررسی قرار داد، پژوهش آرای و همکاران8 است که یک رویکرد بازیگونهمحور9 برای بررسی و حذف اخطارهای10حاصل از ابزارهای الگوی خطای موجود اتخاذ کردهاند. ابزارهای الگوی خطا در کنار فواید فراوان، مشکلاتی نیز دارند. یکی از آنها این است که گاهی تعداد اخطارهای حاصل آنقدر زیاد است که توسعهدهندگان را از بررسی و حذف آنها منصرف میکند و ترجیح میدهد آنها را نادیده بگیرند.
در این پژوهش به منظور مقابله با این مسأله، رویکردی بازیگونه در نظر گرفته شده است. هدف این محققان، ایجاد انگیزه در توسعهدهندگان نرمافزار برای حذف اخطارهای اعلامشده توسط ابزار تشخیص خطای Find Bugs بوده است
امتیازدهی این رویکرد بر حسب تعداد اخطارهای حذف شده توسط توسعهدهنده، محاسبه شده است. نتایج این پژوهش گویای کاهش 15 درصدی تعداد اخطارهای موجود است. لازم به ذکر است که [15] Find Bugs نیز همانند سایر ابزارهای خطایابی از جمله 1PMDو Jlint از تشخیص بعضی خطاهای منطقی و یا عملکردی ناتوان است
Microsoft Researchنیز نوعی بازی جدّ ی تحت وب با نام 2Pex4Fun را معرفی کرده است تا مهارتهای کامپیوتری را به دانشجویان آموزش دهد. در این پژوهش، دانشجویان میتوانستند در مرورگرهای مختلف و در فضای ابری، کُدها را اجرا، تحلیل و ویرایش نمایند. از این طریق، تفاوت میان نیازمندیها و برنامه دانشجویان، شناسایی شده و فهم بهتری از عملکرد برنامه حاصل می-شود. ضمن اینکه نوعی تعامل میان اساتید و دانشجویان را نیز فرآهم آورده است
در همین راستا، -3Code Huntیک سکوی مبتنی بر وب و نسخه گسترشیافته -Pex4Fun از معماهایی استفاده نموده است که بازیکنان باید با سرنخهایی که به صورت مورد آزمون4 است، آن را حل کنند. بعبارت دیگر، بازیکنان دمام کُد خود را با توجه به موارد آزمون تغییر داده تا به رفتار مطلوب که همانا پذیرش تمامی موارد آزمون است برسند. به منظور نگه داشتن دائمی بازیکنان در سیستم نیز، با افزایش رتبه مهارتهای بازیکن، مأموریتش دشوارتر خواهد شد. این بازی، اهداف آموزشی داشته و تأثیر مثبتی بر روی یادگیری دارد
به عنوان مثال دیگر از پژوهشهای انجام شده، سیستم بازیگونهشدهی 5LQG نیز قابل توجه است. با ورود ویندوز7، میلیونها دلار درآمد مایکروسافت به آن بستگی پیدا کرد. مایکروسافت با ارائه این سیستم، چهره بومیسازی نرمافزار را برای همیشه تغییر داد. از آنجاییکه در مایکروسافت افرادی از هر کشور با هر زبانی حضور داشتند از بازیگونهسازی استفاده کردند تا اشخاص بتوانند داوطلبانه به آزمون آن کمک کنند. بازیکنان با توجه به پیدا کردن هر خطا، امتیاز کسب میکردند که در جدول رتبهبندی کشوری، قرار می-گرفت. نتایج حاکی از این بود که LQG بعنوان یک محیط پویا و رقابتی موجب شناسایی 7 هزار خطا به 36 زبان شد