A brief introduction to agile duong trong tan 2014-06

70
Agile nói chuyện Dương Trọng Tấn [email protected] @Septeni HN/2014

description

A brief introduction to agile by duong trong tan Giới thiệu ngắn gọn về Agile - Dương Trọng Tấn, Hà Nội 2014/06

Transcript of A brief introduction to agile duong trong tan 2014-06

Page 1: A brief introduction to agile  duong trong tan 2014-06

Agile nói chuyện

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

@Septeni HN/2014

Page 2: A brief introduction to agile  duong trong tan 2014-06

Trích chéo

• Đã: FPT Aptech Hanoi, Khoa Quốc tế - ĐH

FPT, AgileVietnam.

• Khởi xướng HanoiScrum

• Hiện nay: nghỉ hưu non AgileVietnam, làm

RnD ở ĐH FPT và Cánh Buồm, công việc

chính: thí nghiệm.

Page 3: A brief introduction to agile  duong trong tan 2014-06

Nội dung

Agile là gì?

Tại sao Agile?

Agile là gì?

Tại sao Agile?

Ví dụXP

Scrum

Lean

& Lean Startup

Ví dụXP

Scrum

Lean

& Lean Startup

Trở nên/dùng agile

cách nào ?

Tư duy

Kĩ thuật

Cộng tác

Công cụ

Trở nên/dùng agile

cách nào ?

Tư duy

Kĩ thuật

Cộng tác

Công cụ

Page 4: A brief introduction to agile  duong trong tan 2014-06

NHÓM SCRUM TẠO RA

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

Page 5: A brief introduction to agile  duong trong tan 2014-06

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 6: A brief introduction to agile  duong trong tan 2014-06

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 7: A brief introduction to agile  duong trong tan 2014-06

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 8: A brief introduction to agile  duong trong tan 2014-06

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 (JIT PLANNING)

Page 9: A brief introduction to agile  duong trong tan 2014-06

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 10: A brief introduction to agile  duong trong tan 2014-06

Cứ như thế

cho đến khi hết

Khung

thời gian

Page 11: A brief introduction to agile  duong trong tan 2014-06

Phần

Mềm

Chạy

Tốt

Sẽ

Tòi

Ra

Page 12: A brief introduction to agile  duong trong tan 2014-06

DEMO

Phần mềm

Chạy tốt

Chúng ta

có gì rồi?

Page 13: A brief introduction to agile  duong trong tan 2014-06

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 14: A brief introduction to agile  duong trong tan 2014-06

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

Page 15: A brief introduction to agile  duong trong tan 2014-06

Scrum Framework

Đồ họa: Demer et al.

Page 16: A brief introduction to agile  duong trong tan 2014-06

Những Cách Khác

Scrum

XP Lean Software

Development

CrystalDSDM

Agile

FDDAgileUP

Page 17: A brief introduction to agile  duong trong tan 2014-06

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)

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)

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ư

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: A brief introduction to agile  duong trong tan 2014-06

Kĩ thuật XP

Xem thêm: http://www.slideshare.net/duongtrongtan/practices-of-an-agile-developer-16001474

Page 19: A brief introduction to agile  duong trong tan 2014-06

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

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

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

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

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 20: A brief introduction to agile  duong trong tan 2014-06

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’

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!

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

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 21: A brief introduction to agile  duong trong tan 2014-06

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 22: A brief introduction to agile  duong trong tan 2014-06

Build-Measure-Learn

Page 23: A brief introduction to agile  duong trong tan 2014-06

Minimum Viable Product

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

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

thực tiễn, 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ý

BuildBuild

Page 24: A brief introduction to agile  duong trong tan 2014-06

Chung | Riêng

Ảnh: Hendrik Kniberg

Page 25: A brief introduction to agile  duong trong tan 2014-06

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

Page 26: A brief introduction to agile  duong trong tan 2014-06

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 27: A brief introduction to agile  duong trong tan 2014-06

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 28: A brief introduction to agile  duong trong tan 2014-06

Tuyên ngôn

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

28

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ụ;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 đủ;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;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.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 29: A brief introduction to agile  duong trong tan 2014-06

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.

29

Page 30: A brief introduction to agile  duong trong tan 2014-06

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

Nguồn: Mike Kohn

Page 31: A brief introduction to agile  duong trong tan 2014-06

Sprint | Iteration | Phân đoạnVò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 32: A brief introduction to agile  duong trong tan 2014-06

Thực nghiệm | Empiricism

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

Page 33: A brief introduction to agile  duong trong tan 2014-06

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 34: A brief introduction to agile  duong trong tan 2014-06

Nhóm Tự tổ chức

Self-organized Team

Page 35: A brief introduction to agile  duong trong tan 2014-06

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

35

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

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

Page 36: A brief introduction to agile  duong trong tan 2014-06

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

Cross-functional Team

Ảnh: suitcaseorchestra.com

Page 37: A brief introduction to agile  duong trong tan 2014-06

Retrospective | Kaizen

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

Image: Rachel Davies & Liz Sedley

Page 38: A brief introduction to agile  duong trong tan 2014-06

Độ 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 39: A brief introduction to agile  duong trong tan 2014-06

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ủaMS, 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 40: A brief introduction to agile  duong trong tan 2014-06

User Story

& Backlogs

User Story

& Backlogs

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

Page 41: A brief introduction to agile  duong trong tan 2014-06

Release Burndown

Sprint Burndown

Release

Ảnh: mountaingoat.com

Page 42: A brief introduction to agile  duong trong tan 2014-06

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

Page 43: A brief introduction to agile  duong trong tan 2014-06

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 44: A brief introduction to agile  duong trong tan 2014-06

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

SHU

Bám sát Quy tắ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

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

RI

Quên đi Quy tắc

44

Page 45: A brief introduction to agile  duong trong tan 2014-06

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

45

10.000Giờ leo núi

Page 46: A brief introduction to agile  duong trong tan 2014-06

Đọc thêm nữa

46

Page 47: A brief introduction to agile  duong trong tan 2014-06

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 48: A brief introduction to agile  duong trong tan 2014-06

Cộng đồng

HanoiScrum.net

AgileVietnam.org

Page 49: A brief introduction to agile  duong trong tan 2014-06

THANK YOU!

:-)

Page 50: A brief introduction to agile  duong trong tan 2014-06

BACKUP SLIDES

Page 51: A brief introduction to agile  duong trong tan 2014-06

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

Scrum

Nguồn: Ken Schwaber

Page 52: A brief introduction to agile  duong trong tan 2014-06

Độ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

52

Đã kýĐã ký

Page 53: A brief introduction to agile  duong trong tan 2014-06

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

$$

DevTeamPO

Collaboration:

Steps:

Artifacts:As a super user,

I want to …

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

53

Page 54: A brief introduction to agile  duong trong tan 2014-06

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

54

Page 55: A brief introduction to agile  duong trong tan 2014-06

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

story tốt

55

Independent – Độc lậpIndependent – Độc lập

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

Valuable – Đáng giáValuable – Đáng giá

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

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

Testable – Kiểm thử đượcTestable – Kiểm thử được

Page 56: A brief introduction to agile  duong trong tan 2014-06

Tập hợp các user story

Chuẩn bị các

câu hỏi

Chuẩn bị các

câu hỏiQuan sátQuan sát

Phỏng vấn

người dùng

Phỏng vấn

người dùngViết user storyViết user story

56

Page 57: A brief introduction to agile  duong trong tan 2014-06

Họp xây dựng user story

• Người tham gia: nhà phát triển, người dùng, kháchhà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.

57

Page 58: A brief introduction to agile  duong trong tan 2014-06

Lập trình cặpPair-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 đề

58

Page 59: A brief introduction to agile  duong trong tan 2014-06

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ệcquản lý chất lượng — từng phần nhỏ hiệu quả, ápdụng thường xuyên.

• Được hỗ trợ bởi một hệ thống CI với rất nhiều cáckiể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

59

Page 60: A brief introduction to agile  duong trong tan 2014-06

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

60

Page 61: A brief introduction to agile  duong trong tan 2014-06

Thiết kế tiến hóa

Incremental DesignThiết kếnhững thứphức tạp cókhả năng linhhoạt trêngiấy hoặccông cụ

Thiết kế tiếnhóa

61

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

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

Nhiều phức tạphơn mức cầnthiết. Khó khăntrong việc bảotrì

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

Page 62: A brief introduction to agile  duong trong tan 2014-06

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

62

Page 63: A brief introduction to agile  duong trong tan 2014-06

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ểmthử đã đượ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ấtbạ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ử

63

Page 64: A brief introduction to agile  duong trong tan 2014-06

64

Các bước trong TDD

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

Page 65: A brief introduction to agile  duong trong tan 2014-06

Cái giá của bug

Page 66: A brief introduction to agile  duong trong tan 2014-06

Ba nhân tố RGB

66

Thất bạiThất bại

Thành

công

Thành

côngCải tiếnCải tiến

Page 67: A brief introduction to agile  duong trong tan 2014-06

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

67

Yêu cầuYêu cầuKiểm thử

Chấp nhận Tự

động hóa

Kiểm thử

Chấp nhận Tự

động hóa TDDTDD

Định nghĩa

Hoàn thành

Định nghĩa

Hoàn thành

Page 68: A brief introduction to agile  duong trong tan 2014-06

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

68

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 69: A brief introduction to agile  duong trong tan 2014-06

Tái cấu trúcRefactoring

• 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ủahệ 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

69

Page 70: A brief introduction to agile  duong trong tan 2014-06

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

70