Loading...
- Type of Document: Ph.D. Dissertation
- Language: Farsi
- Document No: 55167 (19)
- University: Sharif University of Technolog
- Department: Computer Engineering
- Advisor(s): Heydarnoori, Abbas
- Abstract:
- Software quality assurance activities such as debugging are considered one of the most important and effective tasks in software development life cycle. However, these activities are tedious and time consuming. Consequently, wide variety of studies have been conduced around the process of software debugging, such as predicting defects,which is one of the most important topics in this area.In spite of the popularity of software libraries and frameworks, and the use of application programming interfaces (API), most of the studies in the defect prediction area have not focused on predicting defects related to API usages. However, due to the lack of documentation and complexity of the APIs developers face various errors and defects during software development.On the other hand, question and answer (Q & A) websites such as Stack Overflow have turned to be the main reference for developers to debug, ask questions, share and validate knowledge about programming. Thus, these websites are considered a great source of knowledge about common programming mistakes, errors and challenges such as misuse of APIs.In this dissertation, we statically investigate the relation between software defects and the use of APIs which are frequently discussed in the crowd. To this end, we introduce the challenge of an API, which denotes how much that API is mentioned in the high quality discussions. Using this measure, we propose some metrics. Next,through mining popular open source projects, we statistically analyze how much our proposed metrics are correlated to defects occurred in software. We further analyze the effect of these metrics on explanatory and predictive power of defect prediction models.
- Keywords:
- Defect Prediction ; Stack Overflow Websites ; Debugging ; Question-Answer Sites ; Crowd Knowledge ; Application Programming Interfaces (API)
-
محتواي کتاب
- view
- مقدمه
- پیشبینی خطا با استفاده از دانش جمعی
- تعریف مسئله
- نوآوریهای رساله
- معرفی ساختار رساله
- پیشزمینه
- مقدمه
- پیشزمینههای مهندسی نرمافزار
- پیشبینی خطا
- API
- درخت نحوی انتزاعی
- گرامرهای جزیرهای
- پیشزمینههای ریاضیاتی، آماری و یادگیری ماشین
- آنتروپی
- هبستگی
- توضیح انحراف
- کاهش بعد
- روشهای ارزیابی مدل یادگیری ماشین
- جمعبندی
- مروری بر کارهای مرتبط پیشین
- مقدمه
- رویکردهای مبتنی بر کد
- رویکردهای مبتنی بر تغییرات کد
- پیشبینی خطا با استفاده از فعالیتهای توسعهدهندگان
- رویکردهای مبتنی بر تحلیل شبکه
- رویکردهای مبتنی بر مدلسازی موضوع
- پیشبینی خطا با استفاده از ساختارهای کد و کتابخانهها
- پیشبینی خطا به صورت بین پروژهای
- پیشبینی خطا به صورت درلحظه
- مطالعات مرتبط با دستهبندهای پیشبینی خطا
- پیشبینی خطاهای مرتبط با API
- استفاده از دانش جمعسپاریشده در وبگاههای پرسشوپاسخ
- سایر مطالعات مرتبط با پژوهش
- کشف چالشهای توسعهدهندگان با استفاده از وبگاههای پرسشوپاسخ
- تحلیل نوع و ارزش مباحث موجود در وبگاههای پرسشوپاسخ
- طبقهبندی مطالعات پیشین
- جمعبندی
- پیشبینی خطا با استفاده از دانش جمعی
- مقدمه
- انگیزه
- مدلسازی دانش جمعی
- تجزیه مباحث
- شناسایی APIهای مورد بحث
- اندازهگیری میزان چالش API
- متریکهای مبتنی بر دانش جمعی
- جمعبندی
- ارزیابی
- مقدمه
- پرسشهای پژوهشی
- راهاندازی ارزیابی
- پروژههای مورد مطالعه
- مجموعهداده Stack Overflow
- پردازش داده
- نتایج ارزیابی
- تحلیل سنجههای کیفی Stack Overflow
- پرسش پژوهشی اول
- پرسش پژوهشی دوم
- پرسش پژوهشی سوم
- تحلیل کیفی چالش API
- تحلیل و بحث
- تهدیدهای صحت پژوهش
- صحت خارجی
- صحت داخلی
- صحت ساختاری
- نقاط قوت و ضعف رویکرد ارائهشده
- نتیجهگیری و کارهای آتی
- مراجع
- واژهنامه
- اختصارات
