این روزها که سرعت تغییر در دنیای نرمافزار سرسامآور است، تیمها برای بقا نیاز به روشی دارند که چابک، انعطافپذیر و فوقالعاده کارآمد باشد. متدولوژی XP دقیقاً برای همین هدف خلق شده است.
متد XP رویکردیست که با تأکید بر همکاری نزدیک، بازخورد سریع و بهبود مداوم، روند توسعه را متحول میکند. اگر میخواهید بدانید XP چگونه کیفیت کد را بالا میبرد و پروژهها را سریعتر به نتیجه میرساند، در ادامه همراه ما باشید.
متدولوژی XP چیست؟
متدولوژی XP یا Extreme Programming در فارسی به نامهای مختلفی همچون «برنامه نویسی اکستریم»، برنامه نویسی مفرط یا حتی برنامه نویسی افراطی نامیده میشود. این متد یکی از روشهای مدیریت پروژه به سبک اجایل است که بر سرعت و سادگی در انجام کار تمرکز دارد.
متدولوژی اکس پی از چرخههای توسعه کوتاه و مستندسازیهای کمتر استفاده میکند. ساختار این فرایند بر پایه پنج ارزش، پنج قانون اصلی و ۱۲ شیوه شکل گرفته که در ادامه به آنها خواهیم پرداخت.
همانند دیگر روشهای ذهنیت چابک، XP نیز یک متد توسعه نرمافزار بر پایه اسپرینت یا بازههای کاری کوتاه است. چارچوبهای Agile عموماً از فرایندهای تکرارشونده و بهبودهای افزایشی پیروی میکنند؛ به این شکل که در پایان هر اسپرینت، خروجی کار تیم بررسی و بازبینی میشود و با توجه به مسائل و چالش ها و نیازهای جدید همه چیز مجدد تنظیم میشود.
طراحی Extreme Programming به گونهای است که توسعهدهندگان بتوانند به نیازهای مشتری که در قالب یوزر استوری بیان میشوند بهصورت لحظهای واکنش نشان دهند و مسائل را حل و تغییرات را اعمال کنند.
اما تفاوت متدولوژی اکس پی با سایر روشها در این است که انضباط بسیار بالاتری را می طلبد؛ در این روش از بازبینی های مکرر کدها و تست واحد برای اعمال سریع تغییرات استفاده میشود. همچنین XP روشی بسیار خلاقانه و بر پایه همکاریهای مؤثر درونتیمی است که در تمام مراحل توسعه، مشارکت گروهی را در اولویت قرار میدهد.
تفاوت متد XP و اسکرام

متد اسکرام یکی دیگر از روشهای رایج Agile است و در تیمها توسط یک اسکرام مستر مدیریت و هدایت میشود. کاملاً مشابه روش اکس پی، در اسکرام نیز از داستانهای کاربر برای اجرای اسپرینتها و ساخت فیچر محصول یا نرمافزار استفاده میشود.
اما متد اکس پی در مقایسه با اسکرام سختگیرانهتر رفتار میکند و قوانینی دارد که برنامهنویسان را ملزم به ارتباط دائم با مشتری میکند. بهجز مورد قبل، اسکرام تقریباً برای هر فرایند و پروژهای که نیاز به تکرار و بازخورد مشتری دارد مناسب است؛ از پروژههای نرمافزاری گرفته تا پروژههای مالی و حتی پروژههای صنعتی. اما متدولوژی XP بهطور خاص برای برنامه نویسی و توسعه چابک نرم افزار طراحی و بهینه شده است.
چه کسی روش XP را ایجاد کرد؟
ریشههای XP به دهه ۹۰ میلادی برمیگردد؛ زمانی که Kent Beck که بعدها یکی از نویسندگان مانیفست اجایل شد، برای رهبری تیم پروژه جبران خدمات شرکت کرایسلر استخدام شد و این روش را ابداع کرد.
پروژه C3 از سال ۱۹۹۳ آغاز شده بود؛ اما تا سال ۱۹۹۶ پیشرفت چندانی نداشت. از آنجایی که بک تجربه زیادی هم در مدیریت تیم نداشت، به این نتیجه رسید که بهترین راه این است که تکنیکها و روشهایی را که خودش مؤثر میدانست، به اعضای تیمش آموزش دهد.
آنها شروع به اجرای روشهایی مثل «برنامه نویسی دوتایی / Pair Programming» و توسعه آزمون محور کردند و نتایج موفقی هم به دست آوردند. در ادامه، ران جفریز، یکی از دوستان بک و یکی دیگر از نویسندگان مانیفست اجایل برای مربیگری تیم C3 به پروژه پیوست.
در سال ۱۹۹۹، کنت بک با انتشار کتاب «برنامه نویسی اکستریم» اصول، ارزشها و شیوههای XP را بهصورت رسمی معرفی و تدوین کرد.
۵ ارزش اصلی در متدولوژی اکس پی
برنامه نویسی اکستریم یک روش مبتنی بر ارزشهاست، نه انگیزههای بیرونی. یعنی تیم بهجای دنبالکردن طراحیهای پیچیده یا فرایندهای سختگیرانه، بر سادگی و همکاری تمرکز میکند. در ادامه، هر کدام از پنج ارزش XP را به زبان ساده آوردهایم و هر یک را با مثالی توضیح میدهیم.

-
سادگی / Simplicity
قبل از شروع هر کاری در متد XP، باید از خود بپرسیم: سادهترین کاری که جواب میده، چیه؟
نکته کلیدی اینجاست که فقط سادهبودن کافی نیست؛ اون کار باید عملی و مؤثر هم باشه. تمرکز متدولوژی اکس پی بر انجام مهمترین کارهاست، به شکلی که بتونیم واقعاً اون کار رو به نتیجه برسونیم.
مثال:
برای طراحی صفحه لاگین یه اپلیکیشن، بهجای استفاده از سیستمهای پیچیده، فقط یک فرم ساده «نام کاربری + رمز عبور» میسازیم تا سریع نسخه اولیه آماده بشه.
-
ارتباط / Communication
روش XP به ارتباط مؤثر و واکنشهای سریع وابستهست. اعضای تیم باید شفاف، صادق و همدلانه با هم حرف بزنن. وقتی مشکلی پیش میاد، بهتره همون لحظه بیان بشه چون احتمالاً یکی از اعضای تیم راهحلشو بلده؛ با هم خیلی سریعتر به راهحل میرسیم تا اینکه یکی تنها سعی کنه حلش کنه.
مثال:
یکی از اعضای تیم متوجه میشه عملکرد API کند شده. بلافاصله اینو با بقیه مطرح میکنه و با کمک تجربه بقیه، مشکل زودتر حل میشه.
-
بازخورد / Feedback
کاملاً مانند دیگر روشهای ذهنیت چابک، XP هم بر گرفتن بازخورد سریع و پیوسته از مشتری تأکید بسیار داره. تیم، کارها رو بهصورت سریع و ساده توسعه میده، بعد فوراً اون رو با مشتریان به اشتراک میذاره تا بازخورد بگیره. این باعث میشه توسعهدهندگان بتونن زودتر اصلاحات لازم رو انجام بدن.
مثال:
بعد از ارائه نسخه اولیه سرچ، کاربرا میگن که نتایج دیر لود میشن. تیم بهجای بازنویسی کامل، دو توسعهدهنده رو مأمور بهینهسازی سرعت میکنه تا مشکل حل بشه.
-
شجاعت / Courage
در روش اکس پی، شجاعت یعنی راستگویی و پذیرش مسئولیت. اگه کاری رو بهموقع تحویل ندادی، بدون بهونه آوردن اعلام میکنی و سریع سراغ ادامه کار میری. همچنین، تیم باید آماده مواجهشدن با تغییرات و ناشناختهها باشه و بتونه در لحظه واکنش نشون بده.
مثال:
توسعهدهندهای نمیرسه تا آخر هفته یک ویژگی رو تحویل بده. بدون بهونه آوردن، موضوع رو به مدیرش اعلام میکنه، مسئولیت رو میپذیره و برای جبرانش برنامهریزی میکنه.
-
احترام / Respect
از اونجایی که XP روی ارتباط صادقانه تأکید زیادی داره، وجود احترام بین اعضای تیم ضروریه. احترام یعنی شنیدن نظر دیگران، حتی اگر مخالف نظر شما باشه؛ یعنی درک اینکه هر کسی توی تیم، چیزی ارزشمند برای ارائه داره.
مثال:
دو نفر از اعضای تیم برای نحوه پیادهسازی یه فیچر اختلافنظر دارن. بهجای بحثهای بینتیجه، با احترام نظر همدیگه رو گوش میدن، مزایا و معایب هر نظر رو بررسی میکنن و در نهایت، تصمیمی جمعی و محترمانه میگیرن.
5 قانون کاربردی در متدولوژی XP
ارزشهای اکس پی جنبه فلسفی دارن، ولی قوانین XP همون چیزیه که باعث میشه کار واقعاً جلو بره. باید این قوانین رو کنار اون ارزشها داشته باشیم تا تیم XP مؤثری داشته باشیم.
در اینجا قوانین XP رو خیلی کاربردی توضیح میدیم تا برات بهتر جا بیفتن.
-
برنامهریزی / Planning
اول از همه، باید بررسی کنیم که پروژه ما اصلاً مناسب XP هست یا نه. برای این کار:
-
یک نگاه به User Storyها بنداز: ببین سادهن؟ مشتری در اون مشخصه؟ اگه پیچیدهان یا مشتری معلوم نیست اکس پی جواب نمیده.
-
ارزش و اولویت پروژه رو بسنج: XP یعنی اول کارای مهمتر.
-
بررسی کن پروژه تو چه مرحلهایه: XP برای مراحل اولیه توسعه خیلی بهتر جواب میده.
اگه دیدی پروژه مناسبه:
-
پروژه رو به بخشهای کوچک یا Iteration تقسیم کن و با متد توسعه تکرارپذیر جلو برو.
-
برای هر بخش برنامه قابلانجام و ددلاین منطقی بچین.
-
اخبار رو لحظهای با تیمت به اشتراک بذار.
-
از ابزارهای مدیریت پروژه مثل بورد کانبان یا تایملاین استفاده کن تا پیشرفت رو لحظهبهلحظه دنبال کنی.
-
مدیریت / Managing
فضای کاری در Extreme Programming خیلی مهمه. اگه حضوری کار میکنید، فضای باز برای ارتباط سریع بسیار عالیه. ولی اگه ریموت هستید:
-
از ابزارهای ارتباط غیرهمزمان استفاده کن تا اعضا همیشه در تماس باشن.
-
هر روز، جلسه کوتاه دیلی اسکرام یا استندآپ بذار.
-
برنامهریزی رو در دو سطح انجام بده: هفتگی و فصلی.
-
جلسه فصلی: بررسی کل یوزر استوریها و بهبود فرایند Extreme Programming
-
جلسه هفتگی: انتخاب یوزر استوری توسط مشتری برای اون هفته
بهعنوان مدیر تیم:
-
مراقب سرعت کارها باش.
-
اگه نیاز شد، تیم رو جابهجا کن تا مشکلات حل شه.
-
فرایند XP رو با شرایط پروژه تطبیق بده.
Extreme Programming یعنی انعطافپذیری بالا و اقدام سریع
-
طراحی / Designing
با سادهترین طراحی ممکن شروع کن. از همون اول دنبال اضافهکردن پیچیدگی نباش؛ بذار تو تکرارهای بعدی محصول رو بهتدریج پیچیدهتر کن.
برای طراحی مؤثر:
-
از کارتهای CRC استفاده کن. این کارتهای کلاس-مسئولیت-همکاری کمکت میکنن بفهمی هر آبجکت چطور با بقیه تعامل داره.
-
Class: دستهای از آبجکتهای مشابه
-
Responsibility: مسئولیتهای اون کلاس یا دسته
-
Collaborator: کلاسها یا دستههایی که باهاش تعامل دارن
برای پیشگیری از مشکلات:
-
سعی کن خطرها رو زود تشخیص بدی.
-
یکی دو نفر رو مأمور کن تا از قبل راهحلی برای برخی از مشکلات پیش رو پیدا کنن.
-
کدنویسی / Coding
کدنویسی تو Extreme Programming با حضور همیشگی مشتری همراهه. یعنی مدام باید بازخورد بگیریم و در هر تکرار / Iteration اصلاح کنیم.
چند قانون کلیدی کدنویسی در XP:
-
همه کدها باید با استاندارد مشخص نوشته بشن.
-
قبل از شروع توسعه، تست واحد / Unit Testing بنویس.
-
برنامه نویسی دونفره انجام بده. یعنی دو نفر پشت یه سیستم، همزمان کد میزنن. این ترفند کیفیت کار رو دو برابر میکنه.
-
ادغام کدها رو مدام انجام بده. سریع کد جدیدو وارد کن و همون لحظه تستش کن.
-
فقط دو نفر از اعضای تیم اجازه دارن کد رو آپدیت کنن تا اشتباهات کمتر شه.
-
مالکیت اشتراکی کد داشته باش. هر کسی بتونه کد تو رو تغییر بده و تو هم بتونی کد اون رو تغییر بدی.
-
تست / Testing
تستکردن کدهای محصول باید در تمام مراحل Extreme Programming انجام بشه؛ نه فقط در انتها که کار از کار گذشته!
-
همه کدها باید قبل از ریلیز تست واحد رو پاس کنن.
-
اگه باگ پیدا کردین، براش تست جداگانه بنویسین.
-
در مرحله بعد، همون یوزر استوری رو به یه تست پذیرش تبدیل کن.
-
مشتری باید بررسی کنه که آیا داستان درست پیادهسازی شده یا نه.
12 شیوه / اقدام مفید برای برنامه نویسی مفرط
برای اینکه فرایند XP بهتر و دقیقتر پیش بره، یک مجموعه ۱۲ تایی از شیوهها / Practices وجود داره که در طول پروژه ازشون استفاده میکنه. این اقدامها بر پایه اصول اجایل طراحی شدن، ولی با یه سری تغییرات که با نیازهای خاص متدولوژی XP هماهنگ بشن.

-
بازی برنامهریزی / The Planning Game
در Extreme Programming، برنامهریزی مثل یه بازی تیمیه. تیم توسعه با مشتریها میشینن و با هم مشخص میکنن که چی میخوان بسازن، کِی باید آماده بشه و بعدش قراره چی کار کنن.
مثلاً: مشتری میگه: «ما یه فرم تماس با ما میخوایم». تیم تصمیم میگیره این ویژگی توی این هفته انجام بشه و هفته بعد نوبت بخش نظراته.
-
تستهای مشتری / Customer Tests
بعد از ساخت یه فیچر جدید، مشتری میاد و تستی برای اون تعریف میکنه تا ببینه آیا چیزی که تحویل گرفته، همون چیزیه که میخواسته یا نه.
مثلاً: اگه فیچر «ورود با ایمیل» ساخته شده، مشتری بررسی میکنه که آیا واقعاً با ایمیل وارد میشه یا نه و اگر به طرز اشتباهی بخواد وارد بشه، آیا پیغام مناسب نمایش داده میشه یا نه.
-
انتشارهای کوچک / Small Releases
بهجای اینکه یه پروژه بزرگ رو از اول تا آخر روش کار کنی و در انتها کار رو تحویل بدی، توی متدولوژی XP باید زودبهزود و کمکم نسخههایی منتشر کنی تا هر بار بازخورد بگیری.
مثلاً: اول فقط ثبتنام رو پیادهسازی کن، بعد ورود رو، بعد پروفایل کاربری رو. اینطوری خیلی زود مشکلات کار مشخص میشن.
-
طراحی ساده / Simple Design
فقط چیزی رو پیادهسازی کن که واقعاً لازمه. دنبال طراحیهای پیچیده و آیندهنگرانه نباش.
مثلاً: اگه قراره فقط یه صفحه محصول نشون بدی، نیازی به ساخت ماژول امتیازدهی، نظرات، فیلتر و … از الان نیست.
-
برنامه نویسی دونفره / Pair Programming
همه کدهای نرمافزار باید توسط دو نفر نوشته بشن که کنار هم کار میکنن. یکی مینویسه و دیگری بررسی میکنه، بعد جاشون رو عوض میکنن.
مثلاً: علی کد میزنه، زهرا بررسی میکنه، یه ربع بعد زهرا مینویسه و علی نظارت میکنه.
-
توسعه مبتنی بر تست / TDD
در Test-Driven Development اول تست یک ویژگی رو بنویس، بعد کدش رو. اینطوری همیشه میدونی چی باید بسازی و سریع بازخورد میگیری.
مثلاً: قبل از اینکه کد لاگین رو بنویسی، یه تست بنویس که میگه: «اگه یوزرنیم درست بود، باید وارد سیستم شه».
-
بازسازی کد / Code Refactoring
کدها رو تمیز نگه دار. کد تکراری رو حذف کن و کاری کن همه چیز منسجم باشه.
مثلاً: اگه تو سه تا فایل مختلف یه قطعه کد یکسان هست، اون رو ببر تو یه تابع مشترک.
-
مالکیت جمعی / Collective Ownership
همه میتونن کد همدیگه رو تغییر بدن. مهم نیست کی کد زده، هرکس میتونه اصلاحش کنه.
مثلاً: علی یه ماژول نوشته، ولی اگه زهرا باگی توش دید، میتونه خودش درستش کنه.
-
یکپارچهسازی مداوم / Continuous Integration
بهجای اینکه آخر هفته همه چیز رو ادغام کنی، باید چند بار در روز کدت رو ادغام کنی تا مطمئن شی چیزی خراب نشده.
مثلاً: هر بار که زهرا یا علی یه فیچر رو تموم میکنن، اون رو تو سیستم اصلی ادغام و تست میکنن.
-
سرعت پایدار / Sustainable Pace
در Extreme Programming نباید فرسوده بشی. پس یه سرعت کاری منطقی انتخاب کن و بهش پایبند بمون.
مثلاً: تیم تصمیم میگیره روزی ۶ ساعت کار عمیق / Deep Work انجام بده و شب و آخر هفتهها رو آزاد نگه داره.
-
استعاره / Metaphor
یه استعاره تیمی برای توصیف عملکرد کل سیستم انتخاب کن که همه راحتتر بفهمن چی به چیه.
مثلاً: بگیم «سایت مثل یه ایستگاه قطاره، کاربرها وارد میشن، مقصد رو انتخاب میکنن و سیستم اطلاعات رو براشون آماده میکنه».
-
استاندارد کدنویسی / Coding Standard
همه باید از یه سبک کدنویسی یکسان استفاده کنن. اینطوری انگار یه نفر کل پروژه رو نوشته.
مثلاً: همه متغیرها با camelCase باشن، همه توابع مستندسازی داشته باشن و فضای خالی بین بلاکها مشخص باشه.
سخن پایانی: با XP نباید سخت کار کرد، باید هوشمندانه کار کرد
همیشه تصور میکنیم که با ساعتهای کاری بیشتر، به نتایج بهتری میرسیم. اما واقعیت اینه که خروجی مؤثر، فقط حاصل تلاش بیشتر نیست؛ بلکه حاصل هماهنگی، همکاری و بازخورد مستمره.
متد XP یا Extreme Programming با تأکید روی اصولی مثل ارتباط نزدیک تیمی، آزمونهای مداوم و بازبینی کد، به ما یاد میده که کیفیت بالا و آرامش کاری میتونن همزمان ممکن باشن.
وقتی متدولوژی XP رو زندگی میکنی، یعنی بهجای اضافهکاریهای پراکنده، تمرکز رو میذاری روی کار هدفمند، یادگیری گروهی و بهبود تدریجی؛ و این یعنی تیمی داری که نهتنها سریعتر عمل میکنه، بلکه مطمئنتر و باانگیزهتر هم هست.
XP فقط یه متد برنامه نویسی نیست؛ یه شیوه زندگی حرفهایه که نتیجهش هم برای تیم خوبه، هم برای محصول و هم برای مشتریان.
|
تفکر چابک فقط یک متدولوژی نیست، یک نگاه متفاوت به کار تیمی و حل مسئله است. در اجیلیتی، آموزش Agile با رویکردی عملی، تدریجی و متناسب با فضای کاری تیمهای ایرانی طراحی شده است.
|