یکی چالش بر انگیزترین موضوعات مطرح در تضمین کیفیت[1]، در شرکتهای سازنده نرم افزار، موضوع رفع خطاهای نرم افزار است. خطاهای نرم افزاری میتوانند در زمان پیش و یا پس از انتشار[2] نرم افزار تشخیص داده شوند. اما منابعی که میتوان برای تشخیص و تصحیح خطاها در نظر گرفت محدود است (Kamyabi et al.).
خطاها را میتوان به دو دسته کلی تقسیم کرد. خطاهای نحوی[3] و خطاهای مفهومی[4]. با توجه بهاین که ابزارهای خودکار بسیار قدرتمندی برای تشخیص خطاهای نحوی وجود دارند، احتمالاین که خطایی ازاین دست تا زمان انتشار تشخیص داده نشود، بسیار کم است. خطاهای مفهومی به آن دسته از خطاها اشاره دارد که در اثر مشکلاتی جدای از اشتباهات نحوی و خطاهای انسانی ملموس اتفاق میافتند و معمولاً در اثر عدم هماهنگی در بخشهای مختلف کد و گاهی به صورت بسیار ناملموس به وجود میآیند که در اینجا به سادگی نمیتوان با بررسی کد، اینگونه خطاها را تشخیص داد. بنا بر این در مورد خطاهای مفهومی داستان فرق میکند چرا که عوامل بسیار زیادی میتوانند در بروزاینگونه از خطاها دخیل باشند. (Zimmermann & Nagappan, 2008) بنا براین همواره سعی شده است که با اندازه گیری معیارهای[5] مختلف و استفاده از آنها در روشهای پیشبینی خودکار خطا، سرعت و دقت را در امر تست نرم افزار افزایش دهند. طی تحقیقاتی که تا کنون صورت گرفته، متداولترین معیارهای استفاده شده در پیشبینی اتوماتیک خطا، معیارهای پیچیدگی[6] است. (Zimmermann & Nagappan, 2008) اما جدیدترین روشی که مطرح شده است، مسأله مربوط به وابستگیهای بین کلاسها[7] و همچنین بین ماژولها میباشد. انواع وابستگیها میتوانند بین دو کلاس و یا دو ماژول[8] مطرح شوند که تحقیقات نشان داده است که این وابستگیها ارتباط بسیار زیادی با وجود خطاهای مفهومی دارند.
برای اجرای روشمند و علمی روند یافتن روابط و الگوهای مناسب برای پیش بینی خطا بر اساس معیارهای قابل اندازه گیری، از مفهومی به نام دادهکاوی استفاده خواهیم کرد که در تشریح و بیان مسأله به آن خواهیم پرداخت.
دراین پایان نامه، سعی میکنیم که به بررسی چنین وابستگیهایی بپردازیم و بر اساس روابط موجود بین وابستگی و وجود خطا در نرم افزار، وجود خطا در کد را پیش بینی نماییم.
در ادامه این رساله در بخش دوم به بررسی تحقیقات قبلی انجام شده در این زمینه میپردازیم، در بخش سوم به بیان انگیزش و نحوه به وجود آمدن ایده کار شده در این رساله میپردازیم، در بخش چهارم فرضیات مورد بررسی را مطرح میکنیم، در بخش پنجم دادهها و
ابزارهای جمع آوری شده برای انجام عملی آزمایشات را معرفی میکنیم، در بخش ششم به بیان شیوه و نوع آزمایشات و بیان نتایج آنالیزها و نتایج میپردازیم و در بخش هفتم و پایانی این رساله سعی در نتیجهگیری از آزمایشات انجام شده خواهیم داشت.
2- پیشینه پژوهشی:
تلاشهای گذشته با هدف پیشبینی خطا را در سه گروه مورد بررسی قرار میدهیم: معیارهای نرمافزار[9]، معیارهای وابستگی[10] و معیارهای تاریخی[11]. ابتدا به بیان توضیحی در مورد شیوه کار کردن این معیارها میپردازیم.
2-1- معیارهای نرمافزار:
معیارهای نرمافزار برای اندازهگیری درجه پیشرفته بودن یک محصول و یا یک فرآیند نرمافزاری به کار میروند. معیارهای نرمافزاری به چندین گروه تقسیم میشوند: معیارهای محصول[12]، معیارهای فرآیند[13]، معیارهای پروژه[14] و معیارهای منبع[15]. معیارهای نرمافزاری که در پیشبینی خطا به کار میروند معیارهای محصول میباشند که از مشخصات کد سیستم نرمافزاری استخراج میشوند. این معیارها به سه گروه تقسیم میشوند: معیارهای اندازه[16]، معیارهای پیچیدگی[17] و معیارهای کیفیت[18]. (Mills, 1988) معیارهای اندازه بر اساس تعداد خطوط کد برنامه محاسبه میشوند مانند تعداد کل خطوط برنامه[19]، تعداد خطوط توضیحات[20] و … معیارهای میزان نگهداشتپذیری[21] و قابلیت تست برنامه وابسته است از جمله معروفترین معیارهای پیچیدگی معیارهای پیچیدگی مک کیب[22] و معیارهای هالستد[23] میباشند. معیارهای مککیب پیچیدگی کد را بر اساس تعداد مسیرهای کنترلی محاسبه مینماید. (McCabe, 1976) هالستد معیارهای خود را بر اساس ارتباطات ریاضی بین اجزای کد، پیچیدگی کد و نوع زبان برنامه نویسی مطرح کرد. (Halstead M. H., 1975) معیارهای اتصال[24] و پیوستگی[25] از معروفترین معیارهای کیفیت میباشند که بالا و یا پایین بودن اندازه این دو معیار نشان دهنده کیفیت محصول و یا فرآیند نرمافزاری است. (Pressman, 1982) معیارهای کیفیت معیارهایی میباشند که درجه آنها میتواند تولیدکنندگان نرمافزار را در مورد توانایی دست کار کردن سیستمشان مطمئن سازد.
2-2- معیارهای وابستگی:
معیارهای وابستگی معیارهایی هستند که بر اساس ارتباط اجزای کد نرمافزار محاسبه میشوند. این ارتباط میتواند بین سطوح مختلف کد مطرح شود مانند سطح فایل، کلاس، تابع … نوع ارتباط و یا به عبارت دیگر وابستگی موجود بین اجزای کد نیز میتواند متفاوت باشد مانند وابستگی داده[26] که بر اساس تعریف و استفاده از داده میباشد و یا وابستگی صدا زدن[27] که بر اساس تعریف و صدا زدن مؤلفهها میباشد. (Zimmermann, 2008 & Nagappan )
2-3- معیارهای تاریخی:
این دسته از معیارهای بر اساس تغییراتی که در بین چندین انتشار[28] مختلف از یک سیستم نرمافزاری رخ میدهد تعریف میشوند. این تغییرات میتوانند اضافه شدن، حذف شدن، تغییر یافتن مؤلفههای جز مربوطه در بین چندین انتشار باشند. محدودیتی که در به کار بردن این معیارها وجود دارد این است که محاسبه این معیارهای تنها برای محصولات نرمافزاری مقدور میباشد که دارای چندین انتشار باشند و همچنین اطلاعات کامل در مورد انتشارات قبلی موجود باشد.
1 quality assurance
2 release
3 syntax errors
4 semantic defects
5 measures
6 complexity metrics
7 classes
8 module
software metrics[9]
dependency metrics[10]
historical metrics[11]
product metrics[12]
process metrics[13]
project metrics[14]
resource metrics[15]
size metrics[16]
complexity metrics[17]
quality metrics[18]
total line of code[19]
line of code comment[20]
maintainability[21]
McCabe metrics[22]
Halstead metrics[23]
coupling[24]
cohesion[25]
data dependency[26]
call dependency[27]
release[28]
***ممکن است هنگام انتقال از فایل اصلی به داخل سایت بعضی متون به هم بریزد یا بعضی نمادها و اشکال درج نشود ولی در فایل دانلودی همه چیز مرتب و کامل و با فرمت ورد موجود است***
متن کامل را می توانید دانلود نمائید
چون فقط تکه هایی از متن پایان نامه در این صفحه درج شده (به طور نمونه)
ولی در فایل دانلودی متن کامل پایان نامه
با فرمت ورد word که قابل ویرایش و کپی کردن می باشند
موجود است