توسعه نرم افزار مدرن سریع، تکراری و پیچیده است. تیم های مدرن حداقل به این پنج ابزار برای مدیریت تمام قطعات متحرک نیاز دارند.
توسعه نرم افزار در ۳۰ سال گذشته مسیری طولانی را طی کرده است. یادم می آید زمانی که می توانستید چرخه عمر توسعه نرم افزار (SDLC) را روی رایانه شخصی خود مدیریت کنید. می توانید کد بنویسید، آن را اشکال زدایی کنید، آن را بسازید و همه آن را از دسکتاپ خود ارسال کنید. منبع در یک سرور فایل ذخیره می شود و با ذخیره یک فایل فشرده در پایان هر روز مدیریت می شود. اگر اصلاً از یک ابزار کنترل منبع استفاده میکردید، CVS یا SVN با یک سرور مرکزی بود که انشعاب و ادغام را به یک چالش واقعی تبدیل میکرد. انتشار نرم افزار به معنای ارسال یک دیسک فلاپی “طلایی” برای سازنده ای بود که نرم افزار را به صورت فیزیکی به فروشگاه ها و فروشندگان کاتالوگ ارسال می کرد.
امروزه هم ساده تر و هم پیچیده تر است. اکثر نرم افزارهای جدید توسط مرورگر ارائه می شوند. تیمهای توسعهدهندگان راه دور، پایگاههای کد بزرگ را با استفاده از مخازن کد مرکزی پیچیده مدیریت میکنند. آنها کار را با ابزارهای ردیابی و ارتباطی هماهنگ می کنند و یکپارچه سازی مداوم و استقرار مداوم را با ابزارهایی که به طور خاص برای این منظور طراحی شده اند انجام می دهند. مدل تحویل SaaS به تیمها اجازه میدهد تا هر زمان که بخواهند فوراً ویژگیهای جدید را منتشر کنند.
این فرآیند به ابزارهای نرم افزاری زیادی نیاز دارد. برخی ممکن است استدلال کنند که صندلیهای خوب و مانیتورهای عریض بیشتر برای بهبود خط لوله توسعه کار میکنند، اما ما در اینجا به ابزارهای نرمافزاری پایبند خواهیم بود.
بنابراین ابزارهای نرم افزاری مورد نیاز برای انجام توسعه نرم افزار مدرن چیست؟ تیم های مدرن حداقل به این پنج مورد نیاز دارند.
محیط توسعه یکپارچه
نوشتن کد هر روز سختتر میشود و توسعهدهندگان به ابزاری نیاز دارند که بتواند ادامه دهد. یک IDE خوب امکان ویرایش کد، برجسته سازی نحو، تکمیل کد، مدیریت کنترل منبع، کامپایل و اشکال زدایی را فراهم می کند. یک IDE خوب همچنین نوعی از API افزونه را ارائه میکند که به هر کسی اجازه میدهد قابلیتهای ویرایشگر را افزایش دهد.
مگر اینکه نیاز بسیار خاصی داشته باشید، توصیه میکنم از Visual Studio Code استفاده کنید، زیرا این کد محبوبترین، قدرتمندترین، باز و تواناترین IDE موجود است. VS Code توسط مایکروسافت ساخته و نگهداری می شود و منبع باز است. این بسیار محبوب است، می تواند تقریباً هر زبان برنامه نویسی را که به آن پرتاب می کنید کنترل کند و هزاران پسوند مفید دارد. با بیش از ۲۰ میلیون توسعه دهنده که از آن استفاده می کنند، VS Code تا حد زیادی ابزار انتخابی است. امکان اضافه کردن GitHub Copilot، دستیار کدنویسی مبتنی بر هوش مصنوعی GitHub، انگیزه بیشتری را فراهم میکند.
ابزارهای ارتباطی
COVID روشی را که تیمهای توسعه با هم کار میکنند تغییر داده است. ناگهان تیمهای توسعه همه از خانه کار میکردند، و زمانی که نمیتوانستند به صورت فیزیکی ملاقات کنند، به راهی برای برقراری ارتباط نیاز داشتند. ترکیب Slack و Zoomراهکار شد. هنوز هم هست.
Slack از استفاده بسیار گسترده سود می برد، و بنابراین دارای کتابخانه بزرگی از پلاگین ها و ادغام ها است که به شما امکان می دهد کارهای زیادی را انجام دهید که ممکن است حتی قبل از شروع به گشتن به ذهنتان نرسد. زوم تبدیل به ابزار ویدئو کنفرانس واقعی برای تیم ها و جلسات مختلف شده است. ادغام Slack و Zoom با هم آسان و قدرتمند است. من این ترکیب را به دلیل استفاده گسترده از هر دو ابزار توصیه میکنم، و برقراری ارتباط با کارکنان، مشتریان و فروشندگان در کل سازمان شما و نه فقط تیم توسعه را بسیار آسانتر میکند.
یکی دیگر از تیمهای مایکروسافت است که از مزیت ترکیب چت و کنفرانس ویدیویی در یک برنامه واحد برخوردار است.
کنترل نسخه منبع
Mercurial برای مدتی در آنجا مدعی بود، اما Git به وضوح برنده مسابقه ابزارهای کنترل منبع شده است. اگر از Git استفاده نمیکنید، پس از آن جا میمانید.
Git یک سیستم کنترل نسخه توزیع شده است، اما استفاده صحیح نیاز به یک مخزن متمرکز دارد و GitHub رهبر واضحی در این فضا است. گیت هاب به دلیل فراگیر بودنش و ویژگی هایش فراتر از مخزن کد بودن، انتخاب من است. GitHub تا حد زیادی میزبان پیشرو برای پروژه های منبع باز است. هر شرکتی باید به نوعی در GitHub حضور داشته باشد.
برخی از ویژگیهای اضافی GitHub شامل ردیابی مشکل، بررسی کد، و قلاب کردن در فرآیند ساخت و استقرار است. GitHub حتی با محصول Codespaces خود که مبتنی بر Visual Studio Code است، هزینه را به IDE-in-a-Browser هدایت می کند.
یک ثانیه نزدیک برای کنترل منبع میتواند GitLab باشد که در نسخه منبع باز موجود است و تقریباً از هر نظر در GitHub ضعیف است.
پرچم های ویژگی
باید اعتراف کنم که تا حدود یک سال پیش، حتی نمیدانستم که پرچمهای ویژگی یک چیز هستند. اکنون استفاده از آنها در حال افزایش است زیرا راه حل های SaaS در واقع به شما امکان می دهند ویژگی ها را با کلیک ماوس روشن و خاموش کنید. پرچمهای ویژگی به شما امکان میدهند ویژگیها را تقریباً به هر دلیلی که دوست دارید کنترل کنید – بر اساس شرکت، سطح مشتری یا کاربر. این به شما امکان میدهد کارهایی مانند اجرای آزمایش بتا یا آزمایش استقرار «قناری» را در بخش کوچکی از پایگاه مشتریان خود انجام دهید تا ببینید چگونه یک ویژگی جدید در دنیای واقعی زنده میماند.
پیشرو واضح در اینجا LaunchDarkly است، یک پلتفرم SaaS برای مدیریت ویژگیها که به شما کنترلهای قدرتمندی بر نحوه استقرار یک برنامه کاربردی و ویژگیهای آن میدهد. سخت است که با شرکتی که چنین رهبر واضحی است و به گسترش مجموعه ویژگی های خود ادامه می دهد، نروید.
ابزار CI/CD
من سالهاست که ادغام مداوم انجام میدهم. اما استقرار مستمر جدیدتر، چالش برانگیزتر، و صادقانه بگویم، کمی ترسناک تر است. CI/CD به ساختن نرم افزار، اجرای آزمایش، قرار دادن مصنوعات در مکان مناسب، تهیه منابع ابری، استقرار برنامه های کاربردی در مکان های مختلف و هر تعداد فعالیت متفاوت نیاز دارد که همگی در فرآیند دریافت کد از لحظه بررسی تا در اسرع وقت آن را در مرحله تولید اجرا کنید.
بسیاری از تیمها تلاش میکنند زمان از ورود کد تا استقرار را از روز به پانزده دقیقه کاهش دهند. (درست خواندید.) این بخش ترسناک است – قرار دادن چیزی به این سرعت در تولید به این معنی است که باید برای واکنش سریع آماده باشید. نکته مثبت این است که زمانهای کوتاه استقرار در صورت بروز مشکلات، بازخورد فوری ارائه میدهد، و به توسعهدهندگان اجازه میدهد تا زمینه تغییرات اخیر را در ذهن خود نگه دارند و سریعتر و آسانتر خطاها را در صورت وقوع برطرف کنند.
انجام صحیح CI/CD قطعا به یک کیت ابزار قدرتمند نیاز دارد. خوشبختانه، CircleCI وجود دارد. CircleCI می تواند همه این کارها را انجام دهد و با تعداد زیادی از چارچوب ها و سیستم ها ارتباط برقرار کند تا برنامه شما را به سرعت بسازد و اجرا کند. من CircleCI را به دلیل مجموعه کامل ویژگیها، سرعت و انطباق آن دوست دارم.
تقدیر به ابزار منبع باز CI/CD Jenkins تعلق می گیرد.
این پنج دسته ابزار – IDE، ارتباطات، کنترل منبع، پرچمهای ویژگی، و CI/CD- حداقل چیزی هستند که برای توسعه نرمافزار مدرن به آن نیاز دارید. همه این ابزارها با هم کار می کنند تا زمان صرف شده برای کدنویسی و تولید آن کد را به حداقل برسانند. همه آنها می توانند مبتنی بر ابر باشند و شما را از نگرانی در مورد هر چیزی به جز انجام کار آزاد می کنند. چه برنامهنویسی در یک IDE مبتنی بر ابر باشد و چه در عرض چند دقیقه با یک ابزار قدرتمند CI/CD استقرار مییابد، اینها ابزارهایی هستند که مسیر حرکت را برای هر فرآیند توسعه نرمافزاری هموار میکنند.
پست های مرتبط
۵ ابزار برای کنترل چرخه عمر توسعه نرم افزار شما
۵ ابزار برای کنترل چرخه عمر توسعه نرم افزار شما
۵ ابزار برای کنترل چرخه عمر توسعه نرم افزار شما