متدولوژی XP

Download Report

Transcript متدولوژی XP

Agile Methodologies
Yazd University, Electrical and Computer Engineering Department
Course Title: Advanced Software Engineering
By: Mohammad Ali Zare Chahooki
‫مقدمه‌ای بر اهمیت موضوع‬
‫شرايط كسب و كار در كشور ما نيز به تبع ديگر كشورها در حال تغيير است‪.‬‬
‫بنابراين سازمان‌ها مي‌بايست به گونه اي چابك باشند تا بتوانند در‬
‫كوتاه‌ترين زمان با توجه به شرايط محيط‪ ،‬تغييرات الزم را در خود ايجاد‬
‫نمايند‪.‬‬
‫با توجه به اين كه توسعه نرم‌افزار در هر سازمان‪ ،‬زيرساختي براي عملكرد‬
‫بهتر آن سازمان فراهم مي‌آورد لذا ‪...‬‬
‫متدولوژي توسعه نرم‌افزار نيز بايستي به گونه اي باشد كه مهندس ي نرم‌افزار‬
‫پاسخ قابل قبولي براي تغييرات سريع فراهم آورد‪.‬‬
‫‪2‬‬
‫مقدمه‌ای بر اهمیت موضوع‬
‫بيش از يك دهه قبل‪ ،‬پيش فرض متدولوژي توسعه در پروژه‌هاي بزرگ‬
‫نرم‌افزاري كشور ما بر اين بود كه ‪...‬‬
‫در مدتي كه تيم توسعه در حال شناخت‪ ،‬تحليل‪ ،‬طراحي‪ ،‬ساخت و آزمو ‌ن‬
‫نرم‌افزر هستند‪... ،‬‬
‫هيچ گونه تغييري در سازمان كارفرما اتفاق نمي‌افتد‬
‫اگر شاهد چنين تغييرهايي باشيم ‪...‬‬
‫تمام مسئوليت آن به عهده بهره‌بردار و كارفرما مي‌باشد‪.‬‬
‫لذا كارفرما متهم مي‌گرديد كه چرا كليه نيازهاي خود را از همان ابتدا‬
‫مشخص نكرده است‪.‬‬
‫‪3‬‬
‫مقدمه‌ای بر اهمیت موضوع‬
‫اين ديدگاه در پروژه‌هاي نرم‌افزاري كشور تغيير كرده است ولي ‪...‬‬
‫متاسفانه همچنان شاهد شكست ذاتي در بيشتر پروژه‌هاي نرم‌افزاري‌‬
‫هستيم‪.‬‬
‫بايد به اين نكته توجه داشت كه هرچند بسياري از پروژه‌ها در انتها به‬
‫بهره‌برداري مي‌رسند ولي ‪...‬‬
‫عمال به دليل عدم رعايت زمان و هزينه پيش بيني شده‪... ،‬‬
‫بسياري از منابع سازمان تلف مي‌شود و منافع بهره‌برداري از نرم‌افز ‌ار به تاخير‬
‫مي‌افتد‪.‬‬
‫‪4‬‬
‫مروری بر متدولوژی‌های چابک‬
‫هنوز تعريف دقيقي از چابكي متدولوژي ارائه نشده است ولی ‪...‬‬
‫اين مفهوم مورد عالقه متخصصين اين رشته و مراكز پژوهش ي مي‌باشد‪.‬‬
‫بنابراين هنوز توافقي بر اين كه كدام متدولوژي چابك مي‌باشد وجود ندارد‪.‬‬
‫‌افزار‬
‫در سال ‪ 2001‬بيانيه‌اي توسط گروهي از مشاورين و پيمانكاران نرم ‌‬
‫ارائه گرديد كه به ‪...‬‬
‫"بيانيه توسعه چابك نرم‌فزار" مشهور گرديد‪.‬‬
‫اين بيانيه از چهار بخش تشكيل شده است ‪...‬‬
‫‪5‬‬
‫مروری بر متدولوژی‌های چابک‪ -‬بیانه توسعه چابک نرم‌افزار‬
‫الف) اشخاص و ارتباط بين آنها بر فرايندها و ابزار اولويت دارند‪.‬‬
‫رابطه نزديك افراد در تيم پروژه در اين بخش از اولويت بااليي برخور‌دار‬
‫است‪.‬‬
‫‪6‬‬
‫مروری بر متدولوژی‌های چابک‪ -‬بیانه توسعه چابک نرم‌افزار‬
‫ب) كاركردن نرم‌افزار بر مستندسازي همه جانبه آن اولويت دارد‪.‬‬
‫هدف اساس ي تيم توسعه نرم‌افزار توليد مداوم نرم‌افزار‬
‫آزمون‌شده‬
‫مي‌باشد‪.‬‬
‫بنابراين مي‌بايست نشر هاي جديد در بازه‌هاي زماني متناوب توليد شوند‪.‬‬
‫اين تناوب در بعض ي از رويكردها مي‌تواند به صورت روزانه و يا حتي ساعتي باشد‪.‬‬
‫ولي معموال در بازه‌هاي ماهانه و يا دوماهانه نشرهاي جديد توليد مي‌شوند‪.‬‬
‫برنامه نويس‌هامي‌بايست كدهاي ساده را در نهايت تكنيك ايجاد نمايند و همواره بايد به‬
‫اين ملزم شده و تشويق شوند‪.‬‬
‫اين شيوه توليد سبب مي‌شود تا حجم مستند سازي در حد قابل قبولي كاهش يابد‪.‬‬
‫‪7‬‬
‫مروری بر متدولوژی‌های چابک‪ -‬بیانه توسعه چابک نرم‌افزار‬
‫ج) همكاري با مشتري بر مذاكرات قراردادي اولويت دارد‪.‬‬
‫هرچند كه اهميت قراردادهايي كه به خوبي تنظيم شده اند با بزرگ شدن‬
‫پروژه‌ها‪ ،‬افزايش مي‌يابد ولی ‪...‬‬
‫ارتباط و همكاري بين توسعه دهندگان و مشتري (كارفرما و بهره‌بردار) بر‬
‫روابط مبتني بر قرارداد اولويت دارد‪.‬‬
‫فرايند مذاكرات مبتني بر قرارداد بايستي به عنوان ابزاري براي حفظ روابط‬
‫پويا در پروژه تبديل گردد‪.‬‬
‫‪8‬‬
‫مروری بر متدولوژی‌های چابک‪ -‬بیانه توسعه چابک نرم‌افزار‬
‫د) پاسخ به تغييرات بر دنبال كردن طرح اولويت دارد‪.‬‬
‫گروه توسعه نرم‌افزار كه شامل‪:‬‬
‫تيم توسعه‬
‫و‬
‫افراد مسئول از سمت مشتري مي‌باشند‪ ،‬بايستي ‪...‬‬
‫داراي‬
‫شايستگي‪،‬‬
‫اختيار و‬
‫دانش الزم‬
‫جهت تصميم گيري در مورد تغييرات در نيازمندي‌هايي كه در‬
‫حين فرايند توسعه نرم‌افزار شناسايي مي‌شوند‪ ،‬باشند‪.‬‬
‫‪9‬‬
‫مروری بر متدولوژی‌های چابک‬
‫اهمیت نيروی انسانی‬
‫در متدولوژي‌هاي چابك‪ ،‬نگرش به نيروي انساني و تاثيري كه بر موفقيت‬
‫پروژه دارند مورد توجه مي‌باشد‪.‬‬
‫بنابراين ايجاد‬
‫انگيزش‬
‫در نيروي انساني براي توليد نرم‌افزار‬
‫باكيفيت در محدوده زماني پروژه از اهميت بااليي برخوردار مي‌باشد‪.‬‬
‫‪10‬‬
‫مروری بر متدولوژی‌های چابک‬
‫انتخاب مناسب‌ترین متدولوژی‬
‫طيف گسترده اي از پروژه‌هاي نرم‌افزاري وجود دارد‬
‫براي تمامي‌پروژه‌ها نمي‌توان متدولوژي يكساني در نظر گرفت‪.‬‬
‫بنابراين مدير پروژه مي‌بايست بر اساس ويژگي‌هاي پروژه ‪...‬‬
‫بهترين متدولوژي‬
‫را انتخاب نمايد‪.‬‬
‫‪11‬‬
‫مروری بر متدولوژی‌های چابک‬
‫آقاي كاك‌برن (‪ )Alistair Cockburn‬که از افراد پیشرو در تدوین بیانیه‬
‫توسعه چابک نرم‌افزار است ‪...‬‬
‫چابكي را در متدولوژي توسعه نرم‌افزار بر اساس ‪...‬‬
‫بهره‌گيري از قواعد كم ولي كافي و همچنين ‪...‬‬
‫استفاده از قوعد حاكم بر ارتباطات انساني تعريف كرده است‪.‬‬
‫ايشان بر پنج نكته كليدي تاكيد دارند كه سبب موفقيت در پروژه مي‌گردند‪.‬‬
‫‪12‬‬
‫مروری بر متدولوژی‌های چابک‬
‫الف) بين دو تا هشت نفر در يك اتاق باشند‪.‬‬
‫اين نكته بر ارتباطات تيم پروژه اشاره مي‌كند‪.‬‬
‫ب) افراد خبره در محل توسعه نرم‌افزار استفاده شود‪.‬‬
‫افراد خبره کسانی هستند که نیازمندی‌های محصول را به خوبی می‌دانند‪.‬‬
‫اين نكته بر بازخوردهاي سريع و نيز چرخه‌هاي كوتاه مدت توسعه نرم‌افزار‬
‫تاكيد دارد‪.‬‬
‫‪13‬‬
‫مروری بر متدولوژی‌های چابک‬
‫ج) تكرارهاي كوتاه از يك تا سه ماه سبب تسريع در آزمون و رفع اشكاالت‬
‫مي‌شود‪.‬‬
‫د) آزمون‌هاي رگرسيون كامال خودكار گردد‪.‬‬
‫آزمون‌هاي واحد و كاركردي سبب مي‌شود تا كد ايجاد شده تثبيت گرديده و‬
‫بهبود مداوم را سبب گردد‪.‬‬
‫ه) از توسعه دهندگان با تجربه استفاده گردد‪.‬‬
‫افراد با تجربه بين دو تا پنج برابر سريعتر از افراد كندتر تيم ‪ ،‬كار توسعه را‬
‫انجام مي‌دهند‪.‬‬
‫‪14‬‬
‫مروری بر متدولوژی‌های چابک‬
‫آقاي ميلر‪ ،‬نه مشخصه براي فرايندهاي توسعه نرم‌افزار ارائه داده است كه‬
‫سبب سرعت در چرخه حيات پروژه مي‌گردد‪.‬‬
‫‪15‬‬
‫مروری بر متدولوژی‌های چابک‬
‫‪ -1‬فرايند توسعه نرم‌افزار به صورت ماژوالر انجام پذيرد‪.‬‬
‫هم‌اکنون مدل‌های توسعه نرم‌افزار گوناگونی وجود دارد ‪...‬‬
‫این مدل‌ها از تنوع‌های مختلفی مانند آبشاری تا حلزونی برخوردار هستند ‪...‬‬
‫هرکدام از مدل‌ها نقاط قوت و ضعف خود را دارند ‪...‬‬
‫ممکن از بخواهیم از نقاط قوت تمامی مدل‌ها استفاده کنیم ‪...‬‬
‫تا به بهترین انتخاب برای متدولوژی در پروژه برسیم‪.‬‬
‫بنابراین باید کل پروسه‌ای که در متدولوژی دنبال می‌شود را به ص ‌ورت‬
‫بلوک‌دیاگرام ترسیم کنیم و ‪...‬‬
‫سپس برای هر بلوک بهترین انتخاب‌ها را از مدل‌های موجود انتخاب کنیم‪.‬‬
‫‪16‬‬
‫مروری بر متدولوژی‌های چابک‬
‫‪ -2‬فرايند توسعه تكرار پذير باشد و چرخه‌ها به فواصل زماني كم تكرار‬
‫شوند‪.‬‬
‫اين امر سبب مي‌شود تا بازبيني‌ها و اصالحات در نرم‌افزار سريع انجام پذيرد‪.‬‬
‫‪ -3‬طول زماني هر تكرار بين يك تا شش هفته محدود گردد‪.‬‬
‫‪ -4‬فرايند توسعه بايستي مختصر باشد تا فعاليت‌هاي غيرضروري‌ حذف‬
‫گردند‪.‬‬
‫‪ -5‬فرايند بايستي در برابر ريسك‌هاي جديد كه ممكن است رخ دهند‬
‫تطبيق پذير باشد‪.‬‬
‫‪17‬‬
‫مروری بر متدولوژی‌های چابک‬
‫‪ -6‬رويكرد فرايند توسعه نرم‌افزار بايستي به صورت افزايش ي باشد‪.‬‬
‫اين امر سبب مي‌گردد تا نرم‌افزاري با قابليت اجرا در گام‌هاي كوچك ايجاد‬
‫گردد‪.‬‬
‫‪ -7‬رويكرد افزايش ي و همگرا سبب كمينه نمودن ريسك‌هامي‌گردد‪.‬‬
‫‪ -8‬فرآيند مي‌بايست مبتني بر افراد باشد‪.‬‬
‫‪ -9‬سبك محيط كار مي‌بايست مبتني بر همكاري و تعامل باشد‪.‬‬
‫‪18‬‬
‫مروری بر متدولوژی‌های چابک‬
‫آقاي‌هايسميت‪ ،‬هدف از متدولوژي‌هاي چابك را در چهار بخش به شرح ذيل‬
‫آورده است‪:‬‬
‫الف) اولين نسخه قابل اجرا در طي چند هفته به مشتري عرضه گردد‬
‫تا بتوان هرچه زودتر بازخورد كاربر را دريافت نمود‪.‬‬
‫ب) براي نيازمندي‌ها راه حل‌هاي ساده در نظر گرفت‪.‬‬
‫اين امر سبب مي‌شود تا تغييرات بعدي آسان تر انجام پذيرد‪.‬‬
‫‪19‬‬
‫مروری بر متدولوژی‌های چابک‬
‫ج) به صورت پيوسته كيفيت طراحي را بهبود دهيم‪.‬‬
‫بهبود بايستي به گونه‌اي انجام پذیرد كه در تكرار بعد هزينه پياده سازي‬
‫كاهش يابد‪.‬‬
‫د) آزمون بايستي به صورت دائم انجام شود‪.‬‬
‫اين امر سبب مي‌شود تا اشكاالت در مراحل اوليه مشخص گردند‪.‬‬
‫از اين رو هزينه رفع اشكاالت كاهش مي‌يابد‪.‬‬
‫‪20‬‬
‫مروری بر متدولوژی‌های چابک‬
‫آقاي آملر‪ ،‬پنج رويكرد عمومي‌را از متدولوژی‌های چابک استخراج نموند‪:‬‬
‫الف) اهميت نيروي انساني‪.‬‬
‫ب) مستندسازي كمتر نيز امكان پذير است‪.‬‬
‫ج) ارتباطات بين افراد درگير در پروژه از اهميت ويژه اي برخوردار است‪.‬‬
‫د) ابزارهاي مدل سازي آنچنانکه معموال احساس مي‌شوند مفيد‬
‫نمي‌باشند‪.‬‬
‫ه) مدل سازي و طراحي بزرگ كه در ابتدا انجام مي‌شود نياز نمي‌باشد‪.‬‬
‫‪21‬‬
‫متدولوژی )‪eXtreme Programming (XP‬‬
‫متدولوژي‪ XP‬بواسطه چرخه طوالني توسعه نرم‌افزار در‬
‫متدولوژي‌هاي سنتي و مشكالت ناش ي از آن ‪...‬‬
‫در سال ‪ 1999‬توسط آقاي ِبك تدوين گرديد‪.‬‬
‫این متدولوژی به عنوان اولين متدولوژی چابک مطرح است ‪...‬‬
‫رويه‌هايي كه در اين متدولوژي ارائه شده است نكات جديدي نبودند ‪...‬‬
‫ولي از اين جهت دارای اهمیت است که ‪...‬‬
‫رويه‌هاي بهينه كنار هم قرار گرفته و به عنوان متدولوژي مدون گرديدند‪.‬‬
‫‪22‬‬
‫متدولوژی ‪XP‬‬
‫چرخه حيات توسعه نرم‌افزار در اين متدولوژي در شش فاز انجام مي‌پذيرد‪.‬‬
‫‪23‬‬
‫متدولوژی ‪XP‬‬
‫‪ )1‬فاز كاوش )‪(Exploration Phase‬‬
‫دراين فاز مشتري و تيم توسعه به صورت موازي شروع به كار مي‌كنند‪.‬‬
‫مشتري‌‪ ،‬ويژگي‌هاي سيستم را كه انتظار دارد در نگارش اول پياده سازي‬
‫گردد را بر روي سناريو كارتهايي ثبت مي‌كند‪.‬‬
‫هر سناريو بيان كننده ويژگي اي از سيستم مي‌باشد‪.‬‬
‫‪24‬‬
‫متدولوژی ‪XP‬‬
‫تيم پروژه به صورت موازي با ابزارها و تكنولوژي‌هايي كه در پ ‌روژه‬
‫استفاده مي‌شود آشنا مي‌شوند‪.‬‬
‫تكنولوژي و معماري‌هاي متصور براي سيستم نرم‌افزاري با ايجاد‬
‫ن مي‌شوند‪.‬‬
‫پروتوتايپ‪ ،‬آزمو ‌‬
‫اين فاز بين تعداد معدودي هفته و يا ماه مي‌تواند انجام پذيرد‪.‬‬
‫مدت زمان این فاز بستگي به‬
‫بزرگي پروژه و‬
‫آشنايي تيم توسعه با تكنولوژي و ابزارهاي پياده سازي دارد‪.‬‬
‫‪25‬‬
‫متدولوژی ‪XP‬‬
‫‪ )2‬فاز طرح‌ريزي )‪(Planning‬‬
‫اين فاز تا حداكثر در دو روز انجام مي‌شود‪.‬‬
‫در اين فاز‪:‬‬
‫‪ )1‬توافقي بر سر ويژگي‌هاي نشر اوليه صورت مي‌پذيرد‬
‫‪ )2‬سناریوها (ويژگي‌هاي نرم‌افزار) اولويت بندي مي‌شوند‪.‬‬
‫‪ )3‬تخمين مدت برنامه‌نویس ی سناریوها توسط برنامه‌نویس‌ها‬
‫‪ )4‬زمان بندي پروژه براساس تخمين مدت برنامه‌نویس ی‬
‫زمان بندي نشر اوليه سيستم نبايد بيشتر از دو ماه باشد‬
‫‪26‬‬
‫متدولوژی ‪XP‬‬
‫‪ )3‬فاز تكرار‌هاي قبل از انتشار )‪(Iterations to Release‬‬
‫اين فاز شامل تكرارهايي است كه تا قبل از نشر اوليه انجام مي‌شود‪.‬‬
‫هر تكرار بين يك تا چهار هفته برنامه ريزي مي‌شود‪.‬‬
‫در اولين تكرار معماري كل سيستم در قالب يك سيستم نرم‌افزاري پياده‬
‫سازي مي‌شود‪.‬‬
‫اين كار با انتخاب سناريو‌هايي انجام مي‌شود كه نيازمند ساخته شدن كل‬
‫سيستم نرم‌افزاري مي‌باشند‪.‬‬
‫‪27‬‬
‫متدولوژی ‪XP‬‬
‫انتخاب سناريو‌ها يي كه در هر چرخه پياده سازي مي‌شوند با مشاوره مشتري‬
‫انجام مي‌شود و‬
‫تصميم گيري در اين مورد را مشتري انجام مي‌دهد‪.‬‬
‫آزمون‌هاي كاركردي كه توسط مشتري تهيه شده است ‪...‬‬
‫در انتهاي هر تكرار انجام مي‌شود‪.‬‬
‫در انتهاي آخرين تكرار سيستم آماده توليد مي‌باشد‪.‬‬
‫‪28‬‬
‫متدولوژی ‪XP‬‬
‫‪ )4‬فاز توليد )‪(Productionizing‬‬
‫اين فاز شامل آزمون‌هاي نهايي و همچنين ‪...‬‬
‫آزمون كارايي بر روي نرم‌افزار قبل از نشر به مشتري مي‌باشد‪.‬‬
‫در اين فاز تغييرات جديدي شناسايي مي‌شوند و ‪...‬‬
‫تصميم گيري در مورد اينكه آيا اجراي تغييرات در همين نشر و يا در نشر‬
‫بعدي انجام پذيرد‪ ،‬انجام مي‌شود‪.‬‬
‫‪29‬‬
‫متدولوژی ‪XP‬‬
‫در طول اين فاز ممكن است تكرارهايي بين يك تا سه هفته برنامه‌ریزی شود‪.‬‬
‫ايده‌ها و نيز نظراتی كه بايستي در نشرهاي بعدي در سيستم گنجانده شود‬
‫مستند مي‌گردند تا ‪...‬‬
‫در فاز‌هاي بعدي (مثال فازي نگهداري‌) پياده سازي شوند‪.‬‬
‫‪30‬‬
‫متدولوژی ‪XP‬‬
‫‪ )5‬فاز نگهداري )‪(Maintenance‬‬
‫بعد از آنكه نشر اوليه براي استفاده مشتري توليد گرديد‪... ،‬‬
‫همچنانكه در طول چرخه‌هاي ديگر نشرهاي جديد از سيستم توليد‬
‫مي‌شود ‪...‬‬
‫مي‌بايست نشر توليد شده اجرايي باشد‪.‬‬
‫براي اين منظور مي‌توان ساختار تيم توسعه را تغيير داد و افراد ديگري را نيز‬
‫به تيم اضافه نمود‪.‬‬
‫‪31‬‬
‫متدولوژی ‪XP‬‬
‫‪ )6‬فاز پاياني )‪(Death‬‬
‫زماني كه مشتري سناريو ديگري براي پياده سازي نداشته باشد به اين فاز‬
‫نزديك مي‌شويم‪.‬‬
‫لذا مي‌بايست قبل از اين فاز نيازمندي‌هاي ديگر مشتري نظير كارايي وامنيت‬
‫نيز در نرم‌افزار گنجانده شده باشد‪.‬‬
‫در اين فاز بدليل عدم تغييرات‪ ،‬مستنداتي كه براي نگهداري سيستم نياز‬
‫هستند نهايي مي‌شوند‪.‬‬
‫‪32‬‬
‫متدولوژی ‪XP‬‬
‫چنانچه مشخص گردد كه‬
‫سيستم قادر به اجراي ويژگي‌هاي مورد نظر نمي‌باشد و يا‬
‫هزينه‌هاي پياده سازي باال مي‌باشد‪،‬‬
‫اين فاز در نهايت انجام مي‌شود‪.‬‬
‫‪33‬‬
‫متدولوژی‬
‫‪-XP‬نقش‌های تعریف شده‬
‫‪ .1‬برنامه‌نويس‬
‫آزمون‌هاي واحد را برنامه مي‌نويسند‬
‫كد برنامه را ساده و گويا نگه مي‌دارند‪.‬‬
‫تعامل برنامه نويس‌ها با يكديگر و ديگر اعضاي تيم از اهميت‬
‫بااليي در اين متدولوژي برخوردار است‪.‬‬
‫‪34‬‬
‫متدولوژی‬
‫‪-XP‬نقش‌های تعریف شده‬
‫ي‬
‫‪ .2‬مشتر ‌‬
‫وظيفه نوشتن سناريو كارت‌ها و ‪...‬‬
‫آزمون‌هاي كاركردي را به عهده دارد‪.‬‬
‫مشتري اولويت بندي نيازمندي‌ها در پياده سازي را انجام مي‌دهد‪.‬‬
‫‪35‬‬
‫متدولوژی‬
‫‪-XP‬نقش‌های تعریف شده‬
‫‪ .3‬آزمونگر‬
‫به مشتري در نوشتن آزمون‌هاي كاركردي كمك‬
‫آزمون‌ها را به صورت دوره‌اي اجرا‬
‫مي‌كند‪.‬‬
‫مي‌كنند و ‪...‬‬
‫نتايج آنها را ثبت و گزارش مي‌كنند‪.‬‬
‫همچنين وظيفه بهنگام كردن و نگهداري آزمون‌ها در ابزار آزمون‌ به عهده‬
‫آزمونگرها مي‌باشد‪.‬‬
‫‪36‬‬
‫متدولوژی‬
‫‪-XP‬نقش‌های تعریف شده‬
‫‪ .4‬پيگير )‪(Tracker‬‬
‫سنجش تخمين‌هايي كه قبال توسط تيم پروژه زده شده است با زمان واقعي‬
‫انها با ايشان مي‌باشد و ‪...‬‬
‫بيان مي‌كنند كه زمان‌بندی ها تا چه حد دقيق بوده اند تا در آينده زمان‬
‫بندي‌ها با دقت بيشتري انجام پذيرد‪.‬‬
‫همچنين ميزان پيشرفت هر تكرار مشخص مي‌شود و ‪...‬‬
‫مشخص مي‌شود كه آيا هدف مشخص شده در تكرار با منابع و‬
‫؟‬
‫محدوديت‌هاي زماني موجود قابل دسترس مي‌باشد و يا‪...‬‬
‫مي‌بايست تغييراتي در انها انجام پذيرد‪.‬‬
‫‪5‬‬
‫‪37‬‬
‫متدولوژی‬
‫‪-XP‬نقش‌های تعریف شده‬
‫‪ .5‬مربي )‪(Coach‬‬
‫ايشان مسئول كل فرايند مي‌باشد‪.‬‬
‫مربي بايست بتواند اعضاي ديگر تيم را در دنبال كردن فرايند ‌راهنمايي‬
‫كند‪.‬‬
‫‪38‬‬
‫متدولوژی‬
‫‪-XP‬نقش‌های تعریف شده‬
‫‪ .6‬مشاور‌‬
‫شخص ي است در خارج از تيم ‪...‬‬
‫كه دانش مورد نیاز در مورد مسائل خاص پروژه را در اختيار دارد‪.‬‬
‫‪39‬‬
‫متدولوژی‬
‫‪-XP‬نقش‌های تعریف شده‬
‫‪ .7‬مدير‬
‫تصميم‌گيري‌ها به عهده مدير مي‌باشد‪.‬‬
‫براي تصميم گيري با اعضاي تيم در ارتباط است تا ‪...‬‬
‫وضعيت موجود را تعيين كند و مشكالت موجود در فرايند را تشخيص دهد‪.‬‬
‫‪40‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.1‬طرح ريزي تعاملی‬
‫در اين متدولوژي تعامل نزديك بين برنامه نويس و مشتري وجود دارد‪.‬‬
‫برنامه نويس پيش‌بيني زماني در مورد سناريوهاي مشتري را انجام مي‌دهد و‬
‫‪...‬‬
‫مشتري تصميم‌گيري در مورد زمان‌بندي و محتواي نشرها را انجام مي‌دهد‪.‬‬
‫‪41‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.2‬نشرهاي كوتاه‪/‬كوچك‬
‫نشر اوليه سيستم سريع (دو تا سه ماه) انجام مي‌پذيرد و ‪...‬‬
‫نسخه‌هاي بعدي مي‌توانند حتي روزانه و يا حداكثر ماهانه انجام شوند‪.‬‬
‫‪42‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.3‬استعاره‬
‫سيستم با مجموعه اي از استعاره‌ها بين برنامه نويس‌ها و مشتري تعريف‬
‫مي‌شود‪.‬‬
‫استعاره‌ها املان‌هاي اساس ي نرم‌افزار و ارتباطات بين آنها مي‌باشد‪.‬‬
‫‪43‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.4‬طراحي آسان‬
‫اجرا است‬
‫در اين متدولوژي تاكيد بر استفاده از آسان‌ترين طراحي كه قابل ‌‬
‫مي‌باشد‪.‬‬
‫پيچيدگي‌هاي غير ضروري و همچنين كدهاي پيچيده مي‌بايست از سيستم‬
‫حذف گردند‪.‬‬
‫‪44‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫ن‬
‫‪.5‬آزمو ‌‬
‫توسعه نرم‌افزار مبتني بر آزمون مي‌باشد‪.‬‬
‫آزمون‌هاي واحد قبل از نوشته شدن كد‪ ،‬پياده سازي مي‌شوند و به صور‌ت‬
‫پي درپي اجرا مي‌شوند‪.‬‬
‫وظيفه نوشتن آزمون‌هاي كاركردي بر عهده مشتري مي‌باشد‪.‬‬
‫وظیفه اجرای آزمون‌های کارکردی برعهده آزمون‌گر می‌باشد‪.‬‬
‫‪45‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.6‬شكل دهي مجدد‬
‫اجزاي تكراري سيستم حذف گردد و ‪...‬‬
‫ساده سازي‌ها در سيستم انجام پذيرد‪.‬‬
‫‪46‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.7‬برنامه نويس ي جفتي‬
‫هر كد برنامه در يك كامپيوتر و توسط دو برنامه نويس تهيه مي‌شود‪.‬‬
‫يكي از برنامه نويس‌ها موس و صفحه كليد را در اختيار دارد و ‪...‬‬
‫برنامه نويس ديگر كد نوشته شده را چك مي‌كند كه ‪...‬‬
‫آيا مي‌تواند آزمون‌ها را بگذراند و ‪...‬‬
‫آيا موارد آزمون ديگري وجود دارد كه مي‌بايست تهيه شود‪.‬‬
‫اين رويكرد با استرتژي‌هاي مختلف قابل اجرا مي‌باشد‪.‬‬
‫‪47‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.8‬مالكيت جمعي‬
‫هر كس مي‌تواند هر بخش از برنامه را در هر زماني تغيير دهد‪.‬‬
‫‪48‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.9‬تجميع مداوم‬
‫هر بخش از كد كه تهيه مي‌شود بايستي هرچه سريعتر با ديگر اجزاي‬
‫سيستم تجميع گردد‪.‬‬
‫بنابراين در طول روز سيستم چندين بار تجميع شده و ساخته مي‌ش ‌ود‪.‬‬
‫تمامي‌آزمون‌ها بايستي با موفقيت اجرا گردند‪.‬‬
‫‪49‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.10‬چهل ساعت كار در هفته‬
‫در هفته نبايد بيش از حداكثر چهل ساعت كار انجام شود‪.‬‬
‫بين هر دو هفته بايستي حتما تعطيلي وجود داشته باشد كه ‪...‬‬
‫در غير اینصورت بايستي راه حلي براي اين مشكل انديشيده شود‪.‬‬
‫‪50‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.11‬حضور مشتري در محل توسعه نرم‌افزار‬
‫مشتري مي‌بايست به صورت تمام‌وقت در دسترس تيم توسعه نرم‌افزار‬
‫قرار داشته باشد‪.‬‬
‫‪51‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.12‬استانداردهاي كدنويس ي‬
‫قواعد كدنويس ي بايستي وجود داشته باشد و ‪...‬‬
‫توسط برنامه‌نويس‌ها رعايت گردد‪.‬‬
‫بايستي بر ارتباط بين افراد تيم از طريق كد برنامه تاكيد گردد‪.‬‬
‫‪52‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.13‬فضاي كاري باز‬
‫بهتراست از اتاقي بزرگ با پارتيشن‌هاي كوچك استفاده شود‪ .‬برنامه‌نويس‌ها‬
‫بهتر است در مركز اين فضا باشند‪.‬‬
‫‪53‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫‪.14‬قانون‌گرايي‬
‫بين افراد تيم‌ قوانينی حكم‌فرما هستند كه مي‌توانند تغيير نيز بكنند‪.‬‬
‫تغيير در قوانين بايستي به توافق تمامي افراد تيم برسد و‬
‫اثر آنها بر كيفيت انجام كار‪ ،‬ارزيابي گردد‪.‬‬
‫‪54‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫توصیه ارائه‌دهنگان متدولوژی‪:‬‬
‫در شروع نبايستي سعي شود تا يه يكباره تمامي آن به كار گرفته شود‪.‬‬
‫بلكه مي‌بايستي با درنظر گرفتن مسئله‪ ،‬سعي شود ‪...‬‬
‫با تجارب ‪ XP‬آن را حل نمود‪.‬‬
‫بر همين اساس‪ ،‬رويكرد اصلي در اين متدولوژي آن است كه ‪...‬‬
‫فرآیند توسعه نرم‌افزار واحدي كه براي تمامي پروژه‌ها مناسب باشد ‌وجود‬
‫ندارد‪ .‬بلكه ‪...‬‬
‫بايستي با اصالحات بر فرآيند موجود‪ ،‬آنرا براي پروژه جديد‪ ،‬مناسب نمود‪.‬‬
‫‪55‬‬
‫متدولوژی ‪-XP‬‬
‫تجارب بدست آمده از متدولوژي ‪XP‬‬
‫برای چه پروژه‌هایی مناسب است؟‬
‫اين متدولوژي از آنجاييكه براساس‪:‬‬
‫بازخوردهاي سريع از كاربر و همچنين ‪...‬‬
‫براساس تغييرات كم‬
‫مي‌باشد‪،‬‬
‫در پروژه‌هايي كه اين مشخصات را ندارند مناسب نمي‌باشد‪.‬‬
‫‪56‬‬
‫مراجع‬
[1] J. Highsmith, A. Cockburn, Agile Software Development: The Business of Innovation, Computer 34
(9), 2001, 120-122.
[2] S. Hawrysh, J. Ruprecht, Light Methodologies: It's Like DejaVu All Over Again, Cutter IT Journal
13, 2000, 4-12.
[3] A. Cockburn, Agile Software Developmet, Addison-Wesley, Boston, 2002.
[4] G. G. Miller, The Characteristics of Agile Software Processes, The 39th International Conference of
Object-Oriented Languages and Systems, Santa Barbara, CA, 2001.
[5] S. Ambler, Agile Modelling: Effective Practices for Extreme Programming and the Unified Process,
John Wiley & Sons Inc., New York, 2002.
[6] K. Beck, M. Beedle, A. van Bennekum, A. Cockburn, W. Cunningham, M. Fowler, J. Grenning, J.
Highsmith, A. Hunt, R. Jeffries, J. Kern, B. Marick, R. Martin, S. Mellor, K. Schwaber, J. Sutherland,
and D. Thomas, Manifesto for Agile Software Development, http://AgileManifesto.org, 2001.
[7] P. Abrahamsson, O. Salo, J. Ronkainen, J. Warsta, Agile SofwareDevelpment Methods Review and
Analysis, VTT Publications, 2002.
[8] K. Beck, Embracing Changr With Extreme Programming, IEEE Computer 32(10), 1999, 70-77.
[9] K. Beck, Extreme Programming Explained: Embrace, Reading Mass., Addison-Wesley, 1999.
57