جلسه برنامه ریزی دورهای یا Iteration Planning یکی از پرکتیسهای متدولوژی XP است. Iteration Planning جلسهای است که در ابتدای هر Iteration برگزار میشود تا تسک های برنامه نویسی، به طور کامل برنامه ریزی شود. هر دوره بین ۱ تا ۳ هفته طول میکشد. یوزر استوری های انتخاب شده برای این دوره از قبل در برنامه انتشار یا Release Plan بر اساس بیشترین ارزشی که برای مشتری ایجاد میکنند اولویت بندی شده است. تستهای پذیرشی که رد شدهاند جهت اصلاح دوباره انتخاب میشوند. مشتری به اندازهای یوزر استوری انتخاب میکند که مجموع تخمین پیاده سازی با ظرفیت پروژهای که از دوره قبلی به دست آمده است برابر یا کمتر باشد.
جلسه Iteration Planning در متدولوژی XP چگونه برگزار میشود؟
یوزر استوریها و تستهای رد شده به تسکهای برنامه نویسی شکسته میشوند. تسکها بر روی کارتهایی شبیه به یوزر استوری نوشته میشوند. اما بر خلاف یوزر استوریها که به زبان مشتری نوشته میشدند، تسکها به زبان دولوپرها نوشته میشود. تسکهای تکراری میتوانند حذف شوند. این تسکها در حقیقت به عنوان برنامهای با جزئیات کافی برای دوره محسوب میشوند.
دولوپرها برای انجام تسکها داوطلب میشوند و سپس تخمین میزنند که چقدر طول میکشد تا وظایف آنها تکمیل شود. باید به این نکته توجه کرد که همان فردی تسک را تخمین میزند که آن را پذیرفته است. توجه کنید که افراد قابل تعویض نیستند و تنها شخصی که قرار است کار را انجام دهد باید تخمین بزند که کارش چقدر طول میکشد.
هر تسک به شکل ۱، ۲ یا ۳ روز کاری ایده آل تخمین زده میشود؛ در صورت نیاز از ۰/۵ روز هم میتوان استفاده کرد. روز کاری ایده آل، به روزهایی اطلاق می شود که طول میکشد تسک مشخصی، بدون هیچ حواس پرتی انجام شود. تسکهایی که کمتر از ۱ روز طول می کشند میتوانند با هم ادغام شوند. تسکهایی که بیشتر از سه روز طول میکشند باید به تسکهای کوچکتری شکسته شوند.
ظرفیت یا Velocity در جلسه برنامه ریزی دورهای (Iteration Planning) چه نقشی دارد؟
ظرفیت پروژه کمک میکند تا بفهمیم که آیا در هر دوره (Iteration) حجم کاری زیادی برداشته شده است یا خیر. میزان این حجم کاری نباید بیشتر از ظرفیت پروژه باشد. اگر در هر دوره بیش از حد کار برداشته شده است، مشتری باید تعدادی کار را انتخاب کند و در دوره بعدی قرار دهد.
اگر تعداد کارهای دوره کم باشد می توان یوزر استوری دیگری اضافه کرد. ظرفیت بر اساس روز (تسک) بر ظرفیت بر اساس هفته (یوزر استوری) غلبه می کنند؛ چرا که همیشه دقیقتر است.
اغلب سر ریز شدن یوزر استوریها نگران کننده است اما باید به اهمیت Unit Test و Refactor کردن توجه کنید. بدهی فنی که از این دو نشأت میگیرد میتواند حرکت شما را کند کند. از اضافه کردن کارهایی که از قبل برنامه ریزی نشده است اجتناب کنید. تنها چیزی را اضافه کنید امروز به آن نیاز دارید. پذیرش کارهای اضافی منجر به کند شدن شما میشود.
مراقب باشید تا وسوسه نشوید که تخمین یوزر استوریها و تسکها را تغییر دهید. فرایند برنامه ریزی بر واقعیت سرد ثبات تخمینها استوار است. کوتاه کردن تخمینها تنها مشکلات بیشتری در ادامه ایجاد میکند.
مراقب سرعت پروژه و سر ریز شدن آن باشید. ممکن است لازم باشد همه یوزر استوریها را مجدداً تخمین بزنید و هر سه تا پنج دوره یکبار در مورد برنامه انتشار یا Release Plan دوباره مذاکره کنید. اصلاً نگران نباشید، طبیعت کار ما همین است. تا زمانی که با ارزشترین یوزر استوریها را پیاده سازی می کنید، بهترین کار را برای مشتریان خود و مدیریت انجام میدهید.
مدل توسعه دورهای میتواند چابکی فرایند توسعه شما را افزایش دهد. سعی کنید برای یک Iteration برنامه ریز کنید بدون آن که آیندهنگری کنید.