PDA

View Full Version : آموزش: برنامه ای برای محاسبه قیمت یک پروژه نرم افزاری



ma.rad
جمعه 29 دی 1391, 10:01 صبح
سلام دیدم دوستان قیمت پیشنهادی میخوان برا برنامه هایی که می نویسن، این برنامه رو گذاشتم:متفکر:
98579

ma.rad
جمعه 29 دی 1391, 15:21 عصر
لازم دیدم یه توضیحی هم در مورد قیمت گذاری برنامه ها بدم پس به جای اینکه از ابتدای کار و تولید به قیمت فروش نرم افزار برسیم از سود شروع کرده و بعد عقب رفته و قیمتی که آن سود را تضمین کند استخراج کنیم. در یک معادله کلی برای همه کسب و کارها:


هزینه-درآمد=سود
اما در یک شرکت نرم افزاری درآمد از رابطه زیر استخراج می شود:


(تعداد فروش* قیمت فروش هر محصول)Σ = درآمد
(تعداد قرارداد پشتیبانیی* قیمت قرارداد پشتیبانی محصول)Σ +
و هزینه نیز تابع عبارت زیر می باشد:


(تعداد فروش* قیمت تمام شده هرمحصول)Σ = هزینه
(تعداد پشتیبانی* هزینه پشتیبانی هر محصول)Σ+
هزینه پروژه تولید و به روزآوری هر محصول Σ +
هزینه جاری* تعداد ماه+
هزینه اولیه+

در معادلات فوق نکات زیر روشن است :


مشخص است که یک فعالیت تجاری در زمینه نرم افزار با هدف سود است. برای سود آوری در بالا مشخص است که باید درآمد را بالا برد و یا هزینه را کاهش داد. فقط دقت کنید هزینه یک پارامتر مستقل از درآمد نیست و یک بخش عمده از هزینه ها رابطه مستقیمی با تعداد فروش دارد.
Σ در مورد شرکتهایی بکار می رود که چند محصول یا چند پروژه را انجام می دهند. برای شرکتها و یا گروه هایی که تنها یک محصول یا یک پروژه دارند می توان Σ را حذف کرد و برای شرکتهایی که محصولات متنوع و متعدد بالایی دارند که محاسبه رابطه بالا برای تک تک محصولاتشان دشوار است می توان به جای مجموع هر محصول به صورت جداگانه از متوسط قیمت ها و هزینه ها صبحت کرد.
یک تمایز کلی بین هزینه پروژه (Project) و قیمت تمام شده محصول (Product) وجود دارد، که در زمان طرح بحث هزینه ها به صورت دقیقتر به آن خواهم پرداخت.
ممکن است هزینه پروژه تولید یک محصول بیش از قیمت فروش آن باشد ولی شرکت در نهایت سود کند چون تعداد فروش آن محصول بالا باشد و یا اینکه یک شرکت سبدی از محصولات سودآور و ضرر ده داشته باشد که ضرر در یکی را در سود با دیگری جبران کند(جمع جبری در نهایت مثبت باشد).
منظور از سود در معادلات بالا سود حسابداری و نه اقتصادی است و تازه در آنجا هم به جهت ساده کردن معادلات از نقش زمان در سرمایه گذاری اولیه، استهلاک سرمایه و تجهیزات و … نامی برده نشده است. طبیعی است تهیه فرمول های دقیق تر کار من نیست و باید از یک مدیر مالی مجرب در این زمینه کمک گرفت.
همه نکات نوشته “تلاشی برای قیمت گذاری نرم افزار (۱)” (http://weblog.idegostaran.com/?p=222) نوشته امیرنامور (http://weblog.idegostaran.com/) عزیز را یکبار دیگر مرور کنید.

و اما نکته کلیدی و مهم در قیمت گذاری:


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

پس هدف را می توان در دو بخش بدست آوردن قیمت A و B دنبال کرد. اما به جهت جلوگیری از طولانی شدن نوشته در قسمتهای بعدی هر کدام از معادله های درآمد و هزینه بسط داده خواهند شد تا به آن دو قیمت برسیم،

ma.rad
جمعه 29 دی 1391, 15:21 عصر
گر خاطرتان باشد در نوشته قبل گفته شد که هزینه ها از رابطه زیر استخراج می شود:

(تعداد فروش* قیمت تمام شده هرمحصول)Σ = هزینه
(تعداد پشتیبانی* هزینه پشتیبانی هر محصول)Σ+
هزینه پروژه تولید و به روزآوری هر محصول Σ +
هزینه جاری* تعداد ماه+
هزینه اولیه+
در این رابطه هر کدام از پارامترها با فرمول های زیر محاسبه می شود:


هزینه مستقیم فروش=قیمت تمام شده هر محصول
هزینه استقرار+
هزینه منطبق سازی+
متوسط هزینه ماهیانه پشتیبانی محصول* تعداد ماه پشتیبانی اولیه+
هزینه های سربار+
کسورات قانونی

(متوسط تعداد روز خدمات پشتیبانی * هزینه نفر-روز خدمات) Σ=هزینه پشتیبانی هر محصول
هزینه های سربار+
کسورات قانونی+

(تعداد ماه مورد نیاز اجرای هر فعالیت پروژه * نفر-ماه هر تخصص) Σ=هزینه تولید هر محصول

هزینه های محل و امکانات =هزینه جاری
هزینه های سخت افزار و نرم افزار+
هزینه های پرسنل اداری+
هزینه های آموزش +
هزینه های بازاریابی عمومی و برندینگ +
هزینه های عمومی پیش بینی شده یا نشده+

هزینه های محل= هزینه های اولیه
سرمایه گذاری اولیه +
هزینه های اولیه تاسیس+
خود این معادلات را نیز می توان مجددا بسط داد تا به پارامترهای قابل اندازه گیری رسید:


هزینه های دمو =هزینه های مستقیم فروش
هزینه تبلیغات و بازاریابی مستقیم+
متوسط تعداد روز مورد نیاز برای فروش یک محصول * نفر-روز تیم فروش+
پورسانت +

هزینه برگزاری هر جلسه حضوری یا غیر حضوری* متوسط تعداد جلسات =هزینه های دمو
هزینه اقلام دمو حضوری و غیر حضوری+

هزینه جلسه آموزش* تعداد متوسط جلسه آموزش=هزینه استقرار
هزینه نصب و راه اندازی * نفر-ساعت کارشناس پشتیبانی +
هزینه اقلام آموزشی+

متوسط ساعت منطبق سازی هر محصول * نفر-ساعت تیم تولید=هزینه منطبق سازی
خدمات پشتیبانی شامل موارد زیر می گردد:


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

در مورد محاسبه هزینه ها ذکر چند نکته مهم است:


در مورد هزینه سربار و کسورات قانونی (انواع و اقسام مالیات و بیمه و …!) معمولا شرکتها به یک نسبت مشخص نسبت به هزینه محاسبه شده واقعی عمل می کنند، مثلا X% مجموع را به عنوان سربار و Y% را به عنوان کسورات اضافه می کنند. X و Y بسته به هزینه های یک شرکت متغیر است و ممکن است از ۱۰% به بالا تغییر کند.
هزینه های جاری ممکن است شامل اقلام دیگری نیز باشد، مثلا شرکتی که به پرسنل نهار می دهد یا صبحانه و یا مشمول بیمه های تکمیلی و … است یا خدمات بهداشتی/آموزشی یا تفریحی خاصی برای پرسنل در نظر گرفته اند باید آن هزینه ها را هم مد نظر قرار دهند.
هزینه های محل در دو بخش خودش را نشان می دهد: هزینه اولیه که شامل خرید و یا رهن اولیه و آماده سازی و خرید تجهیزات اداری و غیر اداری مرتبط است و هزینه جاری محل که شامل اجاره، شارژ، هزینه های آب و برق و گاز و اینترنت و تلفن و… می باشد.
شما اگر پروژه محور هستید (یعنی پروژه های خاص سفارشی انجام می دهید) هزینه های مرتبط با محصول را ندارید و مستقیما می توانید هزینه تولید را در نظر بگیرید، اما اگر فروشنده بسته های نرم افزاری (Package) هستید باید هزینه های مرتبط با هر فروش را نیز جداگانه محاسبه کنید.
همانگونه که مشخص است هر محصول یک پروژه تولید دارد که هزینه آن جداگانه و یکبار محاسبه می شود. خروجی این پروژه در قالب یک محصول اماده دیگری نیاز به تولید مجددا از صفر ندارد و تنها در هر فروش هزینه های مستقیم فروش و پشتیبانی آن محصول و هزینه منطبق سازی (Customization) در نظر گرفته می شود. اگر محصول آن پروژه سفارشی بوده و تنها برای یک مشتری خاص قابل استفاده باشد طبیعتا با یک محصول عمومی و Package متفاوت می باشد و برخی پارامترها در مورد فروش و بازاریابی و یا هزینه های مستقیم فروش در مورد آن متفاوت محاسبه می شود.
در این فرمول ها فروش و پشتیبانی از یگدیگر مجزا شده اند. بنابراین اگر هنگام فروش یک مدت هم خدمات پشتیبانی به مشتری ارائه می کنید باید به نسبت همان مدت نیز هزینه پشتیبانی را در قیمت تمام شده محصول در نظر بگیرد ولی اگر فروش بدون پشتیبانی را دنبال می کنید (مثلا CD فروش هستید) این هزینه می تواند از هزینه های فروش کاسته شود.
طبیعتا برای شرکتهایی که تنها نمایندگی فروش یک محصول را بر عهده دارند، از نرم افزارهای خارجی قفل شکسته استفاده می کنند و یا مبتنی بر محصولات متن باز عمل می کنند هزینه تولید می تواند صفر یا ناچیز (مثلا صرفا برای فارسی سازی) درنظر گرفته شود.
مجددا تاکید می شود که همه فرمولهای فوق ساده شده هستند و پارامترهای زمان ، استهلاک، تورم و … در آنها در نظر گرفته نشده است.
نکات دیگری هم در مورد محاسبه هزینه ها هست که برای اطلاعات بیشتر باز هم شما را به نوشته مرتبط آقای نامور (http://weblog.idegostaran.com/) در این زمینه ارجاع می دهم (اینجا (http://weblog.idegostaran.com/?p=222)).

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


بهره گیری از تجربیات قبلی: برای مثال شما رفتار عمومی مشتریان یک محصول را در یک سال مونیتور می کنید و سپس از روی آن مدت کل زمان یا جلسات مورد نیاز برای فروش ، آموزش و یا پشتیبانی را بدست می آورید. اگر این زمان کل را تقسیم بر تعداد مشتریان نمایید متوسط هر کدام از این پارامترها برای شرکت شما بدست می آید که از آن می توانید برای سال بعد هم به همان شکل و یا با در نظر گرفتن اینکه با افزایش کیفیت محصول و یا توانمند شدن تیم فروش و پشتیبانی طبیعتا خدمات بهتر انجام می شود به شکل کمتر و یا با در نظر گرفتن اینکه تیم کارشناسان نوسازی شده است و یا محصول شما جدیدتر و یا پیچیده تر شده است به شکل بیشتر استفاده کنید. یا هزینه های مربوط به فروش و بازاریابی( ساخت وب سایت، چاپ کاتالوگ، شرکت در نمایشگاه ها و سمینارها، تبلیغات محیطی، تیزر تلویزیونی، پیام و…) را جمع کرده و بخشی از آن را که مستقیما به یک محصول است تقسیم بر تعداد مشتریان کرده هزینه های مستقیم هر فروش را بدست آورید و بخشی که عمومی بوده و مربط به روابط عمومی یا برند سازی شما است را در هزینه های جاری محاسبه کنید.
بهره گیری از تکنیک های عمومی مهندسی نرم افزار: برای مثال در مورد مدت زمان تولید یا منطبق سازی با بهره گیری از روشهای تخمین زمان پروژه (مثلا COCOMO II) و با در نظر گرفتن متدولوژی مورد استفاده شما در تولید (متدولوژی های Heavy weight یا متدولوژی های چابک) و با در نظر گرفتن موجودی های فعلی شما (کتابخانه ها، چارچوب ها و یا مولفه های موجود شما در برنامه سازی)، توان فنی و آموزشی تیم تولید و ریسکهای معمول و غیر معمول تخمین زمان صورت گیرد.

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

راهکار در “تخمین” بیشتر است. شرکتهای نرم افزاری کوچک و یا تازه کار می توانند صرفا هزینه تولید یک محصول را محاسبه کرده و با در نظر گرفتن یک ضریب تخمینی، سایر هزینه های آن را هم محاسبه کنند. برای مثال اگر هزینه تولید یک محصول را X بدست آوردند، هزینه کلی خود را X*V بگذارند که V یک ضریب سربار یا (OverHead ) است. مثلا در حال حاضر شرکتها با در نظر گرفتن یک ضریب ۱٫۵ تا ۲٫۵ یا بیشتر ضرب در هزینه تولید، هزینه قیمت تمام شده خود را که شامل همه هزینه های ریز و درشت گفته شده دیگر است محاسبه می کنند.
در مورد قیمت تمام شده پشتیبانی نیز باز با بکارگیری یک ضریب و نسبت از قیمت فروش عمل می شود، مثلا شرکتها از ۱۰% تا ۳۰% یا بیشتر قیمت تمام شده محصول را بابت پشتیبانی یک ساله یک نرم افزار در نظر می گیرند.
حالا که تقریبا قیمت تمام شده فروش و پشتیبانی محصول(A) برای ما قابل محاسبه شد باید بپردازیم باید به روش پیدا کردن قیمت فروش بپردازیم که در قسمت بعد به آن خواهم پرداخت…

ma.rad
جمعه 29 دی 1391, 15:25 عصر
نرم افزار ها را بسته به شیوه تولید می توان به دو گروه تقسیم نمود: نرم افزارهای سفارشی و بسته های نرم افزاری
۱- نرم افزارهای سفارشی
۲- بسته های نرم افزاری (Package)
در نرم افزارهای سفارشی تمام عملیات تحلیل، طراحی و پیاده سازی به شیوه مرسوم آن اجرا می شود و سیستم بر اساس شرایط موجود و نیازهای مشتری استفاده کننده ساخته می شود. در حالیکه در بسته های نرم افزاری ، تولید کننده با نیاز سنجی عمومی از کل بازار و در نظر گرفتن نیازهای مشتریان متفاوت اقدام به توسعه سیستمی می نماید که بتواند نه الزاما همه بلکه اکثر نیازهای مشتریان را پوشش دهد. در نرم افزارهای سفارشی، سیستم تولیدی منطبق بر نیازهای یک مشتری است در حالیکه در بسته های نرم افزاری این مشتری است که باید نیازهای خود را با سیستم جدید منطبق نماید. با این وجود یک بسته نرم افزاری خوش ساخت این امکان را برای مشتری فراهم می کند که بتواند تا حدودی نیازهای خود را در سیستم اعمال نماید. به عبارت دیگر با به کار گیری ابزارهای عمومی و ساخت قسمت های پویا در بسته های نرم افزاری این امکان فراهم می شود که هر مشتری با نیاز خود سیستم مورد نیاز خود را یا خود شخصا تنظیم نماید و یا این کار توسط فروشنده صورت می گیرد.
اما چه زمانی تولید کننده موظف به ارائه سورس برنامه به مشتری است؟ در هیچ زمانی مگر آنکه در قرارداد فروش مشخص شده باشد. به عبارت دیگر در حالت فروش سیستم به صورت یک بسته نرم افزاری عمومی طبیعتا سورس همراه آن نست چون اگر چنین باشد یعنی شما عملا به خریدار این امکان را داده اید که نرم افزار شما را در جای دیگری هم به فروش برساند. حتی در حالتی که نرم افزار به شکل سفارشی هم تولید می گردد، تولید کننده الزامی به تحویل سورس ندارد. تولید کننده صرفا موظف است که سیستم را مطابق نیازهای فنی و اطلاعاتی مشتری تولید کند. اما با این وجود در زمانی که در قرارداد صریحا مشخص شده باشد که سورس برنامه نیز بایستی به خریدار تحویل گردد فروشنده و یا تولید کننده می تواند با دریافت مبلغ بیشتری نسبت به فروش فقط سیستم این کار را انجام دهد. اما این مبلغ آنقدر زیاد است که عملا خریدار رغبت چندانی به خرید سیستم ندارد!
نکته حائز اهمیت دیگر آنکه معمولا سورس یک برنامه را نمی توان به صورت کامل به مشتری تحویل داد. با توجه به روشهای رایج تولید نرم افزار اکثر تولید کنندگان از کتابخانه ها (Library) و یا مولفه ها (Component) هایی استفاده می کنند که یا توسط خودشان تولید نشده است و از تولید کننده دیگری خریداری کرده اند که طبیعتا طبق قانون رعایت حق مولف (Copyright) صرفا در موارد مشخصی مجاز به ارائه آن به سایرین می باشند و یا توسط خودشان ساخته شده است که محصولی به جز محصول نهایی فروش رفته محسوب می شود و مشتری باید به صورت جداگانه آنها را خریداری نماید.
از طرف دیگر حتی اگر سورس کد برنامه به صورت کامل در اختیار مشتری قرار بگیرید این کد بدون مستندات آن عملا به یک چیز بی ارزش تبدیل می شود. معمولا سیستمهای نرم افزاری از تعداد خطوط برنامه زیاد و یا شیوه های پیچیده برنامه نویسی تشکیل شده اند و پر هستند از تکنیک ها، ساختمان داده ها و الگوریتم های متنوع٫ و این در حالی است که مستند سازی در اکثر پروژه های نرم افزاری به ندرت صورت می گیرد و حتی اگر چنین شود مستندا معمولا بی فایده و صرفا برای خالی نبودن عریضه تولید شده اند.
تنها در پروژه هایی که با یک متدولوژی خوب استاندارد و توسط Case Tools های مناسب تولید شده باشند حاوی مستنداتی هستند که برنامه را برای اشخاص دیگری به جز تولید کنندگان و حتی برای خود آنها در مراجعات بعد خوانا می کند.
حتی اگر سورس پروژه به صورت کامل و همراه مستند سازی به خریدار عرضه شود تجربه نشان داده است که هزینه تغییر سیستم تولید شده توسط شخصی دیگر کمتر از تولید مجدد یک سیستم جدید نیست!
بنابراین با جمع کردن همه این موارد می توان به چنین نتیجه گیری رسید که در هنگام خرید نرم افزار حتی اگر فروشنده حاظر به فروش سورس کد خود
باشد و سورس را خوب و کامل و به همراه مستندات آن ارائه نماید منطقی نیست که خریدار هزینه اضافی برای خرید آن صرف نماید. چون از آن سورس کد نمی تواند استفاده خوبی بنماید. بلکه بهتر است با یک هزینه کمتر نسبت به عقد یک قرارداد پشتیبانی خوب اقدام نماید تا تغییرات مورد نیاز آتی توسط خود تولید کننده اولیه و در چارچوب این قرارداد صورت گیرد.
داستانی است که در مواقعی که مشتری چنین نیازی دارد همیشه مطرح می کنم :”در زمانهای قدیم و در ایام برده داری ، یک روز شخصی را دیدند که مادر خود را به بازار برده دار ها می برد. گفتند مادرت را کجا می بری؟ گفت می برم برای فروش!! گفتند : آخر آدم حسابی چه کسی مادر خود را فروخته است؟ این چه کاری است که تو می کنی؟ گفت: یک قیمتی روی مادرم می گذارم که هیچکس نخرد!!!” حال ما هم چنین عمل می کنیم. شما سورس کد برنامه ما را می خواهید مشکلی نیست. الساعه تقدیم می کنیم ولی قیمتش می شود ۱۰۰ میلیون تومان! اگر خواستید بخرید. من نه تنها قول می دهم سورس را با مستندات و با آموزش به صورت کامل به شما عرضه کنم بلکه قول می دهم آن را از روی کامپیوترهای خودمان هم پاک کنیم! اصلا قول می دهیم دیگر هیچ نوع نرم افزاری تولید نکنیم و از این بازار خارج شویم!!