مترجم: آقای مهندس مهدی نگاهی
تغییر نیازمندها
غول [بزرگترین و ترسناکترین] مشکلات بسیاری از روشهای توسعه نرمافزار، فقط در حد یک مشکل ساده در XP است. با به کارگیری دستورالعمل «انجام طراحی فقط برای مسألههای امروز»، سیستمی که بر اساس XP در حال ساخت است، روز بعد برای پیمودن هر مسیری آمادگی دارد. انجام کارهای مشابه با کارهای قبلی، به دلیل ماهیت تکنیک بازسازی( Refactoring) در برآورده کردن اصل «یک بار و فقط یک بار»، ساده تر خواهد بود. لازم به یادآوری است که کارهای مشابه در یک پروژه زیاد است. با این حال، با اعلام یک نیازمندی اساسی و متفاوت-نامشابه-، برای انجام آن مجبور نیستید پایبند بسیاری از مکانیزمهای قبلی باشید.
در ابتدا درکی از میزان توانایی XP برای مواجهه با تغییر نیازمندیها نداشتم. در اولین نسخه XP، تعیین این که هر داستان در کدام تکرار انجام شود، بخشی از برنامهریزی انتشار(Release Planning) بود. تیم به مرور به این نتیجه رسید که میتوان با کاهش زمان برنامهریزی به نتایج بهتری دست یافت؛ کافی است از مشتری بخواهید فقط داستانهای تکرار جاری را انتخاب کند. در این روش، با شناسایی هر داستان جدید، نیازی نیست ترتیب داستانهای موجود در تکرارهای باقیمانده را بهم ریخته و دوباره مرتب کنید تا تکرار انجام داستان جدید مشخص شود. تنها کاری که باید انجام دهید، قراردادن داستان جدید در بین داستانهای انجامنشده است. یک یا دو هفته بعد، اگر داستان جدید هنوز هم برای مشتری اهمیت داشته باشد، وی آن را برای انجام در تکرار پیشرو انتخاب خواهد کرد.
(مترجم:
فرض کنید که در سه تکرار پیش رو، قرار است داستانهای زیر انجام شود(اندازه هر داستان جلوی آن مشخص شده است). سرعت تیم برای هر تکرار را ۷ فرض کنید.
تکرار ۱:
داستان A = ۳ داستان B = ۴
تکرار ۲:
داستان C = ۵ داستان D = ۲
تکرار ۳:
داستان E = ۲ داستان F = ۳ داستان G = ۲
حال اگر داستان Z با اندازه ۲ به تازگی شناسایی شود و مشخص گردد باید که بعد از داستان A انجام شود، ترتیب انجام داستانها و تکرارهای متناظر آنها دچار تغییر میشود که در زیر نمایش داده شده است. این تغییر فقط یک جابهجایی ساده نیست، بلکه واقعاً بههم ریختن داستانها و مرتبسازی دوباره است(به ترتیب حروف الفبای انگلیسی در بالا و پایین دقت کنید).
تکرار ۱:
داستان A = ۳ داستان Z = ۲ داستان D = ۲
تکرار ۲:
داستان B = ۴ داستان F = ۳
تکرار ۳:
داستان C = ۵ داستان E = ۲
تکرار ۴:
داستان G = ۲
)
این روش برنامهریزی که در آن هر بار فقط تکرار بعدی برنامهریزی میشود، موجب خودمانایی (self-similarity) مطلوبی میگردد. بدین شکل که در بازه ماهانه و سالانه، با دو دسته داستان روبرو هستید: داستانهای انتشار جاری و داستانهای باقیمانده برای انتشارهای بعدی. در بازه هفتگی و ماهیانه نیز با دو دسته داستان روبرو هستید: داستانهای تکرار جاری و داستانهای باقیمانده از انتشار جاری. در بازه روزانه و هفتگی هم با دو دسته کار(وظیفه) سروکار دارید: کارهای در دست انجام و کارهای باقیمانده از تکرار جاری. همچنین در بازه دقیقه و روزانه نیز با دو دسته مورد آزمون روبرو هستید: موردهای آزمون در دست انجام و موردهای آزمون باقیمانده.
سخن پایانی
XP به هیچوجه ایدهای کامل، بیعیب و پایانیافتهای نیست. محدوده و گستره کاربرد آن شفاف و مشخص نیست. در شرایط فعلی، پذیرش و استفاده از آن نیازمند شجاعت و انعطافپذیری است وگرنه تمایل به بیتوجهی و رهاکردن پروژه انتخاب شده، موجب شکست XP خواهد شد.
استراتژی من در استفاده از XP این است که ابتدا آن را در جایی که شرایط مناسب دارد، اجرا کنم: پروژههای برونسپاری یا داخل سازمانی مربوط به سیستمهای کوچک و متوسط که نیازمندیهای آن نامشخص و احتمالاً متغیر هستند. با شروع اجرای XP، میتوانیم تلاش برای کاهش هزینه تغییرات در محیطهای پرتنش و چالش را نیز شروع کنیم.
اگر قصد دارید از XP استفاده کنید، به خاطر خدا سعی نکنید آن را یک مرتبه قورت دهید. ابتدا یک مشکل حاد را در فرایند جاری انتخاب کنید و سعی کنید آن را با XP حل کنید. وقتی که مشکل حل شد، این کار را دوباره تکرار کنید. در هر لحظه، اگر پیبردید که اقدامات قبلی دیگر مفید نیستند، انجام آنها را متوقف کنید[کاری که قبلاً مشکلی را حل میکرده، ولی در حال حاضر کمکی نمیکند].
این روند بهکارگیری XP، به شما امکان میدهد تا سبک(style) توسعه مختص خودتان را ایجاد کنید-کاری که نه تنها در استفاده از XP، بلکه همواره باید در پی انجام آن باشید. این شیوه بهکارگیری به شما کمک میکند تا ریسکهای ناشی از نامناسب بودن XP برای تیم خود را مدیریت کنید و در کنار تغییر فرایند، تحویل محصول نیز دچار مشکل بیشتری نشود.
گزیده:
رویاهای کوچک نداشته باشید، چون آنها قدرت حرکت دادن قلب انسان را ندارند.
یوهان ولفگانگ فان گوته
شهاب
۲۶ بهمن ۱۳۹۱ در ۰۰:۰۰درود بر استاد عزیز
این سری مقاله هارو بسیار دوست میداشتم.
ممنون.