سرفصل‌های آموزشی
آموزش برنامه نویسی
آشنایی با مدل های اجایل

آشنایی با مدل های اجایل

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

Scrum

اسکرام معروف ترین مدل توسعه ی نرم افزاری به سبک اجایل است. به طور خلاصه، در این مدل هر تغییری که در پروژه اعمال می‌شود برگرفته از تجربیات اعضای تیم است و تئوری در آن محلی از اعراب ندارد! در اسکرام چهار مولفه وجود دارند که عبارتند از:

  • Product Backlog: لیستی کامل و جامع از نیازمندی های پروژه
  • Spring Backlog: لیستی از نیازمندی ها و کارهایی که در هر فاز می بایست به انجام برسند.
  • Burndown Charts: نمودارهایی از پیشرفت انجام پروژه در هر اسپرینت
  • Shippable Functionality: محصول نهایی قابل استفاده که نیازهای مشتری را برآورده می سازد.

XP

مدل Extreme Programming که به صورت خلاصه XP خوانده می شود، نوع دیگری از توسعه ی نرم افزاری به سبک اجایل است که در این مدل تمرکز اصلی روی میزان رضایتمندی مشتری است. در این مدل، هر زمانی که مشتری درخواست جدید داشته باشد، اعضای تیم با روی گشوده درخواست وی را پذیرفته و تبدیل به کد می کنند.

در مدل ایکس پی، اعضای تیم می بایست برای کدنویسی از استانداردهایی از پیش تعیین شده پیروی کنند. به طور مثال، برنامه نویسان پی اچ پی از استانداردی تحت عنوان PSR تبعیت می‌کنند که این تضمین را ایجاد می‌کند که کدهای برنامه نویسان مختلف رنگ و بوی واحدی خواهند داشت. جالب است بدانیم که در این مدل، هیچ برنامه نویسی نمی‌تواند بگوید که فلان قطعه کد را من یا شخص دیگری نوشته‌ام بلکه مالکیت پروژه گروهی است و همه مسئول پروژه ی انجام شده هستند. اعضای تیم این اجازه را دارند تا کدهای یکدیگر را بازبینی و ویرایش کرده و با شفافیت کامل در مورد کارهای انجام شده اظهار نظر کنند. به عبارت دیگر، در مدل ایکس پی مفهومی تحت عنوان Refactoring دائماً صورت می گیرد. منظور از این اصطلاح این است که اعضای تیم می بایست در صورت مشاده ی مشکلی در سورس کد، اسکمای دیتابیس و … فوراً آن را بهینه کرده و رفع نمایند.

پیش از این هم در مورد TDD صحبت کردیم. در مدل ایکس پی، اعضای تیم به نوشتن تست برای کدهای خود ایمان داشته و پیش از شروع کار، اقدام به نوشتن Unit Test های اصولی و اثربخش می کنند. چیز دیگری که در مدل ایکس پی به وضوح مشاهده می شود، مفهومی است تحت عنوان Pair Programming. منظور از این اصطلاح این است که دو برنامه نویس در کنار یکدیگر شروع به کار کردن می کنند. یکی کدنویسی می‌کند و دیگری به کدهای همکارش نگاه می‌کند و در صورتی که نظری در مورد بهتر شدن کد داشت، به همکارش اعلام می کند.

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

Lean Programming

مدل برنامه نویسی Lean که معادل فارسی آن «ناب» است ریشه در فرهنگ ژاپنی دارد. در دهه ی 1940 در ژاپن، شرکت کوچکی به نام Toyota وجود داشت که می‌خواست شروع به تولید خودرو برای نیاز داخلی این کشور کند اما این امکان را نداشت تا سرمایه ی هنگفتی برای خرید تجهیزات بخواباند. مدیران این شرکت با مد نظر قرار دادن مشتریان سوپرمارکت ها، دیدند که مشتریان چگونه در سوپرمارکت ها صرفاً اقدام به خرید مایحتاج خود می‌کنند چرا که این اطمینان خاطر را داند که هر موقع چیزی نیاز داشتند -مثلا پنیر- به سادگی می‌توانند به سوپرمارکت رفته و به اندازه ی نیاز خود خرید کنند.

با این مشاهدات، مدیران تویوتا مفهومی تحت عنوان JIT که مخفف واژگان Just in Time است را ابداع کردند. به عبارت دیگر، تویوتا برای تولید خودروهای خود اصلاً نیازی به دپو کردن لوازم ساخت خودرو در انبارهایش نداشت و به اندازه ی تولید روزانه ی خود قطعات تهیه می‌کردند که در نتیجه این کار منجر به کاهش هزینه‌ در فضا، ماشین آلات، نیروی کار و … گشت. به عبارت دیگر، Just in Time یا «در زمان نیاز» به چیزی، اقدام به خرید آن می کردند.

رویکرد JIT نه تنها به منجر به نجات شرکت تویوتا از ورشکستگی شد، بلکه این شرکت را به یکی از بزرگ‌ترین شرکت های تولید کننده ی خودرو در جهان مبدل ساخت.  از چنین رویکردی نیز در توسعه ی نرم‌افزار از طریق مدل ناب برنامه نویسی استفاده شده است. در این مدل، تمام تلاش به کار گرفته خواهد شد تا کیفیت ارتقاء یافته، ناکارآمدی کاهش یابد، دانش افزایش یابد، تعهد دوچندان شود، تحویل محصول سریع اتفاق افتد، افراد محترم انگاشته شوند و در کل همه چیز بهینه شود (یکی از مدل هایی که در توسعه ی نرم‌افزار ناب مورد توجه قرار گرفته است Kaban نام دارد.)

online-support-icon