پروژه تخمین تلاش لازم جهت توسعه نرم افزار
بخشی از متن:
برای هر پروژه نرم افزاری سه عامل متداخل زمان، هزینه و کیفیت موثر است. پرداختن به هریک از عوامل باعث تاثیر در دو عامل دیگر می شود. بالا رفتن زمان انجام کار باعث کیفیت بیشتر و بر افزایش قیمت پروژه تاثیر دارد. از آنجائی که در برنامه ریزی پروژه بایستی منابع مورد نیاز از قبــل، پیش بینی شود، لذا تخمین هزینه و زمان تولید نرم افزار هم برای تولید کننده و هم برای استفاده کننده بسیار حیاتی است. منابع و برنامه دو عامل تعیین کننده برای انجام عملیات پروژه هستند. اگر این دو عامل مشخص باشند،آنگاه زمان و هزینه پروژه تولید نرم افزار می تواند تعیین شود. در پروژه های نرم افزاری قبل از شروع به کد نویسی بایستی پارامترهایی تخمین زده شود، بطوریکه رسیدن به اهداف پروژه تضمین گردد.این پارامترها جهت تصمیم گیری در تعیین زمان ،نیروی انسانی، میزان تلاش هزینه و ... کارایی دارد تیم نرم افزاری باید قادر باشند که قبل از شروع به کد نویسی این پارامترها ار برآورد نمایند. یکی از این پارامترها میزان تلاش لازم است که بایستی تخمین درستی از آن در دست داشته باشیم.الگوی های زیادی برای فرایند تخمین ارائه شده از این رو، ما در این تحقیق سعی داریم میزان تلاش لازم برای رسیدن نرم افزار به اهداف خود را در حالت کلی با مدل های ارائه شده پیش بینی و نتایج حاصل با استفاده از روشهای رسمی و ریاضی بررسی نماییم.
واژه های کلیدی
توسعه نرم افزار، هزینه نرم افزار ، تخمین تلاش نرم افزار
مقدمه:
منظور از تخمین تلاش ، پیش بینى مقدار تلاش، زمان و تعداد کارکنان موردنیاز برای توسعه نرم¬افـزار مى¬باشد. اجزای اصلی هزینة پروژه، هزینه هاى سخت افزارى، آموزش و هزینه هاى مربوط به تولید و ساخت نرم افزار، شامل: پرداخت دستمزد به مهندسان نرم افزار است. از آن جاکه، بخش اعظم هزینة پروژه، هزینة کارکنان است؛ اصطلاح تخمین هزینه و تخمین تلاش به صورت متقابل استفاده مى¬شوند. تخمین در ابتدای فرایند ساخت سیستم، که به تخمین مقدماتی معروف است، اغلب دقت کمی دارد؛ زیرا در ابتدا، دانش کمی از پروژه موجود است. تخمین تلاش موردنیاز برای ساخت یک نرم¬افــزار، یکی از دغدغـــه هاى مهم مدیریت پروژه، تلقی می شود. الگوهاى تخمین هزینه اى که در مراحل اولیه ساخت پروژه، با حداقل اطلاعات موجود از پــروژه، هزینة ساخت سیستم را تخمیــن مى زنند، سودمند و موردنیاز هستند. روش تخمین هزینة مناسب، امکان کنتـرل مؤثر زمان و هزینة ساخت سیـستم را فـراهم مى¬نماید (G Kim, 2004) در نتیجه الگوهاى متعددی برای تخمین تلاش سیستم مطرح شده است.
در بررسی بوهم و همکارانش، الگوهاى تخمین تلاش به چهار دسته تقسیم شده اند؛ شامل روش های مبتنی بر: الگو، نظر خبره، یادگیری و پویایی هستند. روش های مبتنی بر الگو، از متداول ترین شیوه تخمین تلاش سیستم مى باشند. (B. Barry, C. Abts, S. Chulani, 2000) بوهـــم، معتقد است که تخمین تلاش ساخت سیستم در مراحل اولیه ساخت سیستم بین 25 تا 400 درصد تلاش واقعی، متغیر است (B.Boehm, 1981)؛ به عبارت دیگر،تخمین تلاش از دقت بسیار کمی برخوردار است؛ زیرا دانش تخمین زننده از پروژه اندک است. این نظر توسط همسترا نیز تأیید شده است. (F.Heemstra, 1992)
شبکة عصبی مصنوعی که از آن برای تخـمین تلاش توسعـــة نرم افــزارها استفاده مى¬شود (A.Gray, S. MacDonell, 1997). به طور نسبى، کاربرد شبکة عصبی در تخمین تلاش در یک پژوهش، جدید است. در سال هاى اخیر، تحقیقات متعددی برای استفاده از روش های غیرالگوریتمی نظیر شبکة عصبی مصنوعی، به عنوان جایگزین روش های مبتنی بر الگو، انجام شده است. (A. Idri, 2002)در دو دهة گذشته از شبکة عصبی برای پیش بینى در کاربردهای مختلفی استفاده و نتایج حاصله در مقایسه با روش های معمول بهتر بوده است روش های مبتنی بر الگو، در اوایل پروژه، به دلیل دانش کمى از پروژه، تخمین مناسبی ارائه نمی دهند؛ درحالی که، روش های مبتنی بر شبکة عصبی مصنوعی، مى توانند درصورت وجود اطلاعات از تلاش پروژه هاى کامل شده، تخمین تلاش مناسبی را ارائه دهند. بررسی های صورت گرفته در مورد بیست هزار پروژه نرم افزاری در طول هجده سال نشان داد، که اکثر پروژه های نرم افزاری به دلیل تخمین هزینه غلط و در نتیجه برنامه ریزی و زمان بندی نادرست مدیران با شکست مواجه شده اند. روش های مختلفی در تخمین و برآورد حجم فعالیت های لازم در انجام یک پروژه نرم افزاری در جامعه نرم افزار ارائه شده است. فارغ از اینکه از چه روشی در تخمین یک پروژه نرم افـــزاری استفاده می¬شود مهم آن است که بدون وجود اطلاعات کافی در زمینه حوزه و دامنه سیستم قابلیت ها و توانایی های آن و همچنین شرایط محیطی و فرهنگی تیم تولید نرم افزار و پیچیدگی های تکنیکی آن، برآورد واقع بینانه پروژه کاری دور از دسترس می نماید.
1-2
بیان مسئله
امروزه تخمین هزینه پروژه های نرم افزاری اهمیت زیادی پیداکرده است امروزه نرم افزار از گران ترین اجزاء یک سیستم کامپیوتری محسوب می گردد. تخمین درست هزینه تولید یک سیستم نرم افزاری، باعث می شود که مدیر پروژه در طول چرخه حیات نرم افزار، از پشتوانه قدرتمندی جهت اتخاذ تصمیمات مختلف برخوردار باشد و مدیر پروژه، تحلیل گر، طراح، برنامه نویس و سایر نیروهای تیم توسعه نرم افزار می دانند که برای تولید یک محصول مناسب به چه میزان تلاش و زمان نیاز دارند. بدون داشتن یک تخمین مناسب از هزینه مورد نیاز، مدیر پروژه نمی تواند تشخیص دهد که به چه میزان زمان و چه حجمی از نیروی انسانی و سایر منابع جهت انجام پروژه نیاز دارد و در صورت تشخیص اشتباه، پروژه در مسیر شکست حتمی حرکت خواهد کرد. سوال این است که چگونه می توان تلاش لازم برای یک پروژه نرم افزاری را تخمین زد.
یکی از روشهای تخمین هزینه های نرم افزار، پیشگویی میزان تلاش لازم برای ساخت نرم افزار و زمان مورد نیاز جهت توسعه ی آن است. یکی از سوالات اساسی که در شروع برنامه نویسی با آن مواجه میشویم این است که میزان تلاش لازم برای انجام پروژه به گونه ای که به اهداف خود برسد چه میزان است؟ به شکل ساده می توان تلاش لازم را برحسب تعداد افرادی که در روز/هفته/ماه و یا حتی سال بر روی پروژه کار می کنند را تخمین زد. (Huang, 2007)
متدها و ابزارها و تکنولوژی های متفاوتی مطرح شده است، همچنین فرمولهایی پیشنهاد شده است که با توجه به سایز و پیچیدگی به عنوان مقادیر ورودی، میزان تلاش لازم را برآورد می نمایند. کار تخمین پروژه های نرم افزاری را به تخمین وظایف در مراحل چرخه حیات یا مراحل فرایند تولید نرم افزار می¬توان افراز نمود . میزان تلاش و کار لازم برای انجام هر فعالیت از وظایف تعیین شده معمولا بر اساس کارایی نفر در ماه مشخص می شود . ممکن است هزینه افراد بر اساس نوع عملکرد محوله متفاوت باشد. معمولا به تحلیلگران با سابقه دستمزدی بیشتر از برنامه نویسان تعلق می گیرد. ماهیت خلاق پروژه های نرم افزاری و انتزاعی بودن آن تخمین تلاش لازم برای توسعه نرم افزار را بی نهایت مشکل می کند روشهای متداول تخمین خود اساسا انتزاعی است با این همه هنوز هم تخمین پروژه امری لازم و ضروری محسوب می¬شود. (اس.پرسمن, 1382)
1-3سوابق و ضرورت انجام تحقیق
در نخستین روزهای کار با کامپیوتر ، تعداد کامپیوتر ها کم و برنامه های کاربردی اغلب پروژه های کوچک و یک نفره بود . از طرفی هزینه های نرم افزاری درصد کوچکی از کل هزینه سیستم کامپیوتری را تشکیل می داد و قدری خطا در تخمین هزینه های نرم افزاری ، تاثیر اندکی برجای می گذاشت . به تدریج تعداد ، اندازه و اهمیــت برنامه های کاربردی و از طرف دیگر هزینه های ایجاد نرم افزار شروع به رشــد نمود ، به گونه ای که امروزه نرم افزار گران ترین عنصر هر سیستم کامپیوتری به شمار می آید و افزایش بیش از حد هزینه ها برای سازنده نرم افزار مصیبت بار خواهد بود . روش های مبتنی بر الگو، متداول ترین برآورد کننده تلاش ساخت نرم افزار هستند. الگوی COCOMO و نقاط وظیفه ای یا به اختصار FP مثالهایی از روش های مبتنی بر الگو می باشند.COCOMOمبتنی برتحلیل رگرسیون داده هاى مربوط به 63 پروژه کامل شده است. الگوى اساسی COCOMO به صورت رابطه شماره (1-1) نشان داده شده است. در این رابطه، EF تعداد نفر-ماه یا ساعات مورد نیاز، c مقدار ثایت به اندازه تخمینی 2/3، LOC تعداد خطوط برنامه به هزار و K مقدار ثابت به اندازه تخمینی 05/1 می باشند.
فهرست مطالب:
چکیده
فصل اول: کلیات تحقیق
1-1 مقدمه
1-2 بیان مسئله
1-3 سوابق و ضرورت انجام تحقیق
1-4 اهداف تحقیق
1-5 سازماندهی تحقیق
فصل دوم: ادبیات تحقیق
2-1 مقدمه
2-2 متدولوژی و ضرورت توجه به آن
2-3 تفاوت روش توسعه نرم افزار و سخت افزار
2-4 فرایند توسعه نرم افزار
2-4-1 مدلهای توسعه نرم افزار
2-4-1-1 اصول شئ گرایی
2-4-2 مقایسه متدولوژی های سنگین وزن و سبک وزن
2-4-3 فعالیت های پشتیبانی
فصل سوم: تخمین تلاش لازم جهت توسعه نرم افزار
3-1 مقدمه
3-2 مفهوم تخمین هزینه
3-3 تخمین هزینه نرم افزار
3-4 انواع تخمین
3-5 اندازه نرم افزار
3-5-1 تعداد خطوط کد
3-5-2 علم نرم افزار
3-5-3 نقاط کاری
3-5-4 نقطه ویژگی
3-6 روش های تخمین هزینه
3-6-1 روشهای غیرالگوریتمی
3-6-1-1 تخمین تجربی
3-6-1-2 روش داوری کارشناسانه
3-6-1-3 تخمین با قیاس
3-6-1-4 روش پارکینسون
3-6-1-5 پایین به بالا
3-6-1-6 بالا به پایین
3-6-2 روشهای الگوریتمی
3-6-2-1 مدل های COCOMO
3-6-2-2 مدل Putnam
3-6-2-3 روش های مبتنی بر آنالیز نقطه ی تابعی
3-6-2-4 رگرسیون
3-7 مروری بر کارهای انجام شده
3-7-1 مدل تخمین هزینه نرم افزار مبتنی بر منطق فازی
3-7-2 تخمین هزینه نرم افزار با استفاده از شبکه های عصبی
3-7-3 تخمین نیروی کار نرم افزار بوسیله الگوریتم ژنتیک با پارامترهای تنظیم شده
3-7-4 چهارچوب مبتنی بر شبکه عصبی و منطق فازی برای تخمین هزینه توسعه نرم افزار
3-7-5 بهینه سازی پارامترها با استفاده از بهینه سازی دسته ذرات
3-7-6 شبکه عصبی موجک برای تخمین هزینه
3-7-7 پیشگویی عصبی- ژنتیک برای توسعه نیروی کار نرم افزاری
3-8 ارزیابی مدل های تخمین
فصل چهارم: مدل رهیافتی
4-1 مقدمه
4-2 روش شناسی تحقیق
4-3 داده ها و جامعه آماری
4-4 معیارهای ارزیابی
4-5 اصول روش پیشنهادی
4-5-1 انتخاب زیر مجموعه ویژگی
4-5-2 اندازه گیری شباهت
4-5-3 مقیاس گذاری
4-5-4 تعداد پروژه های مشابه
4-5-5 تطابق تناسبات
4-6 شمایی از مدل پیشنهادی
نتیجه گیری
پیشنهادات آتی
منابع
فهرست جداول
فهرست شکل ها
جهت دانلود پروژه تخمین تلاش لازم جهت توسعه نرم افزار کلیک کنید
جهت دانلود پروژه تخمین تلاش لازم جهت توسعه نرم افزار کلیک کنید
جهت دانلود پروژه تخمین تلاش لازم جهت توسعه نرم افزار کلیک کنید