توسعه نرم‌افزار

هزینه طراحی و توسعه نرم‌افزار چگونه محاسبه می‌شود؟

هزینه نرم‌افزار اختصاصی به دامنه، قواعد کسب‌وکار، داده، یکپارچه‌سازی، امنیت و نگهداری بستگی دارد. یاد بگیرید چگونه یک برآورد قابل‌اتکا بخواهید.

تصویر مفهومی از اجزای مؤثر بر هزینه توسعه نرم‌افزار اختصاصی
تصویر مفهومی از اجزای مؤثر بر هزینه توسعه نرم‌افزار اختصاصی
در این مقاله
  1. برای چه چیزی هزینه می‌کنیم؟
  2. هفت عامل اصلی که برآورد را تغییر می‌دهند
  3. ۱. تعداد جریان‌های کاری، نه تعداد صفحه‌ها
  4. ۲. قواعد و استثناهای کسب‌وکار
  5. ۳. کیفیت داده‌های موجود
  6. ۴. یکپارچه‌سازی با سیستم‌های دیگر
  7. ۵. نقش‌ها، دسترسی و الزامات امنیتی
  8. ۶. حجم استفاده و سطح خدمت
  9. ۷. میزان ابهام و سرعت تغییر
  10. یک مثال: چرا دو «سامانه سفارش» قیمت یکسان ندارند؟
  11. چه نوع برآوردی بخواهیم؟
  12. برآورد اولیه برای تصمیم‌گیری
  13. برآورد مرحله‌ای پس از کشف
  14. بودجه نگهداری پس از انتشار
  15. قیمت ثابت بهتر است یا همکاری مرحله‌ای؟
  16. چگونه هزینه را کم کنیم، بدون اینکه مسئله را ناقص حل کنیم؟
  17. قبل از درخواست قیمت، این اطلاعات را آماده کنید
  18. در پیشنهاد شرکت توسعه‌دهنده دنبال چه بگردیم؟
  19. پرسش‌های پرتکرار
  20. آیا می‌شود قبل از تحلیل، قیمت نهایی داد؟
  21. آیا افزودن هوش مصنوعی همیشه هزینه را زیاد می‌کند؟
  22. آیا نسخه اولیه ارزان یعنی نسخه بی‌کیفیت؟
  23. جمع‌بندی

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

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

برای چه چیزی هزینه می‌کنیم؟

کدنویسی فقط یکی از بخش‌های پروژه است. پیش از آن باید مسئله و کاربران شناخته شوند؛ پس از آن نیز محصول باید آزموده، راه‌اندازی، پایش و نگهداری شود. اگر برآوردی فقط «هزینه ساخت سایت» را نشان می‌دهد، احتمالاً قسمت مهمی از هزینه واقعی را به آینده منتقل کرده است.

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

اگر هنوز میان خرید یک ابزار و ساخت نرم‌افزار مردد هستید، ابتدا مقایسه نرم‌افزار آماده و اختصاصی را بخوانید. هزینه ساخت زمانی معنا دارد که بدانیم چرا گزینه‌های آماده مسئله اصلی را حل نمی‌کنند.

هفت عامل اصلی که برآورد را تغییر می‌دهند

۱. تعداد جریان‌های کاری، نه تعداد صفحه‌ها

یک صفحه ثبت سفارش ممکن است ساده به نظر برسد؛ اما پشت آن تأیید اعتبار مشتری، کنترل موجودی، محاسبه قیمت، پرداخت، صدور سند و ارسال اعلان قرار داشته باشد. در مقابل، چند صفحه محتوایی با الگوی یکسان ممکن است کار کمتری بخواهند. برای برآورد، مسیر «از شروع تا نتیجه» هر کاربر را بنویسید.

۲. قواعد و استثناهای کسب‌وکار

«مدیر سفارش را تأیید می‌کند» یک جمله کوتاه است. اما اگر تأیید به مبلغ، شهر، موجودی، نوع مشتری و جانشین مدیر در زمان غیبت وابسته باشد، پیاده‌سازی و آزمون آن پیچیده‌تر می‌شود. استثناهای واقعی معمولاً در گفت‌وگو با کارکنانی پیدا می‌شوند که هر روز با سیستم کار خواهند کرد.

۳. کیفیت داده‌های موجود

اگر اطلاعات محصول، مشتری یا عملیات در چند فایل و سامانه با نام‌گذاری متفاوت پراکنده باشند، قبل از انتقال باید پاک‌سازی و تطبیق انجام شود. «واردکردن اطلاعات قبلی» بدون بررسی نمونه واقعی داده، بند کوچکی در قرارداد نیست؛ گاهی یک بخش مستقل پروژه است.

۴. یکپارچه‌سازی با سیستم‌های دیگر

اتصال به پرداخت، حسابداری، انبار، پیامک یا نرم‌افزار داخلی به کیفیت API و همکاری ارائه‌دهنده وابسته است. اگر سیستم مقصد مستندات ندارد یا فقط خروجی دستی می‌دهد، راهکار و زمان کار فرق می‌کند. پیش از برآورد قطعی، باید راه دسترسی و یک نمونه تبادل داده آزمایش شود.

۵. نقش‌ها، دسترسی و الزامات امنیتی

سیستمی که یک تیم کوچک از آن استفاده می‌کند، با پلتفرمی که مشتری، فروشنده، کارشناس و مدیر در آن نقش‌های متفاوت دارند یکسان نیست. هر نقش، مرز دسترسی و سناریوهای آزمون تازه‌ای می‌سازد. داده حساس، ثبت تاریخچه تغییرات و نیاز به بازیابی نیز باید از ابتدا روشن باشد.

۶. حجم استفاده و سطح خدمت

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

۷. میزان ابهام و سرعت تغییر

وقتی نیازها روشن و نمونه‌های واقعی در دسترس‌اند، برآورد دقیق‌تر می‌شود. اگر هنوز درباره کاربران، قواعد یا مدل درآمدی فرضیه‌های زیادی وجود دارد، قراردادی با مبلغ «کاملاً قطعی» معمولاً با حذف دامنه، درخواست‌های تغییر یا افت کیفیت جبران می‌شود. بهتر است ابتدا مرحله کشف محدود تعریف شود.

یک مثال: چرا دو «سامانه سفارش» قیمت یکسان ندارند؟

فرض کنید دو شرکت سامانه ثبت سفارش می‌خواهند. در شرکت اول، کاربر چند محصول ثابت انتخاب می‌کند، سفارش ثبت می‌شود و یک مدیر آن را بررسی می‌کند. در شرکت دوم، قیمت به قرارداد مشتری وابسته است، موجودی از انبار دیگری می‌آید، سفارش چند مرحله تأیید دارد و باید به حسابداری منتقل شود. عنوان هر دو پروژه یکی است؛ اما مسئله و حجم آزمون آن‌ها متفاوت است.

برای همین، درخواست «قیمت یک نرم‌افزار سفارش‌گیری چقدر است؟» پاسخ مفیدی ندارد. درخواست بهتر این است: «برای این جریان مشخص، با این تعداد نقش و این اتصال‌ها، نسخه نخست چه دامنه‌ای دارد و فرض‌های برآورد چیست؟»

چه نوع برآوردی بخواهیم؟

برآورد اولیه برای تصمیم‌گیری

در آغاز، یک بازه همراه با فرض‌ها کافی است. این بازه باید نشان دهد چه چیزهایی در دامنه هستند، چه چیزهایی هنوز نامعلوم‌اند و کدام تصمیم‌ها بیشترین اثر را بر هزینه دارند. یک عدد تنها، بدون دامنه و فرض، ابزار مقایسه خوبی نیست.

برآورد مرحله‌ای پس از کشف

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

بودجه نگهداری پس از انتشار

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

قیمت ثابت بهتر است یا همکاری مرحله‌ای؟

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

در هر روش، توافق کنید تغییر دامنه چگونه بررسی می‌شود، چه کسی اولویت را تعیین می‌کند و گزارش پیشرفت با چه فاصله‌ای ارائه می‌شود. بخش مبهم قرارداد، معمولاً بعداً به هزینه تبدیل می‌شود.

چگونه هزینه را کم کنیم، بدون اینکه مسئله را ناقص حل کنیم؟

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

حذف آزمون، امنیت یا طراحی مسیر اصلی صرفه‌جویی واقعی نیست؛ فقط هزینه خطا را به زمان استفاده منتقل می‌کند.

قبل از درخواست قیمت، این اطلاعات را آماده کنید

  1. مسئله فعلی را در چند جمله، مستقل از راهکار پیشنهادی، توضیح دهید.
  2. کاربران و نقش‌های اصلی را نام ببرید و بگویید هرکدام چه کاری انجام می‌دهند.
  3. یک نمونه واقعی از فرایند یا داده فعلی، بدون اطلاعات محرمانه، آماده کنید.
  4. سیستم‌هایی را که باید متصل شوند مشخص کنید.
  5. محدودیت زمان، بودجه، امنیت و محل نگهداری داده را بیان کنید.
  6. بگویید از کجا می‌فهمید نسخه اول موفق بوده است.

اگر بعضی پاسخ‌ها را نمی‌دانید، مشکلی نیست؛ همان‌ها باید موضوع مرحله کشف باشند. در راهنمای شروع پروژه نرم‌افزار اختصاصی این مسیر را با جزئیات بیشتری توضیح داده‌ایم.

در پیشنهاد شرکت توسعه‌دهنده دنبال چه بگردیم؟

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

پرسش‌های پرتکرار

آیا می‌شود قبل از تحلیل، قیمت نهایی داد؟

برای کار کوچک و تکرارشونده گاهی بله. برای سامانه‌ای با قواعد و اتصال‌های نامشخص، بهتر است بازه اولیه ارائه شود و پس از کشف و تعریف دامنه، برآورد دقیق‌تر شکل بگیرد.

آیا افزودن هوش مصنوعی همیشه هزینه را زیاد می‌کند؟

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

آیا نسخه اولیه ارزان یعنی نسخه بی‌کیفیت؟

خیر. نسخه اولیه دامنه کمتری دارد، اما همان جریان محدود باید درست، امن و قابل‌استفاده باشد. کم‌کردن دامنه با حذف کیفیت پایه فرق دارد.

جمع‌بندی

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

برای بررسی دامنه پروژه خود می‌توانید محصولات و مسیر همکاری نوبین را ببینید و مسئله را با ما در میان بگذارید.

نویسنده
تیم نوبین
گام بعدی

این موضوع به پروژه شما مرتبط است؟

اگر برای تصمیم‌گیری، طراحی یا اجرای یک راهکار دیجیتال به همراهی فنی نیاز دارید، درباره پروژه خود با نوبین صحبت کنید.