گروه های خبری
آرشیو
ف
کد خبر: 291234

انعطاف در برابر تغییرات، ارمغان متدولوژی سریع یا XP

در میان متدولوژی‌های سبک‌وزن و چابکی که پیش روی تیم‌های برنامه‌نویسی قرار دارد، این متدولوژی XP است که سعی می‌کند ساده‌ترین راهکارها را برای ساخت و تولید یک سامانه نرم‌افزاری پیشنهاد دهد. مهم‌ترین مزیت این متدولوژی سهولت به‌کارگیری است. به عبارت دقیق‌تر، این متدولوژی شما را مجبور نمی‌کند از همان ابتدا فرآیند کدنویسی یا شبیه‌سازی را اجرا کنید، بلکه اجازه می‌دهد هر ماژول نرم‌افزاری را در زمان خودش پیاده‌سازی کنید.

به گزارش خبرنگار فناوری اطلاعات «خبرنامه دانشجویان ایران»؛ برنامه‌نویسی سریع (Extreme Programming) که برخی منابع از اصطلاح برنامه‌نویسی مفرط برای توصیف آن استفاده می‌کنند، یکی از معروف‌ترین و محبوب‌ترین متدولوژی‌ها چابک بوده که عمدتا در ارتباط با پروژه‌هایی به کار گرفته می‌شود که سه فاکتور کیفیت بالا، قابلیت اطمینان بالا و پاسخ‌‌گویی سریع به نیازهای در حال تغییر مشتری در آن‌ها حائز اهمیت است. رویکرد به کار گرفته‌شده از سوی این متدولوژی نرم‌افزار بر ارائه یک الگوی انتشار متناوب در چرخه‌های کوتاه توسعه و تطبیق دادن محصول با نیازهای کاربر تاکید دارد. این مکانیزم به میزان قابل‌توجهی هزینه‌ها را کاهش داده اما در مقابل کیفیت محصول نرم‌افزاری را افزایش می‌دهد.

متدولوژی چیست؟
متدولوژی مجموعه‌ای مستند و منظم از بایدها و نبایدها است. مجموعه‌ای که در آن مراحل، روال‌ها، قانون‌ها، تکنیک‌ها، ابزارها، مستندات، مدیریت بر منابع و آموزش به شکلی ساختارمند و مشخص در کنار یکدیگر قرار گرفته و به کار گرفته می‌شوند تا یک محصول منطبق با اصول را طراحی کنند. محصولی که هر زمان به تغییری نیاز داشت، تیم‌های توسعه بر مبنای نقشه راه قبلی بتوانند پارامترهایی را به یک محصول اضافه کرده، ویرایش کرده یا حذف کنند. متدولوژی‌ها ابداع شده‌اند تا مدیریت فرآیند توسعه نرم‌افزار را تسهیل، درک مسئله را ساده‌تر، طراحی و تهیه نرم‌افزار را ساختارمندتر و مدیریت ریسک را قانونمندتر کرده و در نهایت ابزارهایی را به‌منظور سنجش کیفیت محصولی که در دست‌ساخت است، در اختیار تیم‌های برنامه‌نویسی قرار دهند.

برنامه‌نویسی سریع (Extreme programming)
ریشه شکل‌گیری متدهای توسعه چابک به دهه 90 میلادی بازمی‌گردد. این متدها به وجود آمدند تا مشکلات و نارسایی‌های متدولوژی‌های سنگین وزن آبشاری را حل کنند. مدیران پروژه‌ها و مهندسان ارشد نرم‌افزاری که در صف منتقدان متدولوژی سنگین وزن قرار داشتند و یک مانفیست چابک را ارائه کردند، بر این باور بودند که متدولوژی‌های سنگین وزن مدلی خاص از توسعه را ارائه می‌کنند که به‌شدت منظم بوده، به شکل غیرمنعطفی فرآیند‌ها را طبقه‌بندی کرده و اغلب آن‌ها سبکی خاص از مدیریت میکرو (Micro-Management) را ارائه می‌کنند. (درحالی‌که این گروه از مهندسان نرم‌افزار دست‌کم 30 سال پیش به چنین مشکلی اشاره داشتند، امروزه شاهد هستیم، تیم‌هایی که به سبک مدیریت میکرو هدایت می‌شوند در عمل سرخورده و بی‌انگیزه شده و انرژی کارمندان آن‌ها به‌سرعت هدر می‌رود. این مشکل ازآن‌جهت رخ می‌دهد که مدیران سنتی با کنترل بیش‌ازاندازه کارمندان خود راه هرگونه پیشرفت و موفقیت را بسته و زمینه را برای فرسودگی و دلسردی کارمندان فراهم آورده‌اند. مشکلی که امروزه بیشتر شرکت‌های داخلی نیز با آن دست‌به‌گریبان هستند. مدیرانی که به‌جای تعامل با کارمندان تنها به آن‌ها اعلام می‌دارند چه‌کاری را باید انجام دهند.) همین مسئله زمینه‌ را برای به وجود آمدن متدولوژی‌های چابک مساعد ساخت که از سال 1994 به بعد به دنیای نرم‌افزار وارد شدند. فرآیند توسعه یکپارچه (RUP)، اسکرام (Scrum) ،Crystal Clear، متدولوژی XP، توسعه تطبیقی نرم‌افزار، توسعه مبتنی بر ویژگی، سیستم‌های پویا از جمله متدولوژی‌های چابکی بودند که در دهه 90 میلادی ابداع شدند. اما سرانجام در سال 2001 میلادی مانفیست چابک منتشر شد و در نهایت مدل‌هایی را که به آن‌ها اشاره کردیم، با عنوان متدولوژی‌های چابک طبقه‌بندی کرد. شکل(1) متدولوژی‌های چابک را همراه با عملکرد آن‌ها به شکل طبقه‌بندی‌شده نشان می‌دهد. مانفیست منتشر شده در ارتباط با روش‌های چابک بر چهار اصل فردگرایی و تعامل سازنده به‌جای تمرکز خاص بر فرآیندها و ابزارها، ارائه نرم‌افزار قابل‌اجرا به‌جای مستندات مفهومی، همکاری با مشتریان به‌جای مذاکرات مبتنی بر قرارداد و پاسخ‌گویی به تغییر به‌جای انجام خطی فرآیندهای غیرمنعطف تاکید دارد.

مدل توسعه XP
XP (سرنام EXtreme Programming) (برنامه‌نویسی سریع) برای نخستین بار در سال 1996 توسط کنت بک معرفی شد. XP یکی دیگر از متدولوژی‌های توسعه سبک‌وزن نرم‌افزار است که هدفش بهبود کیفیت نرم‌افزار و پاسخ‌گویی به تغییرات مدنظر مشتری است. XP از انتشار متناوب در چرخه‌های کوتاه توسعه برای بهبود بهره‌وری و معرفی نقاط کنترلی برای هماهنگ شدن با نیازهای جدید کاربر پشتیبانی می‌کند. اجتناب از برنامه‌نویسی ویژگی‌ها تا زمانی که به آن‌ها احتیاج پیدا شود، مدیریت ساخت‌یافته و منظم، آماده بودن برای پیاده‌سازی تغییرات مدنظر مشتری، ارتباط پیوسته برنامه‌نویسان با یکدیگر و مشتری از ویژگی‌های شاخص این متدولوژی است.

Pair Programming
Pair Programming یا به زبان عامیانه برنامه‌نویسی جفتی (دوبه‌دو) یکی از رایج‌ترین تکنیک‌هایی است که در توسعه نرم‌افزاری چابک به کار گرفته می‌شود و در آن دو برنامه‌نویس به شکل تیمی روی یک ایستگاه کاری مشغول کار می‌شوند. در هر لحظه یکی از این دو برنامه‌نویس به کدنویسی مشغول بوده و دیگری کد او را بررسی و نقد کرده و به فراخور نیاز راهنمایی‌‌اش می‌‌کند. این دو به‌صورت دوره‌‌ای جای خود را عوض کرده و کسی که راهنمایی و نقادی را انجام می‌داده دست به کدنویسی می‌زند و کدنویس مرحله قبل به نقاد فعلی تغییر نقش می‌دهد. در این الگو به نفر دوم که نظاره‌گر کدنویس است، مشاهده‌گر (observer) یا ناوبر (navigator) گفته می‌شود. در این ترکیب یک نفر می‌تواند نقش یک استراتژیست را بازی کرده، کدها را نقد کرده و نقشه راه کلی برنامه را مشخص کند و برای مشکلاتی که ممکن است در آینده رخ دهد راهکاری را ارائه ‌کند. در حقیقت نفر دوم به‌جای آن‌که به تکنیک‌ها توجه بیشتری داشته باشد به تاکتیک‌ها دقت نظر دارد. (شما نیز زمانی که در دانشگاه مشغول تحصیل بودید، در کلاس‌های کارگاهی که به‌صورت دو نفری برگزار می‌شد، بدون آن‌که اطلاع داشته باشید از متدولوژی XP و همین تکنیک استفاده می‌کردید.)

Code Review
Code Review، یک آزمایش سیستماتیک و یک ارزیابی دقیق سورس‌ کدهای کامپیوتری است. هدف این آزمایش پیدا کردن و اصلاح اشتباه‌هایی است که در فاز آغازین توسعه به وجود آمده است. این آزمایش‌ ضمن آن‌که به بهبود کیفیت نرم‌افزار منجر می‌شود، سطح مهارت‌های توسعه‌دهندگان را ارتقا می‌دهد. بازبینی به شکل‌های مختلفی همچون بررسی‌های رسمی انجام می‌شود. ارزیابی دقیق کد اغلب به بررسی کدهای منبع ختم می‌شود. اگر کد منبع از قوانین زبان موردنظر پیروی کرده باشد، علاوه بر افزایش کیفیت کد منبع موجب می‌شود تا مشاهده، بررسی و برطرف کردن ایرادها برای تیم ارزشیابی آسان‌تر شود. با انجام صحیح ارزیابی کد، بسیاری از مشکلات احتمالی زمان حال و آینده برطرف خواهد شد. به‌عنوان مثال، در صورت مراجعه دوباره به کد منبع در آینده فهمیدن و درک کدی که درست ارزشیابی شده و از قوانین پیروی کرده است راحت‌‌تر بوده و زمان کمتری را نیاز خواهد داشت.

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

مالکیت کد
بر مبنای اصول XP هیچ برنامه‌نویسی مالکیت کد را در اختیار ندارد. به‌عبارت‌دیگر، هر یک از اعضای تیم می‌توانند این احساس مالکیت را داشته باشند. در نتیجه هر یک از اعضا بدون نیاز به دریافت مجوز از همکاران خود می‌توانند کدها را تغییر دهند.

ساده‌سازی و شفاف‌سازی کدها
ساده‌سازی یکی از اصول مهم متدولوژی XP است. متدولوژی XP اعلام می‌دارد، برنامه‌نویسان نباید سعی کنند نیازهای آتی پروژه را پیش‌بینی کرده و بر این اساس فرآیند طراحی را آغاز کنند. XP اعلام می‌دارد، ساده‌ترین کاری را که می‌توان انجام داد، انجام دهید. (در این زمینه متدولوژی XP و مدل نمونه‌سازی اولیه وجه تشابه دارند.)

نشرهای کوچک
XP از مدل مارپیچی استفاده می‌کند که نشرهای کوچک 3 الی 4 هفته‌ای دارد. در انتهای هر انتشار مشتری محصول را بازبینی کرده، ایرادهای آن‌را شناسایی کرده و نیازهای مدنظر خود را ارائه می‌کند.

یکپارچه‌سازی مستمر
در مدل XP کدنویسی به بخش‌های کوچکی تقسیم‌شده و نوشتن هر کد معمولا یک روز زمان به خود اختصاص می‌دهد. هر زمان که یک بخش از کد نوشته شد، ماژول نوشته‌شده با کد اصلی ادغام می‌شود. در نتیجه در هر روز تعداد زیادی محصول نرم‌افزاری ساخته می‌شود. (ممکن است ماژول‌ها کوچک بوده یا در قالب کتابخانه‌های پویا نوشته‌ شوند اما در هر صورت یک محصول نرم‌افزاری خواهند بود.)

حضور مشتری در محل
مشتری‌ها به‌منظور بررسی و اعتبارسنجی نیازهای مدنظر، در مدت‌زمان فرآیند تولید در محل شرکت حضور خواهند داشت.

تست واحد/واحد آزمایش (ویژه همه کدها)
در برنامه‌نویسی کامپیوتر، تست واحد (unit testing) یک روش آزمایش نرم‌افزار است که بخش‌های مجزا و کوچکی از سورس کد را برای اطمینان از درست کار کردن آن‌ها بررسی می‌کند. در این روش، درستی هر قسمت از کد که به آن «واحد» گفته می‌‌شود، از طریق به‌کارگیری ورودی‌ها ارزیابی شده و به‌طورمعمول، تست واحد از سوی توسعه‌دهندگان انجام می‌شود.

فضای کاری
در مدل XP روابط میان اعضای تیم با یکدیگر و با مشتری از اهمیت خاصی برخوردار است.

کار در بازه زمانی استاندارد
در مدل XP برنامه‌نویسان خودشان را با اضافه‌کاری خسته نمی‌کنند، به دلیل این‌که در عمل ثابت‌شده اضافه‌کاری نه‌تنها بازده مفیدی ندارد، بلکه باعث افت کیفیت محصول نهایی شده و خستگی بدون دلیل برنامه‌نویسان را به همراه خواهد داشت.

برنامه‌ریزی
در مرحله جمع‌آوری نیازها در مدل XP، جمع‌آوری نیازها به شیوه سنتی انجام می‌شود. به‌عبارت‌دیگر، مشتری نیازهای خود را به بیان ساده اعلام کرده، اولویت‌ها را مشخص کرده و تیم تولید تخمینی را بر اساس این نیازها اعلام می‌کند.

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

این فرآورده‌ها عبارتند از:
User Stories: به‌طورمعمول به ‌شکل متنی بوده و توسط مشتریان نوشته می‌‌شوند. از طریق داستا‌ن‌های کاربری نیازمندی‌های سیستم مشخص می‌شوند.

Iteration Plan: مجموعه‌‌ای از داستان‌های کاربری بوده که از سوی مشتری ارائه می‌شود. در هر مرحله از تکرار که نزدیک به دو هفته به طول می‌انجامد، این داستان‌ها نوشته می‌شوند. طرح‌‌ها بر مبنای اولویت مدنظر مشتری در دستور کار قرار می‌گیرند، البته به شرطی که دو طرف بر سر بودجه به توافق برسند.

Task: زیرمجموعه‌ای از داستان‌های کاربری است. Task ها از نظر تکنیکی و کاری اولویت بیشتری دارند و باید سریع انجام شوند. Task‌ها در مرحله طرح‌‌ریزی تکرارها (Iteration Planning) مشخص می‌‌شوند.

Metaphore: نشان‌دهنده یک تصویر کلی از سیستم است. برای هر عنصر در سیستم یک نام در نظر گرفته می‌‌شود. ارتباط بین عناصر درگیر در سیستم از طریق استعاره‌ها (Metaphore) مشخص می‌‌شود.

Spike: اشاره به یک راه‌حل ضربتی (Spike Solution) دارد. راه‌حل ضربتی برنامه ساده‌ای است که به‌وسیله آن می‌‌توان راه‌‌حل‌‌های بالقوه را کشف کرد. در مواردی که داستان‌های کاربری حساس و مهم باشند، از راه‌حل‌های ضربتی استفاده می‌‌شود.

Planning Game: یک تعامل محصور (Close Interaction) بین مشتری و برنامه‌‌نویس است. برنامه‌‌نویس کار لازم را برای پیاده‌‌سازی گزارش‌‌های مشتری تخمین می‌‌زند و مشتری در مورد حوزه و زمان نشرها تصمیم‌‌گیری می‌‌کند.

Simple Design: تأکید اصلی در این روش روی طراحی ساده‌‌ترین راه‌‌حل ممکن بوده، به‌طوری‌که پیچیدگی‌‌های غیرضروری و کدهای اضافی به‌سرعت حذف ‌شوند.

Testing: قبل از این‌که برنامه‌‌نویس یک خاصیت/ویژگی/مولفه را اضافه کند، برای آن یک واحد تست طراحی می‌‌کند که به‌صورت پیوسته اجرا می‌شود.

Refactoring: بازسازی سیستم با حذف موارد تکراری، بهبود ارتباطات، ساده‌‌سازی و افزایش انعطاف‌‌پذیری سیستم است.

Pair Programming: به کدنویسی دونفره اشاره دارد که در اغلب موارد یک کدنویس و یک متخصص استراتژی با یکدیگر کار می‌کنند.

Collective Ownership: هر فردی می‌‌تواند کد را در هر زمانی تغییر دهد.

Continuous Integration: کد جدید در حداقل زمان ممکن به کد اولیه مرتبط می‌شود. بنابراین سیستم دفعات زیادی در روز یکپارچه‌شده و ساخته می‌شود.

40 Hour Week: حداکثر چهل ساعت کار در هفته کافی است. این مورد اجباری است و بیشتر از این ساعات کار مجاز نیست.

On- Site Customer: مشتری باید به‌صورت تمام‌وقت در دسترس تیم توسعه باشد.

Coding Standards: قواعد کدنویسی باید از سوی همه برنامه‌‌نویسان رعایت شود و ارتباط بین کدها مورد توجه قرار گیرد.

دیاگرام متدولوژی XP را بر مبنای فرآورده‌هایی که در بالا به آن‌ها اشاره شد، در شکل (4) نشان داده شده است.

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

منبع: شبکه

مرتبط ها
نظرات
chapta
حداکثر تعداد کاراکتر نظر 200 ميياشد .
نظراتی که حاوی توهین یا افترا به اشخاص، قومیت‌ها، عقاید دیگران باشد و یا با قوانین جمهوری اسلامی ایران و آموزه‌های دینی مغایرت داشته باشد منتشر نخواهد شد - لطفاً نظرات خود را با حروف فارسی تایپ کنید.