Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Agile Development | By Ruhollah Delpak

433 visualizaciones

Publicado el

سخنرانی ارائه شده در نخستین همایش چابک ایران 92
توسط جناب آقای روح الله دلپاک

Publicado en: Ingeniería
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Agile Development | By Ruhollah Delpak

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

×