عضویت در خبرنامه

با عضویت در خبرنامه از آخرین مقالات اطلس ساختار داده باخبر شوید

عضویت
arrow_backward بازگشت

مدیریت سورس کد (Source code management) چیست

Source code management یا به اختصار (SCM) برای ردیابی تغییرات اعمال شده در سورس کد بکار میرود. SCM تاریخچه تغییرات سورس کد را ردیابی کرده و باعث می شود تعارضات ایجاد شده هنگام ادغام آپدیت ها از طرف برنامه نویسان مختلف برطرف شود. SCM معادل همان سیستم ورژن کنترل است. 
همزمان با افزایش حجم کدهای نوشته شده و تعداد برنامه نویسان در یک پروژه، هزینه های تعامل برنامه نویسان با هم و پیچیدگی مدیریت هم افزایش می یابد. SCM ابزاری حیاتی برای کاهش این مشکلات است.

 

اهمیت ابزارهای مدیریت سورس کد

وقتی که چندین دولوپر روی یک سورس کد کار میکنند، بصورت مداوم نیاز است که ویرایش هایی روی قسمت های یکسان این سورس کد توسط آنها انجام شود. ممکن است هر برنامه نویس روی یک امکان (feature) به ظاهر مجزایی از برنامه کار کند، اما این امکانات مجزا خیلی اوقات با ماژول های مشترک با هم در ارتباط هستند. بنابراین ممکن است دولوپر 1 که بر روی فیچر 1 ادیت انجام میدهد، بعدا میفهمد که این ادیت ها در کار دولوپر 2 که بر روی فیجر 2 کار میکند اختلال بوجود می آورد.
قبل از ظهور SCM این موضوع سناریویی ترسناک بود. برنامه نویسان بر روی سورس کد خام تغییر ایجاد میکردند و کد حاصله را با پروتکل ftp به سرور ارسال میکردند. در همین زمان برنامه نویس شماره 2 هم بدون اطلاع از تغییرات ایجاد شده توسط برنامه نویس 1 ادیت های لازمه را بر روی سورس کد ایجاد میکرد و کد را ارسال میکرد نتیجه این میشد که تغییرات برنامه نویس شماره 1 همگی از بین میرفتند. نقش SCM به عنوان مکانیزم محافظ در برابر این سناریو دقیقا همان ورژن کنترل است.
SCM مکانیزم محافظتی ورژن کنترل را به میدان آورد تا خرابکاری های ناشی از تعارضات بین تغییرات همزمان کد را به حداقل برساند. این مکانیزم کنترلی با استفاده از ردیابی تغییرات ایجاد شده توسط هر برنامه نویس و تعیین محدوده تاثیرگذاری تغییرات و همچنین ممانعت از overwriting ناخواسته عمل میکند. SCM این نقاط تعارض را به برنامه نویسان نشان میدهد تا آنها بتوانند مشکلات ایجاد شده را پیدا کرده و حل کنند.
این مکانیزم یک مزیت جانبی هم دارد و آن ایجاد ارتباط passive میان تیم دولوپ است. تیم توسعه میتواند با مانیتور کردن SCM پروسه تولید را بررسی و تحلیل کند. SCM تمامی تاریخچه تغییرات را در خود ذخیره میکند و این برنامه نویسان را قادر می سازد که ادیت های نامطلوب و تغییراتی که منجر به ایجاد باگ شده است را شناسایی کنند. 


مزایای مدیریت سورس کد (SCM)

علاوه بر ورژن کنترل، SCM یک سری امکانات دیگر هم در اختیار شما می گذارد که با آن توسعه نرم افزار بصورت تیمی بسیار بهتر و user friendly تر می شود. از زمانی که  SCM شروع به ردیابی تمامی تغییرات سورس کد میکند، یک تاریخچه کامل و با جزئیات از پروژه را در دسترس قرار می دهد. این تاریخچه میتواند برای برگرداندن (undo) تغییرات سورس کد مورد استفاده قرار گیرد. SCM میتواند در صورت نیاز به سرعت نرم افزار را به نقاط دلخواه شما برگرداند. این قابلیت در هنگام تصحیح اشتباهات در زمان ایجاد آپدیت روی سورس کد و ایجاد نقص ها بسیار کاربردی و مفید است.
آرشیوی که SCM از تغییرات سورس کد ایجاد میکند، تاریخچه ای مفید برای نگهداری و ارائه در release note ورژن های پروژه است. حتی history log یک SCM که مرتب و منظم باشد بدون هیچ تغییری میتواند به عنوان release note استفاده شود. این تاریخچه، طرز فکر توسعه دهندگان را در هنگام ایجاد تغییرات با شفافیت در اختیار کاربران و مخاطبین release note قرار میدهد.
مدیریت سورس کد (SCM) هزینه های ارتباط میان اعضای تیم که باعث کاهش بازدهی می شود را به شدت پایین می آورد. در نبود SCM بخاطر اینکه برنامه نویسان مجبورند وقت زیادی صرف هماهنگی با هم کنند (برای اینکه کدهای نوشته شده توسط هر فرد با دیگری تداخل نداشته باشد) پروسه توسعه بسیار کند پیش می رود. اما وقتی از SCM استفاده شود هر برنامه نویس بصورت مجزا روی branch خود کار میکند و فقط پس از پایان زمانی را صرف الحاق آن به سورس کد میکند بنابراین بهره وری بشدت بالا می رود.
 مدیریت سورس کد (SCM) با کاهش هزینه های توسعه باعث می شود منابع به بهترین شکل ممکن صرف شود و بدین صورت کمک شایانی به تیم های مهندسی میکند. SCM در دنیای توسعه نرم افزار امروزی یک "باید" است.


روش بهینه استفاده از مدیریت سورس کد

زیاد از Commit استفاده کنید

استفاده از Commit ها ساده است و هیچ هزینه ندارد. این عمل باید بصورت مداوم در زمان ایجاد update بر روی سورس کد اعمال شود. هر Commit مرحله ای است که کد میتواند در صورت نیاز به این مرحله بازگردد. تعداد زیاد Commit به معنای گزینه های فراوان پیش روی شما برای بازگرداندن تغییرات (undo) می باشد. همچنین برای منظم کردن هرچه بیشتر development log میتوان تعدادی از Commit های مشابه را با هم ترکیب و بصورت یک Commit درآورد.


مطمئن شوید که روی آخرین نسخه کار میکنید

استفاده از SCM باعث میشود که سرعت ایجاد آپدیت توسط تیم توسعه بالا رود. این موضوع که شما روی سیستم خود یک نسخه از سورس کد را داشته باشد و این نسخه قدیمی باشد معمولا زیاد اتفاق می افتد. مطمئن شوید که قبل از شروع به ایجاد تغییرات با استفاده از git pull آخرین نسخه را دریافت کرده باشید. این عمل باعث می شود در هنگام ادغام به خطا بر نخورید.


یادداشت هایی با جزئیات ایجاد کنید

هر Commit یک log entry ایجاد میکند. زمان ایجاد کامیت، این log entry را با یک پیام پر میکنید. خیلی مهم است که این پیام توضیحی مشخص درباره کامیت باشد. این پیام باید حاوی توضیحاتی باشد درباره اینکه چرا محتوای این کامیت ایجاد شده و یا اصلا چه محتوایی در این کامیت هست. این پیام ها بعدا تاریخچه اصلی توسعه نرم افزار را تشکیل میدهند و ردپایی برای بررسی در آینده ایجاد میکنند.


قبل از Commit تغییرات را مرور کنید

SCM امکانی دارد به نام staging area. این امکان برای جمع آوری یه سری از تغییرات روی کد و مرور این تغییرات قبل از انتشار آنها با دستور Commit بکار میرود. با استفاده از staging area میتوانید یک buffer از تغییرات ایجاد کنید و محتوای تغییرات را بررسی و صحت سنجی کنید.


 از شاخه های مختلف (Branches) استفاده کنید

Branching یک مکانیزم قدرتمند در SCM است که به توسعه دهندگان امکان میدهد که مسیرهای موازی برنامه نویسی ایجاد کنند. Branch ها باید در توسعه نرم افزار به کررات استفاده شوند چون سریع و کم هزینه اند. برنچ ها به برنامه نویسان این امکان را میدهند که به صورت موازی و بدون تداخل بر روی سورس کد کار کنند. معمولا این قسمت های موازی همان فیچر های مختلف محصول هستند. وقتی توسعه بر روی یک branch به پایان میرسد، با خط اصلی سورس کد ادغام (merge) میشود.


ابتدا بر سر گردش کار (workflow) به توافق برسید

مدیریت سورس کد (SCM) متد های مختلفی را در اختیار توسعه دهندگان قرار میدهد. یک تیم توسعه در ابتدا باید در مورد نوع workflow  (گردش کار) به توافق برسند. گردش کار SCM الگوها و پروسه های ادغام branch ها را تعیین میکند. اگر اعضاء تیم در این مورد توافق واضح و شفافی نکرده باشند در هنگام ادغام branch ها هرج و مرجی پدید میآید که باعث تلف شدن مقدار زیادی زمان خواهد شد.


نتیجه

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

 

0 دیدگاه