بخشی از مقاله
*** این فایل شامل تعدادی فرمول می باشد و در سایت قابل نمایش نیست ***
پیش بینی میزان تلاش توسعه نرم افزار با استفاده از شبکه عصبی و تبدیل موجک
چکیده1
امروزه نیاز به نرم افزار به طور گسترده اي افزایش و تکنولوژیهاي نرم افزاري مدرن به سرعت در حال رشد هستند.بنابراین برنامه ریزي و مدیریت پروژه هاي نرم افزاري از اهمیت بیشتري نسبت به گذشته برخوردار است.برنامه ریزي نامناسب پروژه هاي نرم افزاري یکی از دلایل اصلی شکست پروژه ها در سالهاي اخیر بوده است.یکی از مهمترین فعالیت ها در پروژه هاي نرم افزاري برآورد منابع موردنیاز در مراحل اولیه پروژه است. میزان تلاش لازم براي توسعه نرم افزار و اندازه نرم افزار از معیارهاي مهم در این زمینه هستند. در این مقاله به منظور بالا بردن دقت پیش بینی میزان تلاش نرم افزار از ترکیب شبکه عصبی و تبدیل موجک استفاده می کنیم . بدین منظور از تبدیل موجک گسسته مادر3 "هار" براي نرمالیزه کردن داده ها به منظور کاهش سطح نویز داده ها استفاده می کنیم و سپس بوسیله شبکه عصبی پرسپترون چند لایه 4 و با داده هاي نرمال شده میزان تلاش توسعه نرم افزار پیش بینی می شود. در نهایت نتایج با مدل کوکومو5 مقایسه می شود. نتایج نشان میدهد که استفاده از شبکه ترکیبی مورد اشاره باعث بهبود دقت پیش بینی تلاش نرم افزار نسبت به مدل کوکومو می شود.
کلید واژه : تبدیل موجک ، شبکه عصبی ، پیش بینی ، کوکومو ،تلاش نرم افزار
-1 مقدمه
توسعه نرم افزار یکی از مهمترین فعالیت هاي بسیاري از سازمان هاي مدرن شده است. در واقع کیفیت ، هزینه و به هنگام بودن نرم افزار توسعه یافته ، یکی از عوامل حیاتی در موفقیت سازمان ها است. برآورد هزینه و زمان توسعه نرم افزار یکی از مهمترین وظایف در مدیریت پروژه هاي نرم افزاري است. تحقیقاتی در زمینه برآورد منابع نرم افزاري انجام گرفته است. ازآن جمله تحقیق خوش گفتار(6(2004 است . تحقیقی که انجام داد بیانگر این بود که تخمین دقیق هزینه ها در مراحل اولیه توسعه ، لازم است و با پیچیده تر شدن پروژه ، هزینه هاي توسعه به طور چشم گیري افزایش می یابد .2کیچنهام و همکاران 7(2003) در مورد مشکل عمده توسعه نرم افزاریعنی برآورد اندازه نرم افزار تحقیق کردند .یکی از مهمترین اهداف انجمن مهندسین نرم افزار پیداکردن مدل مناسب براي توسعه نرم افزار و بالا بردن دقت پیش بینی تلاش نرم افزار است.پیش بینی تلاش موردنیاز براي توسعه نرم افزار یکی از مهمترین عوامل براي سودآور بودن پروژه هاي نرم افزاري است.برآورد تلاش توسعه می تواند شامل فعالیت هاي ارزیابی و پیش بینی سیستم مدیریت کیفیت ،اندازه گیري عملکرد سیستم ،برآورد رضایت کاربر و در واقع هر کار مدل سازي مربوط به اندازه گیري ویژگی هاي موردتوجه در توسعه نرم افزار باشد.(Gray,1999)3گري(8(1999 تخمین تلاش نرم افزار را براي برآورد میزان نیروي انسانی موردنیاز براي پروژه را حیاتی اعلام کرده است.این تخمین ،تخصیص پرسنل و هم چنین برنامه ریزي براي پروژه نرم افزاري را مشخص می کند از این رو در مدیریت پروژه هاي نرم افزاري مهم و مورد توجه است.معمولترین متد استفاده شده براي پیش بینی تلاش توسعه نرم افزار برپایه رگرسیون خطی حداقل مربعات مانند کوکومو است. گري((1999 اعلام کرد مدلهاي تخمین هزینه نرم افزار زمانی مورد قبول واقع می شوند که پیش بینی با حداکثر %25 خطا نسبت به مقدار واقعی باشند. یعنی در %75 موارد باید پیش بینی صحیح باشد.همیشه دامنه اي براي توسعه مدلهاي پیش بینی هزینه با دقت بیشتر وجود دارد. استفاده از مجموعه داده هاي موجود و بررسی عملکرد آنها باعث موفقیت هایی شده است گري و مک دانل 9(1997) مدل هاي جایگزین شامل شبکه هاي عصبی مصنوعی واستدلال مبتنی بر قیاس ،درختان رگرسیون و مدل القاي حاکمیت واستفاده از منطق فازي را براي برآورد تلاش نرم افزار بکار بردند .در مقایسه اي که بین روش منطق فازي و روشهاي دیگر مانند رگرسیون خطی به عمل آمده است نشان داده شده است که منطق فازي به نتایج بهتري در پیش بینی منجر می شود. (17) خوش گفتار((2004 یک روش نوآورانه شناسایی فازي را براي برآورد هزینه نرم افزار ارائه داد که یک تکنیک منطق فازي پیشرفته بود که از ادغام خوشه بندي فازي، طرح ریزي فضا ،استنباط فازي و غیرفازي سازي به وجود آمده بود.براساس نتایج حاصل از این روش بر روي مجموعه داده هاي کوکومو81 مشاهده شد که مدل شناسایی فازي ،برآورد هزینه دقیقتري نسبت به سه مدل دیگر کوکومو یعنی مدل هاي (پایه و متوسط و پیشرفته ) دارد.خیلی از محققان شبکه هاي عصبی را براي برآورد تلاش نرم افزار بکار برده اند.ادري و همکاران .10(2002) تحقیقی در زمینه برآورد تلاش نرم افزار با استفاده از شبکه هاي عصبی و قوانین فازي if – then بر روي مجموعه داده هاي کوکومو81 انجام دادند و نتایج مقایسه نشان داد که شبکه هاي عصبی باعث بهبود دقت می شوند(.(9 استفاده از برآورد تلاش نرم افزار با استفاده از قیاس در مطالعات متعددي مورد بررسی و تاکید قرار گرفته است . چین و هنگ .11(2007) قیاس مبتنی بر تنظیم نرم افزار را براي برآورد تلاش نرم افزار بر پایه فاصله تشابه بین جفت پروزه ها به کار بردند . نتایج نشان میدهد که با استفاده از تنظیم تلاش براي قیاس مبتنی بر برآورد تلاش نرم افزاربه رویکردي با بهبود بیشتر دقت می رسیم . باقیمانده این مقاله بدین صورت سازماندهی شده است: در بخش دوم شبکه عصبی بکار گرفته به صورت اجمالی توصیف می شود. بخش سوم معرفی تبدیل موجک می باشد.بخش 4 معرفی مدل کوکومو بخش 5 آموزش شبکه عصبی را توضیح می دهد . بخش 6 مجموعه داده هاي استفاده شده را توضیح میدهد. بخش 7 ارائه روش ترکیبی پیشنهادي است بخش 8 نتایج بدست آمده را با مدل کوکومومقایسه می کند. بخش 9 نتیجه گیري و کارهاي بیشتر در این زمینه است . 4
-2 شبکه عصبی پرسپترون چند لایه (MLP)
شبکه عصبی پرسپترون چند لایه نوعی از شبکه هاي عصبی رو به جلو feed- forward) )است که ازالگوریتم آموزشی استاندارد پس انتشار خطا استفاده می کند . (20) این شبکه ي عصبی از یک لایه ورودي و یک یا چند لایه پنهان و یک لایه خروجی تشکیل شده است . در این ساختار تمام نرون هاي یک لایه به تمام نرون هاي لایه بعد متصلند . این چیدمان اصطلاحا یک شبکه با اتصالات کامل را تشکیل می دهد . این شبکه به گونه اي آموزش داده می شوند که تا حد امکان خروجی را به گونه اي پیش بینی کنند که کمترین تفاوت را با خروجی واقعی داشته باشد. به گونه اي که خطاي پیش بینی را تا حد امکان کاهش دهند.
– 3 تبدیل موجک
کلمه موجک توسط مورلت و گراسمان 12(1984) مطرح شد . موجک یک کلاس از توابع است که قابل تجزیه در دو حوزه فضا و فرکانس است و داراي مزایایی نسبت به روشهاي سنتی فوریه در تجزیه و تحلیل شرایط فیزیکی که در آن سیگنالها حاوي ناپیوستگی هستند ، است. موجک ها بطور مستقل در زمینه ریاضیات و فیزیک کوانتوم و مهندسی برق و زمین شناسی استفاده می شوند . مبادلات بین این زمینه ها در چند سال گذشته به بسیاري از برنامه هاي کاربردي جدید مانند فشرده سازي صدا و تصویرمنجر شده است .(11)خانواده اي از موجک ها را می توان از تجزیه و تحلیل یک موجک مادر بدست آورد .شبکه عصبی موجک13WNN با ترکیب ویژگی نرمال سازي موجک ها و ویژگی یادگیري شبکه هاي عصبی می تواند درحل بسیاري از موارد و مسائل به نتایج بهتري منجر شود.بسرا و همکاران 14(2005) مفهوم تابع موجک "مادر"را مطرح کردند که قابل تجزیه به دو حوزه فضا و فرکانس است .و بقیه موجک ها را می توان از تجزیه موجک مادر بدست آورد. برپایه تئوري موجک ، شبکه عصبی موجک (WNN) یک ابزار جهانی براي هر تقریب تابعی می باشد.در شکل 1 نمونه اي از موجک مادر "ھار" نشان داده شده است.
شکل١- ساختار موجک مادر "ھار"
شبکه عصبی که در این مقاله در نظر گرفته شده است شامل 4 لایه است . دو لایه پنهان و یک لایه خرو جی . هر نرون در هر لایه به تمام نرون هاي دیگر در لایه بعدي متصل است . لایه خروجی شامل تنها یک نرون است . برپایه استفاده از مفهوم فعالسازي در لایه هاي پنهان ، الگوریتم یادگیري براي شبکه هاي عصبی اینگونه است : (10)
1. انتخاب تعداد لایه ها ي پنهان .
2. تعداد نرون ها در هر لایه پنهان .
3. دادن یک وزن تصادفی بین 0)و(1 به اتصالات بین لایه هاي ورودي و لایه هاي پنهان و اتصالات بین لایه هاي پنهان و لایه خروجی
شکل ٢- ساختار یک شبکه پرسپترون چند لایه با دو لایه پنهان
-4 مدل COCOMO
این مدل توسط بوهم 514(1981) ارائه شد و محبوبترین روش در بین روشهاي الگوریتمی است .در این روش با استفاده از برخی معادلات بر روي پارامترهایی که در پروژه هاي نرم افزاري موثرند ، تلاش نرم افزار برآورد می شود((3
.کوکومو 15 2جدیدترین نسخه از کوکومواست که براي پیش بینی تلاش (تعداد نفر در ماه ) در پروژه هاي نرم افزاري استفاده می شود.که این کار را با استفاده از تعداد خطوط کد برنامه به عنوان معیاري از اندازه پروژه و ضرب 17 پارامتر موثر در تلاش و 5 فاکتور مقیاس به عنوان ورودي انجام میدهد(.(4داراي سه سطح رتبه بندي نرمال ، بالا و خیلی بالاست و هرسطحی با توجه به ارزشش وزنی را به خود اختصاص می دهد . داراي ویژگیهاي خاصی است که آنرا متمایزتر از دیگر روشها می کند بدین ترتیب به منظور برآورد تلاش روش بسیار متداولی است و نتایج آن معمولا دقیق است .
- 5 آموزش و یادگیري شبکه عصبی
مرحله :1 نرمال کردن داده هاي ورودي بین 0)و(1 توسط یکی از موجک ها به نام موجک مادر "هار ".
مرحله : 2 انتخاب لایه هاي پنهان در شبکه عصبی که شبکه عصبی مورد استفاده ما داراي دو لایه پنهان که شامل 10 نرون در لایه پنهان اول و 5 نرون در لایه پنهان دوم است می باشد.مرحله :3 تقسیم داده ها به دوقسمت % 70 اموزشی و %30 تست. شبکه عصبی پرسپترون با داده اي آموزشی آموزش داده می شود تا خروجی مطلوب و موردنظر مارا پیش بینی کند و سپس با %30 باقیمانده داده ها تست می شود که ببینیم این پیش بینی را با چه درصد خطایی انجام میدهد . قبل از نرمال سازي داده ها و بعد از نرمال سازي داده ها.
مرحله :4 محاسبه مقدار خروجی
- 6 توصیف مجموعه داده ها
داده هاي مورد استفاده در این تحقیق ، مجموعه داده کوکومو81 است که شامل اطلاعات 63 پروژه ، است .در این مجموعه داده با استفاده از 15 پارامتر موثر بر روي تلاش نرم افزار و اندازه پروژه به عنوان ورودي ، خروجی را که همان تلاش نرم افزار است محاسبه می کند. که هر چه این براورد با خطاي کمتري انجام شود قابل اطمینان تر است.
- 7 متدولوژي
ابتدا ، نرمال سازي داده ها بین 1]و[ 0 ، یک بار بر روي داده ها قبل از نرمال سازي توسط تبدیل موجک انجام می شود . و در مرحله اي دیگر ، نرمال سازي بر روي داده ها بعد از نرمال سازي توسط تبدیل موجک انجام می شود . در این مرحله داده ها براي دادن به شبکه عصبی آماده شده اند. بدین منظور شبکه عصبی ، باید آموزش ببیند و سپس تست شود . این عمل یک بار با داده هاي نرمال شده قبل از تبدیل موجک و یک بار هم با داده هاي نرم6ال شده بعد از تبدیل موجک انجام می شود و سپس نتایج با یکدیگر مقایسه می شوند براي مشخص شدن راه حلی که به خطاي کمتري در پیش بینی منجر می شود.در ادبیات شبکه عصبی به جاي اصطلاح تخمین ضرائب از اصطلاح یادگیري یا آموزش براي پیداکردن ارزش هاي وزن هاي شبکه استفاده می شود. هدف کمینه کردن مجموع مربعات خطا یعنی اختلاف میان ارزش هاي خروجی واقعی و خروجی پردازش شده از شبکه عصبی می باشد. بدین منظور در این تحقیق داده ها را به دو مجموعه ي زیر تقسیم می کنند
-1آموزش : (train)16 الگوسازي و شبیه سازي ( %70 داده ها را شامل می شود.) -2آزمون(: 17 (test پیش بینی %30) داده ها را شامل می شود.)
ابتدا شبکه عصبی با %70 داده ها آموزش داده می شود تا خروجی مطلوب و موردنظر مارا پیش بینی کند و سپس با %30 باقیمانده داده ها تست می شود که ببینیم این پیش بینی را با چه درصد خطایی انجام میدهد که هر چه این خطا کمتر باشد دقت پیش بینی ما افزون تر خواهد بود.معیاري ،که براي مقایسه درصد خطا در نظر گرفته شده است ،عبارت از میانگین خطاي نسبی18 است که از فرمول زیر بدست می آید . بطور کلی مقدار قابل قبول براي MMRE زیر % 25 است که بطور متوسط دقت مدلهاي برآورد کمتر از %25 خواهد بود.