قرارداد نرم افزار چیست؟ انواع و نکات حقوقی

قرارداد نرم افزار چیست

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

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

قرارداد نرم افزار و فناوری اطلاعات چیست؟

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

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

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

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

انواع قراردادهای نرم افزاری و فناوری اطلاعات

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

قرارداد طراحی و توسعه نرم افزار

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

قرارداد لایسنس نرم افزار

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

قرارداد پشتیبانی و نگهداری نرم افزار

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

قرارداد SaaS

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

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

قرارداد خدمات فناوری اطلاعات

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

مهم‌ترین بندهای قرارداد نرم افزار

بندهای قرارداد نرم افزار

مالکیت سورس‌کد و حقوق نرم افزار چگونه تعیین می‌شود؟

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

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

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

تحویل، تست و رفع باگ در قرارداد نرم افزار

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

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

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

فسخ و خاتمه قرارداد نرم افزار

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

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

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

اشتباهات رایج در تنظیم قرارداد نرم افزار

اشتباهات قرارداد

 

مراحل تنظیم قرارداد نرم افزار و فناوری اطلاعات

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

مراحل کلی را می‌توان این‌طور در نظر گرفت:

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

قرارداد نهایی باید متناسب با نوع پروژه و توافق واقعی طرفین تنظیم شود؛ چون یک متن عمومی لزوما نمی‌تواند شرایط همه پروژه‌های نرم افزاری را پوشش دهد.

تنظیم قرارداد نرم افزار اختصاصی با آداد

تنظیم قرارداد نرم افزار اختصاصی با هوش مصنوعی آداد

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

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

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

جمع‌بندی

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

سوالات متداول

مالک سورس‌کد نرم افزار کارفرماست یا برنامه‌نویس؟

به نوع قرارداد و توافق طرفین بستگی دارد. بهتر است مالکیت و شرایط تحویل سورس‌کد به‌صورت صریح در قرارداد تعیین شود.

تفاوت قرارداد توسعه نرم افزار و لایسنس چیست؟

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

آیا پشتیبانی نرم افزار به قرارداد جداگانه نیاز دارد؟

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

آیا قرارداد نرم افزار قابل فسخ است؟

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

آیا برای پروژه‌های کوچک هم قرارداد نرم افزار لازم است؟

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

تفاوت رفع باگ و توسعه قابلیت جدید چیست؟

رفع باگ مربوط به برطرف کردن ایرادهای نرم‌ افزار است؛ اما اضافه کردن قابلیت جدید معمولاً به معنی توسعه نرم‌افزار و انجام کار جدید است.

دیدگاه‌ها

هنوز دیدگاهی ثبت نشده است. نخستین دیدگاه را شما بنویسید.

دیدگاه خود را بنویسید

نشانی ایمیل شما منتشر نمی‌شود. دیدگاه شما پس از بررسی منتشر می‌شود.

پیشنهاد ویژه آداد