مقدمه :
در نخستین روزهای کار با کامپیوتر ، تعداد کامپیوتر ها کم و برنامه های کاربردی اغلب پروژه های کوچک و یک نفره بود . از طرفی هزینه های نرم افزاری درصد کوچکی از کل هزینه سیستم کامپیوتری را تشکیل می داد و قدری خطا در تخمین هزینه های نرم افزاری ، تاثیر اندکی برجای می گذاشت . به تدریج تعداد ، اندازه و اهمیت برنامه های کاربردی و از طرف دیگر هزینه های ایجاد نرم افزارشروع به رشد نمود ، به گونه ای که امروزه نرم افزار گران ترین عنصر هر سیستم کامپیوتری به شمار می آید و افزایش بیش از حد هزینه ها برای سازنده نرم افزار مصیبت بار خواهد بود . در نتیجه این رشد ، تاثیر خطاها در تخمین هزینه نرم افزار بیشتر و بدتر شد . در نتیجه امروزه تخمین هزینه پروژه های نرم افزاری اهمیت زیادی پیداکرده است, در این مقاله بعداز تعریف تخمین هزینه و انواع تخمین به تعریف ومقایسه سه روش از روشهای تخمین هزینه های نرم افزاری یعنی روش امتیاز کارکردی (FUNCTION POINT =FP) ,روش COCOMO و روش FPROM می پردازیم .
تعریف تخمین هزینه :
تهیه یک تقریب با برآوری از هزینه های مورد نیاز برای انجام یک پروژه را تخمین هزینه گویند . مهمترین خروجی این فعالیت را تخمین هزینه جزئیات آنها و طراح مدیریت هزینه تشکیل می روند .
انواع تخمین :
1 تخمین ساخت یافته : (structured estimating )
تخمین احتمالاً ابتدای ترین روش « اندازه گیری » می باشد . مردم همیشه از تجربه گذشته خود برای پیش بینی حوادث آینده استفاده می کنند . هرچند طبیعی است . تخمین های ساده جهت برنامه ریزی و کنترل موثر نمی توانند قابل اطمینان باشند . دقت تخمین به تجربه تخمین زننده در زمینه ای که او در حال تخمین است بستگی دارد . روش های تخمین ساخت یافته ، تلاشی برای استفاده از این واقعیت و در عین حال وارد نمودن ساختارو انضباط برفرآیند تخمین می باشد به نحوی که نتایج حاصله از آن را بتوان با اطمینان استفاده نمود . مزایای تخمین به قرار زیر می باشد .
1 روشی ارزان است و بنابراین تنها روشی است که برای مشاغل یک بار تکرار مناسب می باشد .
2 این روش می تواند برای پیش بینی زمان های کاری که دیده نشده است و بنابراین به عنوان مبنایی برای تخمین قیمت برای کارهای یک بار تکرار بزرگ استفاده شود .
به طورطبیعی در مواردی که مقادیرزمانی با جزئیات زیاد مورد نیاز نمی باشند . تخمین قابل استفاده می باشد . بنابراین چنین روش هایی برای کار با سیکل طولانی و در موقعیت هایی که داده زمانی انباشته برای برنامه ریزی ، کنترل یا پرداخت در طول پریودهای طولانی مدت مورد نیاز است . مفید می باشد .
2 تخمین تحلیلی ( Analytical estmating )
تخمین تحلیلی ، مجموعه تخمین ترتیب داده استاندارد می باشد . این تکنیک براین واقعیت استوار است که مشاغل را می توان به جزء متشکله آن تقسیم نمود و عناصر به طور مجزاقابل اندازه گیری یا تخمین می باشند خطای این زمان های منفصله تصادفی بوده و همدیگر را جبران می کنند به نحوی که زمان کل در محیط قابل قبول قرار خواهد گرفت . به طور مشابه هنگامی که تعدادی کار در طول یک زمان بزرگترترتیب می شوند ( مانند میزان کار یک هفته ) خطاهای منفصله در زمان های مشاغل ، تصادفی خواهد بود و همدیگر را جبران خواهند کرد به نحوی که زمان کل قابل قبول می باشد .
بدیهی است تخمین توسط کارگری که درمحدوده کار مورد اندازه گیری با تجربه می باشد و در زمینه روش های کار آموزش دیده است صورت می پذیرد بنابراین تخمین زننده به صورت زیر عمل می کند .
1 کار را به عناصر تقسیم می کند .
2 داده استاندارد یا ترکیبی ( Symetic )را به کار می گیرد .
3 عناصری که ارزش تلاش و صرف وقت دارند را مورد اندازه گیری قرار می دهد .
4 مابقی عناصر را با استفاده از تجربه خود و اطلاعات مربوط به شرایط کاری عوامل ایمنی و مانند آن تخمین می زند .
ممکن است زمان های عناصری که تخمین زده شده اند برای استفاده بعدی به صورت داده استاندارد نگهداری شوند البته دراین حالت لازم است در فواصل مشخصی آنها را از نظر قابل قبول بودن مورد بررسی قرار داد .
3 تخمین مقایسه ای (Comparative estimating )
تخمین مقایسه ای براساس شناسایی و اندازه گیری کارهای « شاخص » ( Bench mark ) با محتوی کاری معین که سایرکارها را بتوان در مقایسه با آن اندازه گیری نمود استواراست کارهای شاخص به نحوی انتخاب می شوند که نماینده کل محدوده کاری مورد نظر بوده و نشانگر نقاط متوسط مقیاس کل کار باشد . این مشاغل شاخص با دقت قابل قبولی توسط تکنیک های اندازه گیری زمان سنجی می شوند .
مرحله بعدی شناسایی نوارهایا شیارهای زمانی است که به کمک تحلیل آماری تعیین می شوند.
حال شاید این سوال مطرح شود که در پروژه های نرم افزاری کدام نوع تخمین استفاده می شود .در پاسخ به این سوال باید گفت که روش تخمین تحلیلی در پروژه های ذکر شده کاربرد بیشتری دارد.
روش امتیاز کارکردی:
تعریف : این روش بر این فرض استوار است میزان نیروی انسانی مصرف شده در هر پروژه نرم افزاری و به تبع آن هزینه آن به مقیاس پروژه بستگی دارد ,در این روش اساس محاسبه امتیاز کارکردی بصورت ذیل است :
=UFC*TCFامتیاز کارکردی
که در آن UFC(1)تعداد امتیازات خالص است که از مجموع تعداد ورودیها, خروجیها, فایلهای منطقی, فایلهای واسطه و پرس و جو ها بدست می آید و TCF (2 )ضریب پیچیدگی فنی است که انجام این مطالعه آنرا بین 65/0و 35/1 برآورد کرده اند.
روش COCOMO :
COCOMO از دو حرف اول سه کلمه CONSTRUCTION COST MODEL ساخته شده که می توان آنرا( مدل هزینه سودمند )ترجمه کرد.این روش ابتدادر سال 1981توسط بوهم( B.W.BOHEM )ارائه گردید.
بوهم در مدل خود عوامل زیر را در هزینه یک پروژه نرم افزاری موثر دانست:
1- قابلیت اعتماد محصول 2- پیچیدگی محصول 3- محدودیت زمان اجرا 4- محدودیت حافضه اصلی 5- در دسترس بودن ماشین 6- قابلیت تیم آنالیست 7- تجربه توسعه نرم افزارهای کاربردی 8- قابلیت تیم برنامه نویسی 9- میزان استفاده از ابزارهای مدرن طراحی 10- میزان استفاده از ابزارهای مدرن برنامه نویسی .
در این روش , میزان تاثیرگذاری هر کدام از عوامل , روی پروژه از کم (LOW ) وتا خیلی زیاد( EXTRA HIGH)درجه بندی شده وبه آنها وزن داده می شود .به این ترتیب یک ماتریس بدست می آید که سطرهای آن عوامل موثر و ستونهای آن درجه میزان تاثیر هر عامل روی پروژه می باشد .این روش عوامل زیادی را در برآوردها در نظر می گیرد وبه همین دلیل احتمال خطا در آن زیاد است .
روش FPROM :
این روش یک روش برآورد مرحله ای است و برای هر مرحله منحصرا می توان زمانی برآورد نیروی انسانی را ارائه داد که مرحله قبل آن انجام شده وشاخصهای معتبری از پروژه موجود باشد .همچنین در این روش مدیران بر اساس تجربه گذشته و تشخیص خود از قابلیتهای تیم های کاری خود برآورد نیروی انسانی را انجام می دهند که آنهم حجم قابل توجهی از هزینه نرم افزار را شامل می شود .به این ترتیب تفاوت این روش , با روش امتیاز کارکردی در نحوه انجام برآوردها (مرحله ای بودن آن )است واز نظر اینکه تعداد ورودی ها , خروجی ها , جداول و گزارشها را شاخصی برای مقیاس پروژه بدانند تفاوتی بین آنها وجود ندارد .
ارزیابی و مقایسه روشهای امتیاز کارکردی , COCOMO وFPROM :
در اینجا به مقایسه کارآیی روش امتیاز کارکردی با دو روش دیگر یعنی COCOMO و FPROM می پردازیم . برای مقایسه این روشها 7پروژه بزرگ و متوسط متشکل از 97 زیر پروژه که در محیطی کاملا مکانیزه با استفاده از متدولوژی مهندسی اطلاعات (IE)جیمز مارتین مورد مطالعه قرار گرفتند
در اینجا ما کوشش می کنیم به پرسشهای ذیل پاسخ دهیم.
1-آیا روشهای حاضر برای پیش بینی نیروی انسانی در محیطهای پیشرفته معتبر هستند ؟
2- آیا روشی که بر اساس یک تجربه طولانی مدیران در یک محیط خاص ایجاد شده باشد برای همان محیط مناسبتر نیست ؟
3- آیا بطور کلی می توان بر مشکل پیش بینی نیروی انسانی مورد نیاز در ابتدای اینگونه پروژه ها فائق آمد؟
مراحل توسعه :
مراحل توسعه پروژه های فوق عبارتند از :1- آنالیز
2- طراحی 3- اجرا
میزان نیروی انسانی مصرفی برای مراحل مختلف هر کدام از پروژه های مورد مطالعه به شرح جدول شماره 1 است .
همچنین , تعداد موجودیتها , صفحات نمایش , FP های خاص و تعداد PSUDO-CODE این پروژه ها در جدول شماره 2 ارائه شده است.
(جداول و نمودار در فایل اصلی موجود است )