انجمن دانشجویان دانشکده آموزشهای الکترونیکی دانشگاه شیراز

نسخه‌ی کامل: معرفی مدل Extreme Programming در تولید نرم افزار
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
Extreme.Programming


XP مخفف Extreme Programming یا برنامه نویسی به روش سریع است. در اوایل دهه نود Kent Beck در این فکر بود که روشی بهتر برای طراحی نرم افزار پیدا کند که سر انجام در سال 1966 به کمک همکارش Ward Cunningham در شروع پروژه ای به نام Daimler Chrysler به مفهومی رسید که به نتیجه آن Extreme Programming شد XP. شامل مجموعه از ارزشها، اصول و روشهای مرتبط به هم است که وقتی آن ها را اجرا و رعایت کنیم، روش XP را انجام داده ایم.


مراحل تولید نرم افزار در متدولوژی


1- مقداردهی اولیه: پروژه این مرحله که معمولا توسط یک نفر از اعضاء طراح سیستم، در محل کار کاربر انجام می گیرد و شامل اهداف زیر می باشد(انجام این مرحله غالبا برای کاربر هزینه ای نخواهد داشت):

بدست آوردن دید کلی از پروژه

تعیین بهترین فناوری پیاده سازی

تعیین و معرفی بهترین ترم افزارها بعنوان ابزار پیاده سازی

تشریح متدولوژی پیاده سازی برای کاربر

ارائه مستندات و سوابق کاری و شرایط شرکت برای آشنایی و توجیه هر چه بیشتر کاربر جهت عقد قرارداد

2- تعیین اولویت ها: این اولین قدم در هر پروژه نرم افزاری می باشد. هنگامی که یک قرارداد امضاء گردیده است، اولویت های آن نیز بصورت کلی مشخص گردیده است. برای تعیین دقیق اولویت ها باید از بالاترین سطح شروع کرد و به سمت سطوح سطوح پایین حرکت کرد. این بدان معناست که مشخص نماییم چه قسمتهایی برای کاربر بترتیب مهم می باشد.

3- نوشتن نیازهای کاربربصورت بسیار ساده و روان( درباره اینکه سیستم چه کاری باید انجام بدهد) می باشد. با نوشتن نیازهای کاربر علاوه بر واضح شدن انتظارات کاربر می توان تخمینی از زمان پیاده سازی آنها نیز بدست آورد. اگر مشخص کردن و نوشتن نیازهای کاربر بیش از به طول بطول بیانجامد باید به مراحا حداگثر سه روزه شکسته شود. برای مثال اگر پیاده سازی سیستم مدیریت مشتریان برای کاربر مطرح باشد که نوشتن نیازهای آن به بیش از سه روز زمان احتیاج داشته باشد، باید برای مثال به دو قسمت تشریح امکانات اضافه/ویرایش/حذف مشتریان و جستجوی مشتریان تقسیم شود.

4- طرح نسخه کلی و نسخ میانی: تمام نیازهای کاربر در کنار هم طرح نسخه کلی سیستم را مشخص می نمایند. طرح نسخه میانی از تقسیم طرح کلی به تمام فعالیتهایی که در یک دوره یک تا سه هفتگی انجام می شود، ایجاد می گردند. طرح هر نسخه میانی شامل موارد زیر می باشد:

چه عملیات و توابعی باید انجام گیرند.

هزینه و زمان هر یک از این فعالیتها چقدر است.

هر طرح نسخه میانی بعنوان یک پیشنهاد باید به تایید کاربر برسد

5- مرور نسخ میانی: همانطور که بیان گردید طرح کلی در اصل همان نیازهای مشخص شده کاربر می باشد، اما طرح نسخ میانی به فعالیت هایی که در اولویت بوده و در یک دوره یک تا سه هفته ای قابل پیاده سازی هستند، اطلاق می گردد. بنابراین روند انجام کار بدین ترتیب استکه با توجه به اولویتمطرح شده از طرف کاربر اولین طرح نسخه میانی طراحی شده و بعد از آن این طرح باید توسط طرفین (تیم پروژه و کاربر) مرور گشته و علاوه بر تایید آن مواردی که در اولویت های بعدی قرار دارند و باید در طرح نسخه های میانی بعدی لحاظ گردد مورد موافقت قرار گیرند. بنابراین همانگونه کهملاحظه میگردد در این متدولوژی ابتدا مولف های مرکزی نرم افزار ایجاد میشود.

6- طرح نسخ جزئی: طرح نسخه جزئی یک توصیف تکنیکی از طرح نسخه میانی است که به فعالیتهای برنامه نویس یک تا سه روزه شکسته شده است. این فعالیت ها به دو بخش آزمون و پیاده سازی تقسیم می شوند. بخاطر داشته باشیدکه طرح نسخه میانی یک سری از نیازهای عملیاتی هستند که کاربر و اعضاء تیم پروژه بر روی آن بتوافق رسیده اند و در یک دوره زمانی یک تا سه هفته ای قابل پیاده سازی می باشد.

7- طرح آزمون نسخه جزئی: بر اساس متدولوژی XP طرح آزمون ها باید قبل از پیاده سازی آماده گردند. این بدان معناست که نمام پیاده سازی هایی که انجام می شوند، باید بر اساس قوانین از فبل تعریف شده باشند. این یک روش کارا جهت تشخیص و رفع سریع حطاهای احتمالی می باشد. بنابراین در این مرحله طرح آزمون برای نسخه جزئی آماده می گردد تا در مرحله پیاده سازی نسخه جزئی مورد استفاده قرار بگیرند.

8- پیاده سازی نسخه جزئی: پیاده سازی نسخه جزئی عبارت است از پیاده سازی فرم ها، توابع، اشیاء روالهای ذخیره شده که باید در یک دوره یک تا سه روزه پیاده سازی گردند. هنگامیکه یک فعالیت تایید گردد، تستهای آنها نوشته شده و پیاده سازی آنها آغاز می گردند. تمام عملیات در انتهای پیاده سازی هر نسخه جزئی مرور می گردد. همانطور که قبلا گفته شددر این روش کد نویسی با روش برنامه نویسی زوجی (Pair Programming) انجام می پذیرد.

9- آزمایش نسخه میانی: در پایان پیاده سازی نسخ جزئی (در طول یک دوره یک تا سه هفته ای) یک نسخه از نرم افزار (نسخه میانی) برای مرور و تایید کاربر آماده می گردد، ماربر با مرمر و آزمون این نسخه میانی در صورت وجود خطاها و اشکالاتن احتمالی آنها را گزارش کرده و با ارجاع آنها به مرحله قبل تا رفع کامل آنها این عمل ادامه پیدا کی کند. در صورت رضایت کاربر، این نسخه میانی جهت ایجاد نسخه نهائی مورد تائید قرار می گیرد. یکی از اصول پروژه های موفق این است که هرکجا خطا یا اشکالی بروز کمد باید قبل از پیاده سازی بیشتر بر طرف شود.

10- تایید نسخه نهایی: بعد از پیاده سازی و تایید تمام نسخ میانی، نسخه نهایی ایجاد می گردد. در پایاناین نسخه نهایی باید مورد آزمون و تایید کاربر قرار گیرد. بی شک با توجه به قابلیت انعطاف و پویایی این متدولوژی خطاها و اشکالات در هر مرحلهبطور مداوم و پیوسته بر طرف خواهند گزدید.

11- انتشار نسخه نهایی: هنگامیکه هر و (کاربر و تیم پروژه) از نسخه نهایی رضایت داشتند، آن را بصورت یک محصول نهایی ارائه خواهند نمود. در غیر اینصورت دوباره با تعیین نیازها یک نسخه جدید ایجاد شده و دوباره مرپورد آزمون قرار خواهد گرفت.

12- آموزش: بسیاری از کاربد های جدید بر اسا نظرات مدیریتی طراحی و پیاده سازی میگردند و کارربر واقعی آخرین کسی است که سیستم را آزمایش می کند، در صورتیکه در متدولوژی XP از ابتدای کار کاربران واقعی سیستم در طی تمام مراحل طراحی و چیاده سازی مشارکت فعال داشته باشند و بطور پیوسته در حال آموزش هستند.

13- پشتیبانی: یکی از نگرانی های بجای کاربران همیشه مسئله پشتیبانی می باشد. متدولوژی XPDM SSW با طرح سطوح مختلف پشتیبانی برای کاربران مختلف ایم مسئله مهم را در نظر می گیرد. بنابراین با ارائه یک طرح در زمینه روند و چگونگی چشتیابنی نیلزهای کاربران در این زمینه برطرف خواهد گردید.

14- پیاده سازی بیشتر:با توچه به اینکه نیازها (خصوصا نیازهای تجاری) بطور مداوم در حال تغییر و تحول میباشد، بنابراین احتیاج است که سیستم همواره در این حال گسترش و سازگاری با تغییرات باشد. با توجه به قابلیت انعطاف و پویایی متدولوژی XP این عمل با انجام مستمر مراحل آن بسادگی انجام پذیر خواهد بود.

تعریفی دیگر از روش Extreme Programming
XP اذعان دارد که هدف نهایی یک پروژه توسعه ، تولید کدهایی با کیفیت است که قابل اجرا و نگهداری هستند.
هرچیزی که در این پروژه این هدف را بصورت مستقیم مدنظر نداشته باشد و در خور مناسب نباشد از آن دست کشیده می شود.XP ، 12نرم افزار توسعه که "بهترین تمرینات اند" را در اختیار دارد .
هر شرکت کننده ای در پروژه عضوی از تیم محسوب می شود و تیم متقابلاً بصورت روزانه با مشتری ارتباط دارد.
تمرینات هسته ای XP :

1- بازی برنامه ریزی:
تجارت و توسعه در زمینه ی تولید حداکثر ارزش تجارتی که قابل دستیابی است ، همکاری می کنند. بازی برنامه ریزی بصورتهای مختلفی می باشد اما قوانین اولیه ی همه ی آنها مشترک است:
- تجارت با لیستی از مشخصه های موردنظر برای سیستم در نظرگرفته می شود. هر مشخصه ای بعنوان گزارش کاربری (User story) نوشته می شود. این مشخصه نامی می گیرد و اینکه چه چیزهایی احتیاج دارد را توضیح می دهد.
- گزارش کاربران معمولاً روی کارتهای 4*6 نوشته می شود.
- اینکه چه مقدار کار برای یک توسعه احتیاج است و چه مقدار تیم می تواند روی این توسعه وقت بگذارد همه تخمین زده می شود.
- تجارت تصمیم می گیرد که چه گزارشهایی برای چه درخواستهایی در بهترین موقع خودش پیاده شود و چه موقعی محصول تولید شده از سیستم منتشرشود.

2- انتشارات کوچک: تیم های XP روی انتشارات کوچک به دو روش کار می کنند: اول تیم پخش کننده شروع به کاری می کند، نرم افزار تست شده ، درهر بار ارزش کالای تحویل داده شده به مشتری تعیین می شود. مشتری می تواند این نرم افزار را برای هر نوع هدفی استفاده کند.چه برای ارزیابی یا چه برای انتشار بین کاربران نهایی.
مهمترین جنبه اینست که بعد از هر Iteration نرم افزار پدیدار شده و به مشتری تحویل داده می شود.
دوم تيم هاي XP بخوبي غالباً بين كاربران نهايي منتشر مي كنند. پروژه های وب XP غالباً بصورت روزانه منتشر می شود، پروژه های خانگی بصورت ماهانه و... .

3- طراحی ساده :XP از ساده ترین طراحی ممکن استفاده می کند و در مشاغل اعمال می کند.احتیاجات بعدها تغییر می کند بنابراین فقط احتیاجاتی که امروزه نیاز است، مدنظر قرار می گیرد.
طراحی ساده در XP مربوط به یک زمان نیست بلکه در همه ی زمانهاست.برای برنامه ریزی های انتشارات ، برنامه ریزی Iteration، بکار گماشتن تیم های مثبت در جلسات طراحی سریع و بازبینی طراحی رد ساخت مجدد در حول کل پروژه ، مراحل طراحی وجود دارد.

4- Metaphor : تيم هاي XP یک دید معمول از اینکه چطوری برنامه کار می کند را ارائه می دهند که ما " Metaphor " می نامیم. دربهترین نوع، Metaphor یک توصیف مهیجی از چگونگی کار برنامه می باشد.
تیم های XP از نام های معمول سیستم استفاده می کنند تا مطمئن شوند هر کسی می تواند متوجه شود چگونه سیستم کار می کند و کجا دنبال عمل موردنظر خود بگردد ، بتواند مکان مناسب برای اضافه کردن عمل موردنظرش را بیابد.
تیم هایXP تصدیق نرم افزارها را در همه ی زمان ها میزان می کنند. برنامه نویسان ابتدا نرم افزار را با نوشتن تست ها بسط می دهند و بعد با اجرای کدها ، احتیاجات تستها منعکس می شود. مشتریان تستهای را تهیه می کنند که به نتیجه رسیده باشد تا اطمینان داشته باشند همه ی جنبه هایی که نیاز دارند فراهم است.

6- ساخت مجدد:
تیم های XP هر کد دونسخه ای تولید شده را در یک جلسه کدی مجدد می سازند.
ساخت مجدد بصورت ساده ناشی از استفاده گسترده از انواع تستهای خودکار می باشد.

7- برنامه نویسی دوتایی:
همه کدهای تولید شده که توسط دوبرنامه نویسی نوشته می شود در یک ماشین جای می گیرد. این تمرین باعث می شود اطمینان حاصل کنیم کدهای ارائه شده همانگونه اند که برا ی آن منظور نوشته شدند. همچنین طراحی بهتر، تست و کدهای بهتری از این روش نتیجه می شود.
بعضی از موضوعات برنامه نویسان بصورت دوتایی است بدون اینکه تلاشی برای این منظور بکنیم . برای انجام بهتر این عمل لازم است چندین تمرین انجام دهیم که ممکن است چندهفته ای برای رسیدن به جواب، طول بکشد.90% برنامه نویسان که با برنامه نویسی دوتایی آشنایی دارند آن را ترجیح می دهند.به همین خاطر برنامه نویسی دوتایی به کل تیم ارائه شده است.
در مجموع دوتایی بودن ، منجربه تهیه کدها و تستهای بهتر می شود.همچنین باعث می شود معلومات در بین اعضای تیم بهتر رد و بدل شود.

8- یکپارچگی پیوسته:
همه ی تغییرات در داخل ساختمان کد حداقل بصورت روزانه یکپارچه می شوند.یک واحد تست 100% قبل و بعد از یکپارچگی اجرا می شود. یکپارچگی که دیر به دیر صورت گیرد مشکلات جدی در یک پروژه نرم افزاری بوجود می آورد.اول از همه چیز، اگرچه یکپارچگی برای رسیدن به کدهایی که بصورت مطلوب کار کند مهم است، تیم در این زمینه تمرینی نمی کند و اغلب این کار را به افرادی که با کل سیستم آشنا نیستند محول می کنند.
مشکلاتی در زمان یکپارچه سازی رخ می دهد که در هیچکدام از آزمایشاتی که بر روی سیستم غیریکپارچه اعمال شده ، کشف نشده است.
همچنین پردازش یکپارچه سازی ضعیف، باعث می شود که کدهای طولانی ، ثابت شوند. منظور از کدهای ثابت اینست که شما مدت زمان طولان باید صبر کنید تا اینکه برنامه نویسان بتوانند روی ویژگی های قابل حمل آن کار کنند اما آن ویژگی ها باید برگردند.

10- 40 ساعت کار هفته:
برنامه نویسان به موقع به منزل می روند. در حالت حساس بیشتر از یک هفته می توانند اضافه کاری کنند. اما چندین هفته ی پی در پی اضافه کاری بصورت اعلان در برنامه ی روزانه کار اشتباهی است.

11- جایگاه مشتری:
تیم توسعه ، دستیابی پیوسته ای دارد به مشتریانی که در واقع از سیستم استفاده خواهند کرد.برای شروع با تعداد زیادی مشتری ، یک نماینده مشتری (مثلاً مدیر محصول) برای دستیابی داشتن با تیم توسعه برگزیده می شود.

12- استانداردهای کد:
هر فردی بصورت استاندارد مشترکی کد می کند. نوع خاصی از استاندارد مهم نیست. چیزی که مهم است، اینست که کدها در مجموعه مالکیت ارائه شده ، شناخته شده باشند.


ارزش های XP :
XP یک متدولوژی بر پایه ارزش است. ارزشها سادگی ، مکاتبه ای ، بازخورد و شجاعت می باشد. هسته ی ارزش های XP به بهترین نحو در جملات Kent Beck خلاصه شده است:
" بیشتر از آن چیزی که کار می شود کار کن و کمتر از آن چیزی که انجام نمی دهی ، انجام نده."

مهمترین های این چهار ارزش در زیر آمده است:

پیشبردهای سادگی:
- ارائه نمونه هایی به ساده ترین حالت که احتیاجات تجارت را برآورده کند.
- طراحی نرم افزارهایی که بصورت ساده ترین حالت عملکردهای موردنیاز را برآورده کند.
- ساختن برای امروز نه فردا.
- نوشتن کدهایی که به راحتی قابل خواندن ، فهمیدن ،نگهداری و ویرایش باشد.

ارتباطات بوسیله موارد زیر انجام می شود:
- همکاری فضاهای کاری
- همگام سازی توسعه و فضای تجارت
- توسعه جفتی شدن(Paired)
- تغییر دادن همکاران جفتی بصورت مکرر
- تغییر دادن دستیاران بصورت مکرر
- نمایش وضعیت عمومی
- ملاقاتهای کوتاه دائمی
- واحد آزمایش ها ، Demos و ارتباط زبانی نه ارتباطات مستنداتی

بازخورد ارائه می شود با:
- Iteration خوب و توسعه انتشارات
- انتشار بین کاربران نهایی بصورت مکرر
- همگام سازی با کاربران نهایی
- اتوماتیک کردن واحدهای آزمایش
- اتوماتیک کردن تستهای عملکردی
- Urage احتياج دارد به:
- انجام كار صحيح در روبروي كار متضاد
- انجام تمريناتي كه براي به رسيدن موفقيت لازم است.

نتيجه:

xp قالب کاملی برای ارائه سازماندهی بدون هیچگون عیب و نقص نیست. Xpنسبتاً مجموعه ای از بهترین تمرینات برای مدیریت تیم توسعه و رابط آن با مشتریان می باشد. بعنوان مثال یک پردازش به تیم قابلیت رشد و تغییر می دهد و اینکه خودش را با برنامه های کاربردی و نیازهای تجارتی که با آن روبرو ست وفق می دهد.
بیشتر پردازش هایی که xp با آنها روبرو می شود قابل تبدیل به سازماندهی بدون عیب و نقص است نه فقط قابل تبدیل به یک تیم توسعه.
منبع:سایت علمی دانشجویان ایران