درآمدي بر مدلسازي چابك (Agile Modeling)
مدلسازي چابك (Agile Modeling) رويكرد نسبتا جديدي است به توليد، به خصوص توليد نرمافزار. اساس اين رويكرد، چنان چه از نامش پيدا است، چابكي در تحليل، طراحي، ساخت و تست نرمافزار و هدف آن توليد نرمافزار با كيفيت است. در اين رويكرد، مدلسازي و مستندسازي تا اندازهاي توصيه ميشود كه مورد نياز و مفيد باشد، نه بيش از آن.
اين ديدگاه، توليد مدلها و مستندات را به صرف پيروي از يك متدولوژي يا چارچوب، مضر و اتلاف وقت ميداند.
متدولوژي چابک در پاسخ به مشکلاتي که رويکردهاي سنتي در توليد نرم افزار به وجود مي آورند،مطرح شده است. به طور خلاصه مي توان مدل سازي چابک را در بسياري از شرايط که امکان استفاده از ساير مدلها فراهم نيست ،مورد استفاده قرار داد. تعدادي از اين موارد به اين شرح اند:
- پروژه کوچک است (تعداد افراد درگير 2 تا 30 نفر هستند)
- مشتريان و توسع دهندگان نرم افزار در تماس مداوم با يکديگر هستند
- ممکن است نيازمنديهاي در طول اجراي پروژه تغيير کند
- قلمروي پروژه به طور کامل تعريف نشده است
- مسئله پيچيده است
متدولوژی های توسعه نرم افزار بطور کلی به دو دسته سنگین وزن (HeavyWeight) و سبک وزن (LightWeight) تقسیم می شود .محور اصلی متدلوژی های سنگین وزن مانند RUP شامل برنامه ریزی جامع و مستند سازی از ابتدا تا انتها و طراحی کامل و گسترده می باشد .به عبارت دیگر روشهای سنگین وزن بصورت پیشگو یا Predictive عمل می کنند یعنی در آغاز همه چیز را پیش بینی می کنند در این جا این سوال پیش می آید که آیا همه چیز از ابتدا قابل پیش بینی می باشد؟
مسلما در ابتدای فاز های تحلیل به دلیل تغییر نیاز ها نمی توان همه چیز را پیش بینی کرد بنابراین متدلوژی های سبک وزن بوجود آمدند. این روش ها بیشتر بر روی سادگی و سرعت تمرکز دارند .در این روش ها در یک کار توسعه گروه توسعه فقط روی وظایفی که در ابتدا احتیاج است تمرکز می کنند و آنها را باید سریع تحویل می دهند و در هر مرحله به جمع آوری بازخوردها می پردازند وبه اطلاعات دریافت شده واکنش می دهند
چه چیز یک روش توسعه را تبدیل به agile می کند؟
اگر توسعه نرم افزار به صورت
- افزایشی (incremental) نشر های کوچک نرم افزاری با گردشهای سریع
- مشارکتی (cooperative) کاربر و توسعه دهندگان با یک ارتباط نزدیک به صورت ثابت با یکدیگرکار می کنند
- سر راست (straight forward) خود روش برای یادگیری و تغییر دادن آسان می باشد و خوب مستند شده است
- سازگار (adaptive)قابلیت تغییر پذیری در آخرین لحظات می باشد یعنی انطباق با شرایط
شود متدلوژی به صورت Agile در می آید
.
مقایسه روش های چابک با متدلوژی های سنگین وزن :
اندازه پروژه :
متدلوژی های سبک وزن بیشتر در پروژه های کوچک استفاده می شوند در حالی که برای پروژه های بزرگ می بایستی از متدلوژی های سنگین وزن استفاده شود ولی این مساله باعث کاهش محبوبیت این متدلوژی ها نمی شود چون تعداد پروژه های کوچک به مراتب بیشتر از پروژه های بزرگ می باشد
مدیریت:
در متدلوژی های سنگین وزن مدیریت بصورت مطلق و استبدادی است در حالیکه مدیریت متدلوژی های سبک وزن بصورت غیر متمرکز و آزاد است که این مدیریت غیر متمرکز باعث تصمیم گیری بهتر برای این روش ها می شود.
نحوه مستند سازی :
یکی از عیب های متدلوژی های سنگین وزن مستند سازیهای سنگین می باشد که کار بسیار دشوار و زمانبری می باشد و باید بصورت جامع و کامل انجام شود (مثلا در Rup باید تمامی مستندات برای هر فاز بطور کامل تهیه شود) در حالیکه در متدلوژی های سبک وزن مستند سازی محدود وبسته به نیاز پروژه انجام می شود.
چرخه های توسعه :
در متدلوژی های سنگین وزن (Cycles) تعداد چرخه ها کم است ولی زمان آنها بسیار زیاد است بنابراین طولانی شدن چرخه ها موجب طولانی شدن زمان انتظار برای رسیدن به نشرها (Release) می شود و این برای کارفرماهای کم طاقت چیز جالبی نمی تواند باشد ! ولی در متدلوژی های سبک وزن چرخه ها بسیار زیاد است اما زمان آنها کوتاه است بنابراین اثر پروژه زودتر مشخص خواهد شد.
معیار موفقیت :
در متدلوژی های سنگین وزن معیار موفقیت در راستای طرح اولیه می باشد که در غیر این صورت پروژه به شکست و تحمل هزینه بر خواهد خورد ولی در متدلوژی های سبک وزن معیار موفقیت بر اساس ارزش کاری (Bussiness Value) مشخص می شود که این باعث انعطاف پذیری این متدلوژی ها می شود .در حالیکه در متدلوژی های سنگین وزن به دلیل همان طرح اولیه این انعطاف پذیری وجود ندارد.
اندازه تیم :
متدلوژی های سنگین وزن احتیاج به یک تیم بزرگ دارند که باید بر اساس تخصص خود در هر کدام از فازها باید عملیات مربوط به خود را انجام دهند که باعث دشوار شدن مدیریت فاز ها خواهد شد.در متدلوژی های سبک وزن اندازه تیم کوچک (حداکثر 30 نفر) می باشد که کوچکی تیم می تواند به بیشتر شدن خلاقیت و همکاری در تیم شود .
بازگشت سرمایه
بطور کلی در ایران کسانی که از متدلوژی های توسعه نرم افزار استفاده می کنند (اگر بخواهند این کار اصولی انجام شود ) می توانند از متدلوژی های سبک وزن به جای متدلوژی های سنگین مانند Rup استفاده کنند .
سخن آخر
يك پروسه چابك، پروسهاي است كه هميشه آماده در آغوش كشيدن درخواستهاي جامعه بوده و اين درجه از سازگاري را دارا باشد. بنابراين منظور از سرعت عمل، فقط كاستن از حجم پروسه توليد نرمافزار يا سرعت ارائه آن به بازار نيست؛ بلكه منظور، انعطافپذيري و حفظ کيفيت است.
انواع متدلوژی ها سبک وزن :
XP(Extreme Programming)
Scrum
Crystal Family
FDD(Feature Driven Development)
Dynamic System Development
Adaptive Software Development
Open Source Software Development
سعی خواهم کرد بعدا در مورد هر کدام از این روش ها بیشتر صحبت کنم .
برای مهندسین بن بستی وجود ندارد...