SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
‫چابک‬ ‫سبک‬ ‫به‬ ‫توسعه‬
‫لبخندها‬ ‫و‬ ‫اشکها‬
‫ایران‬ ‫چابک‬ ‫ملی‬ ‫همایش‬ ‫نخستین‬-1392
‫دلپاک‬ ‫اهلل‬‫روح‬
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)
emailtord@gmail.com
‫الف‬ ‫این‬ ‫داد‬ ‫لقب‬ ‫دالش‬ ‫یکی‬ ‫آن‬ ‫مختلف‬ ‫شد‬ ‫گفتشان‬ ،‫نظرگه‬ ‫از‬
‫شدی‬ ‫بیرون‬ ‫گفتشان‬ ‫از‬ ‫اختالف‬ ‫بدی‬ ‫شمعی‬ ‫اگر‬ ‫هریک‬ ‫کف‬ ‫در‬
‫مولوی‬
‫اکوسیستم‬ ‫یک‬ ‫مانند‬ ‫به‬ ‫چابکی‬
‫چابک‬ ‫اکوسیستم‬ ‫های‬‫مولفه‬
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, …)
‫فرهنگ‬/‫فلسفه‬
‫تجویزی‬‫بیان‬‫ارزشی‬ ‫بیان‬
‫سفر؛‬ ‫یک‬ ‫شروع‬
‫مقصد‬:‫اجایل‬ ‫سرزمین‬
‫ارزشها‬ ‫اول؛‬ ‫موومان‬
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
‫اصل‬ ‫دوازده‬ ‫دوم؛‬ ‫موومان‬
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
‫متد‬ ‫انتخاب‬ ،‫سوم‬ ‫گام‬
SCRUM!
‫پایان‬
‫اسپرینت‬
‫اول‬
‫پایان‬
‫اسپرینت‬
‫دوم‬!
‫اسپرینت‬
‫سوم؟‬
‫اسپرینت‬
‫چهارم؟‬
‫اسپرینت‬
‫پنجم؟‬
‫پایان‬
‫پروژه؟‬!
Walking on water and
developing software
from a specification are
easy if both are frozen.
Edward V. Berard
‫رفت؟‬ ‫تغییر‬ ‫استقبال‬ ‫به‬ ‫باز‬ ‫آغوش‬ ‫با‬ ‫شود‬‫می‬
Welcome changing requirements,
even late in development
‫است؟‬ ‫شده‬ ‫انجام‬ ‫بسیاری‬ ‫کارهای‬ ‫وقتی‬ ‫حتی‬!
Customer satisfaction by
rapid delivery of useful software
‫اوایل‬
‫پروژه‬
•‫نوشته‬ ‫کمی‬ ‫کد‬
‫است‬ ‫شده‬.
•‫باال‬ ‫تولید‬ ‫سرعت‬
‫است‬.
•‫افزار‬ ‫نرم‬ ‫اجزای‬
‫کار‬ ‫درستی‬ ‫به‬
‫کنند‬‫می‬.
•‫آسان‬ ‫کد‬ ‫تغییر‬
‫است‬.
•‫موفقیت‬ ‫عالی‬ ‫حس‬.
•‫لبخندها‬
‫تدریج‬ ‫به‬
•‫زیاد‬ ‫کد‬ ‫حجم‬
‫شود‬‫می‬.
•‫و‬ ‫کد‬ ‫نگهداری‬
‫دشوار‬ ‫تغییر‬
‫شود‬‫می‬.
•‫افزودن‬ ‫سرعت‬
‫نو‬ ‫قابلیتهای‬
‫شود‬‫می‬ ‫کم‬.
•‫آستانه‬ ‫در‬ ‫تیم‬
‫است‬ ‫بیماری‬.
•‫اشکها‬
‫بیداد‬ ‫داد‬ ‫ای‬!‫اسکرام‬ ‫میکردیم‬ ‫فکر‬ ‫ما‬
‫کنه‬ ‫قدرتمند‬ ‫رو‬ ‫تیم‬ ‫قراره‬!‫فکر‬ ‫ما‬
‫که‬ ‫کاری‬ ‫همه‬ ‫میتونه‬ ‫تیم‬ ‫کردیم‬‫می‬
‫رو‬ ‫الزمه‬ ‫خوب‬ ‫محصول‬ ‫یه‬ ‫تولید‬ ‫برای‬
‫بده‬ ‫انجام‬!‫کردیم‬‫نمی‬ ‫هم‬ ‫فکرش‬ ‫اصال‬
‫بیاره‬ ‫بار‬ ‫افتضاح‬ ‫یه‬ ‫بتونه‬ ‫اسکرام‬ ‫تیم‬!
‫باشد؟‬ ‫تواند‬‫می‬ ‫چه‬ ‫مشکل‬
‫اما‬ ‫عالیست‬ ‫و‬ ‫واال‬ ‫هدفی‬ ‫تیم‬ ‫قدرتمندی‬ ‫چند‬ ‫هر‬:
•‫تیم‬ ‫اعضای‬«‫انسان‬»‫هستند‬.
•«‫انسان‬»‫دهند‬‫می‬ ‫انجام‬ ‫را‬ ‫دارند‬ ‫انگیزه‬ ‫آن‬ ‫به‬ ‫که‬ ‫کاری‬ ‫ها‬.
‫سوال‬!
‫به‬‫بیشتر؟‬ ‫تولید‬ ‫برای‬ ‫یا‬ ‫دهیم‬‫می‬ ‫پاداش‬ ‫کارش‬ ‫کیفیت‬ ‫برای‬ ‫تیم‬
‫نو؟‬ ‫قابلیتهای‬ ‫به‬ ‫یا‬ ‫دهیم‬‫می‬ ‫اهمیت‬ ‫بیشتر‬ ‫کد‬ ‫کیفیت‬ ‫به‬
‫؟‬
‫ماست‬ ‫بر‬ ‫که‬ ‫ماست‬ ‫از‬!
•‫هم‬ ‫اسکرام‬ ‫تیمهای‬ ‫اینکه‬ ‫دلیل‬
،‫بیاورند‬ ‫بار‬ ‫افتضاح‬ ‫توانند‬‫می‬
‫ساختن‬ ‫برای‬ ‫آنها‬ ‫باالی‬ ‫انگیزه‬
‫است‬ ‫چیزی‬ ‫سریع‬.
•،‫بیشتر‬ ‫تولید‬ ‫و‬ ‫سریع‬ ‫ساخت‬ ‫انگیزه‬
‫یعنی‬‫سریع‬ ‫فوق‬ ‫تولید‬ ‫قدرت‬‫فاجعه‬!
•‫را‬ ‫پروژه‬ ‫سریعا‬ ‫تواند‬ ‫می‬ ‫فاجعه‬
‫کند‬ ‫گیر‬‫زمین‬.
•‫شود‬ ‫ضعیف‬ ‫تیم‬ ‫روحیه‬.
•‫مشتریان‬ ‫و‬ ‫ذینفعان‬ ‫و‬ ‫مدیران‬
‫کنیم‬ ‫تشویق‬ ‫را‬ ‫تیم‬ ‫یک‬ ‫چگونه‬
‫فاجعه‬ ،‫افزار‬ ‫نرم‬ ‫جای‬ ‫به‬ ‫تا‬
‫نسازد؟‬
•‫معینی‬ ‫مقیاس‬ ‫و‬ ‫معیار‬ ‫داشتن‬ ‫بدون‬
‫کرد؟‬ ‫ارزیابی‬ ‫را‬ ‫محصول‬ ‫کیفیت‬ ‫شود‬‫می‬
•‫قابل‬ ‫و‬ ‫عینی‬ ‫را‬ ‫کیفیت‬ ‫شود‬ ‫می‬ ‫چگونه‬
‫کرد؟‬ ‫لمس‬
‫که‬ ‫بدانیم‬ ‫یقین‬ ‫ع‬:
،‫فاجعه‬ ‫شناخت‬ ‫برای‬ ‫راهی‬ ‫داشتن‬ ‫بدون‬
‫آمد‬ ‫خواهد‬ ‫بار‬ ‫فاجعه‬.
‫مطلوب‬ ‫وضعیت‬:‫دو‬ ‫هر‬ ‫سنجش‬!
‫سرعت‬‫کیفیت‬
‫کد؟‬ ‫کیفیت‬ ‫بهبود‬!‫چگونه؟‬
• Domain Driven Design
• Test Driven Development (TDD)
• Continuous Integration
• Pair Programming
• Collective Ownership
• Refactoring
• SOLID
• KISS
• YAGNI
• GoF Design Patterns
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.
TDD
•‫پیش‬ ‫ها‬ ‫تست‬ ‫نتایج‬ ‫به‬ ‫اطمینان‬ ‫امکان‬
‫محصول‬ ‫انتشار‬ ‫از‬
•‫کد‬ ‫دلهره‬ ‫بدون‬ ‫تغییر‬ ‫توان‬.
•‫خصوص‬ ‫به‬ ‫کد‬ ‫عملکرد‬ ‫بهتر‬ ‫درک‬ ‫به‬ ‫کمک‬
‫مستندات‬ ‫فاقد‬ ‫کدهای‬ ‫در‬
‫محضر‬ ‫در‬TDD
•‫تست‬ ‫پوشش‬ ‫ضریب‬ ‫گیری‬ ‫اندازه‬
•‫ها‬ ‫تست‬ ‫کل‬ ‫تعداد‬
•‫اسپرینت‬ ‫هر‬ ‫در‬ ‫جدید‬ ‫تستهای‬ ‫تعداد‬
•‫هر‬ ‫از‬ ‫پس‬ ‫شده‬ ‫گزارش‬ ‫نواقص‬ ‫تعداد‬
‫ها‬ ‫تست‬ ‫پوشش‬ ‫کفایت‬ ‫تخمین‬ ‫و‬ ‫اسپرینت‬
•‫های‬ ‫تست‬ ‫به‬ ‫دستی‬ ‫تستهای‬ ‫تبدیل‬ ‫نرخ‬
‫خودکار‬
•‫تست‬ ‫کدهای‬ ‫سایز‬ ‫گیری‬‫اندازه‬
•‫کدها‬ ‫اجرای‬ ‫سرعت‬ ‫گیری‬‫اندازه‬
•‫تست‬ ‫کد‬ ‫طراحی‬ ‫شیوه‬ ‫ارزیابی‬
1000 unit tests
‫گیری‬ ‫اندازه‬ ‫روشهای‬ ‫دیگر‬
‫کد‬ ‫کیفیت‬
•‫گیری‬ ‫اندازه‬ ‫ابزارهای‬ ‫از‬ ‫استفاده‬
‫کد‬ ‫پیچیدگی‬ ‫ضریب‬Cyclomatic Complexity
•‫خط‬ ‫گیری‬ ‫اندازه‬-‫و‬ ‫کالسها‬ ‫کدهای‬
‫توابع‬
•‫وابستگی‬ ‫ضریب‬ ‫گیری‬ ‫اندازه‬
‫کالسها‬ ،‫ماژولها‬(DI)
Continuous Integration
•‫اندازی‬ ‫راه‬Build Server
•‫از‬ ‫اطمینان‬Build‫پس‬ ‫صحیح‬
‫مورد‬ ‫هر‬ ‫از‬Commit
•‫تعداد‬Commit‫روز‬ ‫در‬ ‫ها‬
‫شود‬ ‫رصد‬.
•‫که‬ ‫روزهایی‬ ‫تعداد‬Build
‫کنید‬ ‫رصد‬ ‫را‬ ‫خورد‬ ‫می‬ ‫شکست‬.
•‫که‬ ‫ماههایی‬ ‫در‬Build‫بدون‬
‫پاداش‬ ،‫اید‬ ‫داشته‬ ‫شکست‬
‫بدهید‬.
Pair Programming
‫نویسی‬ ‫برنامه‬ ‫صرف‬ ‫که‬ ‫زمانی‬ ‫نسبت‬
‫زمان‬ ‫نسبت‬ ‫به‬ ‫شود‬ ‫می‬ ‫انفرادی‬
‫گیری‬‫اندازه‬ ‫را‬ ‫جفتی‬ ‫نویسی‬ ‫برنامه‬
‫کنید‬ ‫رصد‬ ‫و‬.
‫تمیزتری‬ ‫کد‬ ،‫جفتی‬ ‫نویسی‬ ‫برنامه‬ ‫در‬
‫آید‬‫می‬ ‫دست‬ ‫به‬.
‫و‬ ‫مشارکت‬ ،‫جفتی‬ ‫نویسی‬ ‫برنامه‬ ‫در‬
‫شود‬‫می‬ ‫تقویت‬ ‫تعامل‬.
‫انتقال‬ ،‫جفتی‬ ‫نویسی‬ ‫برنامه‬ ‫در‬
‫شود‬‫می‬ ‫تسهیل‬ ‫دانش‬.
Economics
Design Quality
Satisfaction
Learning
Team Building and communication
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."
KISS
"Keep it simple, stupid“
10. Simplicity—the art of maximizing the
amount of work not done—is essential
Easy to understand
but difficult to do.
‫همایش‬ ‫در‬Agile2008،‫تورنتو‬
Robert Martin “Uncle “Bob‫طرح‬ ‫با‬
‫دیگر‬ ‫ارزش‬ ‫یک‬ ‫افزودن‬ ‫ایده‬
‫اهمیت‬ ،‫چابک‬ ‫بیاینه‬ ‫به‬
‫مقوله‬«‫مهارت‬»‫در‬ ‫خصوص‬ ‫به‬
‫قرار‬ ‫توجه‬ ‫مورد‬ ‫را‬ ‫کدنویسی‬
‫داد‬.
Professionalism in Programming
5. Craftsmanship over Execution
Continuous attention to
technical excellence and good
design enhances agility.
‫منابع‬
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/

Contenu connexe

Similaire à 3- Agile Development - Ruhollah delpak

Devops Time - ebps8
Devops Time - ebps8Devops Time - ebps8
Devops Time - ebps8Amid Borhani
 
Scrum Challenges | By Yaghob Yavari
Scrum Challenges | By Yaghob YavariScrum Challenges | By Yaghob Yavari
Scrum Challenges | By Yaghob YavariIran Agile Community
 
Software Requirements Analysis - course overview
Software Requirements Analysis - course overviewSoftware Requirements Analysis - course overview
Software Requirements Analysis - course overviewsoftwareacademy
 
فرآیند توسعه نرم افزار
فرآیند توسعه نرم افزارفرآیند توسعه نرم افزار
فرآیند توسعه نرم افزارHossein Zahed
 
یادگیری و آموزش تکنولوژی‌های جدید در سال آینده - میلاد نوری
 یادگیری و آموزش تکنولوژی‌های جدید در سال آینده - میلاد نوری یادگیری و آموزش تکنولوژی‌های جدید در سال آینده - میلاد نوری
یادگیری و آموزش تکنولوژی‌های جدید در سال آینده - میلاد نوریWeb Standards School
 
در نگهداشت و مدیریت دارائی ITILبکارگیری چارچوب
در نگهداشت و مدیریت دارائی ITILبکارگیری چارچوب در نگهداشت و مدیریت دارائی ITILبکارگیری چارچوب
در نگهداشت و مدیریت دارائی ITILبکارگیری چارچوب Mohammad Ahmadzadeh
 
Enterprise Agile - Organization Transformation.pptx
Enterprise Agile - Organization Transformation.pptxEnterprise Agile - Organization Transformation.pptx
Enterprise Agile - Organization Transformation.pptxAlireza Vafi
 
الفبای استارتاپ‌ها
الفبای استارتاپ‌هاالفبای استارتاپ‌ها
الفبای استارتاپ‌هاAmin Ghasemi
 
2- Agile BABOK - Ali Razi
2- Agile BABOK - Ali Razi2- Agile BABOK - Ali Razi
2- Agile BABOK - Ali RaziAli Moghadam
 
مفاهیم اولیه داکر
مفاهیم اولیه داکرمفاهیم اولیه داکر
مفاهیم اولیه داکرAli Rasoulian
 
www.partacademy.ir دوره آموزش برنامه نویسی اندروید موسسه پارت مشهد
www.partacademy.ir دوره آموزش برنامه نویسی اندروید موسسه پارت مشهدwww.partacademy.ir دوره آموزش برنامه نویسی اندروید موسسه پارت مشهد
www.partacademy.ir دوره آموزش برنامه نویسی اندروید موسسه پارت مشهدPartAcademy
 
How to be a better Developer & Programmer
How to be a better Developer & ProgrammerHow to be a better Developer & Programmer
How to be a better Developer & ProgrammerReza Razavi
 
استفاده از توگف 9 و آرکیمیت 2 جهت مدلسازی یک کسب و کار ساده
استفاده از توگف 9 و آرکیمیت 2 جهت مدلسازی یک کسب و کار سادهاستفاده از توگف 9 و آرکیمیت 2 جهت مدلسازی یک کسب و کار ساده
استفاده از توگف 9 و آرکیمیت 2 جهت مدلسازی یک کسب و کار سادهAmir Darajeh
 
معرفی مجموعه دیدار
معرفی مجموعه دیدارمعرفی مجموعه دیدار
معرفی مجموعه دیدارJamshidHashempoor
 
Digital Publisher
Digital PublisherDigital Publisher
Digital PublisherShad Far
 
کارگاه پیشرفته طراحی واسط و تجربه کاربری UX/UI Design Pro Workshop
کارگاه پیشرفته طراحی واسط و تجربه کاربری UX/UI Design Pro Workshopکارگاه پیشرفته طراحی واسط و تجربه کاربری UX/UI Design Pro Workshop
کارگاه پیشرفته طراحی واسط و تجربه کاربری UX/UI Design Pro WorkshopEsmail MohammadiPanah
 

Similaire à 3- Agile Development - Ruhollah delpak (20)

Devops Time - ebps8
Devops Time - ebps8Devops Time - ebps8
Devops Time - ebps8
 
Scrum Challenges | By Yaghob Yavari
Scrum Challenges | By Yaghob YavariScrum Challenges | By Yaghob Yavari
Scrum Challenges | By Yaghob Yavari
 
Software Requirements Analysis - course overview
Software Requirements Analysis - course overviewSoftware Requirements Analysis - course overview
Software Requirements Analysis - course overview
 
فرآیند توسعه نرم افزار
فرآیند توسعه نرم افزارفرآیند توسعه نرم افزار
فرآیند توسعه نرم افزار
 
Msf Project Managment 2006 Part 2
Msf Project Managment 2006   Part 2Msf Project Managment 2006   Part 2
Msf Project Managment 2006 Part 2
 
یادگیری و آموزش تکنولوژی‌های جدید در سال آینده - میلاد نوری
 یادگیری و آموزش تکنولوژی‌های جدید در سال آینده - میلاد نوری یادگیری و آموزش تکنولوژی‌های جدید در سال آینده - میلاد نوری
یادگیری و آموزش تکنولوژی‌های جدید در سال آینده - میلاد نوری
 
در نگهداشت و مدیریت دارائی ITILبکارگیری چارچوب
در نگهداشت و مدیریت دارائی ITILبکارگیری چارچوب در نگهداشت و مدیریت دارائی ITILبکارگیری چارچوب
در نگهداشت و مدیریت دارائی ITILبکارگیری چارچوب
 
Enterprise Agile - Organization Transformation.pptx
Enterprise Agile - Organization Transformation.pptxEnterprise Agile - Organization Transformation.pptx
Enterprise Agile - Organization Transformation.pptx
 
مدیریت کیفیت داده
مدیریت کیفیت دادهمدیریت کیفیت داده
مدیریت کیفیت داده
 
الفبای استارتاپ‌ها
الفبای استارتاپ‌هاالفبای استارتاپ‌ها
الفبای استارتاپ‌ها
 
2- Agile BABOK - Ali Razi
2- Agile BABOK - Ali Razi2- Agile BABOK - Ali Razi
2- Agile BABOK - Ali Razi
 
Agile & BABOK | By Ali Razi
Agile & BABOK | By Ali RaziAgile & BABOK | By Ali Razi
Agile & BABOK | By Ali Razi
 
مفاهیم اولیه داکر
مفاهیم اولیه داکرمفاهیم اولیه داکر
مفاهیم اولیه داکر
 
www.partacademy.ir دوره آموزش برنامه نویسی اندروید موسسه پارت مشهد
www.partacademy.ir دوره آموزش برنامه نویسی اندروید موسسه پارت مشهدwww.partacademy.ir دوره آموزش برنامه نویسی اندروید موسسه پارت مشهد
www.partacademy.ir دوره آموزش برنامه نویسی اندروید موسسه پارت مشهد
 
How to be a better Developer & Programmer
How to be a better Developer & ProgrammerHow to be a better Developer & Programmer
How to be a better Developer & Programmer
 
استفاده از توگف 9 و آرکیمیت 2 جهت مدلسازی یک کسب و کار ساده
استفاده از توگف 9 و آرکیمیت 2 جهت مدلسازی یک کسب و کار سادهاستفاده از توگف 9 و آرکیمیت 2 جهت مدلسازی یک کسب و کار ساده
استفاده از توگف 9 و آرکیمیت 2 جهت مدلسازی یک کسب و کار ساده
 
معرفی دیدار
معرفی دیدارمعرفی دیدار
معرفی دیدار
 
معرفی مجموعه دیدار
معرفی مجموعه دیدارمعرفی مجموعه دیدار
معرفی مجموعه دیدار
 
Digital Publisher
Digital PublisherDigital Publisher
Digital Publisher
 
کارگاه پیشرفته طراحی واسط و تجربه کاربری UX/UI Design Pro Workshop
کارگاه پیشرفته طراحی واسط و تجربه کاربری UX/UI Design Pro Workshopکارگاه پیشرفته طراحی واسط و تجربه کاربری UX/UI Design Pro Workshop
کارگاه پیشرفته طراحی واسط و تجربه کاربری UX/UI Design Pro Workshop
 

Plus de Ali Moghadam

Blockchain and financial industry transformation
Blockchain and financial industry transformationBlockchain and financial industry transformation
Blockchain and financial industry transformationAli Moghadam
 
8- Agile Methods Comparison - Farid dehghan
8- Agile Methods Comparison - Farid dehghan8- Agile Methods Comparison - Farid dehghan
8- Agile Methods Comparison - Farid dehghanAli Moghadam
 
7- Performance review - Ali H. Moghadam
7- Performance review - Ali H. Moghadam7- Performance review - Ali H. Moghadam
7- Performance review - Ali H. MoghadamAli Moghadam
 
6- Agile.engine - Asad safari
6- Agile.engine - Asad safari6- Agile.engine - Asad safari
6- Agile.engine - Asad safariAli Moghadam
 
5- why agile - yousof mehrdad bibalan
5- why agile - yousof mehrdad bibalan5- why agile - yousof mehrdad bibalan
5- why agile - yousof mehrdad bibalanAli Moghadam
 
4- managing technical debt in agile teams - Alireza maddah
4- managing technical debt in agile teams - Alireza maddah4- managing technical debt in agile teams - Alireza maddah
4- managing technical debt in agile teams - Alireza maddahAli Moghadam
 
1- Modularity - Amir yousefi
1- Modularity - Amir yousefi1- Modularity - Amir yousefi
1- Modularity - Amir yousefiAli Moghadam
 

Plus de Ali Moghadam (7)

Blockchain and financial industry transformation
Blockchain and financial industry transformationBlockchain and financial industry transformation
Blockchain and financial industry transformation
 
8- Agile Methods Comparison - Farid dehghan
8- Agile Methods Comparison - Farid dehghan8- Agile Methods Comparison - Farid dehghan
8- Agile Methods Comparison - Farid dehghan
 
7- Performance review - Ali H. Moghadam
7- Performance review - Ali H. Moghadam7- Performance review - Ali H. Moghadam
7- Performance review - Ali H. Moghadam
 
6- Agile.engine - Asad safari
6- Agile.engine - Asad safari6- Agile.engine - Asad safari
6- Agile.engine - Asad safari
 
5- why agile - yousof mehrdad bibalan
5- why agile - yousof mehrdad bibalan5- why agile - yousof mehrdad bibalan
5- why agile - yousof mehrdad bibalan
 
4- managing technical debt in agile teams - Alireza maddah
4- managing technical debt in agile teams - Alireza maddah4- managing technical debt in agile teams - Alireza maddah
4- managing technical debt in agile teams - Alireza maddah
 
1- Modularity - Amir yousefi
1- Modularity - Amir yousefi1- Modularity - Amir yousefi
1- Modularity - Amir yousefi
 

3- Agile Development - Ruhollah delpak

  • 1. ‫چابک‬ ‫سبک‬ ‫به‬ ‫توسعه‬ ‫لبخندها‬ ‫و‬ ‫اشکها‬ ‫ایران‬ ‫چابک‬ ‫ملی‬ ‫همایش‬ ‫نخستین‬-1392
  • 2. ‫دلپاک‬ ‫اهلل‬‫روح‬ 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) emailtord@gmail.com
  • 3. ‫الف‬ ‫این‬ ‫داد‬ ‫لقب‬ ‫دالش‬ ‫یکی‬ ‫آن‬ ‫مختلف‬ ‫شد‬ ‫گفتشان‬ ،‫نظرگه‬ ‫از‬ ‫شدی‬ ‫بیرون‬ ‫گفتشان‬ ‫از‬ ‫اختالف‬ ‫بدی‬ ‫شمعی‬ ‫اگر‬ ‫هریک‬ ‫کف‬ ‫در‬ ‫مولوی‬
  • 5. ‫چابک‬ ‫اکوسیستم‬ ‫های‬‫مولفه‬ 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, …) ‫فرهنگ‬/‫فلسفه‬ ‫تجویزی‬‫بیان‬‫ارزشی‬ ‫بیان‬
  • 7.
  • 8. ‫ارزشها‬ ‫اول؛‬ ‫موومان‬ Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
  • 9. ‫اصل‬ ‫دوازده‬ ‫دوم؛‬ ‫موومان‬ 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
  • 15. Walking on water and developing software from a specification are easy if both are frozen. Edward V. Berard
  • 16.
  • 17. ‫رفت؟‬ ‫تغییر‬ ‫استقبال‬ ‫به‬ ‫باز‬ ‫آغوش‬ ‫با‬ ‫شود‬‫می‬ Welcome changing requirements, even late in development ‫است؟‬ ‫شده‬ ‫انجام‬ ‫بسیاری‬ ‫کارهای‬ ‫وقتی‬ ‫حتی‬! Customer satisfaction by rapid delivery of useful software
  • 18. ‫اوایل‬ ‫پروژه‬ •‫نوشته‬ ‫کمی‬ ‫کد‬ ‫است‬ ‫شده‬. •‫باال‬ ‫تولید‬ ‫سرعت‬ ‫است‬. •‫افزار‬ ‫نرم‬ ‫اجزای‬ ‫کار‬ ‫درستی‬ ‫به‬ ‫کنند‬‫می‬. •‫آسان‬ ‫کد‬ ‫تغییر‬ ‫است‬. •‫موفقیت‬ ‫عالی‬ ‫حس‬. •‫لبخندها‬ ‫تدریج‬ ‫به‬ •‫زیاد‬ ‫کد‬ ‫حجم‬ ‫شود‬‫می‬. •‫و‬ ‫کد‬ ‫نگهداری‬ ‫دشوار‬ ‫تغییر‬ ‫شود‬‫می‬. •‫افزودن‬ ‫سرعت‬ ‫نو‬ ‫قابلیتهای‬ ‫شود‬‫می‬ ‫کم‬. •‫آستانه‬ ‫در‬ ‫تیم‬ ‫است‬ ‫بیماری‬. •‫اشکها‬
  • 19. ‫بیداد‬ ‫داد‬ ‫ای‬!‫اسکرام‬ ‫میکردیم‬ ‫فکر‬ ‫ما‬ ‫کنه‬ ‫قدرتمند‬ ‫رو‬ ‫تیم‬ ‫قراره‬!‫فکر‬ ‫ما‬ ‫که‬ ‫کاری‬ ‫همه‬ ‫میتونه‬ ‫تیم‬ ‫کردیم‬‫می‬ ‫رو‬ ‫الزمه‬ ‫خوب‬ ‫محصول‬ ‫یه‬ ‫تولید‬ ‫برای‬ ‫بده‬ ‫انجام‬!‫کردیم‬‫نمی‬ ‫هم‬ ‫فکرش‬ ‫اصال‬ ‫بیاره‬ ‫بار‬ ‫افتضاح‬ ‫یه‬ ‫بتونه‬ ‫اسکرام‬ ‫تیم‬!
  • 20. ‫باشد؟‬ ‫تواند‬‫می‬ ‫چه‬ ‫مشکل‬ ‫اما‬ ‫عالیست‬ ‫و‬ ‫واال‬ ‫هدفی‬ ‫تیم‬ ‫قدرتمندی‬ ‫چند‬ ‫هر‬: •‫تیم‬ ‫اعضای‬«‫انسان‬»‫هستند‬. •«‫انسان‬»‫دهند‬‫می‬ ‫انجام‬ ‫را‬ ‫دارند‬ ‫انگیزه‬ ‫آن‬ ‫به‬ ‫که‬ ‫کاری‬ ‫ها‬. ‫سوال‬! ‫به‬‫بیشتر؟‬ ‫تولید‬ ‫برای‬ ‫یا‬ ‫دهیم‬‫می‬ ‫پاداش‬ ‫کارش‬ ‫کیفیت‬ ‫برای‬ ‫تیم‬ ‫نو؟‬ ‫قابلیتهای‬ ‫به‬ ‫یا‬ ‫دهیم‬‫می‬ ‫اهمیت‬ ‫بیشتر‬ ‫کد‬ ‫کیفیت‬ ‫به‬ ‫؟‬
  • 21. ‫ماست‬ ‫بر‬ ‫که‬ ‫ماست‬ ‫از‬! •‫هم‬ ‫اسکرام‬ ‫تیمهای‬ ‫اینکه‬ ‫دلیل‬ ،‫بیاورند‬ ‫بار‬ ‫افتضاح‬ ‫توانند‬‫می‬ ‫ساختن‬ ‫برای‬ ‫آنها‬ ‫باالی‬ ‫انگیزه‬ ‫است‬ ‫چیزی‬ ‫سریع‬. •،‫بیشتر‬ ‫تولید‬ ‫و‬ ‫سریع‬ ‫ساخت‬ ‫انگیزه‬ ‫یعنی‬‫سریع‬ ‫فوق‬ ‫تولید‬ ‫قدرت‬‫فاجعه‬! •‫را‬ ‫پروژه‬ ‫سریعا‬ ‫تواند‬ ‫می‬ ‫فاجعه‬ ‫کند‬ ‫گیر‬‫زمین‬. •‫شود‬ ‫ضعیف‬ ‫تیم‬ ‫روحیه‬. •‫مشتریان‬ ‫و‬ ‫ذینفعان‬ ‫و‬ ‫مدیران‬
  • 22. ‫کنیم‬ ‫تشویق‬ ‫را‬ ‫تیم‬ ‫یک‬ ‫چگونه‬ ‫فاجعه‬ ،‫افزار‬ ‫نرم‬ ‫جای‬ ‫به‬ ‫تا‬ ‫نسازد؟‬ •‫معینی‬ ‫مقیاس‬ ‫و‬ ‫معیار‬ ‫داشتن‬ ‫بدون‬ ‫کرد؟‬ ‫ارزیابی‬ ‫را‬ ‫محصول‬ ‫کیفیت‬ ‫شود‬‫می‬ •‫قابل‬ ‫و‬ ‫عینی‬ ‫را‬ ‫کیفیت‬ ‫شود‬ ‫می‬ ‫چگونه‬ ‫کرد؟‬ ‫لمس‬ ‫که‬ ‫بدانیم‬ ‫یقین‬ ‫ع‬: ،‫فاجعه‬ ‫شناخت‬ ‫برای‬ ‫راهی‬ ‫داشتن‬ ‫بدون‬ ‫آمد‬ ‫خواهد‬ ‫بار‬ ‫فاجعه‬.
  • 23. ‫مطلوب‬ ‫وضعیت‬:‫دو‬ ‫هر‬ ‫سنجش‬! ‫سرعت‬‫کیفیت‬
  • 24. ‫کد؟‬ ‫کیفیت‬ ‫بهبود‬!‫چگونه؟‬ • Domain Driven Design • Test Driven Development (TDD) • Continuous Integration • Pair Programming • Collective Ownership • Refactoring • SOLID • KISS • YAGNI • GoF Design Patterns
  • 25. 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.
  • 26. TDD •‫پیش‬ ‫ها‬ ‫تست‬ ‫نتایج‬ ‫به‬ ‫اطمینان‬ ‫امکان‬ ‫محصول‬ ‫انتشار‬ ‫از‬ •‫کد‬ ‫دلهره‬ ‫بدون‬ ‫تغییر‬ ‫توان‬. •‫خصوص‬ ‫به‬ ‫کد‬ ‫عملکرد‬ ‫بهتر‬ ‫درک‬ ‫به‬ ‫کمک‬ ‫مستندات‬ ‫فاقد‬ ‫کدهای‬ ‫در‬
  • 27. ‫محضر‬ ‫در‬TDD •‫تست‬ ‫پوشش‬ ‫ضریب‬ ‫گیری‬ ‫اندازه‬ •‫ها‬ ‫تست‬ ‫کل‬ ‫تعداد‬ •‫اسپرینت‬ ‫هر‬ ‫در‬ ‫جدید‬ ‫تستهای‬ ‫تعداد‬ •‫هر‬ ‫از‬ ‫پس‬ ‫شده‬ ‫گزارش‬ ‫نواقص‬ ‫تعداد‬ ‫ها‬ ‫تست‬ ‫پوشش‬ ‫کفایت‬ ‫تخمین‬ ‫و‬ ‫اسپرینت‬ •‫های‬ ‫تست‬ ‫به‬ ‫دستی‬ ‫تستهای‬ ‫تبدیل‬ ‫نرخ‬ ‫خودکار‬ •‫تست‬ ‫کدهای‬ ‫سایز‬ ‫گیری‬‫اندازه‬ •‫کدها‬ ‫اجرای‬ ‫سرعت‬ ‫گیری‬‫اندازه‬ •‫تست‬ ‫کد‬ ‫طراحی‬ ‫شیوه‬ ‫ارزیابی‬
  • 29. ‫گیری‬ ‫اندازه‬ ‫روشهای‬ ‫دیگر‬ ‫کد‬ ‫کیفیت‬ •‫گیری‬ ‫اندازه‬ ‫ابزارهای‬ ‫از‬ ‫استفاده‬ ‫کد‬ ‫پیچیدگی‬ ‫ضریب‬Cyclomatic Complexity •‫خط‬ ‫گیری‬ ‫اندازه‬-‫و‬ ‫کالسها‬ ‫کدهای‬ ‫توابع‬ •‫وابستگی‬ ‫ضریب‬ ‫گیری‬ ‫اندازه‬ ‫کالسها‬ ،‫ماژولها‬(DI)
  • 30. Continuous Integration •‫اندازی‬ ‫راه‬Build Server •‫از‬ ‫اطمینان‬Build‫پس‬ ‫صحیح‬ ‫مورد‬ ‫هر‬ ‫از‬Commit •‫تعداد‬Commit‫روز‬ ‫در‬ ‫ها‬ ‫شود‬ ‫رصد‬. •‫که‬ ‫روزهایی‬ ‫تعداد‬Build ‫کنید‬ ‫رصد‬ ‫را‬ ‫خورد‬ ‫می‬ ‫شکست‬. •‫که‬ ‫ماههایی‬ ‫در‬Build‫بدون‬ ‫پاداش‬ ،‫اید‬ ‫داشته‬ ‫شکست‬ ‫بدهید‬.
  • 31. Pair Programming ‫نویسی‬ ‫برنامه‬ ‫صرف‬ ‫که‬ ‫زمانی‬ ‫نسبت‬ ‫زمان‬ ‫نسبت‬ ‫به‬ ‫شود‬ ‫می‬ ‫انفرادی‬ ‫گیری‬‫اندازه‬ ‫را‬ ‫جفتی‬ ‫نویسی‬ ‫برنامه‬ ‫کنید‬ ‫رصد‬ ‫و‬. ‫تمیزتری‬ ‫کد‬ ،‫جفتی‬ ‫نویسی‬ ‫برنامه‬ ‫در‬ ‫آید‬‫می‬ ‫دست‬ ‫به‬. ‫و‬ ‫مشارکت‬ ،‫جفتی‬ ‫نویسی‬ ‫برنامه‬ ‫در‬ ‫شود‬‫می‬ ‫تقویت‬ ‫تعامل‬. ‫انتقال‬ ،‫جفتی‬ ‫نویسی‬ ‫برنامه‬ ‫در‬ ‫شود‬‫می‬ ‫تسهیل‬ ‫دانش‬. Economics Design Quality Satisfaction Learning Team Building and communication
  • 32. 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."
  • 33. KISS "Keep it simple, stupid“ 10. Simplicity—the art of maximizing the amount of work not done—is essential
  • 34.
  • 35. Easy to understand but difficult to do.
  • 36. ‫همایش‬ ‫در‬Agile2008،‫تورنتو‬ Robert Martin “Uncle “Bob‫طرح‬ ‫با‬ ‫دیگر‬ ‫ارزش‬ ‫یک‬ ‫افزودن‬ ‫ایده‬ ‫اهمیت‬ ،‫چابک‬ ‫بیاینه‬ ‫به‬ ‫مقوله‬«‫مهارت‬»‫در‬ ‫خصوص‬ ‫به‬ ‫قرار‬ ‫توجه‬ ‫مورد‬ ‫را‬ ‫کدنویسی‬ ‫داد‬. Professionalism in Programming 5. Craftsmanship over Execution
  • 37. Continuous attention to technical excellence and good design enhances agility.