1-1 مقدمه
تکنيک ها و متريک هاي بسياري براي بررسي ماژول هاي مستعد خطا[1] در يک نرم افزار وجود دارند که مي توانند به توسعه دهندگان در انجام تست هاي مختلف در طول توسعه نرم افزار کمک کنند. البته با توجه به افزايش روز افزون پيچيدگي و محدوديت هاي توسعه، توليد نرم افزارهاي بدون خطا، تقريباً غير ممکن است. چنين خطاهايي مي توانند باعث کاهش شديد رضايت مشتري شوند [Koru05].
بنابراين تخمين کيفيت نرم افزار بر اساس تعداد و نوع ماژول مستعد خطا، مسئله چالش برانگيز و مشکل مي باشد [Gupta10، Suri13]، به ويژه زماني که اطلاعات محدودي در خصوص کيفيت اين نرم افزار در دست باشد [Zhong04]. در مسئله تخمين کيفيت نرم افزار، يک کلاسبند کيفيت نرم افزار[2] [Khoshgoftaar03، Ohlsson02]يا يک مدل تخمين خطاي نرم افزاري[3] [Khoshgoftaar02]، آموزش داده ميشود. اين آموزش، بر اساس سنجش هاي نرم افزاري (به عنوان ويژگي ها[4]) و داده هاي خطا (به عنوان برچسب ها[5])، از يک يا چند سيستم نرم افزاري قديمي تر که شباهت قابل توجهي به سيستم نرم افزاري هدف (نرم افزاري که قصد توسعه آن را داريم)، صورت مي گيرد. اين نوع يادگيري را يادگيري نظارت شده[6] مي نامند. ولي در بسياري از سيستم هاي نرم افزاري هدف، هيچ سيستم مشابه ديگري وجود ندارد و يا اگر هم وجود داشته باشد، هيچ تخميني از خطاهاي مختلف آن وجود ندارد.
در اينجا با يک سيستم يادگيري بدون ناظر[7] مواجه هستيم که به آن خوشه بندي[8]مي گويند. خوشه بندي، يک تکنيک پايه در بسياري از الگوريتم هاي مدل سازي مي باشد. هدف خوشه بندي ايجاد مجموعه هاي جديد داده ها، از يک مجموعه بزرگ مي باشد [Zhong04]. گام هاي اساسي جهت انجام يک خوشه بندي را مي توان به صورت زير بيان کرد [Theodoridis09]:
-
انتخاب ويژگي[9]: هدف ما از خوشه بندي ماژول هاي نرم افزاري، قرار دادن آنها در دو گروه (خوشه) مستعد خطا و غير مستعد خطا مي باشد. بنابراين مشخص کردن مجموعه ويژگي ها (متريک ها) جهت ارزيابي و خوشه بندي ، اولين گام در يک فرآيند خوشه بندي مي باشد.
به مجموعه ويژگي هاي يک ماژول نرم افزاري، يک بردار ويژگي گفته مي شود. ويژگي هاي انتخاب شده تا حد امکان بايد کمترين افزونگي را داشته و بيشترين اطلاعات را در خصوص ماژول مورد نظر در اختيار ما قرار دهد. از جمله اين ويژگي ها براي يک ماژول نرم افزاري مي توان به تعداد خط کدها، تعداد فرزندان ، تعداد والدين، تعداد متدهاي عمومي و خصوصي و غيره [sherif13] اشاره کرد.
-
معيار مجاورت[10]: اين معيار، ميزان شباهت[11]يا عدم شباهت[12]، ميان دو بردار ويژگي را مشخص مي کند.
-
خوشه بندي[13]: بعد از مشخص کردن معيارهاي مجاورت و خوشه بندي، از يک الگوريتم جهت اجراي ارزيابي مجاورت بردارهاي ويژگي بر اساس معيار مجاورت و نيز تخصيص اين بردارهاي ويژگي به خوشه هاي مختلف بر اساس معيار خوشه بندي، استفاده مي شود. بيشترين تلاشها در حوزه ي ارزيابي کيفيت نرم افزار با استفاده از تکنيک هاي خوشه بندي، در حوزه طراحي الگوريتم هاي خوشه بندي کارآمد و دقيق صورت مي گيرد.
-
اعتبار سنجي نتايج[14]: بعد از اتمام الگوريتم خوشه بندي، بايد ميزان دقت و صحت خوشه بندي ها را ارزيابي کنيم. اين کار از طريق تست هاي مناسب انجام مي گيرد.