بخش دوم ترجمه مقاله Embracing Change with Extreme Programming نوشته Kent Beck را میتوانید در اینجا مطالعه نمایید.
مترجم: آقای مهندس مهدی نگاهی
انتشار (Release)
توجه کنید که مطابق شکل ۲، همه داستانها در ابتدا پیادهسازی نمیشوند. بلکه مشتری کوچکترین مجموعه از با ارزشترین داستانهایی را انتخاب میکند که در کنار هم معقول و منطقی هستند. ابتدا این مجموعه از داستانها پیادهسازی شده و در محصول نهایی قرار میگیرند و سپس باقیماندهها پیادهسازی میشوند.
انتخاب داستانهای هر انتشار تا حدودی شبیه خرید مواد غذایی از فروشگاه است. وقتی با ۱۰۰ دلار به فروشگاه میرویم، به خریدهای ضروری(با الویت) فکر میکنیم، به قیمت اجناس نگاه میکنیم و بعد تصمیم میگیریم که چه چیزهایی خریداری کنیم. [در اینجا بودجه موجود برای خرید -۱۰۰ دلار- قابل افزایش نیست. رویکرد دیگر این است که ابتدا اجناس ضروری انتخاب میشوند و بعد بودجه لازم برای خرید آنها با جمع قیمتها، براورد میشود-مثلاً ۱۵۰ دلار-].
در بازی برنامهریزی(فرایند برنامهریزی XP)، داستانها معادل اجناس و برآورد هر داستان معادل قیمت است[به عنوان مثال اگر براورد پیادهسازی داستانی، ۳ نفر-روز باشد، یعنی قیمت آن ۳ واحد است]. بودجه با اندازهگیری خروجی تیم محاسبه میشود که مبنای آن جمع برآورد داستانهای انجام شده در واحد زمان است.
مشتری میتواند به دو شیوه زیر عمل کند: مجموعهای از داستانها را انتخاب کند و برنامهنویسان تاریخ پایان پیادهسازی را محاسبه کنند [موقع خرید، اجناس را انتخاب میکنید و فروشنده، مبلغ قابل پرداخت را محاسبه میکند] یا تاریخ پایان را مشخص کند و برنامهنویسان بودجه را محاسبه کرده و سپس مشتری داستانها را یکی پس از دیگری انتخاب کند تا جمع برآوردهای آنها با بودجه برابر شود.[موقع خرید، بودجه را به فروشنده اعلام میکنید و سپس یکی یکی اجناس را انتخاب میکنید و هر بار جمع قیمتها محاسبه میشود تا از بودجه بیشتر نشود].
تکرار(Iteration)
هدف هر تکرار، افزودن داستانهای جدیدِ آزمایش شده و آمادهی استفاده به محصول است. فرایند با طرحی شروع میشود که در آن داستانهای انتخاب شده برای پیادهسازی و چگونگی انجام آنها توسط تیم مشخص شده است. هنگامی که تیم در حال پیادهسازی است، مشتری آزمونهای کارکردی (functional tests) را مشخص میکند. آزمونها در پایان تکرار اجرا شده و تیم برای تکرار بعدی آماده میشود.
برنامهریزی تکرار با درخواست دوباره از مشتری برای انتخاب باارزشترین داستانها آغاز میشود با این تفاوت که اینبار، داستانها از بین داستانهای باقیمانده از انتشار انتخاب میشوند. داستانها توسط تیم به مجموعهای از وظایف (tasks) شکسته میشوند –وظیفه کاری است که یک نفر میتواند طی چند روز انجام دهد. در صورت وجود وظایف فنی– مانند ارتقاء (upgrade) پایگاه داده به نسخه جدید-، آنها نیز به لیست وظایف افزوده میشوند.
پس از آن، برنامهنویسان برای پذیرش انجام وظایف، اعلام آمادگی میکنند. وقتی گفتوگو درباره وظایف به پایان میرسد، برنامهنویس مسئول، زمان انجام وظیفهاش را بر مبنای روز ایدهآل (ideal day) برآورد و اعلام میکند[روز ایدهآل یکی از واحدهای براورد اندازه(سایز) داستان است. روز ایدهال مدت زمان انجام یک کار است به شرطی که مجری فقط همان یک کار را انجام دهد، وقفهای در انجام کار به وجود نیاید و منابع لازم برای کار نیز فوراً آماده گردد].
در پایان ممکن است برنامهنویسی وظایف بیشتر یا کمتر از ظرفیت خود داشته باشد. در این صورت کسی که وظایف کمتری دارد، وظایف بیشتری برمیدارد تا تعادل برقرار گردد.
برنامه نویسان وظایف خود را طی تکرار انجام میدهند. با پایان یافتن هر وظیفه، برنامهنویس کد نوشته شده را با کد سیستم یکپارچه کرده و آزمونها را اجرا میکند. همه آزمونها باید اجرا و پشت سر گذاشته شوند، در غیر این صورت کدها اجازه یکپارچهشدن با سیستم را نخواهند داشت.
در طول تکرار، آزمونهای کارکردی تحویل شده توسط مشتری به مجموعه موجود افزوده میشوند. همه آزمونهای واحد و آزمونهای کارکردی در پایان تکرار اجرا میشوند.
گزیده:
زیستن، تنها با آنچه انسان میداند و آنچه به یاد میآورد و محروم از آنچه آرزو دارد، چه دشوار است. آلبر کامو
شهاب
۲۷ آبان ۱۳۹۱ در ۰۰:۰۰درود بر استاد عزیز
من واقعا همیشه این سوال توذهنم بود که واقعا رو چه حسابی کارهارو تو هر بازه زمانی باید انتخاب کنم .
ولی اون مثال خرید از فروشگاه با ۱۰۰ دلار بطور معجزع آسایی جواب بسیاری از سوالات منو داد ، واقعا دست مریزاد به این آقای کنت بک با این قدریت بیانش .