Đường vào agile - 2013

69
Agile đường vào Dương Trọng Tấn [email protected] @FU HL/2013

Upload: duong-tan

Post on 21-Jan-2015

2.323 views

Category:

Education


0 download

DESCRIPTION

Giới thiệu Agile tới sinh viên ĐH FPT tại Hòa Lạc. Tháng 1-2013.

TRANSCRIPT

Page 1: Đường vào agile - 2013

Agile đường vào

Dương Trọng Tấn [email protected]

@FU HL/2013

Page 2: Đường vào agile - 2013

Nội dung

Agile là gì?

Tại sao Agile?

Các Phương pháp XP

Scrum

Lean & Lean Startup

Kanban

Trở nên agile?

Tư duy

Kĩ thuật

Cộng tác

Công cụ

Page 3: Đường vào agile - 2013

NHÓM SCRUM TẠO RA

PHẦN MỀM NHƯ THẾ NÀO

Page 4: Đường vào agile - 2013

Có vài người nghĩ là phải làm phần mềm gì đấy

để phục vụ việc gì đấy

Rồi đổ tiền vào

Giao nhiệm vụ cho (vài) người nào đấy

Rồi nghĩ ra vài chức năng cần phải có, được gọi là

YÊU CẦU (REQUIREMENTS)

Page 5: Đường vào agile - 2013

Công việc xây dựng phần mềm được quẳng cho

Đội sản xuất Bọn này ngồi lại với nhau để

Lập kế hoạch

Tháng tới làm gì

Để có được (vài) chức năng nào đó hoàn

chỉnh

để “show hàng” vào cuối tháng

Page 6: Đường vào agile - 2013

Kết quả của buổi họp lập kế hoạch

là một

Bản kế hoạch

Gồm mục tiêu

những việc cần làm trong tháng

Page 7: Đường vào agile - 2013

Dựa trên Bản kế hoạch ấy

Đội sản xuất hì hụi

ai có việc người ấy làm

cộng tác chặt chẽ với nhau

Ngày nào cũng Họp

15 phút mỗi ngày

Để đồng bộ hóa công việc của

nhau, nắm tiến độ và phát hiện

trở ngại

Page 8: Đường vào agile - 2013

Nếu có việc gì phải làm thêm,

hoặc bớt đi vài việc không cần

làm nữa

Thì cập nhật luôn vào

Bản Kế hoạch

Page 9: Đường vào agile - 2013

Cứ như thế

cho đến khi hết

Khung

thời gian

Page 10: Đường vào agile - 2013

Phần

Mềm

Chạy

Tốt

Sẽ

Tòi

Ra

Page 11: Đường vào agile - 2013

DEMO

Phần mềm

Chạy tốt

Chúng ta

có gì rồi?

Page 12: Đường vào agile - 2013

Chưa xong, còn phải ngồi lại xem thời gian vừa rồi

làm việc có ỔN không, có thể làm tốt hơn không?

Cố tìm cho bằng được cái gì đó để CẢI TIẾN cho tháng tiếp theo

Page 13: Đường vào agile - 2013

Rồi ta lại như thế …

Page 14: Đường vào agile - 2013

Scrum Framework

Đồ họa: Demer et al.

Page 15: Đường vào agile - 2013

Những Cách Khác

Scrum

XP Lean Software

Development

Crystal DSDM

Agile

FDD AgileUP

Page 16: Đường vào agile - 2013

eXtreme Programming

Đọc thêm: http://www.hanoiscrum.net/hnscrum/learning/167

Nguyên lý • Phản hồi nhanh (Rapid

Feedback)

• Giả định Đơn giản

(Assume Simplicity)

• Thay đổi tăng trưởng

(Incremental Change)

• Sống chung với Thay

đổi (Embracing Change)

• Công việc chất lượng

cao (Quality Work)

Giá trị • Giao tiếp

(Communication)

• Tính đơn giản

(Simplicity)

• Phản hồi (Feedback)

• Tôn trọng (Respect)

• Can đảm (Courage)

Phát triển những phần mềm với chất

lượng cao nhất, với chi phí thấp nhất, ít

lỗi nhất, siêu năng suất và tối đa hóa lợi

nhuận đầu tư

Page 18: Đường vào agile - 2013

Lean Software Development

Sử dụng Tư duy Tinh gọn (Lean Thinking)

cho lĩnh vực phát triển phần mềm

7 Nguyên lý 1. Loại bỏ lãng phí

2. Khuếch trương việc học

3. Quyết định càng muộn

càng tốt

4. Chuyển giao càng

nhanh càng tốt

5. Trao quyền cho nhóm

6. Tạo ra tính toàn vẹn tự

thân

7. Thấy toàn cảnh

Đọc thêm: http://www.hanoiscrum.net/hnscrum/learning/168-agilemethod3-lean-software-development

22 Công cụ 1. Nhìn ra Lãng phí

2. Ánh xạ Dòng Giá trị

3. Phản hồi

4. Phân đoạn

5. Đồng bộ hóa

6. Phát triển theo lô

7. Tư duy Lựa chọn

8. Trách nhiệm Phút cuối

9. Ra quyết định

10. Hệ thống kéo

11. Lý thuyết Hàng đợi

12. Giá của Trì hoãn

13. Tự-Xác-định

14. Động viên

15. Lãnh đạo

16. Chuyên môn

17. Toàn vẹn Nhận thức

18. Toàn vẹn Khái niệm

19. Tái cấu trúc

20. Kiểm thử

21. Đo lường

22. Hợp đồng

Page 19: Đường vào agile - 2013

Kanban

Phương pháp luận Cải tiến

Quy trình theo cách thức

tiến hóa và tăng trưởng

‘Complex Adaptive System for Lean’

Không cần Phân đoạn? Bỏ luôn!

Không cần Ước lượng? Bỏ luôn!

5 Đặc điểm

1. Trực quan hóa Luồng công việc

2. Giới hạn Việc-đang-làm

3. Đo lường và Quản lí Luồng

4. Công khai Chính sách Quy

trình

5. Dùng Mô hình để nhận biết

các cơ hội Cải tiến

Page 20: Đường vào agile - 2013

Lean Startup | Khởi nghiệp Tinh gọn

Giả định, thử nghiệm

Dữ liệu, phản hồi

Vấn đề: chưa rõ

Giải pháp: chưa rõ

Page 21: Đường vào agile - 2013

Build-Measure-Learn

Page 22: Đường vào agile - 2013

Minimum Viable Product

Gồm những tính năng

tối giản đủ để học từ

sớm nhất có thể

• Tránh làm ra chức

năng không ai dùng

• Mỗi đồng bỏ ra đều

thu được bài học quý

Build

Page 23: Đường vào agile - 2013

Chung | Riêng

Ảnh: Hendrik Kniberg

Page 24: Đường vào agile - 2013

PHÍA SAU CÁNH GÀ ...

Page 25: Đường vào agile - 2013

Agile | Agility | Linh hoạt

• Ken Schwaber:

1. flexibility, the capacity and

capability of rapidly and

efficiently adapting to

change.

2. ability to take advantage

of opportunities while

controlling risk.

Wiki:

Agile Software Development: một họ các phương pháp phát triển phần mềm

dựa trên các nguyên lí tăng trưởng (incremental) và lặp (iterative), trong đó

các yêu cầu và giải pháp tiến hóa thông qua sự cộng tác giữa các nhóm liên

chức năng (cross-functional) tự tổ chức (self-organizing).

Page 26: Đường vào agile - 2013

Triết lí Agile

• Định nghĩa các giá trị cốt

lõi

• Định hướng các phương

pháp Agile

• Mô tả trong Tuyên ngôn

Agile (Manifesto) và 12

Nguyên lí Agile.

Page 27: Đường vào agile - 2013

Tuyên ngôn

Phát triển Phần mềm Linh hoạt

27

Chúng tôi đã phát hiện ra cách tốt hơn để phát triển phần

mềm thông qua việc thực hiện nó và giúp đỡ người khác thực hiện.

Qua công việc này, chúng tôi đã đi đến việc đánh giá cao:

Cá nhân và tương tác hơn là quy trình và công cụ;

Phần mềm chạy tốt hơn là tài liệu đầy đủ;

Cộng tácvới khách hàng hơn là đàm phán hợp đồng;

Phản hồi với thay đổi hơn là bám sát kế hoạch.

Mặc dù các thứ bên phải vẫn còn giá trị, chúng tôi đánh giá cao hơn

các mục ở bên trái. Dịch từ: AgileManifesto.org

Xem thêm: http://www.hanoiscrum.net/hnscrum/learning/145-agileprincipleandvalues

Page 28: Đường vào agile - 2013

Tuần tự và Chồng lấp

Nguồn: “The New New Product Development Game” của Takeuchi và

Nonaka. Harvard Business Review, tháng Giêng 1986.

Phát triển tuần tự

Nhóm Scrum làm mỗi thứ một ít ở mọi thời điểm, tập trung đưa ra

các chức năng [chạy tốt] sớm nhất.

28

Page 29: Đường vào agile - 2013

Chồng lấp: cùng làm, từng tí một

Nguồn: Mike Kohn

Page 30: Đường vào agile - 2013

Sprint | Iteration | Phân đoạn Vòng đời phản hồi ngắn

Khuyến khích việc học

Gia tăng Visibility

Thích ứng với thay đổi

Page 31: Đường vào agile - 2013

Thực nghiệm | Empiricism

Chim di cư bay hàng chục nghìn km mỗi năm

Page 32: Đường vào agile - 2013

Just-in-time | Tức thì Cập nhật

Hằng ngày

Daily Standup

Kế hoạch động,

thích ứng liên tục

Page 33: Đường vào agile - 2013

Nhóm Tự tổ chức

Self-organized Team

Page 34: Đường vào agile - 2013

Hướng đến Mục tiêu chung

34

• Tập trung vào Mục tiêu, công phải Task

• Giới hạn việc-đang-làm

Page 35: Đường vào agile - 2013

Nhóm liên chức năng

Cross-functional Team

Ảnh: suitcaseorchestra.com

Page 36: Đường vào agile - 2013

Retrospective | Kaizen

Cải tiến liên tục

Image: Rachel Davies & Liz Sedley

Page 37: Đường vào agile - 2013

Độ trực quan Khả năng thay đổi

Giá trị mang lại Rủi ro

Tại sao Agile? Nguồn: Ken Schwaber

Page 38: Đường vào agile - 2013

Công cụ hỗ trợ • Index Card, Miếng giấy dán (sticky notes)

• Planning Poker

• Task Board|Kanban Board|Scrum Board| Các loại bảng

• Công cụ giao tiếp (Skype, Hangout,Yammer …)

• Các công cụ soạn thảo cộng tác: wiki, online office suites, mindmapping …

• Các hệ ALM( Application Lifecycle Management) của MS, IBM, HP, Rally, CollabNet, VersionOne, Atlassian, Redmine ...

• Các phần mềm tự động hóa: CI (continuous integration), các test automation framework (xUnit, Cucumber, FitNess, Robots …)

• Và nhiều nữa …

Page 39: Đường vào agile - 2013

User Story

& Backlogs

Image: iqupi.wordpress.com mountaingoatsoftware.com agilemodeling.com agilistapm.com

Page 40: Đường vào agile - 2013

Release Burndown

Sprint Burndown

Release

Ảnh: mountaingoat.com

Page 41: Đường vào agile - 2013

Ảnh: pages.kiva.org | Atlassian | Quang NB

Page 42: Đường vào agile - 2013

Học và hành

Học thông qua …

• Ghép cặp (Pairing)

• Cộng đồng thực hành

(Coding Dojo, Interest

Group …)

• Hội thảo chuyên ngành

(AgileTour, ScrumDay …)

• Đọc sách

• Các tài nguyên online

(video)

• Thuyết trình|Dạy lại người

khác

Thực hành

• Thực học là để làm, làm

được mới được coi là học

được

• Pilot project

• Các bài tập lớn (assignment)

• Các Dự án|Đồ án (Project)

• Quản lí công việc cá nhân

(Personal Kanban, Personal

Scrum, Lean …)

Page 43: Đường vào agile - 2013

Học tập cũng cần chiến lược

SHU

Bám sát Quy tắc

HA

Nghĩ lại về Quy tắc

Tìm kiếm ngoại lệ,

Phá vỡ Quy tắc

RI

Quên đi Quy tắc

43

Page 44: Đường vào agile - 2013

Tới Bruce Lee - bậc thầy Kungfu

Novice

Advanced

Beginner

Proficient

Competent

Expert

Image: http://goo.gl/1RzEE

Cậu bé bắt đầu học Vịnh Xuân

44

10.000

Giờ leo núi

Page 45: Đường vào agile - 2013

Đọc thêm nữa

45

Page 46: Đường vào agile - 2013

Tài nguyên online

• HanoiScrum.net

• AgileAtlas.org

• ScrumAlliance.org

• AgileAlliance.org

• InfoQ.com/process-practices/

• Các hội thảo Agile Conference, Scrum Gathering, Agile Tour, ScrumDay …

• Tool Vendors (MSDN, IBM, VersionOne …)

Page 47: Đường vào agile - 2013

Cộng đồng

HanoiScrum.net

AgileVietnam.org

Page 48: Đường vào agile - 2013

THANK YOU!

:-)

Page 49: Đường vào agile - 2013

BACKUP SLIDES

Page 50: Đường vào agile - 2013

Độ phức tạp của dự án

Scrum

Nguồn: Ken Schwaber

Page 51: Đường vào agile - 2013

Đội Y

*************

1. Thời gian Daily Scrum: 9:00

2. Phạt đến muộn: 2 $

3. Mọi người đều tích hợp liên tục

4. Tái cấu trúc lại mã bẩn

5. Hỏi nếu không rõ

6. Sử dụng Lập trình cặp và TDD

7. Thực hiện đúng chuẩn viết mã

8. Kiểm tra lại Định nghĩa Hoàn thành

trước khi commit.

Quy tắc Làm việc

51

Đã ký

Page 52: Đường vào agile - 2013

Một tình huống phát triển

Requirement

Analysis

UI Mocking

• Customer

discussion

Design Draft

• Design Discussion

Code the

skeleton to

test the design

Coding in

team

Refactoring

and

Refinement

Build the

increment

$

DevTeam PO

Collaboration:

Steps:

Artifacts: As a super user,

I want to …

A

B

IDo

Interface IDo{

//TODO …

}

Class A{

//TODO …

}

Class B:IDo{

//TODO …

}

Note:

TDD|BDD|AMDD can be used or not

Interface IDo{

//TODO …

}

Class A{

method1(){

//Mr. A codes here

}

}

Class B:IDo{

method1(){

//Mrs. B codes here

}

}

Class C{

}

$

PO

52

Page 53: Đường vào agile - 2013

User Story

• User story là các yêu cầu linh hoạt (agile requirement)

• Đảm bảo sự cân bằng của các bên tham gia phát triển

sản phẩm: khách hàng, người dùng và nhà phát triển

– Thể hiện bằng một ngôn ngữ hướng-người-dùng và các nhà

phát triển có thể hiểu được

• Hướng tới người dùng và nghiệp vụ, không chứa các đặc

tính về hệ thống

53

Page 54: Đường vào agile - 2013

INVEST – các tiêu chuẩn cho một user

story tốt

54

Independent – Độc lập

Negotiable – Đàm phán được

Valuable – Đáng giá

Estimatable – Ước tính được

Sized appropriately – Kích thước phù hợp

Testable – Kiểm thử được

Page 55: Đường vào agile - 2013

Tập hợp các user story

Chuẩn bị các

câu hỏi Quan sát

Phỏng vấn

người dùng Viết user story

55

Page 56: Đường vào agile - 2013

Họp xây dựng user story

• Người tham gia: nhà phát triển, người dùng, khách hàng, thành phần khác (được gọi là những “chú lợn”)

• Thảo luận để đưa ra các story

• Mục tiêu là viết được càng nhiều story càng tốt

– Một số sẽ “sẵn sàng triển khai”

– Một số khác sẽ là “epic”

• Không xác định độ ưu tiên trong buổi hội thảo này

• Product Owner và những người có liên quan được tham gia nhưng không bắt buộc.

56

Page 57: Đường vào agile - 2013

Lập trình cặp Pair-Programming • Hai LTV cùng chia sẻ một vấn

đề, với một máy tính, một

bàn phím và với mục tiêu:

giải quyết vấn đề đó.

• Sử dụng sự ĐỒNG THUẬN,

nhưng thông qua TRANH

LUẬN!

• Một ví dụ về “luồng một sản

phẩm”

• Chậm hơn nhưng hiệu quả

hơn & chất lượng hơn

• Có 2 vai trò: Người lái

(Driver) và Hoa tiêu (Navigator):

– Người lái không quan tâm tới bức

tranh toàn cảnh

– Người lái nên “rời bàn phím

trong giây lát”

– Hoa tiêu có xu hướng sử dụng tư

duy mẫu trong giải quyết vấn đề

57

Page 58: Đường vào agile - 2013

Tích hợp Liên tục

• Tích hợp Liên tục (Continuous integration - CI) triển khai liên tục các tiến trình để đảm bảo việc quản lý chất lượng — từng phần nhỏ hiệu quả, áp dụng thường xuyên.

• Được hỗ trợ bởi một hệ thống CI với rất nhiều các kiểm thử tự động, build và các thành phần khác.

• Lợi ích:

– Tăng cường sự minh bạch

– Tăng cường sự hợp tác và truyền thông

– Cho phép mọi người cùng làm việc trên một mã nguồn

58

Page 59: Đường vào agile - 2013

Hệ thống Tích hợp liên tục CI Systems

59

Page 60: Đường vào agile - 2013

Thiết kế tiến hóa

Incremental Design Thiết kế những thứ phức tạp có khả năng linh hoạt trên giấy hoặc công cụ

Thiết kế tiến hóa

60

Luôn có những thứ thay đổi bất ngờ

Luôn có những thứ thay đổi bất ngờ

Nhiều phức tạp hơn mức cần thiết. Khó khăn trong việc bảo trì

Dễ dàng thích nghi. ID thay đổi dễ dàng. Giảm bớt phức tạp

Page 61: Đường vào agile - 2013

Làm Bản mẫu

• Bản mẫu có sớm sẽ giúp

người dùng dễ hình dung ra

sản phẩm sau khi hoàn

thành

• Khuyến khích sự tham gia

tích cực của người dùng và

nhà phát triển

• Tăng tốc độ phát triển hệ

thống

Xác định các

yêu cầu cơ bản

Phát triển bản

mẫu đầu

Xem xét

Kiểm tra và cải

tiến bản mẫu

61

Page 62: Đường vào agile - 2013

Phát triển Hướng-Kiểm-thử Test-Driven Development

• Không viết mã nguồn cho tới khi các kiểm thử đã được thiết kế hoàn chỉnh!

• Chiến lược – Làm cho Thất bại

• Không có mã nguồn nào mà không có kiểm thử thất bại

– Làm cho Thành công • Đơn giản nhất có thể

– Làm cho Tốt hơn • Cải tiến (mã nguồn, thiết kế, kiểm thử, tài liệu)

– Tin tưởng vào việc kiểm thử

62

Page 63: Đường vào agile - 2013

63

Các bước trong TDD

Nguồn ảnh: Excirial (http://upload.wikimedia.org/wikipedia/en/9/9c/Test-driven_development.PNG)

Page 64: Đường vào agile - 2013

Cái giá của bug

Page 65: Đường vào agile - 2013

Ba nhân tố RGB

65

Thất bại

Thành

công Cải tiến

Page 66: Đường vào agile - 2013

Phát triển Hướng Kiểm thử

Chấp nhận (ATDD) • Một kỹ thuật dành cho tự động kiểm thử chấp nhận

• Chiến lược 3D

– Thảo luận (Discuss) trong hội thảo về xác định yêu cầu

• Để xây dựng các thư viện kiểm thử

– Phát triển (Develop) với sự đồng thuận

• Để tạo ra nhiều tính năng đạt kiểm thử hơn

– Cung cấp (Deliver) các chấp nhận

• Để đạt được định nghĩa hoàn thành, cần sự chấp nhận của người

dùng

66

Yêu cầu Kiểm thử

Chấp nhận Tự

động hóa TDD

Định nghĩa

Hoàn thành

Page 67: Đường vào agile - 2013

Phát triển Hướng-Hành-vi Behavior-Driven Development

• Phát triển phần mềm được chỉ dẫn trực tiếp bởi các mô

tả hành vi và các tính năng (và mô phỏng).

• Hơi giống với ATDD, nhưng khác về tư duy

• Chất lượng phần mềm cao hơn, tính tự tổ chức tốt hơn

67

Xác nhận

lại hành

vi

Phát

triển

Xác nhận

với mô

phỏng UI

Các mô

tả hành

vi

Page 68: Đường vào agile - 2013

Tái cấu trúc Refactoring

• Bạn thực hành “viết mã một ít, sửa lỗi một ít” => kết quả là code bẩn và thiết kế tồi.

• Tái cấu trúc để code tốt hơn, có thiết kế tốt hơn, vẫn giữ nguyên chức năng của hệ thống

• Giữ cho mã nguồn: – Dễ bảo trì

– Dễ mở rộng

– Tính gắn kết cao (High Cohesion)

– Ít phụ thuộc (Low Coupling)

– Loại bỏ trùng lặp

• Database cũng cần được tái cấu trúc cho phù hợp

68

Page 69: Đường vào agile - 2013

Các kỹ thuật tái cấu trúc • Trừu tượng hóa (Abstraction)

– Bao gói các trường

– Dùng kiểu khái quát (generic)

– Thay thế mã kiểm tra (check) với State/Strategy

– Thay thế các điều kiện bằng đa hình

• Phân tách mã – Tạo mới phương thức, thay thế một phần lớn mã trong một

phương thức bằng phương thức khác

– Tạo thêm lớp mới

• Chuẩn hóa mã – Chuyển phương thức hoặc trường

– Đổi tên phương thức, trường

– Đẩy lên lớp cấp trên hoặc lớp cha

– Đẩy xuống lớp cấp dưới hoặc lớp con

69