3- agile development - ruhollah delpak

38
ک چابکه سب توسعه با و لبخندها اشکهبک ایرانش ملی چان همای نخستی- 1392

Upload: ali-moghadam

Post on 27-Jun-2015

194 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: 3- Agile Development - Ruhollah delpak

توسعه به سبک چابک اشکها و لبخندها

1392 -نخستین همایش ملی چابک ایران

Page 2: 3- Agile Development - Ruhollah delpak

روح اهلل دلپاک

Software Developer/Architect

Certified Professional Scrum Master since 2011(trained by Faisal Mahmood)

Played scrum master role for more than 2 year

Taking lead on development teams, including scrum teams

Participated in scrum teams since 2011(for more than 40 sprints)

[email protected]

Page 3: 3- Agile Development - Ruhollah delpak

از نظرگه، گفتشان شد مختلف آن یکی دالش لقب داد این الف

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

Page 4: 3- Agile Development - Ruhollah delpak

چابکی به مانند یک اکوسیستم

Page 5: 3- Agile Development - Ruhollah delpak

مولفه های اکوسیستم چابک

4 Values ارزشهای چابکی

12 Principals اصول مندرج در بیانیه

XP, SCRUM, DSDM, FDD, Lean, Kanban, … متدها

به روشهای ممیزی فرآیند و انطباق(time boxing, poker, backlog, velocity tracking, release plan, board, meetings)

به روشها به روشهای تکنیکی

(DDD, CI, TDD, Pair Programming, Refactoring, BDD, …)

گفرهن

/فلسفه

ییز

جون ت

بیا

بیان ارزشی

Page 6: 3- Agile Development - Ruhollah delpak

شروع یک سفر؛ سرزمین اجایل: مقصد

Page 7: 3- Agile Development - Ruhollah delpak
Page 8: 3- Agile Development - Ruhollah delpak

موومان اول؛ ارزشها

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

Page 9: 3- Agile Development - Ruhollah delpak

موومان دوم؛ دوازده اصل

1. Customer satisfaction by rapid delivery of useful software

2. Welcome changing requirements, even late in development

3. Working software is delivered frequently (weeks rather than months)

4. Working software is the principal measure of progress

5. Sustainable development, able to maintain a constant pace

6. Close, daily cooperation between business people and developers

7. Face-to-face conversation is the best form of communication (co-location)

8. Projects are built around motivated individuals, who should be trusted

9. Continuous attention to technical excellence and good design

10. Simplicity—the art of maximizing the amount of work not done—is essential

11. Self-organizing teams

12. Regular adaptation to changing circumstances

Page 10: 3- Agile Development - Ruhollah delpak

گام سوم، انتخاب متد

Page 11: 3- Agile Development - Ruhollah delpak

SCRUM!

Page 12: 3- Agile Development - Ruhollah delpak

پایان اسپرینت

اول

Page 13: 3- Agile Development - Ruhollah delpak

پایان اسپرینت

!دوم

Page 14: 3- Agile Development - Ruhollah delpak

اسپرینت سوم؟

اسپرینت چهارم؟

اسپرینت پنجم؟

پایان !پروژه؟

Page 15: 3- Agile Development - Ruhollah delpak

Walking on water and

developing software

from a specification are

easy if both are frozen.

Edward V. Berard

Page 16: 3- Agile Development - Ruhollah delpak
Page 17: 3- Agile Development - Ruhollah delpak

می شود با آغوش باز به استقبال تغییر رفت؟

Welcome changing requirements, even late in development

!حتی وقتی کارهای بسیاری انجام شده است؟

Customer satisfaction by rapid delivery of useful software

Page 18: 3- Agile Development - Ruhollah delpak

اوایل

پروژهکد کمی نوشته •

.شده است

سرعت تولید باال •

.است

اجزای نرم افزار •

به درستی کار

.می کنند

تغییر کد آسان •

.است

.حس عالی موفقیت•

لبخندها •

به تدریج

حجم کد زیاد •

.می شود

نگهداری کد و •

تغییر دشوار

.می شود

سرعت افزودن •

قابلیتهای نو

.کم می شود

تیم در آستانه •

.بیماری است

اشکها •

Page 19: 3- Agile Development - Ruhollah delpak

ما فکر میکردیم اسکرام ! ای داد بیدادما فکر ! قراره تیم رو قدرتمند کنه

می کردیم تیم میتونه همه کاری که برای تولید یه محصول خوب الزمه رو

اصال فکرش هم نمی کردیم ! انجام بده !تیم اسکرام بتونه یه افتضاح بار بیاره

Page 20: 3- Agile Development - Ruhollah delpak

مشکل چه می تواند باشد؟

:هر چند قدرتمندی تیم هدفی واال و عالیست اما .هستند« انسان»اعضای تیم • .ها کاری که به آن انگیزه دارند را انجام می دهند« انسان»•

!سوال تیم برای کیفیت کارش پاداش می دهیم یا برای تولید بیشتر؟به

به کیفیت کد بیشتر اهمیت می دهیم یا به قابلیتهای نو؟ ؟

Page 21: 3- Agile Development - Ruhollah delpak

!از ماست که بر ماست

دلیل اینکه تیمهای اسکرام هم •

می توانند افتضاح بار بیاورند،

انگیزه باالی آنها برای ساختن

. سریع چیزی است

انگیزه ساخت سریع و تولید بیشتر، •

!فاجعهقدرت تولید فوق سریع یعنی

فاجعه می تواند سریعا پروژه را •

. زمین گیر کند

.روحیه تیم ضعیف شود•

مدیران و ذینفعان و مشتریان •

.ناراضی شوند

Page 22: 3- Agile Development - Ruhollah delpak

چگونه یک تیم را تشویق کنیم

تا به جای نرم افزار، فاجعه

نسازد؟بدون داشتن معیار و مقیاس معینی •

می شود کیفیت محصول را ارزیابی کرد؟

چگونه می شود کیفیت را عینی و قابل •

لمس کرد؟

:قطع یقین بدانیم که

بدون داشتن راهی برای شناخت فاجعه،

.فاجعه بار خواهد آمد

Page 23: 3- Agile Development - Ruhollah delpak

!سنجش هر دو: وضعیت مطلوب

کیفیت سرعت

Page 24: 3- Agile Development - Ruhollah delpak

چگونه؟! بهبود کیفیت کد؟

• Domain Driven Design • Test Driven Development (TDD) • Continuous Integration • Pair Programming • Collective Ownership • Refactoring • SOLID • KISS • YAGNI • GoF Design Patterns

Page 25: 3- Agile Development - Ruhollah delpak

Domain Driven Design Domain-Driven Design: Tackling Complexity in the Heart of Software

The domain is not trivial The project team has experience and interest in Object Oriented Programming/Design The project has access to domain experts There is an iterative process in place

Prerequisites for the successful application of DDD

Initiating a creative collaboration between technical and domain experts to iteratively refine a conceptual model that addresses particular domain problems.

Page 26: 3- Agile Development - Ruhollah delpak

TDD امکان اطمینان به نتایج تست ها پیش •

از انتشار محصول

.توان تغییر بدون دلهره کد•

کمک به درک بهتر عملکرد کد به خصوص •

در کدهای فاقد مستندات

Page 27: 3- Agile Development - Ruhollah delpak

TDDدر محضر

اندازه گیری ضریب پوشش تست•

تعداد کل تست ها•

تعداد تستهای جدید در هر اسپرینت•

تعداد نواقص گزارش شده پس از هر •

اسپرینت و تخمین کفایت پوشش تست ها

نرخ تبدیل تستهای دستی به تست های •

خودکار

اندازه گیری سایز کدهای تست•

اندازه گیری سرعت اجرای کدها•

ارزیابی شیوه طراحی کد تست•

Page 28: 3- Agile Development - Ruhollah delpak

1000 unit tests

Page 29: 3- Agile Development - Ruhollah delpak

دیگر روشهای اندازه گیری

کیفیت کداستفاده از ابزارهای اندازه گیری •

Cyclomatic Complexityضریب پیچیدگی کد

کدهای کالسها و -اندازه گیری خط•

توابع

اندازه گیری ضریب وابستگی •

(DI)ماژولها، کالسها

Page 30: 3- Agile Development - Ruhollah delpak

Continuous Integration

Build Serverراه اندازی •

صحیح پس Buildاطمینان از •

Commitاز هر مورد

ها در روز Commitتعداد •

.رصد شود

Buildتعداد روزهایی که •

.شکست می خورد را رصد کنید

بدون Buildدر ماههایی که •

شکست داشته اید، پاداش

.بدهید

Page 31: 3- Agile Development - Ruhollah delpak

Pair Programming

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

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

برنامه نویسی جفتی را اندازه گیری

.و رصد کنید

در برنامه نویسی جفتی، کد تمیزتری

.به دست می آید

در برنامه نویسی جفتی، مشارکت و

.تعامل تقویت می شود

در برنامه نویسی جفتی، انتقال

.دانش تسهیل می شود

Economics Design Quality

Satisfaction Learning

Team Building and communication

Page 32: 3- Agile Development - Ruhollah delpak

YAGNI

"You aren't gonna need it"(acronym: YAGNI is a principle of extreme programming (XP) that states a programmer should not add functionality until deemed necessary. Ron Jeffries writes, "Always implement things when you actually need them, never when you just foresee that you need them."

Page 33: 3- Agile Development - Ruhollah delpak

KISS

"Keep it simple, stupid“

10. Simplicity—the art of maximizing the amount of work not done—is essential

Page 34: 3- Agile Development - Ruhollah delpak
Page 35: 3- Agile Development - Ruhollah delpak

Easy to understand but difficult to do.

Page 36: 3- Agile Development - Ruhollah delpak

تورنتو، Agile2008در همایش

Robert Martin “Uncle “Bob با طرح

ایده افزودن یک ارزش دیگر

به بیاینه چابک، اهمیت

به خصوص در « مهارت»مقوله

کدنویسی را مورد توجه قرار

.داد

Professionalism in Programming

5. Craftsmanship over Execution

Page 37: 3- Agile Development - Ruhollah delpak

Continuous attention to technical excellence and good

design enhances agility.

Page 38: 3- Agile Development - Ruhollah delpak

منابع

http://www.infoq.com/news/2008/08/manifesto-fifth-craftsmanship

http://en.wikipedia.org/wiki/Software_craftsmanship

http://www.scrumalliance.org/community/articles/2010/december/the-land-that-scrum-forgot

http://en.wikipedia.org/wiki/Agile_software_development

http://manifesto.softwarecraftsmanship.org/