تا به امروز در مورد روشهای مدیریت محدوده پروژه صحبت کردیم. ویژگی های نرم افزار های مدیریتی را بررسی کردیم و در مورد استفاده آنها به صورت عملی توضیحاتی ارائه کردیم. همانطور که توضیح داده شد این روشها برای تمامی فعالیت ها قابل استفاده و کاربردی هستند. امروز میخواهیم یک چارچوب چابک دیگر را معرفی کنیم که مخصوص پروژههای نرم افزاری بوده و با در نظرگرفتن چالشهای آن به صورت خاص طراحی شده است.
XP چیست؟
Extreme Programming یا XP چارچوبی چابک برای توسعه نرم افزار است که هدف آن تولید و توسعه نرم افزار با کیفیت بالاتر است. XP اختصاصی ترین چارچوب چابک در مورد روشهای مهندسی مناسب برای توسعه نرم افزار است.
چه زمانی میتوان از XP استفاده کرد؟
زمانی از Extreme Programming استفاده میکنیم که:
- نیازهای پروژه به صورت پویا تغییر کند.
- زمان پروژه ثابت است ولی با ریسک استفاده از تکنولوژی های جدید مواجهیم.
- فناوری مورد استفاده امکان تست های عملکردی واحد و خودکار را فراهم میکند.
ممکن است نتوانید از تمامیه چارچوب های XP استفاده کنید اما این بدین معنی نیست که این چارچوب را کنار بگذارید. در نظر داشته باشید که این روش تنها برای توسعه نرمافزار مناسب است و برخی از اقدامات آن به تنهایی در ساخت و تولید نرمافزار میتواند مفید باشد.
5 مزیت Extreme Programming
ارتباطات
توسعه نرم افزار ذاتاً یک روش تیمی است که برای انتقال دانش از یک عضو تیم به سایر افراد تیم، به ارتباطات متکی است. XP بر اهمیت نوع مناسب ارتباطات به صورت رو در رو با کمک تخته سفید یا مکانیسم های طراحی دیگر تأکید می کند.
سادگی
سادگی به این معنی است که ساده ترین چیزی که می توان از آن جواب گرفت چیست؟ هدف از این کار جلوگیری از اتلاف وقت و انجام موارد کاملاً ضروری و همچنین ساده نگه داشتن طراحی سیستم تا حد ممکن است(دقیقا کاری که نرم افزار مدیریت پروژه مانامنت انجام می دهد). دلیل انجام این کارها هم نگهداری، پشتیبانی و تجدید نظر آسان تر می باشد. همچنین سادگی به معنای پرداختن به تنها نیازهایی است که شما در مورد آنها میدانید. سعی نکنید آینده را پیش بینی کنید!
بازخورد
از طریق بازخورد مداوم در مورد تلاش های قبلی افراد، تیم ها میتوانند زمینه های بهبود را شناسایی کرده و اقدامات خود را اصلاح کنند. بازخورد همچنین از طراحی ساده پشتیبانی میکند. تیم شما چیزی را ایجاد میکند، در مورد طراحی و اجرای آن بازخورد جمع میکند، سپس روند پیشرفت محصول را رو به جلو تنظیم میکند.
شجاعت
کنت شجاعت را به عنوان اقدامی موثر در برابر ترس تعریف کرده است. این تعریف اولویت برای اقدام را بر اساس اصولی نشان میدهد تا نتایج برای تیم مضر نباشد. به طور مثال:
- شما برای طرح مسائل سازمانی که اثربخشی تیم شما را کاهش میدهد، به شجاعت نیاز دارید.
- شما برای جلوگیری از انجام کاری که موثر نیست و تلاش برای انجام کار دیگری، به شجاعت نیاز دارید.
- برای پذیرش و عمل به بازخورد نیاز به شجاعت دارید.
احترام
اعضای تیم شما برای برقراری ارتباط با یکدیگر، ارائه و پذیرش بازخوردی که موجب افتخار به مدیریت همزمان چند پروژه توسط شما، احترام یکدیگر را حفظ کرده و برای شناسایی طرحها و راهحل های ساده با یکدیگر همکاری میکنند.
مراحل پیاده سازی روش Extreme Programming
کنار هم بنشینید
از آنجا که ارتباطات یکی از پنج مزیت XP است و اکثر افراد اتفاق نظر دارند که مکالمه بهترین روش ارتباطی است، تیم خود را بدون هیچ مانعی برای برقراری ارتباط، مانند دیوارهای اتاقک کنار هم بنشانید.
کل تیم را در نظر بگیرید
گروه متفاوتی از افراد با نقش های لازم برای یک محصول، یک تیم واحد را تشکیل می دهند. این بدان معنی است که افرادی که نیازمندی خاصی دارند و همچنین همه افرادی که در تأمین آن نیازها نقش دارند همه و همه به عنوان یک تیم باید به طور روزانه با هم کار کنند تا نتیجهای حاصل شود.
فضای کاری آموزنده ایجاد کنید
فضای تیم خود را برای سهولت برقراری ارتباط رو در رو تنظیم کنید، به افراد اجازه دهید در صورت نیاز از برخی از حریم های شخصی خود برخوردار شوند و کارهای تیم را برای یکدیگر و علاقهمندان خارج از تیم شفاف کنند. از مجراهای اطلاعاتی مختلف برای داشتن اطلاعات به روز استفاده کنید.
با انرژی گام بردارید
هنگامی که متمرکز باشید و از حواسپرتی پرهیز کنید، در تولید نرم افزار و دانش مربوطه عملکرد موثر تری دارید. کار با انرژی باعث افزایش توانایی جسمی و روحی شما برای رسیدن به یک حالت متمرکز می شود. این بدان معنی است که نباید بیش از حد خودتان کار کنید (یا اجازه دهید دیگران از شما کار زیادی بکشند). همچنین به معنای سالم ماندن است، علاوه بر خودتان، برای حفظ سلامتی هم تیمی های خود نیز احترام قائل شوید.
برنامه نویسی جفت را تمرین کنید
Pair Programming به معنای این است که کلیه نرم افزارهای تولیدی توسط دو نفر که پشت یک سیستم نشسته اند ساخته میشود. ایده پشت این عمل این است که دو مغز و چهار چشم بهتر از یک مغز و دو چشم هستند. شما به طور موثر کد را بازبینی میکنید و سریعتر برای مشکلات آزار دهنده که ممکن است یک نفر را در مسیر خود متوقف کند راه حل پیدا میکنید.
تیم هایی که از برنامه نویسی جفت استفاده کرده اند دریافته اند که این کار باعث بهبود کیفیت می شود و در واقع کارها از آنچه واقعا هستند بیشتر طول نمی کشد زیرا آنها قادر هستند سریعتر مشکلات را برطرف کنند و بیشتر روی کار مورد نظر، تمرکز نمایند در نتیجه کد کمتر و بهینهتری برای انجام همان کار ایجاد میکنند.
داستانهای کاربری را بنویسید
محصول را به گونهای که از نظر مشتری و کاربر معنیدار باشد توصیف کنید. داستانها، توصیفهای کوتاه و قابل فهمی هستند که کاربرها از کاربرد های نرم افزار مورد نظر، می فهمند. از این داستان ها میتوان برای برنامهریزی و یادآوری در زمان مکالمات با جزئیات بیشتر استفاده کرد.
چرخه هفتگی داشته باشید
چرخه هفتگی مترادف با تکرار است. در مورد XP، تیم در اولین روز هفته ملاقات میکند تا در مورد پیشرفت کار ها تا به امروز تأمل کند، مشتری برنامه هایی را که دوست دارد در آن هفته ارائه شود انتخاب میکند و تیم نحوه برخورد با این برنامه ها را تعیین میکند. هدف در پایان هفته داشتن ویژگی های آزمایش شده ای است که برنامه های ارائه شده را تحقق بخشد.
هدف ازاین چرخه، تعیین زمانی مشخص برای نمایش بازخورد به مشتری است.
چرخه سه ماهه
چرخه سه ماهه مترادف با یک نسخه است. هدف این است که کار دقیق هر چرخه هفتگی را در کل پروژه حفظ کنید. مشتری برنامه کلی تیم را از نظر ویژگی های مورد نظر در یک سه ماهه مشخص ارائه می دهد.
این چرخه سه ماهه دید کلی به تیم ارائه می دهد و همچنین به مشتریان کمک می کند تا داستانی برای ارائه به سرمایهگذاران و دیگر ذینفعان که باید دیدی نسبت به پروژه پیدا کنند، داشته باشند.
به یاد داشته باشید هنگام برنامه ریزی یک چرخه سه ماهه، اطلاعات مربوط به هر برنامه خاص در سطح نسبتاً بالایی قرار دارد، ترتیب تحویل برنامه ها در یک چرخه سه ماهه می تواند تغییر کند. اگر پس از هر چرخه هفتگی قادر به مرور مداوم هستید، می توانید به محض آشکار شدن کوچک ترین تغییرات، اعضا را مطلع کنید.
ایجاد تاخیر قابل پیشبینی (Slack)
منظور از ایجاد تاخیر قابل پیشبینی از نظر XP افزودن برخی از کارهای یا داستانها (stories) با اولویت کم در چرخه هفتگی و سه ماهه شما است که در صورت عقب ماندن تیم از کارهای مهم یا داستان های مهمتر، می توانند کنار گذاشته شوند. در واقع با این روش، سعی میکنید تنوع ذاتی موجود در تخمین ها را حساب کنید و همیشه حاشیهی زمانی مناسبی داشته باشید تا مطمئن شوید شانس خوبی برای تحقق پیش بینی های خود دارید.
ساخت ده دقیقه ای
هدف از ساخت ده دقیقه این است که به طور خودکار کل سیستم را ساخته و تمام آزمایشات را در عرض 10 دقیقه انجام دهید. بنیانگذاران XP یک بازه زمانی 10 دقیقه ای پیشنهاد کردند زیرا اگر تیمی زمان ساخت طولانی تر از آن را داشته باشد احتمال اجرای آن به صورت مکرر کمتر است، بنابراین بین خطاها فاصله زمانی بیشتری ایجاد می شود.
این روش تیم شما را تشویق می کند تا روند ساخت را به صورت خودکار انجام دهند و احتمال بیشتری برای انجام منظم آن وجود داشته باشد، به این صورت برای اجرای تمام آزمایشات از فرآیند ساخت خودکار استفاده کنند.
این عمل از ادغام مداوم پشتیبانی می کند و با Test First Development همراه می شود.
ادغام مداوم (CD)
ادغام مداوم عملی است که در آن تغییرات کدها هنگامی که به یک پایگاه کد بزرگتر اضافه می شوند بلافاصله آزمایش می گردد. مزیت آن این است که شما می توانید مسائل ادغام را زودتر برطرف و رفع کنید.
بیشتر تیم ها از مرحله ادغام کد به دلیل کشف ذاتی تضادها و مسائلی که ایجاد می کند، وحشت دارند. اکثر تیم ها رویکرد
اگر مشکلی پیش آمد، تا آنجا که ممکن است از آن اجتناب کنید
را دنبال می کنند.
اگر هر بار که کد را ادغام می کنید و با مشکلی روبرو می شوید و یافتن محل مشکلات مدتی طول می کشد، شاید باید بیشتر این فرآیند را تکرار کنید تا در صورت وجود مشکل، پیدا کردن آن بسیار راحت تر شود زیرا تغییرات کمتری در ساخت کد گنجانده شده است.
این عمل نیاز به نظم و انضباط زیاد دارد و به فرآیند ساخت و آزمایش ده دقیقه ای وابسته است.
برنامه نویسی با رویکرد Test-First
به جای اینکه مسیر عادی را دنبال کنید:
- توسعه کد
- نوشتن تست
- اجرای آزمون
عمل برنامه نویسی Test-First مسیر زیر را دنبال می کند:
- آزمون تست خودکار را بنویسید
- اجرای آزمون
- توسعه کد برای گذراندن آزمون
- اجرای آزمون
- تکرار
همانند ادغام مداوم (CD)، برنامه نویسی Test-First چرخه بازخورد توسعه دهندگان را برای شناسایی و حل مشکلات کاهش می دهد که باعث کاهش اشکالات وارد شده در تولید می شود.
طراحی افزایشی
روش طراحی افزایشی پیشنهاد می کند که برای درک چشم انداز مناسب طراحی سیستم، کمی از آینده به سیستم نگاه کنید و آن را تحلیل کنید و سپس هنگام ارائه ویژگی های خاص، به جزئیات یک جنبه خاص از آن بپردازید. این روش هزینه تغییرات را کاهش می دهد و به شما امکان می دهد در صورت لزوم براساس جدیدترین اطلاعات موجود تصمیم گیری کنید.
در این فرآیند شما می توانید در صورت نیاز به refactor کردن قبل از کدنویسی فکر کنید و بدین ترتیب زمان زیادی را برای تیم توسعه بخرید.
گاهی با بررسیهای این چنینی به نتایج جالبی میرسید که تیم توسعه را از یک مشکل بزرگ نجات میدهید.
کلام آخر در مورد روش Extreme Programming
سهم اصلی XP در دنیای توسعه نرم افزار، مجموعهای وابسته به روشهای مهندسی است که تیمها می توانند برای کارآیی بیشتر و تولید کد با کیفیت بالاتر از آن استفاده کنند. بسیاری از تیم های چابک با استفاده از چارچوبی متفاوت شروع می کنند و هنگامی که نیاز به روشهای مهندسی منظم تری را تشخیص می دهند، نه همه شیوه های مهندسی مورد حمایت XP، بلکه چندین مورد را اتخاذ می کنند، مثلا مدیریت دورکاری جزو XP نیست.
هدف XP، تمرکز بر بهینهسازی کارهاست. این روش تعداد كمی از اقدامات كاملاً ضروری را تجویز می كند و تیم ها را ترغیب می كند كه این تمرینات را تا آنجا كه می توانند انجام دهند، در بالاترین و شدیدترین حالت ممکن! نام extreme از همین نشات میگیرد. نه به این دلیل که این تمرینات لزوماً رادیکال هستند (گرچه برخی از این روش ها در بعضی از تیمها دور از دسترس شمرده میشوند)، بلکه به این دلیل که تیمها میبایست به طور مداوم بر بهبود توانایی خود در انجام چند تمرین تمرکز کنند.