بخشی از مقاله
چکیده
توسعه چابک نرمافزار یا توسعه نرمافزاری چابک گروهی از متدهای توسعه نرمافزار مبتنی بر تکرار و به شکل تدریجی است که در آنها، راهحلها از طریق خودسازماندهی و همکاری بین تیمهای مختلف کاری، انجام میشوند. یک امر ضروری در مراحل اولیه پروژه، برآورد هزینه، زمان و فعالیت لازم برای تکمیل پروژه است. اغلب پروژههای نرم افزاری دچار مشکل کمبود مالی و زمان می شوند که یکی از دلایل آن برآوردهای اولیه اشتباه میباشد. تخمین دقیق پروژههای نرمافزاری چابک هستند که بتوان با این روشها، هم برای ارایه دهندهی خدمات و هم برای مشتری یک رابطه کاری امن و بدور از اختلاف ایجاد کرد. پایگاه دادهی این شبیه سازی از پایگاه دادههای سمینار بین المللی تخمین هزینههای نرمافزاری انتخاب شده است.
یادگیری ماشین استفاده شده برای کلاسبندی دادهها، ترکیب ماشین بردار پشتیبان و آدابوست است. نتایج بدست آمده از این روش، که آزمایش روی ماشین بردار پشتیبان کرنل درجه دوم و پرسپترون چند لایه، موجب بهبود تشخیص %20 و %41 گشته است. قابل ذکر است که دادهها برای تمامی ماشین بردار پشتیبان ها یکسان بود. از طرفی در مقایسه با روشهای قبلی، نتایج شبیهسازی نشان دهندهی بهبود %8 ای در صحت تخمین هزینههای نرمافزاری میباشد.
کلمات کلیدی تخمین هزینه های نرم افزاری، یادگیری ماشین، ماشین بردار پشتیبان، آدابوست، توسعه نرم افزار.
مقدمه
تخمین دقیق هزینهی نرمافزارها و تخمین زمان و برنامهریزی برای تولید پروژههای نرمافزاری، کمک بسیار ارزشمندی برای برخی از تصمیم-گیریهای مدیریتی شرکتهای تولید کنندهی نرمافزار، مشخص کردن بودجه و تعداد پرسنل برای انجام پروژههای نرمافزاری میکند . در واقع زمانی که مشتری و یا به خصوص سازمانی برای اولین بار درخواست نرمافزار میکند، باید اطلاعات احتمالاتی از هزینه های نرمافزار در حال تولید داشته باشد. برای همین مهمترین نیازی که در تولید نرمافزارهای چابک باید مد نظر باشد، تخمین اولیه هزینهی نرمافزار میباشد.
برای انجام یک پروژه نرمافزاری خاص، نمیتوان هزینه این پروژه را با استفاده از عوامل بیرونی کاهش داد، ولی میتوان با استفاده از تخمین نیازهای ممکن و هزینههای ممکن، از افزایش بیمورد این هزینه جلوگیری کرد. در این پایاننامه تلاش میکنیم تا یک روش دقیقتر برای تخمین هزینههای نرمافزاری ارایه دهیم تا بتوانیم در انجام پروژههای نرمافزاری، کاری دقیق انجام دهیم که از احتمال شکستهای بعدی جلوگیری کنیم.
متاسفانه تخمین هزینه های نرم افزاری یکی از مشکلترین کارها در حوزه فناوری اطلاعات است . اغلب پروژههای نرمافزاری دچار مشکل کمبود مالی و زمان می شوند که یکی از دلایل آن برآوردهای اولیه اشتباه میباشد. برای رسیدن به این پیش بینی می توان از الگوریتم های یادگیری ماشین که در اینجا ترکیبی از ماشین بردار پشتیبان و آدابوست است، استفاده کرد. در این مقاله سعی خواهد شد با استفاده از الگوریتمهای هوش مصنوعی - که در این پایاننامه از ابزارهای یادگیری ماشین استفاده شده است - که ترکیب ماشین بردار پشتیبان و آدابوست است، روشی را ارایه کنیم که بتوان تخمینی نزدیک به هزینههای نرمافزارهای چابک داشته باشیم.
در ادامهی این مقاله راهکار پیشنهادی برای حل مسئله تخمین هزینه های نرمافزاری با ارائه تخمین هزینههای نرمافزاری با استفاده از ترکیب ماشین بردار پشتیبان و آدابوست به همراه نتایج شبیهسازی به تفصیل توضیح داده میشود و نتیجهگیری کلی از این مقاله ارائه میشود.
پیش زمینه
به معیارهای دیگری، تغییر داده و کلاسبندی جدیدی را اعمال می-کند.با توجه به این روش کلاسبندی قویتری به دست میآید که به نام آدابوست مشهور است. طبق فرمول وزندهی آدابوست - فرمول - 1، k ها دادههای کلاس-بندی ما میباشند، ها هم ضریبی برای کنترل مقدار کلاسبندی هریک از دادهها در کلاسبندی محسوب میشوند. C نیز مدل بدست آمده از آدابوست ما برای تشخیص شی میباشد.در واقع ایده اصلی الگوریتم آدابوست این است که یک سری کلا-بندهای ضعیف را با وزندهی و کلاسبندی مجدد به یک کلاسبند قوی تبدیل میکند.
آدابوست - بالا بردن تطبیقی - یک الگوریتم یادگیری ماشین است که میتواند به تنهایی و یا همراه با دیگر الگوریتمهای یادگیری، به منظور بهبود عملکرد آنها، استفاده شود. ایدهی کلی آدابوست این است که یک کلاسبند ضعیف وجود دارد که هر کدام میتواند برای تشخیص ویژگی خاص تنها با میزان کمی بیش از %50 موفقیت، عمل کند. کلاسبندی توزیع وزن از همه بیشتر به عملکرد آنها بستگی دارد. کلاسبندی آدابوست بسیار مناسب برای تشخیص شی است، و پیاده سازی ساده و سریع و راحتی دارد.
ماشین بردار پشتیبان
ماشین بردار پشتیبان یک کلاسبند دودویی خطی است، در واقع یکی از روشهای یادگیری با نظارت است که از آن برای طبقهبندی و رگرسیون استفاده میشود. این روش از جملهی روش ها ینسبتاً جدیدی است که در سالهای اخیر کارایی خوبی نسبت به روشهای قدیمیتر برای طبقهبندی از جمله شبکههای عصبی پرسپترون نشان داده است. مبنای کاری دستهبندی کنندهی ماشین بردار پشتیبان دسته بندی خطی دادهها است و در تقسیم خطی دادهها سعی میکنیم خطی را انتخاب کنیم که حاشیه اطمینان بیشتری داشته باشد.
حل معادله پیدا کردن خط بهینه برای دادهها به وسیله روشهای QP که روشهای شناخته شدهای در حل مسائل محدودیتدار هستند صورت میگیرد. همچنین ما از ماشین بردار پشتیبان به عنوان یک کلاسبند برای تخمین هزینههای نرمافزاری استفاده میکنیم. در این بخش به معرفی برخی از مفاهیم اساسی و پیشرفتهتر از ماشین بردار پشتیبان میپردازیم. دو مجموعه داده با نقاط ویژگی متفاوت از هم را در نظر بگیریم. ایده اصلی ماشین بردار پشتیبان خطی، جدا کردن نقاط با ویژگیهای یکسان از نقاط دیگر است، در واقع، منظور، جدا کردن این دو مجموعه از نقاط از یکدیگر با استفاده از یک ابر صفحه یا ابر خط است. این ابر صفحه حداکثر حاشیه به نزدیکترین نقاط از هر دو مجموعه است.نمونه ای از این مثال دو بعدی در شکل 2-2 نشان داده شده است.
در مواردی که نتوان دادهها را با یک ابر صفحه از هم جدا کرد، میتوان، ماشین بردار پشتیبان را به ماشین بردار پشتیبان غیر خطی گسترش داده است الگوریتم ماشین بردار پشتیبان، جز الگوریتمهای تشخیص الگو دسته بندی می شود. از الگوریتم ماشین بردار پشتیبان، در هر جایی که نیاز به تشخیص الگو یا دسته بندی اشیا در کلاس های خاص باشد میتوان استفاده کرد.
سیستم آنالیز ریسک، کنترل هواپیما بدون خلبان، ردیابی انحراف هواپیما، شبیهسازی مسیر، سیستم راهنمایی اتوماتیک اتومبیل، سیستمهای بازرسی کیفیت، آنالیز کیفیت جوشکاری، پیشبینی کیفیت، آنالیز کیفیت کامپیوتر، آنالیز عملیاتهای آسیاب، آنالیز طراحی محصول شیمیایی، آنالیز نگهداری ماشین، پیشنهاد پروژه، مدیریت و برنامهریزی، کنترل سیستم فرایند شیمیایی و دینامیکی، طراحی اعضای مصنوعی، بهینهسازی زمان پیوند اعضا، کاهش هزینه بیمارستان، بهبود کیفیت بیمارستان، کاربرد در تکنیکهای روز و.....
ابر صفحه در ماشین بردار پشتیبان
اگرچه کار بر روی ماشین بردار پشتیبان از دهه هفتاد آغاز شده، اما افزایش توجه به ماشین بردار پشتیبان از اواخر دهه نود شروع شد، که به عنوان ابزار یک طبقه بندی و رگرسیون بسیار قدرتمند شناخته شد.
روش پیشنهادی
در این پایاننامه، دادههای شبیهسازی، که مجموعه دادهها بکار رفته در پایگاه دادهی تخمین هزینه نرمافزاری پرامیس - دشارنایس - میباشد. پایگاهدادهی این شبیهسازی از پایگاهدادههای سمینار بین المللی تخمین هزینههای نرمافزاری انتخاب شده است. داده های مورد ارزیابی، دارای 11 ویژگی هستند که یک ویژگی مربوط به نوع کلاسبندی با هزینهی آنهاست و بقیه ویژگیها به ترتیب میزان همکارای گروهی، تعدادهمکاران، مدیریت، زمان انجام پروژه، بازخورد مشتری، نهادهای مربوطه، امتیاز پروژه، میزان سختی پروژه، زبان پروژه و هزینهی اولیه میباشد.
برای شبیهسازی روش پیشنهادی، از 81 دادهی موجود، 51 داده برای آموزش کلاسبندی استفاده شده است. برای بخش اعتبار سنجی و بهبود روش پیشنهادی از 20 داده و برای بخش آزمایش، 20 داده دیگر مورد استفاده قرار گرفته است.
طراحی روش پیشنهادی
الگوریتمی که برای تخمین هزینههای نرمافزاری مورد استفاده قرار می دهیم، از دو بخش اصلی تشکیل شده است اما در این پایاننامه این دو بخش به سه بخش اصلی تقسیم میشود: مرحلهی پیدا کردن مدل اولیه تخمین هزینههای نرمافزاری، مرحلهی بهبود به وسیله ترکیب آدابوست