مقدمات سفارش نرم افزار

تغییر شرکت پیمانکار نرم‌ افزار

تصمیمی که ممکن است هزینه واقعی آن سال‌ها بعد مشخص شود

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

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

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


آنچه مشتری تصور می‌کند…

«فقط سورس کد را تحویل می‌دهیم و شرکت جدید ادامه کار را انجام می‌دهد.»

اما واقعیت چیزی کاملاً متفاوت است.


مسیر واقعی ورود یک پیمانکار جدید

دریافت سورس کد


بررسی ساختار پروژه


تحلیل معماری سیستم


مهندسی معکوس قوانین کسب‌وکار


شناسایی وابستگی‌ها


مستندسازی مجدد


ارزیابی کیفیت کد


تصمیم درباره ادامه توسعه
یا بازنویسی بخش‌هایی از سیستم

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


مهم‌ترین ریسک‌های تغییر پیمانکار

ریسکتوضیحاثر روی کسب‌وکار
از بین رفتن دانش پروژهبسیاری از منطق‌ها مستندسازی نشده‌اندافزایش خطا
مهندسی معکوس زمان‌برتیم جدید باید ابتدا سیستم را کشف کندتأخیر پروژه
تفاوت معماریاستانداردهای شرکت جدید ممکن است با پروژه قبلی سازگار نباشدافزایش هزینه
نبود تست‌های خودکارهر تغییر احتمال ایجاد باگ داردکاهش پایداری
وابستگی‌های پنهانسرویس‌ها، APIها و Jobهای ناشناختهاختلال در عملیات
کاهش سرعت توسعهزمان زیادی صرف شناخت سیستم می‌شودتحویل دیرهنگام امکانات

مقایسه زمان پروژه در دو سناریو

مقایسه زمان صرف‌شده برای توسعه

مقایسه تقریبی بین ادامه همکاری با تیم فعلی و شروع همکاری با پیمانکار جدید.0ماه2ماه4ماه6ماه8ماهادامه با تیم فعلیپیمانکار جدید (همراه با شناخت سیستم)


چرا سورس کد به تنهایی کافی نیست؟

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

اطلاعات زیر معمولاً در سورس کد وجود ندارند:

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

به همین دلیل است که در ادبیات مهندسی نرم‌افزار، فرآیند Program Comprehension یا «درک برنامه» یکی از پرهزینه‌ترین مراحل نگهداری سیستم‌های قدیمی شناخته می‌شود.


تفاوت پروتکل‌های تولید نرم‌ افزار بین شرکت‌ها

هر شرکت حرفه‌ای استانداردهای مخصوص خود را دارد.

نمونه‌هایی از این تفازینه‌ها عبارت‌اند از:

حوزهشرکت اولشرکت دوم
معماریMonolithMicroservices
الگوی طراحیRepositoryCQRS
مستندسازیحداقلیکامل
Naming Conventionمتفاوتمتفاوت
استاندارد امنیتاختصاصیOWASP محور
ساختار دیتابیسمتفاوتمتفاوت
CI/CDAzure DevOpsGitLab
تست نرم‌افزارمحدودگسترده

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


مهندسی معکوس؛ هزینه‌ای که معمولاً دیده نمی‌شود

مهندسی معکوس تنها به معنی خواندن کد نیست.

تیم جدید باید بتواند:

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

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


چه زمانی تغییر پیمانکار منطقی است؟

البته این مقاله به معنای آن نیست که هیچ‌گاه نباید شرکت توسعه‌دهنده را تغییر داد.

در برخی شرایط، تغییر پیمانکار کاملاً منطقی است:

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

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


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

در رادنت، پشتیبانی صرفاً پاسخ‌گویی به خطاها نیست؛ بلکه حفظ سرمایه نرم‌افزاری سازمان است.

رویکرد رادنت بر پایه اصول مهندسی نرم‌افزار و نگهداری بلندمدت بنا شده است:

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

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


جمع‌بندی

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

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


منابع

  1. Reverse Engineering for Software Maintenance: A Systematic Review of Literature (2024).
  2. Re-implementing a Legacy System, Journal of Systems and Software (2019).
  3. Reverse Engineering a Legacy Software in a Complex System (INCOSE, 2018).
  4. A Knowledge-Based Maintenance of Legacy Systems (Elsevier).
  5. Systems Engineering Barriers to Legacy System Evolution (2025).

رادنت

شرکت فناوری اطلاعات رادنت آتیه با شماره ثبت 463995 و شماره ملی 14004568814 از سال 1389 فعالیت خود را در تشکیل و جمع آوری تیم نرم افزاری از دانشگاه های رتبه اول کشور آغاز نمود و بعد از انجام چندین پروژه موفق و مشاوره های سودمند به دولت خدمتگذار و به منظور پاسخدهی کلان نرم افزاری اقدام به ثبت نام رادنت در روزنامه رسمی نمود.

نوشته های مشابه