تخمین هزینه‌های یک پروژه نرم‌افزاری

دوست خوبم ایمان، اشارهای داشت به تخمین هزینههای یک پروژه نرمافزاری، که بر اساس قولی که داده
بودم ، یک نمونه انجام شده را در این نوشته میآورم.

روشهای زیادی برای برآورد هزینه در پروژه های نرم افزاری وجود دارد ، از روشهای شناخته شده در این زمینه می توان به FP (Function Point) و COCOMO II و سایر روشهای دیگر استفاده نمود. در برآورد هزینه و زمان به روش علمی سعی بر این است که بتوان سیستم‌ها را بر اساس پارامترهای تعیین شده‌ای، ارزیابی نموده و سپس بر مبنای روابطی مشخص، هزینه و زمان سیستم را برآورد نمود.

بااینحال تجربه ثابت کرده است که استفاده از روشهای کاملا علمی که در شرایط کشورهای دیگر تهیه شده است ، در شرایط کشور ایران چندان کاربردی نمی باشد. بنابراین روش توسعه یافته بر اساس فرضیات تئوری های علمی و با استفاده از تجربیات قبلی را بر پایه موارد ذیل برای تخمین قیمت پروژه به کار می بریم :

  • حجم کار : تخمین حجم کار یکی از فعالیت های لازم ( و نه کافی ) در تعیین قیمت یک پروژه می باشد، به طور معمول حجم کار تابعی از تعداد موجودیت های یکی از مهمترین عوامل که مشخص کننده برآورد حجم کار ، تعداد موجودیتهای آن سیستم می باشد. به طوریکه پارامترهای زیر با توجه به موارد زیر قابل تعیین خواهد بود:
    • هر موجودیت نیاز به ساخت یک فرم برای ورود ، ویرایش و بازیابی اطلاعات دارد
    • به ازای هر موجودیت در هر سیستم ۳ گزارش تهیه می شود.
    • موجودیت های اطلاعاتی با تعامل با یکدیگر ، Query های اطلاعاتی را می سازند. بر اساس مطالعات صورت گرفته مشخص شده است که به ازای هر موجودیت به طور متوسط ۳ Query وجود دارد.
    • با توجه به موارد یاد شده توسعه سیستم ، به عنوان تابعی از تعداد موجودیتها قابل تخمین می باشد.
    • فعالیت هایی مانند تحلیل و طراحی و آزمون سیستم به صورت تابعی از فعالیت توسعه سیستم قابل برآورد می باشد.

    از آنجا که اندازه گیری حجم کار برای پیاده سازی نسبت به سایر فعالیت های پروژه نسبت به واحد موجودیت از سهولت و دقت بالاتری برخوردار است. با استفاده از نظر خبرگان و تجربه اعداد متوسط زیر قابل استنتاج است.

        زمان پیاده سازی هر فرم : ۳ ساعت

        زمان پیاده سازی هر گزارش : ۳ ساعت

        زمان طراحی و پیاده سازی هر Query برابر با یک ساعت

    بنابراین با توجه به مطالب بیان شده بالا ، زمان مورد نیاز توسط یک نفر برای پیاده سازی اجزای مرتبط با یک موجودیت به میزان ۱۵ ساعت برآورد می شود . حال با توجه به اینکه مطابق با استاندارد RUP ، پیاده سازی ۲۸ درصد فاز ساخت و فاز ساخت ۶۵ درصد از حجم فعالیت های پروژه را مورد استفاده قرار می دهند ، بنابراین به ازای هر موجودیت ۸۲ نفر ساعت مورد نیازمی باشد.

  • نرخ پیچیدگی : بدیهی است که هر چه نرخ پیچیدگی یک پروژه بیشتر باشد ، زمان و هزینه بیشتری برای آن صرف می شود. به جهت تخمین نرخ پیچیدگی پروژه از پارامترهای زیر استفاده می نماییم.
    • تعداد رابطه اطلاعاتی (Relations) هر چه رابطه اطلاعاتی (Relations) موجودیت های اطلاعاتی یک سیستم بیشتر باشد، پیچیدگی آن سیستم بیشتر است.
    • تکنولوژی مورد استفاده ، چنانچه از تکنولوژی توسعه وب استفاده نماییم، پروژه از پیچیدگی بیشتری نسبت به توسعه در محیط Windows برخوردار خواهد بود.
  • نرخ جامعیت : در صورتی که یک سیستم تعداد فرآیندهای بیشتری را پوشش دهد، دارای نرخ جامعیت بالاتری می باشد. بنابراین نیاز به تحلیل و شناخت اطلاعات در آن سیستم بیشتر خواهد بود.که این امر می تواند بر طراحی و پیاده سازی نیز موثر باشد.
  • ضریب تکراری بودن فعالیت ها :

    گرچه نرخ جامعیت مرتبط با کاربرد سیستم در فرآیندها می باشد. با اینحال اگر رابطه سیستم با فرآیندها به نحوی تعریف شود که یک عملیات خاص توسط سیستم در تمام فرآیندها به طور یکسان تکرار می شود ، از ضریب تکرار پذیری جهت کاهش حجم فعالیت ها استفاده می شود.

با توجه به موارد بالا ، برای برآورد حجم کار یک پروژه از فرمول زیر استفاده می نماییم

ضریب تکرار* نرخ پیچیدگی* نرخ جامعیت * ۸۴ * تعداد موجودیت = حجم کار پروژه

   
 

با تعیین میانگین دستمزد پرسنلی به میزان ۶۰۰۰۰ ریال می توان حجم اولیه ریالی پروژه به صورت زیر برآورد نمود :

حجم کار پروژه * میانگین دستمزد پرسنل= هزینه پرسنلی

   
 

با اینحال در تعیین میزان قیمت تمام شده پروژه‌ها یا تخمین میزان هزینه لازم برای انجام یک کار داشتن محدوده هزینه‌ای مربوط به هر شغل کافی نیست، بلکه لازم است میزان سربار لازم برای هر شغل را نیز تعیین کنیم. در روش هزینه یابی بر اساس فعالیت سه نوع سربار تعریف شده است:

  • سربار مستقیم حقوق : سربار مستقیم حقوق شامل کلیه مبالغی است که مستقیماً در ارتباط با حقوق معنی پیدا می‌کنند، از جمله می‌توان از ۲۳% بیمه سهم کارفرما، حق خواربار، عیدی، پاداش و حق سنوات نام برد.
  • سربار عملیاتی: این نوع سربار شامل اقلام هزینه‌ای سربارحقوق و دستمزد نمی‌شود ولی دربرگیرنده همه انواع سایر هزینه‌هایی است که مستقیماً در یک پروژه مصرف می‌شوند. از جمله می‌توان از مالیات، هزینه فضا، تجهیزات، ابزار، پذیرایی، و ایاب و ذهاب نام برد.
  • سربار غیرعملیاتی : دو سربار مستقیم حقوق و سربار عملیاتی مستقیماً به پروژه مربوط می‌شوند. اما هر شرکت دارای انواع هزینه‌های دیگری است که بدون آن‌ها نمی‌توان پروژه‌ای را انجام داد. از جمله می‌توان از هزینه‌های اداری و تشکیلاتی، و هزینه‌های بازاریابی و فروش نام برد. این قبیل هزینه‌ها بر قیمت تمام شده پروژه تاثیر نمی‌گذارند. لیکن بر میزان سودآوری شرکت تاثیر گذاشته و بنابراین در هنگام قیمت‌گذاری برای پروژه‌ها، آگاهی از میزان آن‌ها برای مدیران شرکت‌ها لازم و ضروری است. بنابراین سربار دیگری را می‌توان تحت عنوان سربار غیرعملیاتی تعریف نمود که شامل کلیه هزینه‌های مشترک شرکت است.

با دانستن میزان دستمزدها و سربار مربوط به اجرای پروژه‌ها به راحتی می‌توان ضریبی را محاسبه نمود که با ضرب آن در کل خالص حقوق پرداختی در یک پروژه بتوان قیمت تمام شده را محاسبه نمود. جدول زیر ضرایب محاسبه شده را نشان می‌دهد:

ردیف 

ضریب 

مقدار 

۱ 

ضریب قیمت تمام شده پروژه (C)

2.4

2 

ضریب قیمت پروژه (P)

3.4

   
 

بنابراین هزینه نهایی سیستمهای اختصاصی سازمان به صورت زیر قابل محاسبه می باشد:

۳.۴*هزینه پرسنلی= قیمت برآوردی پروژه

از آنجا که معمولا باید خرج قند و چای! برخی از افراد کارفرما را نیز در نظر گرفت، قیمت نهایی پروژه که باید به کارفرما اعلام شود به صورت زیر می‌باشد:

هزینه قند و چای پرسنل کارفرما + قیمت برآوردی پروژه= قیمت نهایی پروژه برای اعلام به مشتری

   
 

معمولا وقتی ما با استفاده از این روش، هزینه پروژه را محاسبه می‌کنیم، به این نتیجه می‌رسیم که با قیمت محاسبه شده کار را به ما و یا به هیچ شرکت دیگری نخواهند داد. در این لحظه پارامتر بعدی ( آستانه تحمل مشتری) وارد موضوع می‌شود و قیمت نهایی بر اساس فرمول زیر تعیین می‌شود:

قیمت نهایی =(قیمت محاسبه شده، آستانه تحمل مشتری) کمینه

در مورد آستانه تحمل مشتری نقش رانت بسیار مهم می‌باشد. در این‌گونه موارد باید هزینه کسب اطلاعات از مشتری نیز پرداخت شده و یا اینکه نامبرده ( رانت اطلاعاتی) در منافع پروژه سهیم شود.

موارد استثنایی نیز وجود دارد که قیمت برآوردی مشتری بیشتر از محاسبات انجام شده است. در این لحظه باید از فرمول زیر استفاده کنید:

قیمت نهایی =(قیمت محاسبه شده، قیمت برآوردی مشتری) بیشینه

پی نوشت:

در تهیه این روش از یکی از مستندات شرکت ثنارای نیز استفاده شده است که متاسفانه به اصل آن دسترسی ندارم.

۴ دیدگاه

  1. متن خوب و مفیدی بود.
    اما در این میان هزینه پشتیبانی دیده نشد که واقعا عدم اشاره به آن برای من جای سوال ایجاد کرد. اما نهایتا با اشاره به آستانه تحمل مشتری و قدرت رانت فکر نم که اگر مورد اشاره نشده دیگری هم بود با اشاره به این دو مورد کاملا قابل چشم پوشی است.

  2. در مورد پشتیبانی معمولا یک روش عرف است که بعد از سه ماه گارانتی معمولا سالیانه ۲۰% رقم قرارداد ( با احتساب نرخ تورم ) به عنوان هزینه پشتیبانی از مشتریان باید دریافت شود.

  3. در ابتدا از اینکه تجربیات خود را در اختیار دیگران قرار میدهید قدردانی می‌کنم.
    برای فرضیات خود که تحت نام تجربه عنوان شده حتماًدلایل قابل قبولی دارید که بر خواننده پوشیده است.
    لطفاً منبع این یک قلم را افشا کنید:”حال با توجه به اینکه مطابق با استاندارد RUP ، پیاده سازی ۲۸ درصد فاز ساخت و فاز ساخت ۶۵ درصد از حجم فعالیت های پروژه را مورد استفاده قرار می دهند”

پاسخ دادن به امین لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *