agile development in persian (فارسی)

26
what is Agile development?

Upload: ramin-mohmaad-hoseini

Post on 22-Apr-2015

107 views

Category:

Software


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Agile development in Persian (فارسی)

what is Agile development?

Page 2: Agile development in Persian (فارسی)

مقدمه :

پیشرفت شگرف سخت افزار و ضعف روشهای توسعه نرم افزار در کنترل

پیچیدگی نرم افزار باعث بوجود آمدن بحران نرم افزار گردیده است که یکی

از علل اساسی در خلق این بحران ، عدم وجود روشهای مناسب جهت تولید

و توسعه نرم افزار می باشد.

فرآیند تولید و توسعه نرم افزار ، ذاتأ یک فرآیند بی نظم است که جهت نظم

دادن به این بی نظمی ها ، از متدولوژی ها توسعه نرم افزار بهره می گیریم.

( ، Whatمتدولوژی توسعه نرم افزار مشخص می کند که چه فرآورده ای )

( تولید شود.When ( و در چه زمانی ) Whoتوسط چه کسی )

Page 3: Agile development in Persian (فارسی)

تقسیم بندی متدولوژی ها

( : این متدولوژی ها بیش از اندازه Heavy weight سنگین وزن ) – 1

ماشین گرا و مکانیزه بوده و به صورت فرآیندی وارد جزئیات غیر

ضروری می شود. فازها به طور کامل اجرا می شوند و مستندات به

طور کامل ایجاد می شوند.

( : در این متدولوژی ، فازها به صورت Light weight سبک وزن ) – 2

کوتاه مدت بوده و مستندات به اندازه ایجاد می شوند. متدولوژی چابک

در دسته متدولوژی های سبک وزن قرار می گیرد.

Page 4: Agile development in Persian (فارسی)

) چابک (Agileتعریف

Agile اfی بنfراری و افزایشfعه تکfه توسfر پایfه بfت کfزار اسfرم افfعه نfد توسfک متfی

شfدfهf اfسfت fکfهf روfیfه طfرfاحیf سfازfگfاfرf f، تکfامfلf تfدfریجfی را fتعرfیfف میf کنfد. مfتfد

بfاfعث fمfی شfوند fکfه f، کfوچکfتfر هfای بfهf طfرfح fاfرهfکاf دنfرfک تقfسfیfم fاfب fکfبfچا

تfکراfرfهfا دfرf fچfارfچfوfب fهfای fزfمfانیf fکوتfاهf تfریf fانfجfام fشfدهf fو نfسfبfت بfهf تغیfیfرات

f.باشندf ف پذیرfنعطاfا

ویfژگی متفfاوت فرآینfدهای چابfک این اسfت کfه در جهت رقfابت بfر سfر مشfتری

پدfیfدار میf شfوند اسfتقبال افfزfار fرمfن اfواخfر توسfعfه fه درfکf یfیراتfیfتغf از حfتfی

کfرfده و fرفfتfار خfوfد رfاf بfرf fاfسfاسf تfفکfراfتf اعمfاfل شfدهf، f تنظfیfم و fهم سfو می

کند.

Page 5: Agile development in Persian (فارسی)

توان گفت، متدولوژی چابک بطورکلی می از به گروهی ر افزا درتوسعه نرم

بر تنی ر مب افزا متدولوژی های توسعه نرم ق می گردد روش تکراری و افزايشی اطالاز ها و راه حل ها ازمندي ي ن به گونه ای که تيمی د افرا بين ت تعامال طريق همکاری و

افته و دارای ي ا خودسازمان ب ل که غاتکامل می ند، مهارتهای گوناگون هست

ند. ب ا ي

Page 6: Agile development in Persian (فارسی)

در واقع ، چابکی در توسعه نرم افزار ارتباط نزديکی با مسئله تغيير دارد. تغيير که عاملی الينفک از محيط های پر تالطم حرفه ای محسوب می شود و سازمانها را ملزم به مقابله می دارد. سازمانهايي که توانايي و چابکی الزم برای رويارويي با تغييرات را داشته باشند، می توانند با ايجاد و پاسخگويي به

تغييرات در حيطه مربوط به حرفه خويش، عرصه را بر رقبای خود تنگ نموده و در پي آن سود بيشتری

را کسب نمايند.

Page 7: Agile development in Persian (فارسی)

اين چهارچوب يا روش توسعه نرم افزار دارای متدهای مختلفی است که به متدهای توسعه نرم

افزار سبک معروف هستند و اين متدها در تکامل يافتند و در واقع به ۱۹۹۰اواسط دهه

های رو به عنوان واکنشي در مقابل ناکاميافزايش متدهای سنگين وزن که غالبا دارای

ساختارهايی سنگين مانند ساختارهايي مبتنی بر روش آبشاری و غيره هستند و اساس کار خود را

بر برنامه و مستندات فراوان قرار می دهند، پديدار گشتند.

Page 8: Agile development in Persian (فارسی)

وزن سبک های روش یا متدها انواع

متد چابک

•XP

•FDD

•Crystal

•Scrum

•Water Fall

•Iterate & Incremental

•Adaptive software development

•Dynamic software development

•Open source soft ware development

Page 9: Agile development in Persian (فارسی)

Agile Umbrella

Agile

Crystal

XPScrumDSDM

FDDKanban RUP

RUP (120+)

XP (13)

Scrum (9)

Kanban (3)

Do Whatever!! (0)

More Prescriptive

More Adaptiveand few more…

RUP has over 30 roles, over 20 activities, and over 70 artifacts

more rules to follow

fewer rules to follow

Page 10: Agile development in Persian (فارسی)

سال فوريه در که بدانيد است توسعه ۲۰۰۱جالب از متشکل انجمنيروشهای طرفداران و افزار نرم افزار دهندگان نرم توسعه مختلف

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

. يک قالب در ديدگاه اين يابند دست زمينه اين در منسجم

یا و Manifestoبیانیه ارزشها از ای مجموعه شامل که يافت شکل: است قوانين

چابک افزار نرم توسعه ی بيانيه

ابزارها و فرآيندها از باالتر تعامالت و افراد

جامع سازی مستند از باالتر کارا افزار نرم

کار قرارداد از باالتر مشتری با همکاری

طرح يک از پيروی از باالتر تغييرات به جوابگويی

Page 11: Agile development in Persian (فارسی)

در توسعه نرم افزار چابک، دانش ، مهارت و توانايي افراد و سازماندهي آنان و نيز تعامالت برخورداری از انگيزه و روحيه خود

مؤثر بين افراد، حائز اهميت است. چرا که اين افراد هستند که نرم افزار را توسعه می دهند نه ابزارها و فرآيندها. واضح است که ابزارها و فرآيندها مهم هستند اما مهمتر از آنها، افرادی هستند که با آنها کار می کنند. اين روش توسعه نرم افزار در اصل مردم گرا است تا فرآيند گرا . در واقع متدهای چابک تاکيد می کنند که هيچ

فرآيندی را نمی توان جايگزين مهارتهای تيم توسعه دانست و نقش يک فرآيند صرفا پشتيبانی از تيم توسعه در جهت رسيدن به

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

آنکه به جای تحميل يک فرآيند به تيم

توسعه ، بايد آن فرآيند مورد پذيرش تيم قرار گيرد از آنروی که اجرای يک فرآيند، مستلزم تعهد و همکاری فعاالنه تمام اعضای تيم

است. و ديگر آنکه، توسعه دهندگان بايد قادر باشند تصميمات تکنيکی اتخاذ نمايند. به بيان ديگر مسئوليت ها به صورت مساوی بين مدير پروژه و توسعه دهندگان تقسيم می شود و بدين ترتيب توسعه دهندگان در راهبری پروژه نقشي مساوی با مدير را ايفا

می کنند.

افراد و تعامالت

Page 12: Agile development in Persian (فارسی)

ارائه نرم افزار کارا مهمتر از ارائه مجموعه ای از مستندات به مستندات کافی برای آموزش مشتريان است. اگرچه وجود

کاربران و نگاهداری سيستم الزم است اما هدف اصلی توليد نرم افزار است نه مستندات. در واقع يکی از تفاوتهای ملموس

متدولوژی چابک با ساير متدولوژيها اين است که در اين روش، حجم مستندسازی بطور قابل توجهی کم است چرا که اين روش

بيشتر کدگرا است تا مستندگرا و بر اين

ديدگاه نيز تکيه دارد که بخش اصلی مستندات را کدهای برنامه تشکيل می دهند.

نرم افزار کارا

Page 13: Agile development in Persian (فارسی)

از جمله مشکالتی که اغلب توسعه دهندگان نرم افزار با آن يا مناسب نيازمنديهای مشتری مواجه هستند، عدم درک کافی

و تعامالت غير مؤثر با مشتری است. داشتن قرارداد برای يک پروژه مهم است اما برای ارتباط با مشتری کافی نيست.

روش چابک در توسعه نرم افزار بر همکاری و مشارکت مداوم با مشتری وافراد ذينفع در طول حيات پروژه تاکيد

بسيار می ورزد.

همکاری با مشتري

Page 14: Agile development in Persian (فارسی)

نيازمنديهای مشتری دستخوش تغيير می شوند، محيط حرفه ای که نرم افزار مرتبط با آن است، تغيير می کند، تکنولوژی به مرور

زمان تغيير می کند. تغيير يک واقعيت در توسعه نرم افزار است. واقعيتی که فرآيند توسعه نرم افزار بايد آن را پشتيبانی کند.

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

چابک از تغييرات استقبال نمايند اين است که اين روشها قابل پيش بيني نيستند بلکه دارای خاصيت تطبيقی می باشند. ساير

روشهای توسعه نرم افزار می کوشند کل فرآيند توليد را با جزئيات کامل، برای مدت طوالني طرح ريزی نمايند. اين شيوه تنها تا

زمانی که تغييراتي پديد نيامده، کارآمد است. بنابراين ذات اين روشها در مقابل تغييرات مقاوم است. در حالی که روشهای چابک می کوشند که سيستم و حتی روند توليد را با تغييرات تطبيق دهند

و با آن پيش روند.

پاسخگويي به تغييرات

Page 15: Agile development in Persian (فارسی)

15

بیانیه توسعه نرم افزار چابک

اصول

بیانیه

پاسخگویی به

تغییرات

کاهش ریسک پروژه

شکستن پروژه به طرح های

کوچکترل

نرم افزار قاب

اجرا

هدف اصلی هر توسعه نرم افزار

ا بی

ارمک

هی

ترش

م

Stack ارتباط از طریق نماینده holder

و نماینده هر تیم اولویت بندی و ارزشگذاری

اهداف

افراد و

تعامالت

9 الی 5تیم ها بین

نفره

تیم ها دارای

ساختاری باز

می باشند

ارتباط بین تیم ها

از طریق ویدئو

کنفرانس

هریک از اعضای

تیم باید به یکدیگر

گزارش دهند

Page 16: Agile development in Persian (فارسی)

قوانينی که زير بنای بيانيه توسعه نرم افزار چابک را شکل می دهند، به قرار زير می باشند:

جلب رضايت مشتری با ارائه سريع نرم افزار کارا•

• پذيرش تغييرات در نيازمنديهای مشتری و اعمال آن حتی در اواخر زمان توسعه نرم افزار

• ارائه مکرر نرم افزار کارا )ارائه آن هرچند هفته يکبار، بهتر از هرچند ماه يکبار است.(

• عامل اصلی سنجش پيشرفت پروژه، نرم افزار کارا است.

• ميزانی از سرعت توسعه که بتوان آنرا با گامهای مداوم و ثابت، حفظ نمود.

• همکاری نزديک و روزمره بين صاحبان تجارت و توسعه دهندگان سيستم

• گفتگو رو در رو و تعامالت شفاهی، بهترين شکل ارتباطات است.

• پروژه ها با افرادی که دارای انگيزه و قابل اعتماد هستند، پيش می روند.

• توجه مداوم به طراحی خوب و کيفيت باال از نظر فنی

• سادگی

• تيم هايي که اعضای آن دارای ويژگی خودسازماندهی و خودراهبری هستند.

• قابليت انطباق با شرايط در حال تغيير

Page 17: Agile development in Persian (فارسی)

مقایسه متدولوژی ها با یکدیگر

معیار روشموفقیت

اندازه سبک پروژه

مدیریت چرخه

اندازه تیم

Page 18: Agile development in Persian (فارسی)

18

روش

يffا سffازگار عمffل Adaptive بصffورت چابffک هffای روشمی کنند يعنی با شرايط منطبق می شوند

عمfل Predictiveروش هfای سfنگين وزن بصfورت پيشfگو يfا می کنند يعنی در آغاز همه چيز را پيش بينی می کنند

از ابتدا قابل پيش بينی نیست.همه چيز از ابتدا قابل پيش بينی نیست.همه چيز

Page 19: Agile development in Persian (فارسی)

1919

معيار موفقيت

دسfتيابی بfه ارزش چابfک هfای معيfار مfوفقيت در روش( استBusiness Valueکاری )

در روش هfای سfنگين وزن معيfار مfوفقيت پيش رفتن در راستای طرح اوليه است

های سنگين وزن انعطاف پذيری ندارند روش های سنگين وزن انعطاف پذيری ندارند روش

Page 20: Agile development in Persian (فارسی)

20

اندازه پروژه

کوچک استچابک های اندازه پروژه در روش

اندازه پروژه در روش های سنگين وزن می تواند بسيار بزرگ باشد

چابک های اين مسأله از محبوبيت روشنمی کاهد !!!

)آمار نشان می دهد که تعداد پروژه های کوچک بسيار بيشتر است(

چابک های اين مسأله از محبوبيت روشنمی کاهد !!!

)آمار نشان می دهد که تعداد پروژه های کوچک بسيار بيشتر است(

Page 21: Agile development in Persian (فارسی)

21

سبک مديريت

بصورت غيرمتمرکز و آزاد چابک های مديريت در روشاست

در روش های سنگين وزن مديريت بصورت مطلق و استبدادی است

گيری مديريت غيرمتمرکز امکان تصميمبهتر را فراهم می کند

گيری مديريت غيرمتمرکز امکان تصميمبهتر را فراهم می کند

Page 22: Agile development in Persian (فارسی)

22

نحوه مستندسازی

بصورت بسيار محدود چابک های مستندسازی در روشانجام می شود

در روش های سنگين وزن مستندسازی بصورت کامل و جامع انجام می شود

های در بسياری از موارد مستند سازيسنگين, کار بسيار دشوار و زمانبری است

های در بسياری از موارد مستند سازيسنگين, کار بسيار دشوار و زمانبری است

Page 23: Agile development in Persian (فارسی)

23

هاچرخه بسيار زياد چابک( در روش های Cycles ها )تعداد چرخه

است اما زمان آنها کوتاست

در روش های سنگين وزن تعداد چرخه ها کم است ولی زمان آنها بسيار زياد است

های توليد, موجب زمانبر بودن چرخهطوالنی شدن زمان انتظار برای رسيدن به

نشرها می شود

های توليد, موجب زمانبر بودن چرخهطوالنی شدن زمان انتظار برای رسيدن به

نشرها می شود

Page 24: Agile development in Persian (فارسی)

24

اندازه تيم

تا 20 اندازه تيم کوچک است )بين چابک های در روش نفر(30

در روش های سنگين وزن اندازه تيم توسعه بزرگ است

خالقيت و همکاری در تيم کوچک بسيار بيشتر خواهد بود

خالقيت و همکاری در تيم کوچک بسيار بيشتر خواهد بود

Page 25: Agile development in Persian (فارسی)

25

برگشت سرمايه

سرمايه خيلی زود در طول پروژه بر چابک های در روشمی گردد

در روش های سنگين وزن برای برگشت سرمايه بايد تا انتهای پروژه صبر کرد

از لحاظ اقتصادی چابک های روشبصرفه اند

از لحاظ اقتصادی چابک های روشبصرفه اند

Page 26: Agile development in Persian (فارسی)

26

parameter Agile Methods Heavy Methods

Approach Adaptive Predictive

Success Measurement Business Value Conformation to plan

Project Size Small Large

Management Style Decentralized Autocratic

Documentation Low Heavy

Emphasis People-Oriented Process-Oriented

Cycles Numerous Limited

Domain Unpredictable/Exploratory Predictable

Team Size Small/Creative Large