در این قسمت در رابطه با مدل چابک و یا Agile Model از SDLC صحبت خواهیم کرد. مدل چابک ترکیبی از مدل های فرآیندی incremental و iterative می باشد که در قسمت های قبلی در رابطه با آن صحبت کردیم. تمرکز این مدل بر روی تطبیق پذیری و همچنین رضایت مندی مشتری از طریق تحویل مکرر محصولات نرم افزار می باشد.
روش های چابک و یا Agile پروژه را به قسمت ها و یا build های کوچکتر و افزایشی میشکند. این build ها در iteration های مختلف تولید می گردند. هر iteration معمولاً از یک تا سه هفته زمان تشکیل شده است و شامل پیاده سازی های همزمان در قسمتهای مختلف محصول است. برخی از قسمتهای توسعه نرم افزار با روش چابک شامل موارد زیر هستند.
- برنامه ریزی و یا planning
- تجزیه و تحلیل نیازمندی ها و یا requirements analysis
- طراحی و یا design
- کدنویسی و یا coding
- وunit testing و یا تست واحد
- وacceptance testing و یا تست پذیرش
در پایان هر iteration یک محصول نرم افزاری عملیاتی به مشتری و ذی نفعان مهم در پروژه تحویل داده خواهد شد.
مفهوم Agile چیست؟
مدل Agile و یا چابک اعتقاد دارد که هر محصول نرم افزاری نیاز است نسبت به دیگر محصولات نرم افزاری متفاوت مدیریت بشود. این تفاوت بر اساس نیازمندیهای تعریف شده برای هر محصول رقم میخورد. در روش Agile وظایف و یا task ها به اصطلاحاً time box ها شکسته میشوند و در هر کدام از آنها قابلیت های خاصی برای انتشار نرم افزار در مرحله بعد گنجانده می شود.
روش تکراری و یا iterative در Agile مورد استفاده قرار می گیرد و نرم افزار عملیاتی در هر iteration ساخته و تحویل مشتری داده می گردد. هر build به صورت incremental و یا افزایشی قابلیت های مختلف را پیاده سازی می کند تا نهایتاً در مرحله آخر تمامی قابلیت های مورد نیاز مشتری پیاده سازی گردند. در قسمت زیر تصویری از مدل Agile را مشاهده می کنید
روش Agile در توسعه نرم افزار مدتی است که مشهور شده است و به خاطر انعطاف پذیری و تطبیق پذیریش امروزه بسیار محبوب گردیده است. محبوب ترین روش های Agile شامل Rational Unified Process و Scrum و Crystal Clear و Extreme Programming و Adaptive Software Development و Feature Driven Development و Dynamic Systems Development Method می باشند.
اینها را به صورت یکجا تحت عنوان متدولوژی های چابک و یا Agile Methodologies مینامیم که در Agile Manifesto منتشر شده اند. در قسمت زیر محتویات و یا اصول Agile Manifesto که یک سند بسیار مهم می باشد را مشاهده می کنید.
- افراد و ارتباطات بین آنها: در توسعه نرم افزار به روش چابک، خود سازماندهی و خود انگیزه دادن بسیار مهم است و همچنین ارتباط ها بین برنامه نویسان مختلف از اهمیت بسیار زیادی برخوردار است.
- نرم افزار عملیاتی: نرم افزارهای عملیاتی باید بهترین روش ارتباط با مشتری از نقطه نظر نیازمندی های وی باشند. با استفاده از اینها میتوان به جای متکی بودن به مستندات، درخواست نیازمندیهای مشتری را درک کرد.
- همکاری با مشتری: از آنجایی که نمی توان تمامی نیازمندی ها را در ابتدای پروژه، کشف و جمع آوری نمود؛ می بایست با تعامل مرتب و مداوم با مشتری سعی در درک هرچه بهتر نیازمندی های نرم افزار کرد.
- پاسخ دادن به تغییرات: توسعه به روش چابک بر اساس پاسخ سریع به تغییرات و توسعه نرم افزار بر اساس آنها تمرکز دارد.
مقایسه مدل های Agile و مدل های سنتی SDLC
متدولوژی Agile و یا چابک بر اساس روش های توسعه نرم افزار تطبیقی و یا اصطلاحاً adaptive software development بنا نهاده شده است. این در حالی است که روشهای سنتی SDLC شبیه به مدل آبشاری بر اساس یک روش پیش بینی گرانه کار می کند.
در واقع در این روش تیم ها که به صورت پیشگیرانه عمل میکنند با یکدیگر در یک برنامه ریزی مفصل شرکت کرده و یک پیش بینی کامل از وظایف دقیقی که باید انجام شوند تا ویژگی های مورد نظر مشتری در ماه ها و یا سال های آینده در نرم افزار پیاده سازی شوند اتفاق می افتد. روشهای پیش بینی گرانه و یا predictive تماماً بر برنامه ریزی و تجزیه و تحلیل نیازمندها متکی هستند که این موضوع در ابتدای چرخه توسعه نرم افزار اتفاق میافتد.
هر تغییری اگر نیاز باشد که به درون نرم افزار وارد بشود، باید از نقطه نظرهای مدیریتی و اولویتی سختگیرانه ای بررسی بشود. این در حالی است که روش های Agile از نقطه نظر تطبیقی و یا adaptive به نرم افزار نگاه میکنند. بر اساس این تفکر هیچ برنامه ریزی دقیق و مفصلی وجود ندارد و برای وظایفی که در آینده باید اتفاق بیفتند فقط بحث ویژگی های جدید که نیاز به توسعه دارند مطرح می شوند.
این روشها به صورت توسعه قابلیت محور و یا اصطلاحاً feature driven development کار میکنند و تیم های نرم افزاری سعی میکنند خود را به صورت پویا با تغییراتی که در نیازمندی ها رخ میدهند وفق بدهند. محصول نهایی به صورت مکرر تست میشود و این موضوع خود می تواند خطر شکست پروژه در قسمت های بعدی را کاهش بدهند.
ارتباط مداوم با مشتری یکی از مهمترین موضوعات در متدولوژی چابک است. ارتباط باز با حداقل مستندات یکی از ویژگیهای توسعه نرم افزار به روش های چابک می باشد. تیم های چابک همواره با یک همکاری نزدیک به مشتری کار میکنند و سعی میکنند مرتباً از نقطه نظرهای وی نیازمندیها را کشف کنند.
مزایا و معایب مدل چابک
روش های چابک که امروزه در توسعه نرم افزار بسیار مورد استفاده قرار می گیرند شامل مزایا و معایبی هستند که در ادامه به آنها خواهیم پرداخت. در لیست زیر مزایای مربوط به این روش را مشاهده می کنید.
- این روش بسیار واقع گرایانه به روند توسعه نرم افزار نگاه می کند.
- تمرکز آن بر روی کار تیمی و همچنین تقویت مهارت و دانش اعضای تیم است.
- قابلیت های نرم افزار به صورت سریع توسعه داده و معرفی میگردد.
- حداقل نیازمندی ها را نیاز خواهد داشت.
- برای شرایطی که در آنها نیازمندی ها تغییر می کنند و یا تغییر نمی کنند مناسب است.
- نسخه های اولیه نرم افزار به صورت عملیاتی سریعاً ایجاد می شوند.
- برای محیط هایی که تغییرات در آنها مکرراً رخ میدهد بسیار مناسب است.
- حداقل قوانین و مستندات در این روش اتخاذ خواهد شد.
- امکان توسعه همزمان و تحویل برنامه نهایی وجود دارد.
- حداقل برنامهریزی را نیاز دارد.
- مدیریت آن ساده است.
- انعطاف پذیری زیادی را در اختیار برنامه نویس قرار می دهد.
عیب هایی نیز برای متدولوژی های چابک وجود دارند که در ادامه به آنها میپردازیم.
- برای مدیریت کردن پروژه هایی که وابستگی های پیچیده ای دارند مناسب نیست.
- ریسک گسترش و قابلیت نگهداری برای سیستم هایی که با روش چابک ایجاد شده اند بالاست.
- انتقال دانش و تکنولوژی به اعضای جدید تیم دشوار است؛ چرا که مستندات خاصی وجود ندارد.
- وابستگی اعضا به یکدیگر زیاد است؛ چرا که مستندات خاصی در رابطه با نرم افزار تولید نمی شود.
- این مدل بر روی ارتباط نزدیک با مشتری تمرکز می کند. بنابراین اگر مشتری نداند که چه چیزی میخواهد میتواند روند توسعه نرم افزار را به جهت اشتباهی بکشاند.
پرووید: مرکز آموزش تخصصی برنامه نویسی و توسعه نرم افزار