برنامه نویسی افراطی در مقابل SCRUM | XP در مقابل SCRUM
در طول سالها متدولوژیهای مختلف توسعه نرمافزار در صنعت نرمافزار مورد استفاده قرار گرفتهاند، مانند روش توسعه Waterfall، V-Model، RUP و چند روش خطی، تکراری و ترکیبی خطی-تکرار شونده. مدل چابک (یا بهطور صحیحتر، گروهی از متدولوژیها) یک مدل توسعه نرمافزار جدیدتر است که توسط مانیفست Agile برای رفع کاستیهای موجود در روشهای سنتی توسعه نرمافزار معرفی شده است.
روش های چابک مبتنی بر توسعه تکراری هستند و از بازخورد کاربران به عنوان مکانیزم کنترل اصلی استفاده می کنند. Agile را می توان یک رویکرد مردم محور نسبت به روش های سنتی نامید. مدل چابک با تجزیه سیستم به بخشهای فرعی بسیار کوچک و قابل مدیریت، نسخهای از محصول را خیلی زود تحویل میدهد تا مشتری بتواند زودتر به برخی از مزایای آن پی ببرد. زمان چرخه تست Agile در مقایسه با روش های سنتی نسبتا کوتاه است، زیرا آزمایش به موازات توسعه انجام می شود. به دلیل تمام این مزایا، روش های چابک بر روش های سنتی در حال حاضر ارجحیت دارند. برنامه نویسی Scrum و Extreme دو مورد از محبوب ترین انواع روش های Agile هستند.
SCRUM چیست؟
همانطور که در بالا ذکر شد، SCRUM یک فرآیند مدیریت پروژه افزایشی و تکراری است که از خانواده روش های Agile است. SCRUM بر اساس اولویت دادن به مشارکت مشتری در اوایل چرخه توسعه است. این توصیه می کند که آزمایش توسط مشتری در مراحل اولیه و اغلب تا حد امکان انجام شود. زمانی که یک نسخه پایدار در دسترس قرار می گیرد، آزمایش در هر نقطه انجام می شود.اساس SCRUM مبتنی بر شروع آزمایش از ابتدای پروژه و ادامه در سراسر پروژه تا پایان پروژه است.
ارزش کلیدی SCRUM "کیفیت مسئولیت تیم است" است، که تاکید می کند که کیفیت نرم افزار به عهده کل تیم است (نه فقط تیم آزمایش). یکی دیگر از جنبه های مهم SCRUM، تجزیه نرم افزار به بخش های کوچکتر قابل مدیریت و تحویل سریع آنها به مشتری است. ارائه یک محصول کارآمد از اهمیت بالایی برخوردار است. سپس تیم به بهبود نرم افزار و ارائه مداوم در هر مرحله اصلی ادامه می دهد. این از طریق داشتن چرخه های آزادسازی بسیار کوتاه (به نام اسپرینت) و دریافت بازخورد برای بهبود در پایان هر چرخه به دست می آید.
SCRUM چندین نقش کلیدی را برای عملکرد روان یک تیم توسعه تعریف می کند. آنها مالک محصول (که نماینده مشتری و حفظ بک لاگ محصول است)، اسکرام مستر (که به عنوان سازمان دهنده و هماهنگ کننده تیم با برگزاری جلسات اسکرام، حفظ بک لاگ اسپرینت و نمودارهای رایت پایین عمل می کند) و سایر اعضای تیم هستند.یک تیم ممکن است از نقش های سنتی تشکیل شده باشد، اما بیشتر آنها تیم های خود مدیریت هستند. آرتیفکتهای اصلی اسکرام عبارتند از بکلوگ محصول/بازگشت بکلوگ (لیست آرزوها)، بک لاگهای اسپرینت/عقیدههای عقب مانده (وظایف در هر تکرار)، نمودارهای Burn down (کار باقیمانده در برابر تاریخ). تشریفات اصلی SCRUM عبارتند از جلسه بکلوگ محصول، جلسه Sprint و جلسه Retrospect.
برنامه نویسی شدید چیست؟
Extreme Programming (مخفف XP) یک متدولوژی توسعه نرم افزار است که متعلق به مدل Agile است. برنامه نویسی افراطی مراحل را در مراحل بسیار کوچک پیوسته (در مقایسه با روش های سنتی) انجام می دهد. پاس اول، که فقط یک روز یا یک هفته طول می کشد، عمداً ناقص است. برای ارائه اهداف مشخص برای توسعه نرم افزار، تست های خودکار در ابتدا نوشته می شوند. سپس توسعه دهندگان برنامه نویسی را انجام می دهند. تمرکز بر انجام برنامه نویسی به صورت جفت است. پس از گذراندن تمام تست ها، کدگذاری کامل در نظر گرفته می شود. فاز بعدی طراحی و معماری است که به بازسازی کد توسط همان مجموعه برنامه نویسان می پردازد.در پایان این مرحله محصول ناقص (اما کاربردی) به ذینفعان ارائه می شود. درست پس از این، مرحله بعدی (که بر مجموعه بعدی از مهمترین ویژگی ها تمرکز دارد) شروع می شود.
تفاوت بین Extreme Programming و SCRUM چیست؟
برنامهنویسی افراطی و SCRUM قابل درک روششناسی بسیار مشابه و همسو هستند. با این حال، تفاوت های ظریف اما مهمی بین این دو روش وجود دارد. اسپرینت های SCRUM 2-4 هفته طول می کشد، در حالی که تکرارهای XP معمولی کوتاه تر هستند (1-2 هفته آخر). معمولاً، تیمهای SCRUM اجازه تغییر در اسپرینتها را نمیدهند، اما تیمهای XP نسبت به تغییرات درون تکرار کمی انعطافپذیرتر هستند. به عنوان مثال، پس از برنامه ریزی اسپرینت، مجموعه آیتم های آن اسپرینت بدون تغییر باقی می ماند، اما یک ویژگی که روی آن شروع به کار نکرده است، می توان در هر زمان با ویژگی دیگری در XP جایگزین کرد. تفاوت دیگر XP و SCRUM این است که ترتیب ویژگیهای توسعهیافته در XP کاملاً توسط مشتری اولویتبندی میشود، در حالی که تیم SCRUM ترتیب اقلام را تعیین میکند (پس از اولویتبندی بک لاگ محصول توسط مالک محصول SCRUM).
برخلاف XP، SCRUM هیچ گونه روش مهندسی را تعیین نمی کند. به عنوان مثال، XP توسط شیوههایی مانند توسعه مبتنی بر آزمایش (TDD)، برنامهنویسی زوجی، refactoring و غیره هدایت میشود. با این حال، برخی معتقدند اجباری کردن مجموعهای از شیوهها در تیمهای خودسازمانده میتواند تأثیر منفی داشته باشد، و این را میتوان در نظر گرفت. نقص XP یکی دیگر از کاستیهای برنامهنویسی Extreme این است که تیمهای بیتجربه ممکن است بدون هیچگونه آزمایش خودکار یا TDD (یا به سادگی هک) اصلاح کنند. بنابراین، برخی پیشنهاد میکنند که SCRUM برای خاموش کردن بهتر است (زیرا پیشرفتهای بزرگی را صرفاً از طریق تکرارهای متمرکز با جعبه زمانی به ارمغان میآورد) و XP برای تیمهای کمی بالغ که ارزش روشهای ذکر شده در بالا را کشف کردهاند (به جای استفاده از آنها به دلیل اینکه از آنها خواسته شده است) مناسب است. برای انجام این کار).