تهیه وتنظیم :
آشنایی با متدلوژی های چابک (Agile)
مقدمه
متدولوژی توسعه نرم افزار یا توسعه سیستم در مهندسی نرم افزار، چهارچوبی است که برای طرحریزی ، سازماندهی و کنترل فرآیند توسعه سیستم بکار می رود.
ازجمله این روش ها می توان به روش آبشاری، روش افزایشی، روش الگویی و روش تکراری اشاره کرد
به طور مثال می توان به متدلوژی RUP اشاره نمود که بر اساس روش تکراری کار می کند.
یک متدلوژی شامل موارد ذیل می باشد:
مراحل
روال ها
قانون ها
ابزارها
تکنیک ها
مستندات
2
انواع متدلوژی
متدولوژی های سنگین وزن (Heavyweight)
فازها بطور کامل اجرا شده و مستندات کامل ایجاد می شود
متدولوژی های فعلی بیش از اندازه ماشین گرا و مکانیزه هستند و بصورت فرآیندی وارد جزئیات غیرضروری می شوند، به همین دلیل این نوع متدولوژها را سنگین وزن می نامند
متدلوژی ها ساخت یافته جز این نوع هستند.
متدولوژی های سبک وزن (Lightweight)
فازها به صورت کوتاه و مستندات به اندازه ایجاد می شوند
متدولوژیهای چابک در دسته دوم قرار دارند
معیار های مقایسه متدلوژی ها
مقایسه از لحاظ معیارها
مقایسه از لحاظ معیارها
مقایسه از لحاظ معیارها
مقایسه از لحاظ معیارها
متدولوژی Agile
از جمله چهارچوب ها یا متدلوژی های سازمان یافته برای توسعه نرم افزار است که در حال حاضر متداول و پرکاربرد است.
روش چابک توسعه نرم افزارAgile software development) ) است.
متدولوژی Agile در سالهایی بوجود آمد که شرکت های نرم افزاری در تولید محصول خود با شکست مواجه می شدند. علت این شکست برآورده نشدن نیازهای مشتریان بود.
به عنوان مثال روی یک پروژه نرم افزاری زمان و انرژی گذاشته می شد ولی در هنگام تحویل آن، نیازهای مشتری را مرتفع نمی گردید.
لزوم استفاده از متدولوژی چابک
عوامل شکست پروژه ها:
زمان بندی نادرست پروژه
کیفیت پایین تولید نرم افزار
عدم ارتباط با مشتری
تحلیل نادرست نیازمندیها
کمبود درتست کردن نرم افزار
راهکارها :
زمان بندی کوتاه مدت فعالیت ها
افزایش مهارت وتوانایی ودانش کارکنان
ارتباط مستمر ومداوم با مشتری
دریافت نیازمندیها وخواسته های مشتری
نیازسنجی و تحلیل آنها و استفاده از تکنیک های طراحی سیستم
انجام تست ها
توسعه نرم افزار
بطورکلی می توان گفت، متدولوژی چابک درتوسعه نرم افزار به گروهی از متدولوژی های توسعه نرم افزار مبتنی بر روش تکراری و افزایشی اطلاق می گردد به گونه ای که نیازمندی ها و راه حل ها از طریق همکاری و تعاملات بین افراد تیمی که غالباً خود سازمان یافته و دارای مهارت های گوناگون هستند، تکامل می یابند.
(Agile software development )
Agile در لغت به معنای فرز و چابک و سریع است و بکارگیری آن در اصطلاح بدین مفهوم اشاره می کند که این چهارچوب، ارائه دهنده یک فرآیند توسعه نرم افزار سبک و در عین حال سریع است که توانایی ایجاد و پاسخ به تغییرات را نیز فراهم می کند.
.
انواع متد سبک وزن
بیانیه
در فوریه سال ۲۰۰۱ انجمنی متشکل از توسعه دهندگان نرم افزار و طرفداران روشهای مختلف توسعه نرم افزار سبک تشکیل شد تا با بررسی و مقایسه ارزشها و تفاوت هایی که در روشهای مختلف توسعه نرم افزار چابک وجود دارد، به دیدگاهی منسجم در این زمینه دست یابند.
بیانیه ی توسعه نرم افزار چابک
افراد و تعاملات بالاتر از فرآیندها و ابزارها قرار دارند.
نرم افزار کارا بالاتر از مستند سازی جامع می باشد.
همکاری با مشتری بالاتر از قرارداد کار می باشد.
جوابگویی به تغییرات بالاتر از پیروی از یک طرح اولیه می باشد.
تشریح بیانیه
ادامه…
نرم افزار کارا
ارائه نرم افزار کارا مهمتر از ارائه مجموعه ای از مستندات به مشتریان است.
اگرچه وجود مستندات کافی برای آموزش کاربران و نگاهداری سیستم لازم است اما هدف اصلی تولید نرم افزار است نه مستندات.
در واقع یکی از تفاوتهای ملموس متدولوژی چابک با سایر متدولوژیها این است که در این روش،حجم مستندسازی بطور قابل توجهی کم است چرا که این روش بیشتر کدگرا است تا مستندگرا ولازم است مستندات مختصر و مفید باشند.
ادامه…
همکاری با مشتری
توسعه نرم افزار چابک بر پاسخگویی سریع به تغییرات و توسعه مداوم، تمرکز می کند. در واقع آنچه که موجب می شود روشهای چابک از تغییرات استقبال نمایند این است که این روشها دارای خاصیت قابل پیش بینی(predictive) نیستند بلکه دارای خاصیت تطبیقی(adaptive) می باشند.
اصول زیر بنای بیانیه توسعه نرم افزار چابک
برنامه ریزی چابک
متدهای چابک از برنامه ریزی کل پروژه و در نظرگیری تمامی جزئیات آن در ابتدای کار، اجتناب نموده وپروژه را به بخشهای کوچک تقسیم می کنند و سپس با برنامه ریزی هر بخش و تکمیل آن و افزودن آن به سایربخش ها پروژه را پیش می برند.
این بخشها غالباً در بازه های زمانی کوتاه مدت(Iterations) که معمولاً ۱ تا ۴ هفته است، توسعه می یابند.
کارهایی که در هر بازه زمانی انجام می گیرد، بر اساس اولویت بندی صورت گرفته در جلساتی است که درابتدای هر بازه زمانی با حضور نماینده مشتری یا مشتریان و توسعه دهندگان سیستم، برگزار می شوند.
فرایند تطبیقی
بنابراین در یک فرآیند تطبیقی طرح هایی کوتاه مدت برای یک بازه زمانی کوتاه مدت ایجاد می شود.
تطبیق دو جنبه دارد:
۱- تغییر در نرم افزار برای تطبیق با تغییرات ایجاد شده در نیازمندیهای مشتری.
۲- تغییر در فرآیند تولید نرم افزار.
بدین مفهوم که روند تولید در پایان هر بازه زمانی بازدید، نقاط ضعف و قوت بررسی وتصمیماتی برای بازه زمانی بعدی اتخاذ می شود.
متدهای چابک بر تعاملات مداوم و دائمی با مشتری، سادگی، تست، بهینه سازی کدها، یکپارچه سازی مداوم، بازخوردهای مداوم و بکارگیری ابزارهای اتوماتیک جهت انجام عملیات تست و یکپارچه سازی و سایرراهکارها در جهت بهبود کیفیت و چابکی پروژه، تاکید بسیار می ورزند.
XP (Extreme Programming)متدولوژی
بر مبنای اصول سادگی، همکاری و بازخورد سریع استوار است
ایده این روش توسطKent Beck در سال 2000 ارائه شده است
مبتنی بر آزمایش (Test-Driven)
نقش مشتریان بسیار پررنگ است
فرآیند آن شامل 12 فعالیت و 5 فاز است
XPچرخه حیات متدولوژی
خروجی متدولوژی XP
User Stories
معمولاً بشکل متنی بوده و توسط مشتریان نوشته می شوند
از طریق آنها نیازمندی های سیستم مشخص می شود
Iteration Plan
مجموعه ای از User Story هاست که توسط مشتری انتخاب می شوند
در یک تکرار که معمولاً دو هفته طول می کشد، تولید می شود
طرح های تکرار با توجه به اولویت مشخص شده توسط مشتری اجرا می شوند
انتخاب براساس بودجه تعیین شده توسط توسعه دهندگان خواهد بود
ادامه …
Release Plan
مجموعه ای از طرح های تکرار را در قالب یک نقشه کلی برای رسیدن به نشرها نمایش می دهد
Task
زیرمجموعه ای از User Story ها هستند
Taskها از نظر تکنیکی و کاری اولویت بیشتری دارند و باید سریع انجام شوند
Taskها در مرحله طرح ریزی تکرارها (Iteration Planning) مشخص می شوند
ادامه …
Metaphor
نشان دهنده یک تصویر کلی از سیستم است
برای هر عنصر در سیستم یک نام در نظر گرفته می شود
ارتباط بین عناصر درگیر در سیستم از طریق Metaphor مشخص می شود
Spike
یک راه حل ضربتی (Spike Solution)، برنامه ساده ایست که بوسیله آن می توان راه حل های بالقوه را کشف کرد.
در مواردی که User Story ها حساس و مهمند از آن استفاده می شود.
)FDD (Feature Driven Developmentمتدولوژی
تمام فرآیند توسعه نرم افزار را پوشش نمی دهد و بیشتر روی دو فاز طراحی و پیاده سازی متمرکز می شود.
برای استفاده بهمراه سایر فعالیت های یک پروژه توسعه نرم افزار طراحی شده است و هیچ مدل فرآیند خاصی لازم ندارد.
مبتنی بر توسعه تکراری با انتخاب بهترین و موثرترین فعالیت هاست
روی جنبه های کیفتی تاکید دارد و شامل نشرهای محسوس و پیگیری دقیق پیشرفت پروژه است.
فرایند های متدولوژیFDD
شامل پنج فرآیند ترتیبی است که از طریق آنها فعالیت های طراحی و پیاده سازی انجام می شود.
قسمت تکراری فرآیند FDD (طراحی و ساخت) از توسعه چابک حمایت می کند.
هر تکرار از یک خاصیت، معمولاً 2 تا 3 هفته زمان می برد
ادامه …
FDD انواع نقش های
نقش های اضافی
سه نقش اضافی که در همه پروژه ها وجود دارند
آزمایش کننده (Tester)
مستقرکننده (Deplorer)
نویسنده فنی (Technical Writer)
هر عضو می تواند چندین نقش بازی کند و هر نقش ممکن است به چند عضو نسبت داده شود
مدل عمومی متدولوژی چابک
Requirements:دریافت نیاز های مشتری وانتقال نیازها برای انجام طراحی ومعماری نرم افزار
Architecture & design :طراحی ومعماری براساس نیازمندیهای مشتری وایجاد توسعه درنرم افزار
Development : توسعه نرم افزار براساس خواسته ها واخذبازخورد و انجام توسعه
Test & Feedback:انجام آزمون و ارائه بازخورد جهت نیازمندیها انجام توسعه
مراجع
[1] Agile software development methods
(By Pekka Abrahamson , Outi Salo
Jussi Ronkainen & Juhani Warsta)
[2] Principles behind the Agile Manifesto (http://agilemanifesto.org)
(http://agilemanifesto.org/iso/pr/)
[3] Agile vs. XP: The Differences and Similarities (
http://www.objectmentor.com/omSolutions/agile_xp_differences.html)
‐Agile‐
ادامه…
[4] The New Methodology
(http://martinfowler.com/articles/newMethodology.html)
‐From Nothing to Monumental, to Agile‐
‐Controlling an unpredictable process‐iterations‐
‐The self‐adaptive process‐
[5] Agile Software Development
(http://en.wikipedia.org/wiki/Agile_software_development)
‐Agile software development‐
‐Agile Manifesto‐
‐Characteristics‐
ادامه …
[6] Software Development Methodology
(http://en.wikipedia.org/wiki/Software_development_methodologies)
‐The first sentence‐
قدردانی
با تشکر از توجه شما