کمیته رکن چهارم – پژوهشگران الگوریتمی توسعه دادهاند که خطاهای ایجاد شده در زمان بروزرسانی نرمافزار را شناسایی میکند.
شرکتهای نرمافزاری به صورت پیوسته سعی دارند با ارائه بروزرسانیهای نرمافزاری، سرعت و عملکرد برنامههای خود را بهبود بدهند؛ اما در مواقع بسیاری عکس این مسئله اتفاق میافتند. باگهایی که براثر ارائه یک بروزرسانی به وجود میآیند در علوم رایانه به نام «پسرفت عملکرد» (performance regressions)، شناخته میشوند. باگهایی که رفع آنها بسیار زمانبر است؛ زیرا پیدا کردن خطاهای نرمافزاری به مداخله مستقیم انسان نیاز دارد.
پژوهشگران دانشگاه «ای اند ام تگزاس» با همکاری دانشمندان علوم رایانه آزمایشگاههای اینتل، برای رفع چالش بالا یک راهکار کاملاً خودمختار توسعه دادهاند که میتواند خطاهای نرمافزاری به وجود آمده بر اثر ارائه بروزرسانی را شناسایی کند. این الگوریتم بر پایه یادگیری عمیق (deep Learning) ایجاد شده، بسیار سریع است و میتواند باگها را تنها در چند ساعت شناسایی کند.
عبدالله مجاهد، استاد دپارتمان علوم رایانه و مهندسی گفت:
بروزرسانی نرمافزار بعضی مواقع میتواند به بروز خطا و کند شدن سیستم و خود برنامه منجر شود. ما ابزاری را طراحی کردهایم که میتواند خطای پسرفت عملکرد را تشخیص دهد. این دستاورد با طیف گستردهای از زبانهای برنامهنویسی و نرمافزارها سازگار است.
به منظور مشخص کردن منابع خطاهای نرمافزاری در یک نرمافزار، دیباگرها (debuggers) در اغلب موارد وضعیت شمارنده عملکردها (performance counters) را در پردازشگر مرکزی (CPU) موردبررسی قرار میدهند. این شمارندهها خطوط کدهای برنامهنویسی هستند که در داخل حافظه، بر نحوه اجرای برنامه روی سختافزار نظارت میکنند؛ بنابراین زمانی که نرمافزار اجرا میشود، این شمارندهها تعداد دفعاتی دسترسی برنامه به محلهای خاصی از حافظه، زمان باقی ماندن در آن نقطه و هنگام خروج را محاسبه میکند. در نتیجه وقتی رفتاری اشتباه مشاهده شود، شمارندهها برای عیبیابی شروع به کار میکنند.
مجاهد توضیح داد:
شمارنده عملکرد معمولاً دیدگاهی را از سلامت برنامه ارائه میدهد؛ بنابراین اگر نرمافزاری به درستی اجرا نشود، نشانههایی از رفتار غیرعادی در آن مشاهده میگردد.
با وجود این رایانهها و سرورهای امروزی صدها شمارنده دارند که ردیابی وضعیت همه آنها به صورت دستی غیرممکن است. به همین دلیل پژوهشگران یک الگوریتم هوش مصنوعی توسعه دادند.
محققان با استفاده از یادگیری عمیق توانستند دادههای جمعآوری شده از تعداد زیادی شمارنده را به صورت همزمان موردمطالعه قرار دهند. این کار با کاهش حجم آنها انجام گرفت که مشابه فشردهسازی یک تصویر با وضوحبالا به کسری از اندازه واقعی است. الگوریتم توسعهیافته میتواند دادههای جمعآوری شده را در این قالب به سرعت بررسی کرده و نتایج را اعلام کند.
وی افزود، الگوریتم یادگیری عمیق یاد شده را علاوه بر خطایابی برنامهها، میتوان در حوزههای مختلف دیگری مانند توسعه خودروهای بی راننده نیز به کار گرفت.