در سالهای اخیر، یکی از مهمترین چالشهای صنعت نرمافزار ایران، نبود الگوهای قراردادی استاندارد و متناسب با ماهیت پروژههای نرمافزاری بوده است. بسیاری از قراردادهای توسعه نرمافزار همچنان بر پایه الگوهای سنتی پیمانکاری، قراردادهای عمرانی یا قراردادهای خرید کالا تنظیم میشوند؛ در حالی که نرمافزار نه یک کالای فیزیکی است و نه پروژهای با مشخصات کاملاً ثابت و قابل پیشبینی.
در همین راستا، سازمان نظام صنفی رایانهای کشور با همکاری صاحبنظران حقوقی، فنی و فعالان صنعت فناوری اطلاعات، اقدام به تدوین دو الگوی قراردادی جدید با عنوان «پیمان تولید نوآورانه نرمافزار» و «پیمان خدمت نوآورانه نرمافزار» کرده است. این اسناد تلاشی برای ایجاد زبان مشترک میان کارفرما و پیمانکار، کاهش اختلافات قراردادی و نزدیک شدن به استانداردهای بینالمللی مدیریت پروژههای نرمافزاری به شمار میروند.
یکی از بزرگترین تفاوتهای پروژههای نرمافزاری با پروژههای عمرانی، ماهیت پویا و تکاملپذیر آنها است. در بسیاری از پروژهها، نیازمندیهای اولیه در طول اجرا تغییر میکنند، فناوریها بهروزرسانی میشوند و حتی مدل کسبوکار مشتری ممکن است دستخوش تغییر شود.
به همین دلیل، قراردادهایی که بر اساس تحویل یک محصول کاملاً مشخص و ثابت تنظیم شدهاند، معمولاً پاسخگوی واقعیت پروژههای نرمافزاری نیستند. نتیجه این وضعیت، افزایش اختلافات حقوقی، تأخیر در پروژه، افزایش هزینهها و نارضایتی طرفین است.
پیمانهای نوآورانه با پذیرش این واقعیت که «تغییر» بخشی جداییناپذیر از توسعه نرمافزار است، تلاش میکنند چارچوبی منعطفتر و تخصصیتر برای همکاری میان مشتری و تولیدکننده نرمافزار فراهم کنند.
این پیمان برای پروژههایی طراحی شده است که هدف اصلی آنها تحلیل، طراحی، توسعه، استقرار و تحویل یک محصول نرمافزاری جدید است.
در چنین قراردادهایی معمولاً موضوعات زیر مورد توجه قرار میگیرد:
در واقع این پیمان بیش از آنکه بر «خرید نرمافزار» تمرکز داشته باشد، بر «فرآیند تولید نرمافزار» متمرکز است.
پس از تولید نرمافزار، سازمانها معمولاً به خدمات مستمر نیاز دارند؛ خدماتی مانند:
پیمان خدمت نوآورانه نرمافزار برای چنین شرایطی طراحی شده است و به جای تمرکز بر تحویل یک محصول، بر ارائه مستمر خدمات تمرکز دارد.
در این نوع قرارداد، شاخصهایی مانند سطح خدمات (SLA)، زمان پاسخگویی، زمان رفع اشکال، دسترسپذیری سامانه، امنیت اطلاعات، محرمانگی، مدیریت تغییرات و ارزیابی عملکرد اهمیت ویژهای پیدا میکنند.
در صورت اجرای صحیح، این پیمانها میتوانند مزایای متعددی برای صنعت نرمافزار ایجاد کنند:
در بسیاری از کشورهای توسعهیافته، سالها است که قراردادهای نرمافزاری از قراردادهای عمومی پیمانکاری جدا شدهاند و برای هر نوع پروژه، الگوهای تخصصی وجود دارد.
امروزه بسیاری از پروژههای نرمافزاری بر اساس روشهای چابک اجرا میشوند. در این قراردادها، به جای تعریف کامل محصول از ابتدا، پروژه در قالب Sprintهای کوتاه اجرا شده و نیازمندیها به صورت تدریجی تکمیل میشوند. تغییرات بخشی طبیعی از پروژه محسوب میشود و سازوکار مدیریت آن از ابتدا در قرارداد پیشبینی شده است.
در پروژههایی که دامنه کار از ابتدا کاملاً مشخص نیست، بسیاری از شرکتهای بینالمللی از قراردادهای Time & Materials استفاده میکنند. در این مدل، کارفرما هزینه زمان صرفشده و منابع مصرفشده را پرداخت میکند و امکان توسعه تدریجی پروژه وجود دارد.
در این رویکرد، تمرکز از تحویل صرف نرمافزار به تحقق نتایج کسبوکار منتقل میشود. برای مثال، معیار موفقیت ممکن است افزایش بهرهوری، کاهش هزینه، یا بهبود تجربه کاربری باشد، نه صرفاً تحویل چند ماژول نرمافزاری.
در بسیاری از پروژههای بزرگ، سازمانها از الگوهای قراردادی و استانداردهای شناختهشدهای مانند FIDIC (در پروژههای مهندسی)، MSA (Master Services Agreement)، Statement of Work (SOW)، Service Level Agreement (SLA) و همچنین استانداردهای مدیریت خدمات فناوری اطلاعات مانند ITIL بهره میبرند. اگرچه این اسناد مستقیماً برای تولید نرمافزار تدوین نشدهاند، اما ساختار آنها الهامبخش بسیاری از قراردادهای مدرن نرمافزاری بوده است.
| ردیف | نوع قرارداد | نام انگلیسی | کاربرد اصلی | مناسب برای |
|---|---|---|---|---|
| 1 | قرارداد توسعه نرمافزار | Software Development Agreement (SDA) | تحلیل، طراحی، توسعه و تحویل نرمافزار | پروژههای سفارشی |
| 2 | قرارداد خدمات اصلی | Master Services Agreement (MSA) | چارچوب همکاری بلندمدت بین مشتری و پیمانکار | شرکتهای نرمافزاری و مشتریان بزرگ |
| 3 | شرح خدمات | Statement of Work (SOW) | تعریف دامنه، زمان و خروجی هر پروژه ذیل MSA | پروژههای متعدد |
| 4 | قرارداد قیمت ثابت | Fixed Price Contract | پروژه با دامنه مشخص و بدون تغییرات زیاد | پروژههای کوچک و متوسط |
| 5 | قرارداد زمان و مواد | Time & Materials (T&M) | پرداخت بر اساس زمان و منابع مصرفشده | پروژههای چابک و تحقیقاتی |
| 6 | قرارداد مبتنی بر نتیجه | Outcome-Based Contract | پرداخت بر اساس تحقق نتایج کسبوکار | پروژههای تحول دیجیتال |
| 7 | قرارداد چابک | Agile Contract | توسعه تدریجی همراه با تغییر نیازمندیها | Scrum و Agile |
| 8 | قرارداد نگهداری و پشتیبانی | Software Maintenance Agreement | رفع اشکال، بهروزرسانی و نگهداری | پس از استقرار نرمافزار |
| 9 | توافقنامه سطح خدمات | Service Level Agreement (SLA) | تعیین شاخصهای کیفیت خدمات | خدمات پشتیبانی و ابری |
| 10 | قرارداد SaaS | Software as a Service Agreement | استفاده اشتراکی از نرمافزار ابری | نرمافزارهای SaaS |
| 11 | قرارداد میزبانی | Hosting Agreement | میزبانی نرمافزار یا زیرساخت | Cloud و Data Center |
| 12 | قرارداد مجوز نرمافزار | Software License Agreement | اعطای حق استفاده از نرمافزار | فروش نرمافزار |
| 13 | قرارداد کاربر نهایی | End User License Agreement (EULA) | شرایط استفاده توسط مصرفکننده نهایی | محصولات نرمافزاری عمومی |
| 14 | قرارداد OEM | Original Equipment Manufacturer Agreement | استفاده از نرمافزار در محصولات شرکت دیگر | تولیدکنندگان تجهیزات |
| 15 | قرارداد سفارشیسازی | Customization Agreement | توسعه قابلیتهای اختصاصی | ERP، CRM و سامانههای سازمانی |
| 16 | قرارداد استقرار | Implementation Agreement | نصب، راهاندازی و آموزش | پروژههای ERP و HIS |
| 17 | قرارداد مهاجرت داده | Data Migration Agreement | انتقال داده از سامانه قدیمی | پروژههای نوسازی سامانه |
| 18 | قرارداد یکپارچهسازی | System Integration Agreement | اتصال سامانهها و APIها | Enterprise Integration |
| 19 | قرارداد برونسپاری | IT Outsourcing Agreement | واگذاری توسعه یا پشتیبانی | Outsourcing |
| 20 | قرارداد تیم اختصاصی | Dedicated Team Agreement | اختصاص تیم توسعه به مشتری | استارتاپها و پروژههای بلندمدت |
| 21 | قرارداد محرمانگی | Non-Disclosure Agreement (NDA) | حفاظت از اطلاعات محرمانه | قبل از شروع همکاری |
| 22 | قرارداد انتقال مالکیت فکری | Intellectual Property Assignment Agreement | انتقال حقوق مالکیت نرمافزار | پروژههای سفارشی |
| 23 | قرارداد امانی کد منبع | Source Code Escrow Agreement | سپردن کد منبع نزد شخص ثالث | پروژههای حیاتی |
| 24 | قرارداد خدمات مدیریتشده | Managed Services Agreement | مدیریت کامل زیرساخت یا سامانه | MSPها |
| 25 | قرارداد خدمات ابری | Cloud Services Agreement | استفاده از خدمات Cloud | AWS، Azure، Google Cloud |
| 26 | قرارداد DevOps | DevOps Services Agreement | استقرار، CI/CD و اتوماسیون | پروژههای مدرن |
| 27 | قرارداد هوش مصنوعی | AI Development Agreement | توسعه سامانههای مبتنی بر AI | پروژههای AI و ML |
| 28 | قرارداد استفاده از داده | Data Sharing Agreement | تبادل و استفاده از داده | پروژههای دادهمحور |
| 29 | قرارداد پردازش داده | Data Processing Agreement (DPA) | الزامات حفاظت از دادههای شخصی | GDPR و قوانین مشابه |
| 30 | قرارداد مشاوره فناوری اطلاعات | IT Consulting Agreement | خدمات مشاوره، معماری و تحلیل | مشاوران IT |
اگر بخواهیم تنها قراردادهایی را نام ببریم که بیشترین استفاده را در شرکتهای بینالمللی مانند Microsoft، SAP، Oracle، IBM، Accenture، Deloitte و شرکتهای بزرگ نرمافزاری دارند، معمولاً این ترکیب دیده میشود:
اگر بخواهیم این پیمانها را با نمونههای بینالمللی تطبیق دهیم، میتوان گفت:
| پیمان ایرانی | نزدیکترین معادل بینالمللی |
|---|---|
| پیمان تولید نوآورانه نرمافزار | Software Development Agreement + Agile Contract + SOW |
| پیمان خدمت نوآورانه نرمافزار | Managed Services Agreement + SLA + Software Maintenance Agreement |
این مقایسه نشان میدهد که پیمانهای جدید ایران از نظر فلسفه و ساختار، به الگوهای رایج قراردادهای نرمافزاری در جهان نزدیک شدهاند، هرچند هنوز جای توسعه در موضوعاتی مانند خدمات ابری، DevOps، هوش مصنوعی، مالکیت داده و مسئولیتهای مرتبط با سامانههای مبتنی بر AI وجود دارد.
بدون تردید خیر. صنعت نرمافزار با سرعتی بسیار بیشتر از بسیاری از صنایع دیگر در حال تحول است. ظهور رایانش ابری، هوش مصنوعی مولد، توسعه مبتنی بر API، خدمات SaaS و DevOps نشان میدهد که قراردادهای آینده باید انعطافپذیرتر، دادهمحورتر و نتیجهمحورتر باشند.
از این رو، پیمانهای نوآورانه نرمافزار را باید نقطه آغاز استانداردسازی قراردادهای تخصصی در صنعت فناوری اطلاعات ایران دانست، نه نسخه نهایی آن.
تدوین «پیمان تولید نوآورانه نرمافزار» و «پیمان خدمت نوآورانه نرمافزار» را میتوان یکی از مهمترین تلاشهای سالهای اخیر برای حرفهایسازی روابط قراردادی در صنعت نرمافزار ایران دانست. این پیمانها با درک ماهیت پویا و دانشبنیان پروژههای نرمافزاری، میکوشند فاصله میان قراردادهای سنتی و نیازهای واقعی صنعت را کاهش دهند.
البته موفقیت این اسناد تنها به متن قرارداد وابسته نیست؛ آموزش کارفرمایان، ارتقای دانش حقوقی شرکتهای نرمافزاری، توسعه فرهنگ مدیریت پروژه و بهروزرسانی مستمر این پیمانها متناسب با فناوریهای نوظهور، نقش تعیینکنندهای در اثربخشی آنها خواهد داشت. اگر این مسیر بهدرستی ادامه یابد، میتوان انتظار داشت که این پیمانها به مرجع اصلی قراردادهای نرمافزاری کشور تبدیل شوند و زمینه را برای افزایش اعتماد، کاهش اختلافات و رشد صنعت نرمافزار ایران فراهم کنند.