پایاننامه تخمین هزینه پروژه‌ مدل COCOMOII مبتنی الگوریتمهای منطق فازی

۱۲۰ هزار تومان ۹۰ هزار تومان
افزودن به سبد خرید

جهت خرید و دانلود پاياننامه تخمین هزینه پروژه‌ مدل COCOMOII مبتنی الگوریتمهای منطق فازی روی خرید محصول کلیک و یا با ایمیل زیر در ارتباط باشید

sellthesis@gmail.com


پاياننامه كارشناسی ارشد کامپیوتر نرم‌افزار بهبود میزان تخمین هزینه پروژه‌های نرم‌افزاری در مدل COCOMO II مبتنی بر الگوریتم‌های منطق‌فازی


خرید محصول پاياننامه تخمین هزینه پروژه‌ مدل COCOMOII مبتنی الگوریتمهای منطق فازی


چکیده:

در تمامی پروژه هایی که امروزه انجام می شوند بحث مدیریت مسأله ای بسیار تعیین کننده است. پروژه های نرم افزاری نیز از این قاعده مستثنی نیستند. از مهم‌ترین جنبه های فعالیت توسعه نرم افزاری بحث مدیریت زمان و هزینه است. با توجه به اینکه در مراحل ابتدایی توسعه نرم افزار اطلاعات دقیقی نسبت به جنبه های مختلف توسعه وجود ندارد؛ تخمینی دقیق تر از هزینه های پیش رو می تواند امری حیاتی در موفقیت یک نرم‌افزار باشد. در این پژوهش توانستم با بکارگیری مدل COCOMO II، که از شناخته شده ترین روش های تخمینِ هزینه های توسعه نرم افزاری مبتني بر مدل هاي الگوریتمی است، و ترکیب آن با منطق‌فازی، مدلی را ایجاد کرده که با توجه به برخی پارامترهای موجود در فازهای اولیه ی توسعه، تخمین های دقیق تری نسبت به هزینه انجام می دهد. پیاده‌سازی آن در نرم‌افزار MATLAB و با کمک داده‌های مصنوعی صورت گرفته شده است. بررسی صحت داده‌های ایجاد شده نیز در نرم‌افزار SPSS صورت گرفته است. همچنین اینکه از داده‌های 2 Dataset رسمی COCOMO II برای ارزیابی مدل پیشنهادی استفاده شده‌اند که نتایج حاصله با استفاده از تکنیک های MMRE و PRED مورد بررسی واقع شده‌اند که خروجی‌های تولید شده نشان می‌دهند سیستم پیشنهادی در مقایسه با مدل اصلی COCOMO II که میانگین بهبودی معادل 5.901% داشته است.

کلمات کلیدی: مدل COCOMO II، تخمین هزینه، بهینه سازی، منطق‌فازی


فهرست مطالب

عنوان صفحه
فصل1 کلیات پژوهش 1
1-1. مقدمه 2
1-2. تعريف مساله و سوال اصلي تحقيق 5
1-3. فرضيه‌ها 5
1-4. اهداف تحقيق 5
1-5. روش تحقيق 6
1-6. مراحل انجام تحقيق 6
1-7. ساختار پايان‌نامه 7
فصل2 روش پيشنهادي 8
2-1. فرضيات الگوريتم 9
2-2. معرفی EST-COCOMO II 9
2-3. بررسی پیاده‌سازی مدل ترکیبی EST-COCOMO II 11
2-3-1. معرفی ابزار MATLAB 11
2-3-1-1. اندازه‌گیری دقیق 12
2-3-1-2. قدرت Matlab 13
2-3-2. تشریح کلی پیاده‌سازی سیستم 14
2-3-2-1. روش آزمون و خطا 14
2-3-2-2. روش جداول ارجاع 14
2-3-2-3. روش ANFIS 15
2-3-3. روند پیاده‌سازی سیستم در نرم‌افزار MATLAB 16
2-3-3-1. تشکیل Dataset مصنوعی 18
2-3-3-2. طراحی ANFIS 21
2-3-4. معرفی و ارزیابی Dataset مصنوعی ایجاد شده 28
2-3-4-1. آزمون تحلیل واریانس مقایسه چند جامعه مستقل (ANOVA) 28
2-3-5. شاخص‌های EST-COCOMO II 31
2-4. جمع‌بندي 32
فصل3 مبانی تحقیق و مروري بر تحقیقات پیشین 33
3-1. برآورد پروژه‌های نرم‌افزاری 34
3-1-1. تکنیک‌های مبتنی بر تجربه 35
3-1-2. تکنیک مبتنی بر مدل الگوریتمی 35
3-2. مدل COCOMO II 36
3-2-1. مقدمه 36
3-2-2. اندازه‌گیری 38
3-2-3. تخمین تلاش 43
3-2-3-1. محرک‌های هزینه در مدل Post Architecture 44
3-2-3-2. محرک‌های مدل Early Design 61
3-2-4. تخمین هزینه 63
3-3. منطق‌فازی 63
3-3-1. مجموعه‌های قطعی 64
3-3-2. مجموعه‌های فازی 65
3-3-3. تابع عضویت 65
3-3-3-1. اشکال مختلف توابع عضویت 66
3-3-4. عملیات اساسی روی مجموعه‌های فازی (t-norm, co-norm): 70
3-3-5. متغیرهای زبانی 71
3-3-6. روابط فازی 73
3-3-7. کنترل فازی 73
3-3-7-1. مزایای کنترل فازی 74
3-3-7-2. مراحل طراحی یک سیستم فازی 75
3-3-7-3. بررسی فرایند طراحی تعدادی از نمونه‌های واقعی 75
3-3-8. موتور استنتاج 77
3-3-8-1. روش‌های غیر فازی سازی 78
3-3-8-2. محتمل‌ترین در مقابل سازگارترین روش 78
3-4. خوشه‌بندی فازی C-MEANS 81
3-4-1. مقدمه 81
3-4-2. هدف از خوشه‌بندی 82
3-4-3. خوشه‌بندی فازی 82
3-4-3-1. الگوریتم خوشه‌بندی فازی C-Means 84
3-4-4. بررسی نمونه تست 88
3-5. مروری بر برخی کارهای مرتبط 88
3-5-1. جمع‌بندي 90
3-6. نتيجه‌گيري 92
فصل4 بررسی سیستم و ارزیابی نتايج آن 93
4-1. شاخص‌های ارزیابی و شبيه‌سازي 94
4-2. روند بررسی و نتایج خروجی 96
4-3. جمع بندي 100
فصل5 جمع‌بندي و پيشنهاد‌ها 102
5-1. يافته‌هاي تحقيق 103
5-2. نوآوري تحقيق 104
5-3. پيشنهاد‌ها 105
مراجع 106
واژه‌نامه 112


1-1. مقدمه

طبق مطالعات انجام شده در زمینه مهندسی نرم‌افزار سیستم‌های کامپیوتری، به هنگام ساخته شدن سیستم‌ها و محصولات مبتنی بر کامپیوتر، مدیریت همچنان فعالیتی ضروری خواهد بود. مدیریت پروژه با طرح‌ریزی، نظارت و کنترل افراد، فرایندها و رخدادهایی که با پدیدار شدن نرم‌افزار از مفاهیم اولیه تا اجرای عملی مطرح می‌شوند، مرتبط است.[1]
ساختن نرم‌افزار کامپیوتری کار پیچیدهای است خصوصاً اگر افراد بسیاری در آن دخیل باشند و برای مدت نسبتاً طولانی بر روی آن کار کنند. بدین دلیل است که باید پروژه‌های نرم‌افزاری را اداره و کنترل کنیم. مراحل مدیریت همان درک کردن چهار P یعنی افراد، محصول، پروسه و پروژه است. افراد باید برای انجام درست کار نرم‌افزار، سازماندهی شوند. پروژه باید با برآورده کردن نیرو و زمان مورد نیاز برای انجام کار، تشریح محصولات، انجام کنترل کیفیت و تعیین مکانیزم‌های نظارت و کنترل کارِ تشریح شده در طرح، طراحی شود. برنامه‌ریزی یک پروژه نرم‌افزاری شامل بحث تخمین، یعنی تلاش شما برای تعیین میزان پول، کار لازم، تعداد منابع و مقدار زمان لازم برای ایجاد یک سیستم یا محصول خاص مبتنی بر نرم‌افزار می‌باشد[1].
همانگونه كه مي‌دانيم در بحث مدیریت پروژه نرم‌افزاری موضوع تخمین که شامل تخمين تلاش، زمانبندی و هزینه مورد نیاز است، یکی از فازهای مهم در توسعه نرم‌افزار است و یک تخمین دقیق شرایطی را فراهم می‌آورد که روند توسعه نرم‌افزاری با پایه‌ای قدرتمند شروع شود[1،2]. دقت تخمین نرم‌افزار به اين دليل مهم است که می‌تواند به پيش‌بيني ميزان نيروي انساني مورد نياز و زمان‌بندی پروژه و بطور كلي هزينه پروژه به منظور معین کردن منابعی که در آینده مورد نیاز خواهند بود، کمک کند[2]. همچنین تخمین هزینه نرم‌افزاری دقیق در بودجه‌بندی، برنامه‌ریزی پروژه، کنترل پروژه و در نهایت مدیریت پروژه بصورت موثر، بسیار اهمیت دارد[1،2].

در دهه‌های اخیر بسیاری از مدل‌های تخمین هزینه‌هاي نرم‌افزاری توسعه داده شده‌اند[3]. اين مدل‌ها از دو تكنيك مبتني بر تجربه و مبتني بر مدل‌هاي الگوريتمي براي اين تخمين استفاده مي‌كنند. تکنیک‌های مبتنی بر تجربه عبارتند از تخمين میزان نيروي انساني مورد نیاز، توسط مدیر پروژه بر اساس تجربیات خود از پروژه‌های گذشته؛ و تکنیک مبتنی بر مدل الگوریتمی عبارت است از یک فرمول که برای محاسبه‌ی میزان نيروي انساني مورد نیاز یک پروژه بر اساس تخمینی از خصوصیات محصول نظیر اندازه، و خصوصیات فرآیند نظیر تجربه‌ی افراد درگیر در پروژه مورد استفاده قرار می‌گیرد[2-4] . این فرمول‌ها می‌توانند بوسیله تحليل هزینه‌ها و ویژگی‌های پروژه‌های کامل شده قبلي، ساخته شوند و نزدیک‌ترین فرمول به تجربه‌های واقعی را پیدا کنند[3].

در این پژوهش ما یک مدل ترکیبی مبتنی بر الگوریتم‌های منطق‌فازی ارائه نموده‌ایم؛ که می‌تواند با تکیه بر توانایی‌های منطق‌فازی و آموزش‌های اعمال شده بر آن بواسطه‌ی Datasetی که بصورت مصنوعی ایجاد کرده‌ایم تخمین‌های دقیق‌تری را ارائه دهد.
تخمین بر اساس هدف مورد انتظار، مي‌تواند در فازهاي مختلف پروژه محاسبه شود. بنابراین ما به یک مدل خوب برای محاسبه این پارامترها نیاز داریم. یک مدل تخمین با دقت قابل قبول، امکان ايجاد چالش بین ذي‌النفعان را در مراحل توسعه پروژه کاهش می‌دهد.

COCOMO یکی از شناخته شده‌ترین مدل‌های مبتني بر مدل الگوریتمی است که در سال 1981 توسط Barry Boehm ارائه گرديد. این مدل از آنالیز 63 پروژه نرم‌افزاری ایجاد شده است. اندازه تعداد خطوط پروژه‌های مورد مطالعه در محدوده بین 2000 تا 100000 خط کد بوده‌اند که از زبان‌هاي برنامه‌نويسي مختلفي استفاده كرده بودند[18,20،25]. متدولوژي مورد استفاده در این نرم‌افزارها به دليل رايج بودن در آن زمان، مدل آبشاری بوده است. این مدل اغلب به نام COCOMO 81 معروف است. Boehm سه سطح به نام‌های COCOMO پایه ای، COCOMO میانی و COCOMO مشخصات را براي اين الگوريتم (COCOMO 81) پیشنهاد نمود.

در سال 1995 مدل COCOMO II جانشین 81 COCOMO شد و بعد از آن در سال 2000 کتاب Software Cost Estimation with COCOMO II انتشار یافت. با توجه به نحوه محاسبات اين نسخه به نظر مي‌رسد كه اين مدل برای تخمین هزینه نرم‌افزاری در پروژه‌های نرم‌افزاری مدرن مناسب‌تر است. این مدل حمایت بیشتری را از فرایندهای توسعه نرم‌افزاری مدرن و پایگاه داده‌های پروژه‌های به‌روز شده انجام می‌دهد[11,18,29]. نیاز به مدل جدید از آنجايي آغاز شد كه تکنولوژی توسعه نرم‌افزار، از پردازنده‌های مرکزی و پردازش دسته‌ای به سمت توسعه نرم‌افزارهاي رومیزی ، قابلیت استفاده مجدد کدها و استفاده از مؤلفه‌های نرم‌افزاری در دسترس، منتقل گرديد[22].

منطق‌فازي در 1965 براي اولين‌بار در مقاله‌اي به همين نام، توسط پروفسور «لطفي عسگرزاده» ارائه شد و در حال حاضر كاربردهاي فراواني دارد و در حيطه مديريت نيز جاي خاصي را به خود اختصاص داده است. اين منطق براي سنجش مسائل و الگوهاي كيفي، كاربرد فراوانی دارد و پاسخگوي مسائل زيادي در رشته‌هاي علوم انساني بويژه مديريت است. منطق‌فازي راهكاري است كه بوسيله آن مي‌توان سيستم‌هاي پيچيده را كه مدلسازي آن‌ها با استفاده از رياضيات و روش‌هاي مدلسازي كلاسيك غيرممكن بوده و يا بسيار مشكل است، به آساني و با انعطاف بسيار بيشتر، مدلسازي كرد[14,25,26].
در سيستم‏هاي داراي عدم قطعيت زياد و پيچيدگي‌هاي بالا، منطق‌فازي روشي مناسب براي مدلسازي به شمار مي‌رود. همانگونه که ذکر شد تخمین دقیق‌تر در بحث مدیریت منابع هنگام توسعه پروژه‌های نرم‌افزاری امری است بسیار مهم و قابل توجه، لذا هدف این پژوهش این است که با مطالعه و بکارگیری منطق‌فازی، یک تابع فازی مناسب استخراج کرده، که این تابع بواسطه‌ی ساختن ترکیبی مناسب از قوانین میان بخشی از 23 پارامتر ذکر شده در COCOMO II نظیر محرک‌های هزینه (مثل CPLX که بیان‌گر پیچیدگی نرم‌افزار، PCAP که بیان‌گر قابلیت برنامه‌نویس است و غیره)، فاکتورهای مقیاس (نظیر TEAM که بیان‌گر انسجام تیمی افراد دخیل در پروژه است) و اندازه‌ی نرم‌افزار، حاصل می‌گردد، سپس با بررسی و استفاده از قوانین بدست آمده و انجام مراحل مربوط به فازی‌سازی، با استفاده از یک موتور استنتاج فازی در یکی از نرم‌افزارهای شبیه‌سازی MATLAB یا SPSS تست‌هایی با تعدادی از داده‌های موجود در مجموعه داده‌های نمونه از جمله مجموعه داده‌های COCOMO81، COCOMO II یا نسخه‌های COCOMONASA انجام داده و خروجی‌های مدنظر را بدست آوریم. در آخر نیز بین خروجی‌های تولید شده توسط مدل فازی پیشنهادی، و مدل اصلی COCOMO II مقایسه‌ای مبتنی بر برخی تکنیک‌های مشهور نظیر دامنه‌ی خطای نسبی (MMRE) صورت خواهد گرفت.

به منظور دستيابي به ساختاري منسجم و مناسب براي انجام تحقيق، در ادامه اين فصل به بيان مهمترين اصول و پاسخ‌گويي به سوالات اصلي يك تحقيق علمي، پرداخته خواهد شد.

مرور

هیچ دیدگاهی برای این محصول نوشته نشده است.