ابزارهای یک مهندس نرم افزار قسمت اول مدیریت نسخه های مختلف فایلهای پروژه آشنایی با GIT
s: ابزار | مهندسی نرم افزار | گیت با تجربه شانزده ساله در دنیای برنامه نویسی و حدود هفت ساله در مدیریت پروژه های مختلف نرم افزاری و شکست ها و موفقیت های کوچک و بزرگ، تصمیم دارم تجربیاتی که دراین مدت کسب کرده ام را بخصوص در حوزه مدیریت پروژه های مختلف نرم افزاری در اختیار علاقه مندان این حوزه قرار دهم .تجربیاتی که اگر قبلا در اختیار خودم قرار می گرفت، کارهای حرفه ای تری با زمان کمتر و بازدهی بیشتر انجام میدادم. بسیاری از این تجربیات هم در دو سال گذشته و بعد از درگیر شدن در یک کار بین المللی و یک کار ملی حاصل شده است و امیدوارم بتواند تا حدودی برای علاقه مندان این حوزه مفید باشد و برای مهندسی نرم افزار کشور که واقعا بی متولی و بدون استاندارد است ، یک قدم بسیار کوچک رو به جلو محسوب شود . بیشتر روی صحبت بنده با برنامه نویسانی است که قصد تاسیس و مدیریت یک شرکت برنامه نویسی و نرم افزاری را دارند که بیشتر از خود برنامه نویسی باید مهارتهای مهندسی نرم افزار را داشته باشند . یکی از اولین ابزارهایی که یک مهندس نرم افزار باید برای تیم خود نصب و پیکر بندی کند، یک سیستم مدیریت فایل است که به صورت خودکار از فایلهای پروژه ، پشتیبان تهیه کند، قسمتهای مختلف پروژه را بین افراد مختلف تیم به اشتراک بگذارد و در صورت بروز مشکل ، بتواند منبع یا شخص تولید کننده آن به همراه تاریخچه تغییرات فایلهای پروژه را به راحتی نشان دهد . به اینگونه سیستم ها version control می گویند. یک رهیافت قدیمی برای مدیریت فایلها ، استفاده از سیستم های سرویس دهنده / سرویس گیرنده یا کلاینت / سرور است که معروفترین ابزار در این حوزه subversion است که در آن کدها در یک سرور مرکزی نگهداری میشود و هر کس تغییرات خود را در فایلها باید در این سرور ذخیره کند . به دلیل وجود یک سیستم مرکزی برای مدیریت کدها، مشکلات کار با فایلها در زمانی که چندین نفر یک یا چند فایل مشترک را تغییر می دهند به حداقل می رسد اما ماهیت یک تیم نرم افزاری بیشتر از اینکه به شکل سرور و کلاینت باشد به صورت مجموعه ای سیستم ها و افراد هم تراز است که هر شخص راسا تصمیم می گیرد که چه الگوریتمی و چه تغییراتی را باید در کد قرار دهد بدون اینکه شخص یا سیستمی نقش مرکزی را ایفا کند . این ساختار مدیریت توزیع شده پروژه باعث شد تمایل به استفاده از سیستم های توزیع شده مدیریت فایلهای پروژه روز بروز افزایش پیدا کند به طوری که امروزه GIT که یک سیستم مدیریت فایل توزیع شده است، حرف اول را سیستم های کنترل ورژن می زند . یک سیستم بسیار راحت و حرفه ای برای مدیریت تمام فایلهای یک پروژه نرم افزاری . بخصوص امروزه که تقریبا تمام ابزارهای برنامه نویسی و محیطهای توسعه نرم افزار، به صورت پیش فرض گیت را پشتیبانی می کنند . توصیه می کنم قبل از شروع کار با گیت و نصب یکی از نرم افزارهای مدیریت گیت ، آموزش ساده و کاربری سایت Atlassian را هم خودتان مطالعه کنید و هم برای تک تک افراد تیمتان خواندن آنرا اجباری کنید و حتی برای ورود به شرکت، آزمونی برگزار کنید که یکی از موارد آن حتما همین آموزش باشد . در گیت هر کسی پروژه را به صورت کامل روی سیستم لوکال خود دارد و هر تغییری که لازم دید درهر جای پروژه اعمال میکند و نهایتا آنها را در یک مخزن اشتراکی تحت وب که معمولا سایت گیت هاب یا بیت باکت است، قرار می دهد و برنامه نویسان در بازه های زمانی کوتاه ، فایلهای خود را با مخزن اشتراکی همگام سازی می کنند و اگر فایل موجود در مخزن اشتراکی با فایل لوکال آنها متفاوت بود، خودشان تصمیم می گیرند که کدام تغییرات را نگه دارند و کدام ها را حذف کنند . امکان برگشت فایلها به هر جایی در تاریخچه گیت به راحتی امکان پذیر است و برای افزودن افزودن هر قابلیت جدید به پروژه حتما از مکانیزم ایجاد انشعاب یا برنچ استفاده کنید . ابعد از آشنایی و تمرین با گیت، مرحله بعد ، انتخاب روش انجام پروژه با گیت است : اینکه نسخه های مختلف نرم افزار ، باگ ها ، قابلیت های جدید و نحوه تست و نهایی شدن کارها به چه صورت باشد . روندی که به آن جریان کار می گوییم . از بین جریان های مختلفی که می توانید در شرکت خودتان در پیش بگیرید و بیشتر یک قرارداد داخلی برای مدیریت فایلها است ، توصیه بنده استفاده از GitFlow است که همه جنبه های مختلف و مورد نیاز یک پروژه را در بر می گیرد و استفاده از آن را در پروژه های تجاری توصیه می کنم. یک آموزش خوب فارسی برای گیت را می توانید در این آدرس پیدا کنید . برای بچه های درس مهندسی نرم افزار پیشرفته ، گیت را به طور کامل آموزش داده ام و تمرینی هم طراحی کرده ام که با جنبه های مختلف آن بیش از پیش آشنا شوند . این تمرین نسبتاً طولانی که می تواند مورد استفاده سایرین هم قرارگیرد را در ادامه مطلب می آورم : کار عملی ------------ قبل از شروع کار : ۱.ابتدا مطمئن شوید که در سایت GitHub اکانت دارید . ۲. مطمئن شوید که گیت روی سیستم شما نصب و آماده استفاده است . کافیست در خط فرمان ویندوز تایپ کنید : git --version و اگر گیت نصب شده باشید باید نسخه گیت خود را با این دستور ببینید . ۳. دستور echo در ویندوز متنی را روی خروجی چاپ می کند مثلا echo "Hello World !" عبارت روبروی آنرا چاپ می کند . دستور > باعث می شود که خروجی دستور قبلی را بتوانیم در یک فایل بریزیم. بنابراین دستور زیر : echo "Hello World !" > test.txt و اگر بخواهیم محتویات قبلی فایل پاک نشود می توانیم از > استفاده کنیم . بنابراین دستور زیر : dir >> test.txt باعث می شود خروجی دستور dir که لیست فایلها و پوشه ها را نمایش می دهد به فایل test.txt اضافه شود . برای دیدن سریع محتوای یک فایل از دستور cat می توانید استفاده کنید : Cat test.txt ۴. برای کارکرد درست گیت باید نام کاربری و ایمیل خود را هم به گیت اعلام کنید. با دستور زیر این کار را انجام دهید : git config --global user.name