در تمامی پروژههایی که امروزه انجام میشوند بحث مدیریت مسألهای بسیار تعیین کننده است. پروژههای نرمافزاری نیز از این قاعده مستثنی نیستند. از مهمترین جنبههای فعالیت توسعه نرمافزاری بحث مدیریت زمان و هزینه است. با توجه به اینکه در مراحل ابتدایی توسعه نرمافزار اطلاعات دقیقی نسبت به جنبههای مختلف توسعه وجود ندارد؛ تخمینی دقیقتر از هزینههای پیشرو میتواند امری حیاتی در موفقیت یک نرمافزار باشد. در این پژوهش توانستم با بکارگیری مدل COCOMO II، که از شناختهشدهترین روشهای تخمینِ هزینههای توسعه نرمافزاری مبتني بر مدلهاي الگوریتمی است، و ترکیب آن با منطقفازی، مدلی را ایجاد کرده که با توجه به برخی پارامترهای موجود در فازهای اولیهی توسعه، تخمینهای دقیقتری نسبت به هزینه انجام میدهد. پیادهسازی آن در نرمافزار MATLAB و با کمک دادههای مصنوعی صورت گرفته شده است. بررسی صحت دادههای ایجاد شده نیز در نرمافزار SPSS صورت گرفته است. همچنین اینکه از دادههای 2 Dataset رسمی COCOMO II برای ارزیابی مدل پیشنهادی استفاده شدهاند که نتایج حاصله با استفاده از تکنیکهای MMRE و PRED مورد بررسی واقع شدهاند که خروجیهای تولید شده نشان میدهند سیستم پیشنهادی در مقایسه با مدل اصلی COCOMO II که میانگین بهبودی معادل5.901% داشته است. کلمات کلیدی: مدل COCOMOII، تخمین هزینه، بهینه سازی، منطقفازیفهرست مطالب عنوان صفحهفصل1 کلیات پژوهش11-1. مقدمه21-2. تعريف مساله و سوال اصلي تحقيق51-3. فرضيهها51-4. اهداف تحقيق51-5. روش تحقيق61-6. مراحل انجام تحقيق61-7. ساختار پاياننامه7فصل2 روش پيشنهادي82-1. فرضيات الگوريتم92-2. معرفی EST-COCOMO II92-3. بررسی پیادهسازی مدل ترکیبی EST-COCOMO II112-3-1.معرفی ابزار MATLAB112-3-1-1. اندازهگیری دقیق122-3-1-2. قدرت Matlab132-3-2.تشریح کلی پیادهسازی سیستم142-3-2-1. روش آزمون و خطا142-3-2-2. روش جداول ارجاع142-3-2-3. روش ANFIS152-3-3. روند پیادهسازی سیستم در نرمافزار MATLAB162-3-3-1. تشکیل Dataset مصنوعی182-3-3-2. طراحی ANFIS212-3-4.معرفی و ارزیابی Dataset مصنوعی ایجاد شده282-3-4-1. آزمون تحلیل واریانس مقایسه چند جامعه مستقل (ANOVA)282-3-5.شاخصهای EST-COCOMO II312-4. جمعبندي32فصل3 مبانی تحقیق و مروري بر تحقیقات پیشین333-1. برآورد پروژههای نرمافزاری343-1-1. تکنیکهای مبتنی بر تجربه353-1-2. تکنیک مبتنی بر مدل الگوریتمی353-2. مدل COCOMO II363-2-1. مقدمه363-2-2. اندازهگیری383-2-3. تخمین تلاش433-2-3-1. محرکهای هزینه در مدل Post Architecture443-2-3-2. محرکهای مدل Early Design613-2-4. تخمین هزینه633-3. منطقفازی633-3-1. مجموعههای قطعی643-3-2. مجموعههای فازی653-3-3. تابع عضویت653-3-3-1. اشکال مختلف توابع عضویت663-3-4. عملیات اساسی روی مجموعههای فازی (t-norm, co-norm):703-3-5. متغیرهای زبانی713-3-6. روابط فازی733-3-7. کنترل فازی733-3-7-1. مزایای کنترل فازی743-3-7-2. مراحل طراحی یک سیستم فازی753-3-7-3. بررسی فرایند طراحی تعدادی از نمونههای واقعی753-3-8. موتور استنتاج773-3-8-1. روشهای غیر فازی سازی783-3-8-2. محتملترین در مقابل سازگارترین روش783-4. خوشهبندی فازی C-Means813-4-1. مقدمه813-4-2. هدف از خوشهبندی823-4-3. خوشهبندی فازی823-4-3-1. الگوریتم خوشهبندی فازی C-Means843-4-4. بررسی نمونه تست883-5. مروری بر برخی کارهای مرتبط883-5-1.جمعبندي903-6. نتيجهگيري92فصل4 بررسی سیستم و ارزیابی نتايج آن934-1. شاخصهای ارزیابی و شبيهسازي944-2. روند بررسی و نتایج خروجی964-3. جمع بندي100فصل5 جمعبندي و پيشنهادها1025-1. يافتههاي تحقيق1035-2. نوآوري تحقيق1045-3. پيشنهادها105مراجع106واژهنامه112 فهرست اشکال عنوان صفحه فصل1 کلیات پژوهش1فصل2 روش پيشنهادي8شکل2-1. معماری کلی سیستم فازی EST-COCOMO II10شکل2-2. اندازهگیری میکروسکوپی با نرمافزار Matlab12شکل2-3. محیط گرافیکی ابزار anfis در MATLAB17شکل2-4. نمایش بررخی کارهای انجام شده بصورت ساختار درختی نمایش مسیر فایلها در محیط نرمافزار MATLAB19شکل2-5. قطعه کد 3 حلقهی تودرتوی نوشته شده در MATLAB برای تولید ورودی و خروجیهای Dataset20شکل2-6. قطعه کد نمونهی نشان دهندهی روشهای خوشهبندی22شکل2-7. بخشی از کد تولید و آموزش سیستم23شکل2-8. پارامتر ورودی SSs و توابع عضویت مربوط به آن24شکل2-9. نمایش 3 بعدی رفتار سیستم با پارامترهای SFs و SSs25شکل2-10. نمایش 3 بعدی رفتار سیستم با پارامترهای EMs و SSs25شکل2-11. نمایش 3 بعدی رفتار سیستم با پارامترهای SFs و EMs26شکل2-12. نمایش قوانین فازی سیستم ایجاد شده26شکل2-13. نمایش گرافیکی ساختار شبکهای سیستم ایجاد شده توسط ANFIS27شکل2-14. فرآیند آزمون ANOVA29شکل2-15. خروجی تست Correlation31فصل3 مبانی تحقیق و مروري بر تحقیقات پیشین33شکل3-1. تابع عضویت66شکل3-2. تابع عضویت مثلثی67شکل3-3. تابع عضویت ذوزنقه ای68شکل3-4. تابع عضویت زنگوله ای تعمیم یافته69شکل3-5. تابع عضویت Gaussian69شکل3-6. اعمال روی مجموعهها70شکل3-7. مراحل طراحی یک مدل فازی77شکل3-8. روش غیر فازی سازی COA79شکل3-9. روش غیر فازی سازی سازی MOM80شکل3-10. خوشهبندی نمونههای ورودی81شکل3-11. مجموعه داده پروانه ای83شکل3-12. خوشهبندی فازی داده84شکل3-13. توزیع یک بعدی نمونهها86شکل3-14. خوشهبندی کلاسیک نمونههای ورودی86شکل3-15. خوشهبندی فازی نمونهها87شکل3-16. خروجی گرافیکی اعمال الگوریتمهای خوشهبندی به یک مجموعه دادهی تست88فصل4 بررسی سیستم و ارزیابی نتايج آن93شکل4-1. نمودار مقایسهای MMRE بین مدل پیشنهادی EST-COCOMO II و مدل اصلی COCOMO II.98شکل4-2. نمودار مقایسهای PRED بین مدل پیشنهادی EST-COCOMO II و مدل اصلی COCOMO II.99شکل4-3. نمودار مقایسهای میزان بهبود حاصل از بکارگیری مدل پیشنهادی EST-COCOMO II در تخمین هزینه نسبت به مدل COCOMO II روی دو Dataset پیشنهادی.100فصل5 جمعبندي و پيشنهادها102مراجع106واژهنامه112 فهرست جداول و نمودارها فصل1 کلیات پژوهش1فصل2 روش پيشنهادي8جدول2-1. خروجی تست ANOVA روی فاکتور Effort و پارامتر مستقل SS30جدول2-2. خروجی تست ANOVA روی فاکتور Effort و پارامتر مستقل EM30جدول2-3. خروجی تست ANOVA روی فاکتور Effort و پارامتر مستقل SF30جدول2-4. خروجی تست ANOVA روی پارامتر EM و پارامتر مستقل SF30فصل3 مبانی تحقیق و مروري بر تحقیقات پیشین33جدول3-1. مقیاس ارزیابی و مقادیر برای افزایش برآورد و یکسانی AA40جدول3-2. مقیاس ارزیابی برای افزایش درک نرمافزاری SU41جدول3-3. مقیاس ارزیابی برای ناآشنایی برنامهنویس (UNFM)42جدول3-4. راهنما و محدودیتهای پارامتری نرمافزاری سازگار شده42جدول3-5. جدول فاکتورهاي مقياس45جدول3-6. تعيين ميزان سابقه46جدول3-7. تعيين ميزان انعطاف47جدول3-8. میزان دقت معماری/ریسک48جدول3-9. میزان همبستگی تیمی48جدول3-10. دستهبندیهای PMAT برای سطوح بلوغ فرآیند تخمین زده شده (EPML)49جدول3-11. درجهبندی جدول ضریب اطمینان51جدول3-12. ویژگیهای مربوط به اندازهی بانک اطلاعاتی51جدول3-13. سطوح درجهبندیهای پیچیدگی مؤلفه52جدول3-14. درجهبندی استفاده مجدد53جدول3-15. درجهبندی فاکتور مستندات54جدول3-16. درجهبندی فاکتور محدودیت زمان اجرا55جدول3-17. درجهبندی نوسانات پلتفرم56جدول3-18. درجهبندی قابلیت تحلیل تیمی56جدول3-19. درجهبندی استمرار پرسنلی57جدول3-20. درجهبندی مقیاس تجربه نرمافزارهای مشابه57جدول3-21. درجهبندی مقیاس تجربه پلتفرم58جدول3-22. درجهبندی مقیاس استفاده از ابزارهای نرمافزاری59جدول3-23. درجهبندی مقیاس توسعه چند موقعیتی60جدول3-24. درجهبندی مقیاس زمانبندی توسعه مورد نیاز60جدول3-25. مقادیر درجهبندی شده مورد نیاز برای مدل Post Architecture در COCOMO II.200061جدول3-26. ضرایب تلاش Early Design و Post Architecture62جدول3-27. مقادیر عددی مدل طراحی اولیه درجهبندی شده COCOMO II.200062جدول3-28. مقایسهای بین کارهای مرتبط بررسی شده90فصل4 بررسی سیستم و ارزیابی نتايج آن93جدول4-1. قسمتی از دادههای موجود در Datasetهای رسمی مورد استفاده95جدول4-2. ارزیابیهای صورت گرفته بین مدل پیشنهادی و مدل COCOMO II با معیارهای MMRE و PRED97فصل5 جمعبندي و پيشنهادها102مراجع106واژهنامه112 فصل1 کلیات پژوهش 1-1. مقدمهطبق مطالعات انجام شده در زمینه مهندسی نرمافزار سیستمهای کامپیوتری، به هنگام ساخته شدن سیستمها و محصولات مبتنی بر کامپیوتر، مدیریت همچنان فعالیتی ضروری خواهد بود. مدیریت پروژه با طرحریزی، نظارت و کنترل افراد، فرایندها و رخدادهایی که با پدیدار شدن نرمافزار از مفاهیم اولیه تا اجرای عملی مطرح میشوند، مرتبط است.[1]ساختن نرمافزار کامپیوتری کار پیچیدهای است خصوصاً اگر افراد بسیاری در آن دخیل باشند و برای مدت نسبتاً طولانی بر روی آن کار کنند. بدین دلیل است که باید پروژههای نرمافزاری را اداره و کنترل کنیم. مراحل مدیریت همان درک کردن چهار P یعنی افراد، محصول، پروسه و پروژه است. افراد باید برای انجام درست کار نرمافزار، سازماندهی شوند. پروژه باید با برآورده کردن نیرو و زمان مورد نیاز برای انجام کار، تشریح محصولات، انجام کنترل کیفیت و تعیین مکانیزمهای نظارت و کنترل کارِ تشریح شده در طرح، طراحی شود. برنامهریزی یک پروژه نرمافزاری شامل بحث تخمین، یعنی تلاش شما برای تعیین میزان پول، کار لازم، تعداد منابع و مقدار زمان لازم برای ایجاد یک سیستم یا محصول خاص مبتنی بر نرمافزار میباشد[1].همانگونه كه ميدانيم در بحث مدیریت پروژه نرمافزاری موضوع تخمین که شامل تخمين تلاش، زمانبندی و هزینه مورد نیاز است، یکی از فازهای مهم در توسعه نرمافزار است و یک تخمین دقیق شرایطی را فراهم میآورد که روند توسعه نرمافزاری با پایهای قدرتمند شروع شود[1،2]. دقت تخمین نرمافزار به اين دليل مهم است که میتواند به پيشبيني ميزان نيروي انساني مورد نياز و زمانبندی پروژه و بطور كلي هزينه پروژه به منظور معین کردن منابعی که در آینده مورد نیاز خواهند بود، کمک کند[2]. همچنین تخمین هزینه نرمافزاری دقیق در بودجهبندی، برنامهریزی پروژه، کنترل پروژه و در نهایت مدیریت پروژه بصورت موثر، بسیار اهمیت دارد[1،2].در دهههای اخیر بسیاری از مدلهای تخمین هزینههاي نرمافزاری توسعه داده شدهاند[3]. اين مدلها از دو تكنيك مبتني بر تجربه و مبتني بر مدلهاي الگوريتمي براي اين تخمين استفاده ميكنند. تکنیکهای مبتنی بر تجربه عبارتند از تخمين میزان نيروي انساني مورد نیاز، توسط مدیر پروژه بر اساس تجربیات خود از پروژههای گذشته؛ و تکنیک مبتنی بر مدل الگوریتمی عبارت است از یک فرمول که برای محاسبهی میزان نيروي انساني مورد نیاز یک پروژه بر اساس تخمینی از خصوصیات محصول نظیر اندازه، و خصوصیات فرآیند نظیر تجربهی افراد درگیر در پروژه مورد استفاده قرار میگیرد[2-4] . این فرمولها میتوانند بوسیله تحليل هزینهها و ویژگیهای پروژههای کامل شده قبلي، ساخته شوند و نزدیکترین فرمول به تجربههای واقعی را پیدا کنند[3].در این پژوهش ما یک مدل ترکیبی مبتنی بر الگوریتمهای منطقفازی ارائه نمودهایم؛ که میتواند با تکیه بر تواناییهای منطقفازی و آموزشهای اعمال شده بر آن بواسطهی Datasetی که بصورت مصنوعی ایجاد کردهایم تخمینهای دقیقتری را ارائه دهد.تخمین بر اساس هدف مورد انتظار، ميتواند در فازهاي مختلف پروژه محاسبه شود. بنابراین ما به یک مدل خوب برای محاسبه این پارامترها نیاز داریم. یک مدل تخمین با دقت قابل قبول، امکان ايجاد چالش بین ذيالنفعان را در مراحل توسعه پروژه کاهش میدهد.[1]COCOMO یکی از شناخته شدهترین مدلهای مبتني بر مدل الگوریتمی است که در سال 1981 توسط BarryBoehm ارائه گرديد. این مدل از آنالیز 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]. نیاز به مدل جدید از آنجايي آغاز شد كه تکنولوژی توسعه نرمافزار، از پردازندههای مرکزی[2]و پردازش دستهای به سمت توسعه نرمافزارهاي رومیزی[3]، قابلیت استفاده مجدد کدها و استفاده از مؤلفههای نرمافزاری در دسترس، منتقل گرديد[22].
بهبود میزان تخمین هزینه پروژههای نرمافزاری در مدل COCOMO II مبتنی بر الگوریتمهای منطقفازی WORD
در تمامی پروژههایی که امروزه انجام میشوند بحث مدیریت مسألهای بسیار تعیین کننده است. پروژههای نرمافزاری نیز از این قاعده مستثنی نیستند. از مهمترین جنبههای فعالیت توسعه نرمافزاری بحث مدیریت زمان و هزینه است. با توجه به اینکه در مراحل ابتدایی توسعه نرمافزار اطلاعات دقیقی نسبت به جنبههای مختلف توسعه وجود ندارد؛ تخمینی دقیقتر از هزینههای پیشرو میتواند امری حیاتی در موفقیت یک نرمافزار باشد. در این پژوهش توانستم با بکارگیری مدل COCOMO II، که از شناختهشدهترین روشهای تخمینِ هزینههای توسعه نرمافزاری مبتني بر مدلهاي الگوریتمی است، و ترکیب آن با منطقفازی، مدلی را ایجاد کرده که با توجه به برخی پارامترهای موجود در فازهای اولیهی توسعه، تخمینهای دقیقتری نسبت به هزینه انجام میدهد. پیادهسازی آن در نرمافزار MATLAB و با کمک دادههای مصنوعی صورت گرفته شده است. بررسی صحت دادههای ایجاد شده نیز در نرمافزار SPSS صورت گرفته است. همچنین اینکه از دادههای 2 Dataset رسمی COCOMO II برای ارزیابی مدل پیشنهادی استفاده شدهاند که نتایج حاصله با استفاده از تکنیکهای MMRE و PRED مورد بررسی واقع شدهاند که خروجیهای تولید شده نشان میدهند سیستم پیشنهادی در مقایسه با مدل اصلی COCOMO II که میانگین بهبودی معادل5.901% داشته است. کلمات کلیدی: مدل COCOMOII، تخمین هزینه، بهینه سازی، منطقفازیفهرست مطالب عنوان صفحهفصل1 کلیات پژوهش11-1. مقدمه21-2. تعريف مساله و سوال اصلي تحقيق51-3. فرضيهها51-4. اهداف تحقيق51-5. روش تحقيق61-6. مراحل انجام تحقيق61-7. ساختار پاياننامه7فصل2 روش پيشنهادي82-1. فرضيات الگوريتم92-2. معرفی EST-COCOMO II92-3. بررسی پیادهسازی مدل ترکیبی EST-COCOMO II112-3-1.معرفی ابزار MATLAB112-3-1-1. اندازهگیری دقیق122-3-1-2. قدرت Matlab132-3-2.تشریح کلی پیادهسازی سیستم142-3-2-1. روش آزمون و خطا142-3-2-2. روش جداول ارجاع142-3-2-3. روش ANFIS152-3-3. روند پیادهسازی سیستم در نرمافزار MATLAB162-3-3-1. تشکیل Dataset مصنوعی182-3-3-2. طراحی ANFIS212-3-4.معرفی و ارزیابی Dataset مصنوعی ایجاد شده282-3-4-1. آزمون تحلیل واریانس مقایسه چند جامعه مستقل (ANOVA)282-3-5.شاخصهای EST-COCOMO II312-4. جمعبندي32فصل3 مبانی تحقیق و مروري بر تحقیقات پیشین333-1. برآورد پروژههای نرمافزاری343-1-1. تکنیکهای مبتنی بر تجربه353-1-2. تکنیک مبتنی بر مدل الگوریتمی353-2. مدل COCOMO II363-2-1. مقدمه363-2-2. اندازهگیری383-2-3. تخمین تلاش433-2-3-1. محرکهای هزینه در مدل Post Architecture443-2-3-2. محرکهای مدل Early Design613-2-4. تخمین هزینه633-3. منطقفازی633-3-1. مجموعههای قطعی643-3-2. مجموعههای فازی653-3-3. تابع عضویت653-3-3-1. اشکال مختلف توابع عضویت663-3-4. عملیات اساسی روی مجموعههای فازی (t-norm, co-norm):703-3-5. متغیرهای زبانی713-3-6. روابط فازی733-3-7. کنترل فازی733-3-7-1. مزایای کنترل فازی743-3-7-2. مراحل طراحی یک سیستم فازی753-3-7-3. بررسی فرایند طراحی تعدادی از نمونههای واقعی753-3-8. موتور استنتاج773-3-8-1. روشهای غیر فازی سازی783-3-8-2. محتملترین در مقابل سازگارترین روش783-4. خوشهبندی فازی C-Means813-4-1. مقدمه813-4-2. هدف از خوشهبندی823-4-3. خوشهبندی فازی823-4-3-1. الگوریتم خوشهبندی فازی C-Means843-4-4. بررسی نمونه تست883-5. مروری بر برخی کارهای مرتبط883-5-1.جمعبندي903-6. نتيجهگيري92فصل4 بررسی سیستم و ارزیابی نتايج آن934-1. شاخصهای ارزیابی و شبيهسازي944-2. روند بررسی و نتایج خروجی964-3. جمع بندي100فصل5 جمعبندي و پيشنهادها1025-1. يافتههاي تحقيق1035-2. نوآوري تحقيق1045-3. پيشنهادها105مراجع106واژهنامه112 فهرست اشکال عنوان صفحه فصل1 کلیات پژوهش1فصل2 روش پيشنهادي8شکل2-1. معماری کلی سیستم فازی EST-COCOMO II10شکل2-2. اندازهگیری میکروسکوپی با نرمافزار Matlab12شکل2-3. محیط گرافیکی ابزار anfis در MATLAB17شکل2-4. نمایش بررخی کارهای انجام شده بصورت ساختار درختی نمایش مسیر فایلها در محیط نرمافزار MATLAB19شکل2-5. قطعه کد 3 حلقهی تودرتوی نوشته شده در MATLAB برای تولید ورودی و خروجیهای Dataset20شکل2-6. قطعه کد نمونهی نشان دهندهی روشهای خوشهبندی22شکل2-7. بخشی از کد تولید و آموزش سیستم23شکل2-8. پارامتر ورودی SSs و توابع عضویت مربوط به آن24شکل2-9. نمایش 3 بعدی رفتار سیستم با پارامترهای SFs و SSs25شکل2-10. نمایش 3 بعدی رفتار سیستم با پارامترهای EMs و SSs25شکل2-11. نمایش 3 بعدی رفتار سیستم با پارامترهای SFs و EMs26شکل2-12. نمایش قوانین فازی سیستم ایجاد شده26شکل2-13. نمایش گرافیکی ساختار شبکهای سیستم ایجاد شده توسط ANFIS27شکل2-14. فرآیند آزمون ANOVA29شکل2-15. خروجی تست Correlation31فصل3 مبانی تحقیق و مروري بر تحقیقات پیشین33شکل3-1. تابع عضویت66شکل3-2. تابع عضویت مثلثی67شکل3-3. تابع عضویت ذوزنقه ای68شکل3-4. تابع عضویت زنگوله ای تعمیم یافته69شکل3-5. تابع عضویت Gaussian69شکل3-6. اعمال روی مجموعهها70شکل3-7. مراحل طراحی یک مدل فازی77شکل3-8. روش غیر فازی سازی COA79شکل3-9. روش غیر فازی سازی سازی MOM80شکل3-10. خوشهبندی نمونههای ورودی81شکل3-11. مجموعه داده پروانه ای83شکل3-12. خوشهبندی فازی داده84شکل3-13. توزیع یک بعدی نمونهها86شکل3-14. خوشهبندی کلاسیک نمونههای ورودی86شکل3-15. خوشهبندی فازی نمونهها87شکل3-16. خروجی گرافیکی اعمال الگوریتمهای خوشهبندی به یک مجموعه دادهی تست88فصل4 بررسی سیستم و ارزیابی نتايج آن93شکل4-1. نمودار مقایسهای MMRE بین مدل پیشنهادی EST-COCOMO II و مدل اصلی COCOMO II.98شکل4-2. نمودار مقایسهای PRED بین مدل پیشنهادی EST-COCOMO II و مدل اصلی COCOMO II.99شکل4-3. نمودار مقایسهای میزان بهبود حاصل از بکارگیری مدل پیشنهادی EST-COCOMO II در تخمین هزینه نسبت به مدل COCOMO II روی دو Dataset پیشنهادی.100فصل5 جمعبندي و پيشنهادها102مراجع106واژهنامه112 فهرست جداول و نمودارها فصل1 کلیات پژوهش1فصل2 روش پيشنهادي8جدول2-1. خروجی تست ANOVA روی فاکتور Effort و پارامتر مستقل SS30جدول2-2. خروجی تست ANOVA روی فاکتور Effort و پارامتر مستقل EM30جدول2-3. خروجی تست ANOVA روی فاکتور Effort و پارامتر مستقل SF30جدول2-4. خروجی تست ANOVA روی پارامتر EM و پارامتر مستقل SF30فصل3 مبانی تحقیق و مروري بر تحقیقات پیشین33جدول3-1. مقیاس ارزیابی و مقادیر برای افزایش برآورد و یکسانی AA40جدول3-2. مقیاس ارزیابی برای افزایش درک نرمافزاری SU41جدول3-3. مقیاس ارزیابی برای ناآشنایی برنامهنویس (UNFM)42جدول3-4. راهنما و محدودیتهای پارامتری نرمافزاری سازگار شده42جدول3-5. جدول فاکتورهاي مقياس45جدول3-6. تعيين ميزان سابقه46جدول3-7. تعيين ميزان انعطاف47جدول3-8. میزان دقت معماری/ریسک48جدول3-9. میزان همبستگی تیمی48جدول3-10. دستهبندیهای PMAT برای سطوح بلوغ فرآیند تخمین زده شده (EPML)49جدول3-11. درجهبندی جدول ضریب اطمینان51جدول3-12. ویژگیهای مربوط به اندازهی بانک اطلاعاتی51جدول3-13. سطوح درجهبندیهای پیچیدگی مؤلفه52جدول3-14. درجهبندی استفاده مجدد53جدول3-15. درجهبندی فاکتور مستندات54جدول3-16. درجهبندی فاکتور محدودیت زمان اجرا55جدول3-17. درجهبندی نوسانات پلتفرم56جدول3-18. درجهبندی قابلیت تحلیل تیمی56جدول3-19. درجهبندی استمرار پرسنلی57جدول3-20. درجهبندی مقیاس تجربه نرمافزارهای مشابه57جدول3-21. درجهبندی مقیاس تجربه پلتفرم58جدول3-22. درجهبندی مقیاس استفاده از ابزارهای نرمافزاری59جدول3-23. درجهبندی مقیاس توسعه چند موقعیتی60جدول3-24. درجهبندی مقیاس زمانبندی توسعه مورد نیاز60جدول3-25. مقادیر درجهبندی شده مورد نیاز برای مدل Post Architecture در COCOMO II.200061جدول3-26. ضرایب تلاش Early Design و Post Architecture62جدول3-27. مقادیر عددی مدل طراحی اولیه درجهبندی شده COCOMO II.200062جدول3-28. مقایسهای بین کارهای مرتبط بررسی شده90فصل4 بررسی سیستم و ارزیابی نتايج آن93جدول4-1. قسمتی از دادههای موجود در Datasetهای رسمی مورد استفاده95جدول4-2. ارزیابیهای صورت گرفته بین مدل پیشنهادی و مدل COCOMO II با معیارهای MMRE و PRED97فصل5 جمعبندي و پيشنهادها102مراجع106واژهنامه112 فصل1 کلیات پژوهش 1-1. مقدمهطبق مطالعات انجام شده در زمینه مهندسی نرمافزار سیستمهای کامپیوتری، به هنگام ساخته شدن سیستمها و محصولات مبتنی بر کامپیوتر، مدیریت همچنان فعالیتی ضروری خواهد بود. مدیریت پروژه با طرحریزی، نظارت و کنترل افراد، فرایندها و رخدادهایی که با پدیدار شدن نرمافزار از مفاهیم اولیه تا اجرای عملی مطرح میشوند، مرتبط است.[1]ساختن نرمافزار کامپیوتری کار پیچیدهای است خصوصاً اگر افراد بسیاری در آن دخیل باشند و برای مدت نسبتاً طولانی بر روی آن کار کنند. بدین دلیل است که باید پروژههای نرمافزاری را اداره و کنترل کنیم. مراحل مدیریت همان درک کردن چهار P یعنی افراد، محصول، پروسه و پروژه است. افراد باید برای انجام درست کار نرمافزار، سازماندهی شوند. پروژه باید با برآورده کردن نیرو و زمان مورد نیاز برای انجام کار، تشریح محصولات، انجام کنترل کیفیت و تعیین مکانیزمهای نظارت و کنترل کارِ تشریح شده در طرح، طراحی شود. برنامهریزی یک پروژه نرمافزاری شامل بحث تخمین، یعنی تلاش شما برای تعیین میزان پول، کار لازم، تعداد منابع و مقدار زمان لازم برای ایجاد یک سیستم یا محصول خاص مبتنی بر نرمافزار میباشد[1].همانگونه كه ميدانيم در بحث مدیریت پروژه نرمافزاری موضوع تخمین که شامل تخمين تلاش، زمانبندی و هزینه مورد نیاز است، یکی از فازهای مهم در توسعه نرمافزار است و یک تخمین دقیق شرایطی را فراهم میآورد که روند توسعه نرمافزاری با پایهای قدرتمند شروع شود[1،2]. دقت تخمین نرمافزار به اين دليل مهم است که میتواند به پيشبيني ميزان نيروي انساني مورد نياز و زمانبندی پروژه و بطور كلي هزينه پروژه به منظور معین کردن منابعی که در آینده مورد نیاز خواهند بود، کمک کند[2]. همچنین تخمین هزینه نرمافزاری دقیق در بودجهبندی، برنامهریزی پروژه، کنترل پروژه و در نهایت مدیریت پروژه بصورت موثر، بسیار اهمیت دارد[1،2].در دهههای اخیر بسیاری از مدلهای تخمین هزینههاي نرمافزاری توسعه داده شدهاند[3]. اين مدلها از دو تكنيك مبتني بر تجربه و مبتني بر مدلهاي الگوريتمي براي اين تخمين استفاده ميكنند. تکنیکهای مبتنی بر تجربه عبارتند از تخمين میزان نيروي انساني مورد نیاز، توسط مدیر پروژه بر اساس تجربیات خود از پروژههای گذشته؛ و تکنیک مبتنی بر مدل الگوریتمی عبارت است از یک فرمول که برای محاسبهی میزان نيروي انساني مورد نیاز یک پروژه بر اساس تخمینی از خصوصیات محصول نظیر اندازه، و خصوصیات فرآیند نظیر تجربهی افراد درگیر در پروژه مورد استفاده قرار میگیرد[2-4] . این فرمولها میتوانند بوسیله تحليل هزینهها و ویژگیهای پروژههای کامل شده قبلي، ساخته شوند و نزدیکترین فرمول به تجربههای واقعی را پیدا کنند[3].در این پژوهش ما یک مدل ترکیبی مبتنی بر الگوریتمهای منطقفازی ارائه نمودهایم؛ که میتواند با تکیه بر تواناییهای منطقفازی و آموزشهای اعمال شده بر آن بواسطهی Datasetی که بصورت مصنوعی ایجاد کردهایم تخمینهای دقیقتری را ارائه دهد.تخمین بر اساس هدف مورد انتظار، ميتواند در فازهاي مختلف پروژه محاسبه شود. بنابراین ما به یک مدل خوب برای محاسبه این پارامترها نیاز داریم. یک مدل تخمین با دقت قابل قبول، امکان ايجاد چالش بین ذيالنفعان را در مراحل توسعه پروژه کاهش میدهد.[1]COCOMO یکی از شناخته شدهترین مدلهای مبتني بر مدل الگوریتمی است که در سال 1981 توسط BarryBoehm ارائه گرديد. این مدل از آنالیز 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]. نیاز به مدل جدید از آنجايي آغاز شد كه تکنولوژی توسعه نرمافزار، از پردازندههای مرکزی[2]و پردازش دستهای به سمت توسعه نرمافزارهاي رومیزی[3]، قابلیت استفاده مجدد کدها و استفاده از مؤلفههای نرمافزاری در دسترس، منتقل گرديد[22].