پیش‌انتقال

از ویکی‌پدیا، دانشنامهٔ آزاد

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

بررسی اجمالی[ویرایش]

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

  • نرم‌افزار v2.0 دارای یک آسیب‌پذیری امنیتی است که با تغییر متن «is_unsecured» به «is_secured» حل می‌شود.
  • سوراخ امنیتی مشابهی در نرم‌افزار v1.0 وجود دارد، که از کد آن برای ساخت نسخه جدید استفاده شده، اما در این نسخه متن ممکن است 'is_notsecure' باشد.

با در نظر گرفتن تغییراتی که مشکلات نسخه ۲٫۰ را حل می‌کند و تغییر آن به نحوی که در مورد نسخه ۱٫۰ نیز صدق کند، به درستی از پیش‌انتقال برای حل این مشکل استفاده شده‌است.[۱]

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

فرایند[ویرایش]

فرایند پیش‌انتقال می‌تواند تقریباً به این مراحل تقسیم شود:[۱]

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

معمولاً تعدادی از این اصلاحات در یک مجموعه وصله قرار می‌گیرند.

پیش‌انتقال می‌تواند توسط گروه توسعه دهنده اصلی نرم‌افزار انجام شود. از آنجا که پیش‌انتقال نیاز به دسترسی به کد منبع یک قطعه نرم‌افزاری دارد، این تنها راه انجام پیش‌انتقال برای نرم‌افزار منبع بسته‌است. پیش‌انتقال معمولاً در ارتقاء دودویی یا در طول خط نسخه قدیمی نرم‌افزار گنجانده می‌شود. در مورد نرم‌افزار منبع باز، گاهی پیش‌انتقال‌ها توسط توزیع کنندگان نرم‌افزار انجام شده و سپس به بالای زنجیره تولید فرستاده می‌شوند. (یعنی به توسعه دهندگان اصلی نرم‌افزار آسیب دیده).[۲]

منابع[ویرایش]

  1. ۱٫۰ ۱٫۱ "Backporting Security Fixes". Red Hat. Retrieved 2013-10-24.
  2. ۲٫۰ ۲٫۱ "Staying close to upstream projects". Fedora. Retrieved 2013-10-24.