متدولوژی چابک - Agile

متدولوژی چابک – Agile

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

متودولوژی چابک

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

به طور کلی شرایط چابکی و مقدمات آن به شرح زیر است:

مدل فرایند تولید چابک:

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

روش چابک Agile:

روش شیء گرایی به دلیل استفاده از مفاهیمی همچون کلاس به عنوان یک مولفه قابل استفاده مجدد، وراثت به عنوان یک عامل بازدارنده از دوباره نویسی کد، چند ریختی به عنوان یک عامل بالابرنده خوانایی در برنامه، می تواند شکل و شمایل چابکی را به خود بگیرد. در روش ساخت یافته، چابکی خیلی کمتر دیده می شود.

همبستگی Cohesion و پیوستگی Coupling:

توجه به این نکته لازم است که شیء گرایی و مفاهیم کلاس باعث می شود تا بتوان مولفه هایی با طراحی ایده آل با همبستگی یا انسجام بالا (Cohesion) و پیوستگی یا اتصال پایین (Coupling) در فعالیت طراحی مربوط به فعالیت های چارچوبی ایجاد کرد. هر چقدر در طراحی مولفه ها انسجام بالا و اتصال پایین باشد، فرایند توسعه نرم افزار سریع تر خواهد بود و این ینی چابکی.

ابزار چابک UML:

UML به دلیل مدل سازی خاص و منحصر به فرد خود می تواند شکل و شمایل چابکی را به خود بگیرد. مانند تولید کد سریع از مدل های طراحی ایجاد شده توسط UML به وسیله رشنال رز.

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

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

همچنین در مورد تیم های متدولوژی چابک باید گفت که این تیم ها به صورت خود سازنده (Self-Organizing) تشکیل شده و اعضای آن ها با اختیارات بیشتری نسبت به دیگر تیم های نرم افزاری عمل می کند. که خود این سازماندهی سبب چابکی تیم های کاری می گردد.
بازهم تاکید می کنیم که چابکی، مقدمه می خواهد، مقدمات چابکی باید فراهم گردد، تا پیشرفت پروژه چابک باشد، در یک بیان ساده، طوری تیم ها و کارها را سازماندهی کنید که همه چیز چابک و سریع باشد و عاملی نتواند روند رو به جلوی پیشرفت پروژه را مختل نماید، به هر دلیلی. چابکی، یا اصطلاحا کاتالیزور فرایند تولید نرم افزار انواعی دارد، که به متدولوژی های چابک موسوم هستند. مانند XP ، Scrum و Crystal . مثلا در XP، برنامه نویسی زوجی ( دو نفی روی یک کامپیوتر ) پیشنهاد می گردد. زیرا دو فکر غالبا از یک فکر بهتر است. که به آن تضمین کیفیت بی درنگ نیز گفته می شود.

در کل چابکی فقط به بحث مهندسی نرم افزار مربوط نمی شود، می توان آن را در بطن زندگی روزمره مان و در انجام اموری که حتی فکرشم را هم نمی کنیم که چابکی چه کمک شایانی می تواند به آن ها بکند، وارد کنیم. بیایید به جای سیستم ها و روش های سنتی که همیشه آن را انجام می دهیم گاهی به انجام آن کار به صورت چابک نیز بیندیشیم، حتما مدل های دیگری نیز وجود دارد؛ از چیزای جدید استقبال کنیم و باور های کهنه را دور بریزیم، شاید به مرور نتایج شگفت آور آن حتی در زندگی شخصی و کارهای کوچک؛ تاثیرات بزرگ ایجاد کند! فقط حواسمان باشد چابکی به معنای سرعت صرف نمی باشد. واین موضوع باعث نشود تا ما کیفیت را فدای سرعت و کمیت نماییم.

پس بیایید چابک فکر کنیم و چابک عمل کنیم…

0 پاسخ

دیدگاه خود را ثبت کنید

میخواهید به بحث بپیوندید؟
احساس رایگان برای کمک!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *