در نخستین روزهای کار با کامپیوتر ، تعداد کامپیوتر ها کم و برنامه های کاربردی اغلب پروژه های کوچک و یک نفره بود .
از طرفی هزینه های نرم افزاری درصد کوچکی از کل هزینه سیستم کامپیوتری را تشکیل می داد و قدری خطا در تخمین هزینه های نرم افزاری ، تاثیر اندکی برجای می گذاشت .
به تدریج تعداد ، اندازه و اهمیت برنامه های کاربردی و از طرف دیگر هزینه های ایجاد نرم افزارشروع به رشد نمود ، به گونه ای که امروزه نرم افزار گران ترین عنصر هر سیستم کامپیوتری به شمار می آید و افزایش بیش از حد هزینه ها برای سازنده نرم افزار مصیبت بار خواهد بود .
در نتیجه این رشد ، تاثیر خطاها در تخمین هزینه نرم افزار بیشتر و بدتر شد .
در نتیجه امروزه تخمین هزینه پروژه های نرم افزاری اهمیت زیادی پیداکرده است, در این مقاله بعداز تعریف تخمین هزینه و انواع تخمین به تعریف ومقایسه سه روش از روشهای تخمین هزینه های نرم افزاری یعنی روش امتیاز کارکردی (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 ارائه شده است.
جدول شماره 1- نیروی انسانی مراحل مختلف پروژه جدول شماره2- شاخص های مقیاس پروژه ها جدول شماره 3- نتایج پیش بینی به وسیله روش COCOMO جدول شماره 4- نتایج پیش بینی به روش امتیاز کارکردی جدول شماره 5- نتایج پیش بینی روش FPROM تعیین اعتبار روشهای امتیاز کارکردی, COCOMO در تخمین پروژه های : برای ارزیابی وتعیین اعتبار روشهای COCOMOوامتیاز کارکردی از دو نوع شاخص که در آزمونهای اماری متداول هستند استفاده کرده ایم.
1- میانگین اندازه خطای نسبی MRE (3):هرچه مقدار MRE کوچکتر باشد نشان دهنده پیش بینی دقیق ترمی باشد.
2- ضریب انحراف نسبی R2 به منظور اینکه ملاحظه کنیم پیش بینی ها تا چه اندازه به مقادیر واقعی نزدیک هستند یک رگرسیون خطی بین مقادیر فوق انجام شده است .
مقدار R2 بین صفر و یک تغییر می نماید و هر گاه نزدیک یک باشد به معنی ان است که مقادیر واقعی و پیش بینی شده بطور خطی به هم مربوط هستند .
نتایج پیش بینی های انجام شده به وسیله روش COCOMO در جدول شماره 3و امتیاز کارکردی در جدول شماره 4 نمایش داده شدهاند.
در این جداول F مقدار حاصله از تست F می باشد.همانطور که جدول 3نشان می دهد مقادیر MRE در جدول COCOMO جز در مورد مرحله آنالیز خیلی بالاست که نشان دهنده عدم دقت پیش بینی ها توسط این روش است .مقادیر MRE و R در جدول شماره 4 دقت بیشتری را برای روش امتیاز کارکردی نشان میدهد .
تعیین اعتبار روش FPROM : نتایج پیش بینی های به عمل آمده بر اساس این روش در جدول شماره 5 نشان داده شده است .همانطور که مقادیر MRE و R نشان می دهد دقت پیش بینی ها در این روش بیشتر از روش COCOMO و روش امتیاز کارکردی است.
مشکلات متداول دربرآورد هزینه های پروژه نرم افزاری : با وجود فنون و ابزارهای مختلف در تخمین هزینه های پروژه بسیاری از برآورد های پروژه های نرم افزاری از دقت کمی برخوردارند .
تام دی مارکو 1 یکی از نویسندگان معروف توسعه نرم افزار 4 پیشنهاد برای این گونه بی دقتی ها و چگونگی چیره شدن برآنها را ارائه می دهد .
1 ـ تهیه و توسعه یک برآورد برای یک پروژه نرم افزاری بزرگ فعالیتی پیچیده است که کار زیادی را می طلبد .
بسیاری از برآوردها باید به سرعت و پیش از تکمیل تعیین نیازمندی های کاربران تهیه شود .
2 ـ افرادی که براوردهای هزینه ای توسعه نرم افزار را تهیه می کنند تجربه کافی در این زمینه و بخصوص در پروژه های بزرگ را ندارند .
استفاده از افراد مجرب در این زمینه و نیز نگهداری سوابق برآوردهای مالی پروژه های قبلی راه حل مناسبی برای حل این مشکل است .
3 ـ انسان ها گرایش به سمت برآورد مقدار کمتر ار دارند همچنین گاهی برآورد کننده ها برخی از هزینه های اضافی همچون یک پارچه سازی و آزمایش را فراموش می کنند .
4 ـ هرچندمدیران ممکن است بخواهندیک برآورد تهیه کنند امادرحقیقت به دنبال ارائه عددی هستند که آنها را در یک قرار داد برنده کنند.
یا سرمایه داخلی را جذب کنند .
دراین شرایط تهیه و ارائه برنامه زمانی و هزینه های فعالیت های نرم افزاری راهکارمناسبی به شمار می آید .
نتیجه گیری : مقایسه سه روش COCOMO , امتیاز کارکردی و FPROM موارد زیر را آشکار می سازد: 1- روش COCOMO مطلقا برای تخمین هزینه نرم در محیط های کاملا مکانیزه جوابگو نیست.علت ان پیچیدگی این روش است که زمینه بروز خطای پیش بینی ها را فراهم می سازد .
2- روش امتیاز کارکردی نسبتا بهتر از روش COCOMO.
است.
3- روش FPROM با توجه به اینکه عوامل هر محیط را طبق تجربه و تعریف مدیران همان محیط مد نظر قرار می دهد ودر هر مرحله پیش بینی ها را با توجه به اطلاعات مرحله قبل , اصلاح می کند.
نسبتا بهتر از دو روش دیگر است .
پا نویسها: (تعداد امتیازات خالص اصلاح نشده1-UFC=UNADGUSTED FUNCTION COUNT( (ضریب پیچیدگی فنی ) 2-TCF= TECHNICAL COMPLEXITY FACTOR ( میانگین اندازه خطای نسبی ) 3-MRE=MEANMAGNITUDE RELATIVE ERROR منابع و ماخذ : الف- منابع فارسی: 1-نظام های اطلاعاتی مدیریت , لاودن جین پرایس(رضایی نژاد عبدالرضا–مترجم – تهران- خدمات فرهنگی سبا- 1377 ) 2- مهندسی نرم افزار , یان سامرویل (جعفر نژاد قمی عین الله –مترجم – بابل نشر علوم پایه- 1381 ) ب- منابع اصلی انگلیسی: Estimating SoftWare Costs This article describes the cost estimation lifecycle and a process to estimate project volume .
Author: William Roetzheim .Co_ Foundr, Cost Xpert Grouo, Inc متوسط نیروی مصرفی هر زیر پروژهتعداد زیر پروژهنیروی مصرفی پیاده سازینیروی مصرفی طراحینیروی مصرفی آنالیزکل نیروی مصرفیپروژه5013648493461043A171915431385812262B60160100312472C281130728427762D451462539271935E6711743772361056F5137227710716253663G تعداد PSEUDO-CODE به هزارتعداد امتیازات خالصمتوسط تعداد صفحه نمایش برای هر زیر پروژهتعداد صفحه نمایشتعداد موجودیتپروژه101403827356108A112492949440140B8740272779C83425436391121D13648864541984E5116601314840F22388472179895G اصلاح شدهاصلاح شدهاصلاح شدهاصلاح شدهاصلاح نشدهاصلاح نشدهاصلاح نشدهFR2MREFF2RMREتعدادمرحله97/1171/0226%68/1168/1170/0467%7تمام مراحل24/965/049%24/924/965/049%7آنالیز04/001/03704%06/006/001/06225%7طراحی32/2722/0240%83/4583/4533/0539%7پیاده سازی اصلاح شدهاصلاح شدهاصلاح شدهاصلاح شدهاصلاح نشدهاصلاح نشدهاصلاح نشدهاصلاح نشدهFR2MREFFR2MREتعدادتعدادمرحله42/2080/043%69/1269/1272/051%77تماممراحل15/1878/036%90/1290/1272/034%77آنالیز88/015/065%12/012/002/065%77طراحی73/8347/090%78/7278/7243/095%77پیاده سازی FR2MREتعدادمرحله70/1980/028%7تمام مراحل04/445/048%7آنالیز41/122/048%7طراحی49/656/051%7پیاده سازی