آقای مرتضی ذاکری نصرآبادی دانشجوی دکترای آقای دکتر سعید پارسا مورخ ۱۴۰۲/۰۶/۲۶ ساعت ۰۸:۰۰ از رساله دکتری خود با عنوان "سنجش و بهبود آزمونپذیری مصنوعات سیستمهای نرمافزاری"دفاع خواهند نمود. |
ارائه دهنده:
مرتضی ذاکری نصرآبادی
استاد راهنما:
دکتر
سعید پارسا
اساتید مشاور:
دکتر مهرداد آشتیانی
هیات داوران:
دکتر محمدرضا رزازی، دکتر علی معینی،
دکتر محمد عبداللهی ازگمی، دکتر حسن نادری
زمان : ۲۶ شهریور ماه ۱۴۰۲
ساعت ۰۸:۰۰
چکیده پایان نامه :
آزمون یک مرحله پر هزینه و زمانبر در توسعه نرمافزار است. بخصوص در فرایندهای چابک که تأکید بر استفاده از آزمون برای پیشبرد طراحی در ضمن تولید کد را دارند، هزینه آزمون مانعی برخلاف چابکی است. قبل از هرگونه آزمون میبایست میزان آزمونپذیری سنجش و در صورت نیاز با بهرهبری از ابزارهای بازآرایی، کد را برای آزمون مؤثر با حداقل هزینه ممکن آماده کرد. لازمه بازآرایی خودکار برای آزمونپذیری و هر صفت کیفی دیگر، تشخیص مشکلات کد منبع از دیدگاه مهندسی نرمافزار یا در اصطلاح بوی بد کد است. بر اساس بوهای موجود در کد منبع می توان میزان تأثیر بو بر کیفیت آن را مشخص نمود. در طی بررسی روشهای خودکار برای سنجش تشابه کدهای منبع به این نتیجه رسیدیم که سنجش شباهت کد منبع روش پایهای برای خودکارسازی بسیاری از وظایف در مهندسی نرمافزار است. برای نمونه، مدلهای یادگیری ماشین برای خودکارسازی وظایفی از قبیل پیشبینی میزان آزمونپذیری، پوششپذیری، کیفیت، بوی کد و تأثیر بوی بد برکیفیت، با یادگیری چگونگی مقایسه کدهای منبع، خصیصه یک موجودیت نرمافزار را بر اساس خصایص شناخته شده در موجودیتهای مشابه، پیشبینی میکنند. جهت تعیین تشابه، فضای ویژگیها را با معرفی سنجههای لغوی و سنجه های آماری علاوه بر سنجههای متداول کد منبع میتوان بهبود داد. با استفاده از این فضا نشان دادهایم که روشهای یادگیری سطحی، دقیقتر و سریعتر از یادگیری ژرف عمل میکنند. مزیت مدلهای یادگیری، عدم نیاز به اجرای کد یا به عبارت دیگر ایستا بودن آنها است. در واقع، با استفاده از تجربیات زمان اجرا که به این مدلها آموختیم، توانستیم آزمونپذیری را بدون نیاز به قابل اجرا بودن و همگام با توسعه کد مشخص نماییم. بدین ترتیب، در طی فرایند چابک در صورت غیر قابل قبول بودن میزان آزمونپذیری، با الگوریتم تکاملی و با ایجاد جمعیت اولیه بازآراییها، متناسب با بوهای موجود در ۱۲۳۴ کلاس در شش پروژه شناخته شده جاوا، میزان آزمونپذیری را به طور میانگین تا %۳۰ افزایش دادیم. برآیند روشهای پیشنهادی رساله، منجر به یک راهکار توسعه چابک نرم افزار، به نام «توسعه آزمون پذیر رانه» گردیده و از این طریق یکپارچه شده اند.
Abstract:
Testing in software development can be demanding and time-consuming, particularly within agile processes that prioritize tests to drive design and code production. The associated costs of testing present a significant hindrance to maintaining agility. Therefore, it is advisable to assess the testability of the code prior to initiating any testing activities and, if required, refactor the code to facilitate efficient and effective testing. From a software engineering standpoint, the need for automatic refactoring to enhance testability and other quality criteria arises from the identification of source code problems, commonly known as code smells. Analyzing these code smells enables the assessment of their impact on quality attributes. During our exploration of automated approaches to measure source code similarity, we concluded that measuring code similarity is a foundational method for automating numerous tasks, such as testability, coverageability, and code smell prediction, in software engineering. For example, machine learning models can be used to automate software engineering tasks by learning how to compare source codes and predict the characteristics of a software entity based on the features known in similar entities. Incorporating lexical and statistical metrics and common source code metrics enhances the feature space for machine learning. Our research has demonstrated that shallow learning methods exhibit higher accuracy and faster performance than deep learning methods when utilizing this feature space to learn similarity. The advantage of machine learning models is that there is no need to run the code; in other words, they are static. Indeed, by using the runtime experiences that these models learn, it is possible to determine the level of testability and coverageability without any need for the code to be executable. Using a search-based refactoring approach based on code smells, we could improve the testability of ۱۲۳۴ classes in six known Java projects during agile processes. The approach uses an evolutionary process and an initial population of refactorings to remove the smells when the testability level is unacceptable. This way, testability increased by ۳۰% on average as a result. The results of the proposed methods of this thesis have been integrated into an agile software development process called "Testability Driven Development (TsDD)."
|