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

قبل از انتخاب شرکت طراحی نرم افزار اختصاصی، نیازهای کسب و کار را مشخص کنید
اولین قدم برای انتخاب پیمانکار، شناخت دقیق مسئله ای است که قرار است نرم افزار آن را حل کند. گاهی سازمان ها بدون بررسی فرایندهای داخلی، مستقیما به سراغ شرکت های برنامه نویسی می روند و درخواست ساخت یک نرم افزار با قابلیت های مشخص را مطرح می کنند. این روش ممکن است باعث شود محصولی توسعه پیدا کند که از نظر فنی قابل قبول است، اما با نیازهای واقعی کاربران هماهنگی ندارد.
برای جلوگیری از این مشکل، بهتر است پیش از دریافت پیشنهاد قیمت، به چند پرسش پاسخ دهید:
- نرم افزار قرار است کدام مشکل یا فرایند را بهبود دهد؟
- کاربران اصلی سیستم چه افرادی هستند؟
- چند کاربر به صورت هم زمان از نرم افزار استفاده خواهند کرد؟
- چه اطلاعاتی باید در سیستم ذخیره و پردازش شوند؟
- آیا نرم افزار باید با سامانه های فعلی سازمان ارتباط داشته باشد؟
- چه قابلیت هایی برای نسخه اولیه ضروری هستند؟
- چه امکاناتی ممکن است در آینده به سیستم اضافه شوند؟
- چه سطحی از امنیت و دسترسی برای اطلاعات مورد نیاز است؟
پاسخ به این پرسش ها به شما کمک می کند محدوده اولیه پروژه را مشخص کنید. همچنین شرکت های مختلف می توانند بر اساس اطلاعات یکسان، پیشنهادهای دقیق تری ارائه دهند.
نرم افزار آماده بخریم یا توسعه نرم افزار سفارشی را انتخاب کنیم؟
نرم افزارهای آماده معمولا برای پاسخ به نیازهای عمومی طراحی شده اند. این محصولات می توانند امکاناتی مانند مدیریت ارتباط با مشتری، حسابداری، مدیریت منابع انسانی یا کنترل موجودی را در اختیار سازمان قرار دهند.
در مقابل، نرم افزار اختصاصی بر اساس نیازهای مشخص یک مجموعه توسعه پیدا می کند. در این روش، ساختار سیستم، قابلیت ها و ارتباط میان بخش های مختلف با توجه به فرایندهای واقعی سازمان طراحی می شوند.
|
معیار مقایسه |
نرم افزار آماده |
نرم افزار اختصاصی |
|
زمان راه اندازی |
معمولا کوتاه تر |
وابسته به پیچیدگی پروژه |
|
هزینه اولیه |
معمولا کمتر |
وابسته به امکانات |
|
انعطاف پذیری |
محدود به امکانات محصول |
قابل طراحی بر اساس نیاز سازمان |
|
شخصی سازی |
محدود |
گسترده |
|
توسعه آینده |
وابسته به ارائه دهنده |
قابل برنامه ریزی |
|
یکپارچه سازی |
وابسته به امکانات نرم افزار |
قابل طراحی بر اساس نیاز |
|
مالکیت کد |
معمولا متعلق به تولید کننده |
تابع قرارداد |
نرم افزار آماده برای کسب و کارهایی مناسب است که نیازهای استاندارد دارند و می توانند فرایندهای خود را با امکانات موجود هماهنگ کنند. در چنین شرایطی، خرید یک محصول آماده ممکن است از نظر زمان و هزینه منطقی تر باشد.
اما توسعه نرم افزار سفارشی زمانی ارزش بیشتری پیدا می کند که:
- فرایندهای سازمان با الگوهای عمومی بازار تفاوت داشته باشند.
- چندین واحد سازمانی به یک سیستم یکپارچه نیاز داشته باشند.
- نرم افزارهای موجود نتوانند اطلاعات را به شکل مورد نیاز مدیریت کنند.
- سازمان به قابلیت های ویژه ای نیاز داشته باشد که در محصولات آماده وجود ندارند.
- کنترل بیشتر بر معماری، امکانات و مسیر توسعه محصول اهمیت داشته باشد.
- محدودیت های نرم افزارهای آماده باعث افزایش فعالیت های دستی و تکراری شده باشند.
7 معیار مهم برای انتخاب شرکت توسعه نرم افزار
پس از مشخص شدن نیازهای پروژه، نوبت به ارزیابی شرکت های نرم افزاری می رسد. برای این کار بهتر است به جای توجه به تبلیغات یا وعده های اولیه، عملکرد شرکت را بر اساس شواهد قابل بررسی بسنجید.
1. تجربه شرکت در اجرای پروژه های مشابه
سابقه فعالیت یک شرکت می تواند اطلاعات اولیه ای درباره توانایی آن ارائه دهد؛ اما تعداد سال های فعالیت یا تعداد پروژه های اجرا شده به تنهایی معیار مناسبی نیست.
برای مثال، شرکتی ممکن است تجربه زیادی در طراحی وب سایت های شرکتی داشته باشد، اما برای توسعه یک سامانه سازمانی پیچیده یا نرم افزار مدیریت فرایندهای صنعتی، تجربه کافی نداشته باشد.
هنگام بررسی سابقه شرکت به این موارد توجه کنید:
- آیا پروژه های قبلی از نظر نوع کاربرد به پروژه شما شباهت دارند؟
- آیا شرکت تجربه توسعه نرم افزار برای کسب و کارهای هم اندازه شما را دارد؟
- آیا با محدودیت ها و چالش های حوزه فعالیت شما آشنا است؟
- آیا پروژه های قبلی را از مرحله تحلیل تا راه اندازی و پشتیبانی اجرا کرده است؟
- آیا می تواند درباره مشکلات فنی پروژه های قبلی و نحوه حل آنها توضیح دهد؟
2. کیفیت و قابلیت بررسی نمونه کارها
بررسی نمونه کار شرکت برنامه نویسی یکی از مهم ترین مراحل انتخاب پیمانکار است. با این حال، صرفا مشاهده تصاویر رابط کاربری یا فهرست نام مشتریان برای ارزیابی کیفیت پروژه کافی نیست.
برای ارزیابی دقیق تر، اقدامات زیر را انجام دهید:
- درخواست مشاهده نسخه عملیاتی نرم افزار یا دموی قابل استفاده داشته باشید.
- قابلیت های اصلی سیستم را در سناریوهای واقعی بررسی کنید.
- عملکرد نرم افزار را در شرایط مختلف، از جمله ورود اطلاعات ناقص یا خطا، مشاهده کنید.
- درباره میزان استفاده کاربران و مشکلات احتمالی پس از راه اندازی سوال کنید.
- در صورت امکان با یکی از مشتریان قبلی شرکت صحبت کنید.
- مشخص کنید کدام بخش های پروژه توسط شرکت مورد نظر توسعه داده شده اند.
3. توانایی تحلیل نیازهای کسب و کار
یکی از تفاوت های مهم میان یک پیمانکار حرفه ای و یک مجری صرفا فنی، توانایی تحلیل مسئله است.
شرکت توسعه نرم افزار باید پیش از شروع برنامه نویسی، فرایندهای کسب و کار را بررسی کند و بفهمد کاربران دقیقا به چه امکاناتی نیاز دارند. در غیر این صورت، احتمال توسعه قابلیت های غیرضروری یا نادیده گرفتن نیازهای مهم افزایش پیدا می کند.
در جلسه اولیه، به نوع سوالاتی که شرکت مطرح می کند توجه داشته باشید.
یک تیم تحلیلگر باید درباره موضوعاتی مانند موارد زیر سوال کند:
- ساختار سازمان و ارتباط میان واحدهای مختلف
- مراحل انجام فرایندهای فعلی
- مشکلات و گلوگاه های سیستم موجود
- نقش ها و سطح دسترسی کاربران
- ورودی ها و خروجی های مورد انتظار
- شرایط استثنایی و سناریوهای غیرمعمول
- گزارش ها و شاخص های مورد نیاز مدیران
- محدودیت های زمانی، مالی و فنی پروژه
خروجی این مرحله باید تا حد امکان مستند باشد. سند نیازمندی ها، نمودار فرایندها، فهرست قابلیت ها و تعریف نقش کاربران از جمله مستنداتی هستند که می توانند مبنای اجرای پروژه قرار بگیرند.
4. تخصص فنی و ساختار تیم توسعه
کیفیت نرم افزار فقط به مهارت برنامه نویس وابسته نیست. توسعه یک محصول قابل اتکا معمولا به همکاری چند تخصص مختلف نیاز دارد.
بسته به اندازه و نوع پروژه، تیم توسعه ممکن است از نقش های زیر تشکیل شود:
- تحلیلگر کسب و کار برای بررسی نیازها و مستندسازی آنها
- طراح رابط و تجربه کاربری برای طراحی مسیر تعامل کاربران
- توسعه دهنده Front-end برای پیاده سازی بخش قابل مشاهده نرم افزار
- توسعه دهنده Back-end برای مدیریت منطق سیستم و ارتباط با پایگاه داده
- متخصص پایگاه داده برای طراحی و مدیریت ساختار اطلاعات
- کارشناس کنترل کیفیت برای بررسی عملکرد نرم افزار
- متخصص DevOps برای مدیریت استقرار و زیرساخت
- مدیر پروژه برای هماهنگی فعالیت ها و کنترل زمان بندی
تمام پروژه ها به یک تیم بزرگ نیاز ندارند. در پروژه های کوچک ممکن است یک نفر چند مسئولیت را بر عهده بگیرد. موضوع مهم این است که مسئولیت هر بخش مشخص باشد و هیچ وظیفه حیاتی بدون متولی باقی نماند.
هنگام انتخاب شرکت نرم افزاری، فقط درباره مهارت های کلی مجموعه سوال نکنید. مشخص کنید چه افرادی قرار است واقعا روی پروژه شما کار کنند.
5. شفافیت در زمان بندی و هزینه ها
برآورد هزینه و زمان تحویل یکی از بخش های مهم پیشنهاد فنی و مالی است. یک شرکت قابل اعتماد باید بتواند توضیح دهد که برآورد خود را بر چه اساسی انجام داده است.
ارائه یک عدد کلی بدون مشخص کردن اجزای پروژه، امکان مقایسه دقیق پیشنهادها را کاهش می دهد.
از شرکت بخواهید هزینه ها و زمان بندی را به بخش های مشخص تقسیم کند؛ برای مثال:
- تحلیل و مستندسازی نیازمندی ها
- طراحی تجربه و رابط کاربری
- توسعه بخش های اصلی نرم افزار
- پیاده سازی ارتباط با سامانه های دیگر
- تست و کنترل کیفیت
- استقرار و راه اندازی
- آموزش کاربران
- پشتیبانی اولیه
همچنین باید مشخص باشد چه مواردی در برآورد اولیه لحاظ نشده اند. هزینه زیرساخت، سرویس های خارجی، لایسنس نرم افزارها و خدمات اشخاص ثالث ممکن است خارج از مبلغ قرارداد باشند.
در بخش زمان بندی نیز بهتر است مراحل تحویل، نقاط کنترل و وابستگی های پروژه مشخص شوند.
برای مثال، اگر اجرای یک بخش به دریافت اطلاعات از کارفرما وابسته است، مسئولیت و زمان مورد نیاز برای ارائه آن اطلاعات باید در برنامه پروژه دیده شود.
6. تعهد به تست، امنیت و کیفیت نرم افزار
نرم افزاری که بدون آزمون کافی تحویل داده می شود، ممکن است پس از ورود به محیط عملیاتی مشکلات جدی ایجاد کند. این مسئله به ویژه در سیستم هایی که اطلاعات مالی، مشتریان یا داده های حساس سازمان را مدیریت می کنند اهمیت بیشتری دارد.
پیش از انتخاب پیمانکار، درباره روش کنترل کیفیت و امنیت نرم افزار سوال کنید.
مهم ترین موارد قابل بررسی عبارت اند از:
- تست عملکرد قابلیت های اصلی
- تست یکپارچگی بخش های مختلف
- بررسی عملکرد سیستم در برابر ورودی های نامعتبر
- تست فشار و بار در صورت نیاز پروژه
- بررسی سطح دسترسی کاربران
- محافظت از اطلاعات حساس
- مدیریت امن رمزهای عبور و اطلاعات احراز هویت
- تهیه نسخه پشتیبان و بررسی امکان بازیابی اطلاعات
- بررسی آسیب پذیری های امنیتی متناسب با نوع نرم افزار
7. خدمات پشتیبانی و امکان توسعه آینده
تحویل نرم افزار پایان همکاری فنی نیست. هر سیستم پس از راه اندازی ممکن است به اصلاح خطا، به روزرسانی، بهینه سازی عملکرد یا افزودن قابلیت های جدید نیاز داشته باشد.
بنابراین، هنگام انتخاب شرکت توسعه نرم افزار سفارشی باید برنامه پشتیبانی پس از تحویل را نیز بررسی کنید.
موارد مهم عبارت اند از:
- مدت پشتیبانی رایگان پس از تحویل
- محدوده خدمات پشتیبانی
- زمان پاسخگویی به درخواست ها
- نحوه ثبت و پیگیری مشکلات
- هزینه نگهداری و توسعه قابلیت های جدید
- مسئولیت به روزرسانی های فنی و امنیتی
- شرایط انتقال پروژه به تیم یا شرکت دیگر
برای مثال، اگر یک شرکت قصد دارد در آینده تعداد کاربران خود را افزایش دهد یا نرم افزار را به سیستم حسابداری و انبارداری متصل کند، بهتر است این نیازها از مرحله طراحی معماری مورد توجه قرار بگیرند.

هزینه طراحی نرم افزار اختصاصی چگونه محاسبه می شود؟
هزینه طراحی نرم افزار اختصاصی به مجموعه ای از عوامل فنی و اجرایی وابسته است. به همین دلیل، نمی توان برای تمام پروژه ها یک قیمت ثابت در نظر گرفت.
ممکن است دو سازمان هر دو به نرم افزار مدیریت مشتری نیاز داشته باشند، اما به دلیل تفاوت در تعداد کاربران، گردش کار، سطح دسترسی، گزارش ها و ارتباط با سامانه های دیگر، هزینه اجرای پروژه آنها کاملا متفاوت باشد.
مهم ترین عوامل تاثیرگذار بر هزینه عبارت اند از:
1. پیچیدگی پروژه و تعداد قابلیت ها
هرچه تعداد امکانات بیشتر باشد و ارتباط میان بخش های مختلف پیچیدگی بیشتری داشته باشد، زمان تحلیل، طراحی، برنامه نویسی و تست افزایش پیدا می کند.
برای مثال، یک سیستم ساده ثبت اطلاعات مشتری با یک سامانه جامع CRM که امکاناتی مانند مدیریت سرنخ، پیگیری فروش، گزارش گیری، اتوماسیون و اتصال به ابزارهای ارتباطی دارد، از نظر حجم توسعه قابل مقایسه نیست.
2. نوع فناوری و معماری نرم افزار
فناوری های انتخاب شده بر هزینه توسعه، زیرساخت و نگهداری تاثیر دارند. معماری های پیچیده تر یا نیاز به پردازش حجم بالای اطلاعات ممکن است به تخصص و منابع بیشتری نیاز داشته باشند.
البته استفاده از فناوری های جدیدتر همیشه به معنی هزینه بیشتر یا کیفیت بالاتر نیست. انتخاب باید با توجه به نیاز واقعی پروژه انجام شود.
3. یکپارچه سازی با سیستم های دیگر
اگر نرم افزار باید با سامانه های حسابداری، انبارداری، پرداخت، مدیریت منابع انسانی یا سایر سرویس های سازمان ارتباط برقرار کند، هزینه توسعه رابط های ارتباطی و بررسی سازگاری سیستم ها نیز باید در نظر گرفته شود.
در این بخش، کیفیت API سامانه های موجود و محدودیت های دسترسی به اطلاعات اهمیت زیادی دارند.
4. سطح امنیت و الزامات عملیاتی
نرم افزارهایی که با داده های حساس یا عملیات مهم سازمان سروکار دارند، ممکن است به کنترل دسترسی دقیق، ثبت رویدادها، رمزنگاری، پشتیبان گیری و آزمون های امنیتی بیشتری نیاز داشته باشند.
5. طراحی رابط کاربری و تجربه کاربری
تعداد صفحات، پیچیدگی مسیرهای کاربری، طراحی نسخه موبایل و نیاز به تجربه کاربری اختصاصی می توانند بر حجم کار و هزینه تاثیر بگذارند.
6. خدمات پس از تحویل
پشتیبانی، رفع خطا، به روزرسانی، نظارت بر عملکرد و توسعه امکانات جدید ممکن است به صورت قرارداد جداگانه یا بخشی از قرارداد اصلی ارائه شوند.
7. انتقال اطلاعات از سیستم های قبلی
اگر سازمان اطلاعات خود را از نرم افزارهای قدیمی به سیستم جدید منتقل کند، بررسی کیفیت داده ها، پاک سازی، تبدیل ساختار و کنترل صحت اطلاعات نیز بخشی از هزینه پروژه خواهد بود.
چرا قیمت پیشنهادی شرکت های نرم افزاری متفاوت است؟
اختلاف قیمت میان شرکت ها لزوما به معنی گران فروشی یا ضعف فنی نیست. گاهی دو شرکت در ظاهر برای یک پروژه پیشنهاد قیمت ارائه می دهند، اما محدوده خدمات آنها یکسان نیست.
دلایل رایج تفاوت قیمت عبارت اند از:
تفاوت در برداشت شرکت ها از نیازمندی های پروژه
- تفاوت در اندازه و تخصص تیم اجرایی
- تفاوت در فناوری و معماری پیشنهادی
- میزان تست و کنترل کیفیت
- سطح مستندسازی و خدمات تحویل
- هزینه های زیرساخت و سرویس های جانبی
- نوع قرارداد و تعهدات پشتیبانی
آیا انتخاب ارزان ترین شرکت نرم افزاری تصمیم درستی است؟
اگر یک شرکت با حذف مراحل تحلیل، تست یا مستندسازی هزینه پروژه را کاهش دهد، ممکن است سازمان در ادامه با مشکلاتی مواجه شود که رفع آنها هزینه بیشتری داشته باشد.
برای مثال، نبود مستندات فنی می تواند وابستگی سازمان به برنامه نویس اولیه را افزایش دهد. همچنین ضعف در طراحی پایگاه داده یا معماری نرم افزار ممکن است هنگام اضافه شدن قابلیت های جدید، هزینه توسعه را بالا ببرد.
پیش از انتخاب ارزان ترین پیشنهاد، این موارد را بررسی کنید:
- آیا تمام قابلیت های مورد نیاز در پیشنهاد قیمت لحاظ شده اند؟
- آیا هزینه تست و کنترل کیفیت مشخص است؟
- آیا مالکیت کد و مستندات تعیین شده است؟
- آیا هزینه های پنهان یا خدمات خارج از قرارداد وجود دارند؟
- آیا پشتیبانی پس از تحویل مشخص است؟
- آیا زمان بندی ارائه شده با حجم پروژه تناسب دارد؟
قبل از امضای قرارداد طراحی نرم افزار چه مواردی را بررسی کنیم؟
قرارداد، چارچوب اصلی همکاری میان کارفرما و شرکت نرم افزاری است. حتی اگر شرکت سابقه خوبی داشته باشد و در جلسات اولیه پاسخ های قانع کننده ای ارائه دهد، نباید جزئیات همکاری را به توافق های شفاهی محدود کرد.
بسیاری از اختلافات پروژه های نرم افزاری به دلیل مشخص نبودن محدوده کار، معیار تحویل، مالکیت کد یا شرایط پشتیبانی ایجاد می شوند.
پیش از امضای قرارداد، موارد زیر را بررسی کنید:
- محدوده دقیق پروژه و قابلیت های مورد انتظار
- امکاناتی که خارج از محدوده قرارداد هستند
- زمان بندی و مراحل تحویل پروژه
- شرایط پرداخت و ارتباط آن با پیشرفت کار
- نحوه ثبت و قیمت گذاری درخواست های جدید
- مالکیت سورس کد و حقوق استفاده از نرم افزار
- نحوه تحویل مستندات فنی و راهنمای کاربری
- معیارهای پذیرش و تست نرم افزار
- تعهدات امنیتی و محرمانگی اطلاعات
- مدت و شرایط پشتیبانی
- مسئولیت هزینه های سرویس ها و زیرساخت های جانبی
- شرایط فسخ قرارداد و تحویل اطلاعات
برای بررسی دقیق تر، می توان بندهای مهم قرارداد را در قالب جدول زیر ارزیابی کرد:
|
بند قرارداد |
موضوع قابل بررسی |
ریسک بی توجهی |
|
محدوده پروژه |
قابلیت ها و خدمات مورد انتظار |
اختلاف درباره تعهدات |
|
زمان بندی |
مراحل اجرا و تاریخ تحویل |
تاخیر در پروژه |
|
پرداخت |
مبلغ و شرایط پرداخت هر مرحله |
پرداخت بدون دریافت خروجی |
|
تغییرات پروژه |
نحوه ثبت و برآورد درخواست های جدید |
افزایش هزینه |
|
مالکیت سورس کد |
تعیین مالکیت و حقوق بهره برداری |
وابستگی به پیمانکار |
|
مستندات |
تحویل مستندات فنی و راهنمای کاربری |
دشواری توسعه آینده |
|
تست و پذیرش |
معیارهای تایید عملکرد |
تحویل نرم افزار ناقص |
|
امنیت |
حفاظت از اطلاعات و دسترسی ها |
افشای اطلاعات |
|
پشتیبانی |
مدت و محدوده خدمات |
نبود پشتیبانی پس از تحویل |
|
فسخ قرارداد |
شرایط پایان همکاری و انتقال اطلاعات |
دشواری تغییر پیمانکار |
مالکیت سورس نرم افزار
یکی از مهم ترین موضوعات قراردادهای توسعه نرم افزار، تعیین وضعیت مالکیت کد منبع است.
باید مشخص شود پس از پرداخت هزینه های توافق شده، حقوق مربوط به بخش های توسعه یافته چگونه منتقل می شوند و کارفرما چه سطحی از دسترسی به کد و مخزن پروژه خواهد داشت.
همچنین باید وضعیت اجزای نرم افزاری متعلق به اشخاص ثالث مشخص باشد. ممکن است بخشی از محصول با استفاده از کتابخانه های متن باز، سرویس های تجاری یا ابزارهای دارای مجوز توسعه پیدا کند. حقوق استفاده از این اجزا لزوما با مالکیت کد اختصاصی یکسان نیست.
بهتر است قرارداد درباره موارد زیر صراحت داشته باشد:
- مالکیت و حقوق بهره برداری از کد اختصاصی
- نحوه دسترسی به مخزن کد
- وضعیت کتابخانه ها و ابزارهای شخص ثالث
- مالکیت رابط های طراحی شده و مستندات
- نحوه تحویل اطلاعات و دسترسی های زیرساختی
- شرایط انتقال پروژه به پیمانکار دیگر
معیار تحویل نرم افزار باید قابل اندازه گیری باشد
عبارت هایی مانند «نرم افزار کامل تحویل داده می شود» برای قرارداد کافی نیستند. باید مشخص شود تکمیل هر قابلیت با چه شرایطی تایید خواهد شد.
برای مثال، اگر یکی از قابلیت های پروژه ثبت سفارش است، باید مواردی مانند ثبت اطلاعات، اعتبارسنجی ورودی ها، ذخیره اطلاعات، نمایش وضعیت سفارش و مدیریت خطا تعریف شوند.
همچنین بهتر است مشخص شود:
- چه کسی مسئول تایید خروجی هر مرحله است؟
- کارفرما چه مدت برای بررسی خروجی فرصت دارد؟
- خطاهای شناسایی شده چگونه ثبت می شوند؟
- چه زمانی یک قابلیت آماده تحویل محسوب می شود؟
- رفع ایرادات پیش از تحویل نهایی چگونه انجام می شود؟
چه نشانه هایی از انتخاب یک شرکت نرم افزاری نامناسب خبر می دهند؟
در فرایند انتخاب پیمانکار، علاوه بر بررسی نقاط قوت شرکت ها، باید نشانه های هشداردهنده را نیز جدی گرفت. برخی رفتارها ممکن است نشان دهند شرکت از نظر فرایند اجرایی، شفافیت یا توان فنی آمادگی کافی برای پروژه را ندارد.
مهم ترین این نشانه ها عبارت اند از:
- ارائه قیمت قطعی بدون بررسی نیازها: اگر شرکت بدون شناخت فرایندهای سازمان، تعداد کاربران و امکانات مورد نیاز، مبلغ نهایی اعلام می کند، احتمال دارد برآورد آن بر اساس فرضیات ناقص انجام شده باشد.
- وعده زمان تحویل غیرواقعی: زمان بندی بسیار کوتاه بدون توضیح درباره مراحل تحلیل، طراحی، توسعه و تست می تواند نشانه برآورد غیرحرفه ای باشد.
- نداشتن نمونه کار قابل ارزیابی: شرکتی که فقط به معرفی کلی پروژه های قبلی اکتفا می کند و امکان مشاهده محصول یا دریافت اطلاعات قابل بررسی را فراهم نمی سازد، نیازمند ارزیابی بیشتر است.
- شفاف نبودن مالکیت کد و مستندات: اگر شرکت درباره تحویل سورس کد، دسترسی به مخزن و مالکیت محصول پاسخ روشنی ارائه نمی دهد، باید پیش از قرارداد این موضوع تعیین تکلیف شود.
- نبود فرایند مشخص برای تست: پاسخ هایی مانند «در پایان پروژه همه چیز بررسی می شود» بدون ارائه برنامه کنترل کیفیت، برای پروژه های جدی کافی نیست.
- نامشخص بودن تیم اجرایی: اگر افراد مسئول پروژه معرفی نمی شوند یا مشخص نیست چه کسانی وظایف تحلیل، توسعه و تست را بر عهده دارند، امکان ارزیابی ظرفیت واقعی شرکت کاهش پیدا می کند.
- نبود برنامه پشتیبانی: شرکتی که درباره مسئولیت خود پس از تحویل نرم افزار توضیح مشخصی ندارد، ممکن است سازمان را در زمان بروز مشکلات عملیاتی با چالش مواجه کند.
- ارائه نکردن برنامه مدیریت تغییرات: در پروژه های نرم افزاری ممکن است نیازهای جدیدی در طول اجرا شناسایی شوند. اگر نحوه بررسی و برآورد این تغییرات مشخص نباشد، احتمال اختلاف درباره زمان و هزینه افزایش پیدا می کند.
- اصرار بر پرداخت کامل پیش از ارائه خروجی: شرایط پرداخت باید با ساختار پروژه و میزان ریسک همکاری تناسب داشته باشد. پرداخت مرحله ای بر اساس تحویل و تایید خروجی ها می تواند کنترل بیشتری برای کارفرما ایجاد کند.

5 سوالی که باید در جلسه اول از شرکت طراحی نرم افزار بپرسید
پنج سوال زیر می توانند به ارزیابی دقیق تر گزینه های موجود کمک کنند.
1. چه پروژه های مشابهی اجرا کرده اید؟
هدف از این سوال، بررسی تجربه واقعی شرکت در پروژه هایی با نیازها و پیچیدگی مشابه است.
از شرکت بخواهید نمونه های مرتبط را معرفی کند و توضیح دهد چه بخش هایی از پروژه را خودش اجرا کرده است. همچنین درباره مشکلات اصلی پروژه و راهکارهای فنی استفاده شده سوال کنید.
اگر امکان مشاهده نسخه عملیاتی وجود داشته باشد، می توانید عملکرد محصول را بهتر ارزیابی کنید.
2. نیازهای پروژه را چگونه تحلیل و مستند می کنید؟
پاسخ این سوال نشان می دهد شرکت تا چه اندازه برای شناخت کسب و کار و جلوگیری از ابهام در محدوده پروژه اهمیت قائل است.
بپرسید آیا پیش از شروع برنامه نویسی، جلسات تحلیل برگزار می شود؟ خروجی این جلسات چیست؟ آیا سند نیازمندی ها، نمودار فرایندها و فهرست قابلیت ها در اختیار کارفرما قرار می گیرد؟
همچنین مشخص کنید در صورت شناسایی نیازهای جدید، این موارد چگونه به مستندات پروژه اضافه می شوند.
3. هزینه و زمان تحویل بر چه اساسی برآورد می شود؟
از شرکت بخواهید مبنای برآورد مالی و زمانی خود را توضیح دهد.
آیا هزینه بر اساس قابلیت ها و ماژول های نرم افزار محاسبه شده است؟ چه عواملی می توانند باعث افزایش زمان یا هزینه شوند؟ مراحل تحویل چگونه تعریف شده اند؟
پاسخ دقیق باید شامل توضیح درباره فرضیات، محدودیت ها، وابستگی ها و خدمات خارج از محدوده قرارداد باشد.
4. مالکیت کد و مستندات پس از تحویل با چه کسی است؟
این سوال برای جلوگیری از وابستگی بلند مدت به یک پیمانکار اهمیت زیادی دارد.
مشخص کنید پس از پرداخت هزینه های توافق شده، چه حقوقی نسبت به سورس کد خواهید داشت. آیا به مخزن پروژه دسترسی دارید؟ مستندات فنی، اطلاعات پایگاه داده و راهنمای استقرار نیز تحویل داده می شوند؟
همچنین درباره شرایط انتقال پروژه به یک شرکت دیگر در صورت پایان همکاری سوال کنید.
5. پشتیبانی، رفع خطا و توسعه قابلیت های جدید چگونه انجام می شود؟
نرم افزار پس از راه اندازی ممکن است به اصلاحات و به روزرسانی های مختلف نیاز داشته باشد. بنابراین، باید بدانید شرکت برای مدیریت این موارد چه برنامه ای دارد.
درباره مدت پشتیبانی، زمان پاسخگویی، روش ثبت درخواست، هزینه خدمات خارج از قرارداد و نحوه توسعه امکانات جدید سوال کنید.
همچنین مشخص کنید در صورت بروز یک خطای مهم در سیستم عملیاتی، چه فرایندی برای بررسی و رفع آن وجود دارد.
پاسخ این پنج سوال را برای تمام شرکت های مورد بررسی ثبت کنید. بهتر است علاوه بر پاسخ های شفاهی، مدارک مرتبط مانند نمونه کار، پیشنهاد فنی، برنامه زمان بندی و پیش نویس قرارداد را نیز دریافت کنید.
برای مقایسه نهایی، می توانید به هر شرکت بر اساس معیارهای زیر امتیاز دهید:
|
معیار ارزیابی |
وزن پیشنهادی |
|
تجربه در پروژه های مشابه |
15 درصد |
|
کیفیت نمونه کارها |
15 درصد |
|
توانایی تحلیل نیازهای کسب و کار |
15 درصد |
|
تخصص فنی و ساختار تیم |
15 درصد |
|
شفافیت هزینه و زمان بندی |
15 درصد |
|
کیفیت تست و امنیت |
10 درصد |
|
پشتیبانی و توسعه آینده |
15 درصد |
این وزن ها صرفا یک الگوی پیشنهادی برای مقایسه هستند و باید با توجه به اهمیت هر معیار در پروژه تغییر کنند. برای مثال، در یک نرم افزار مالی یا سامانه ای که اطلاعات حساس را مدیریت می کند، می توان وزن امنیت و کنترل کیفیت را افزایش داد.
نکته مهم این است که تمام شرکت ها با یک مجموعه معیار و بر اساس شواهد یکسان ارزیابی شوند. در چنین شرایطی، انتخاب شرکت طراحی نرم افزار اختصاصی از یک تصمیم مبتنی بر تبلیغات و قیمت پیشنهادی، به یک فرایند قابل بررسی و منطقی تبدیل می شود.