Tải bản đầy đủ (.pdf) (108 trang)

Nghiên cứu và ứng dụng phương pháp đặc tả phần mềm bằng ví dụ trong phát triển phần mềm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.81 MB, 108 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

I TH

NGHI N C

NG
NG

HƯ NG

NG HƯ NG H
Đ CT
TR NG H T TRI N H N

L ẬN ĂN THẠC SĨ

HÀ NỘI, 2015

H N


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

I TH

NGHI N C
H N
NG



HƯ NG

NG
NG HƯ NG H
Đ CT
TR NG H T TRI N H N

Ngành: C
Chuyên ngành:
Mã số: 60480103
L ẬN ĂN THẠC SĨ
NGƯỜI HƯỚNG ẪN KH A HỌC TS H

HÀ NỘI, 2015

TƯỜNG INH


i
LỜI CA

Đ AN

T x ca đoa l
vă ày là ững nghiên cứu của bản thân tôi. Những kiến
thức trong lu vă ày được thể hi n dựa trên vi c tổng hợp các kiến thức từ nhi u
nguồn, từ những kinh nghi m thực tế khi
ể c c ự của c
y à

đa là
vi c.
Mọ
được trích dẫn trong lu vă đ u tuân theo lu t sở hữu trí tu và
lu t bản quy n tác giả, được li t kê mộ c c đ y đủ chính xác.
Tôi xin hoàn toàn chịu trách nhi m với những nội dung viết trong lu



Học viên thực hi n

T

ày.


ii

LỜI C

N

Tôi xin bày tỏ lòng biế ơ sâ sắc đến tất cả mọ
ườ đã ú đỡ, hỗ trợ tôi thực
hi n lu vă ày, x cả ơ
oa a Đ Học, T ườ Đ Học C
N , Đ Học
Q ốc G a Hà Nộ đã c o
và o đ u ki để tôi thực hi n lu vă ày.
Tôi xin chân thành cả ơ sự ú đỡ và chỉ bảo t n tình của Th y

o, T ế s
Hồ Tườ
, ả v
ướng dẫn của tôi. Th y đã c ỉ bảo, đị
ướng nghiên cứu
thực hi n, hỗ trợ, t o nhữ đ u ki n tốt nhất cho tôi trong suốt quá trình thực hi đ tài.
Tôi xin bày tỏ lòng biế ơ sâ sắc đế

ườ â o

đ c
là ố, M , Chồ đã o đ u ki , động viên, ủng hộ trong những lúc khó k ă để
tôi có thể hoàn thành lu vă ày.
Xin chân thành cả ơ ất cả quý Th y, C
bảo, rèn luy n, truy đ t những tri thức, k ă , k

ă
ọc vừa qua.

o

oa, T ườ đã n tình chỉ
m quý báu cho tôi trong suố
Học viên thực hi n

T


iii


CL C
MỞ ĐẦU ................................................................................................................... 1
1 C ươ

1: Tổ

q a v A le ........................................................................... 3

1.1

Gớ

v A le ....................................................................................... 4

1.2

Tuyên ngôn Agile ......................................................................................... 4

1.3

N

1.4

Đ c ư

y

1.4.1 Tí


lý của A le ..................................................................................... 6
của A le ...................................................................................... 7
l

(I e a ve).................................................................................... 7

1.4.2 Tí

ế (I c e e al) và ế

1.4.3 Tí

íc ứ

( ay

1.4.4 N ó

ự ổ c ức và l

1.4.5 Q ả lý ế

íc
ực

óa (Evol

o a y) ......................... 8

– Adaptive) ............................................. 8

c ức ă
(E

.......................................................... 8
cal

ocess Co

ol) .................. 8

1.4.6 G ao ế

ực

(Face-to-face communication) .................................. 9



ựa

ị ( al e-based development) ............................ 9

1.4.7
1.5

TDD ............................................................................................................ 10

1.5.1 Lịc sử .................................................................................................... 10
1.5.2 Ý ưở


................................................................................................... 11

1.5.3 Nguyên lý ............................................................................................... 11
1.5.4 Quy trình ................................................................................................. 14
1.5.5 C

cụ ỗ ợ ........................................................................................ 15
í ụ

1.5.6
1.5.7 Đ
1.6

ọa ....................................................................................... 15
................................................................................................. 20

ATDD ......................................................................................................... 21

1.6.1 Lịc sử .................................................................................................... 21
1.6.2 Ý ưở

................................................................................................... 21

1.6.3 Nguyên lý ............................................................................................... 22
1.6.4 Quy trình ................................................................................................. 24
1.6.5 C

cụ ỗ ợ ........................................................................................ 26
í ụ


1.6.6
1.6.7 Đ

ọa ....................................................................................... 27
................................................................................................. 28


iv
1.7

BDD ............................................................................................................ 29

1.7.1 Lịc sử .................................................................................................... 29
1.7.2 Ý ưở

................................................................................................... 29

1.7.3 Nguyên lý ............................................................................................... 30
1.7.4 Quy trình ................................................................................................. 31
1.7.5 C

cụ ỗ ợ ........................................................................................ 32
í ụ

1.7.6

ọa ....................................................................................... 32

1.7.7 Đ
1.8


................................................................................................. 38

Tổ

2 C ươ

ợ TDD, ATDD, DD .................................................................... 39
2:

ươ

đ c ả ằ

ví ụ ....................................................... 41

2.1

Lịc sử ........................................................................................................ 41

2.2

Ý ưở

2.3

Nguyên lý .................................................................................................... 42

....................................................................................................... 41


2.3.1 X c đị

v ừ

2.3.2 Đ c ả y

c

ục

................................................................ 43

ộ c c cộ

c o

ó

ực



. ............ 46

2.3.3 M

ọa sử ụ

2.3.4 Là


ị đ c ả ....................................................................................... 50

2.3.5 Tự độ



2.3.6 T ẩ

đị

2.3.7 L

ục ế

ví ụ .......................................................................... 48

đị
ườ

àk
x y

c

ay đổ đ c ả ................................. 51

....................................................................... 55

óa à l




.......................................................... 57

2.4

Quy trình ..................................................................................................... 58

2.5

C

cụ ỗ ợ ............................................................................................ 63

2.6

í ụ

2.7

os

2.8

Đ

2.8.1 C c

ọa ........................................................................................... 64
Đ c ả ằ


ví ụ và UML ............................................................ 64

...................................................................................................... 65
c

ức của v c là

ày ay ................................. 65

2.8.2 N ữ lợ íc
à ươ
đ c ả q a ví ụ a l để vượ q a
c c c
ức
............................................................................................ 66
2.8.3 Đ ể
2.8.4 Đ

yế ................................................................................................ 67
của độ



........................................................................... 67

3 C ươ 3: T ử
và đ
v c đưa ec f ca o y Exa le vào ực
ế ........................................................................................................................... 69



v
3.1

Mục đíc ..................................................................................................... 69

3.2

Q y

ể c c ự

3.2.1 Đ c đ ể



....................................................................................... 69

3.2.2 M



3.2.3 M
3.2.4
3.3

cả

..................................................................... 70


ế



đ c ả q a ví ụ ............................................. 74

ươ

ớ vào o c c độ ự
o c
ty ............................................................................................................. 77

T ực
q

eo ec f ca o y Exa le
.................................................................................................................... 78

3.3.1 Đố vớ
3.3.2 Đố vớ
3.3.3 Dự
3.4

II....................................................... 69

Đ







đa

"



o

q

ể we s e ướ

ể ............................. 78


lịc " ........................... 80

................................................................................... 94

...................................................................................................... 94

3.4.1 Đ

của ả

3.4.2 Đ


của độ

â ............................................................................ 94


........................................................................... 95

KẾT LUẬN ............................................................................................................. 96


vi
DANH M C TỪ VIẾT TẮT, THUẬT NGỮ
ATDD

Acceptance Test Driven Development

BDD

Behaviour Driven Development

TDD

Test Driven Development

ODC

Offshore Development Center

UML


Unified Modeling Language

VSII

Vietsoftware international


vii
NG TH ẬT NGỮ ANH IỆT
Tế

A

Specification by example

Tế
Đ c ả ằ

ví ụ



ướ

kể

Behaviour Driven Development




ướ

à

Test Driven Development



ướ

kể

Acceptance Test Driven Development

User story

Câ c

y

Iterative



Incremental

T

Evolutionary


Tế

Adaptive

T íc

Empirical Process Control

Q ả lý ế

Face to face communication

G ao ế

ực



ựa

l
ế
óa

Value based development
Team

Độ

Developer


L

ực

v

Bussiness analyst

N à

Goal

Mục

ửv
â

íc

v

Scope
Validation

T ẩ

Living document

Tà l


đị
số

í ụ k óa

Key Example







Tester

ườ sử ụ

Test case

Ca k ể

Cross functionality

L

Self organizing

Tự ổ c ức




c ức ă

vụ

ửc ấ
v



viii
ANH

C

NG I

H NH

H NH
H
1.1 Mộ số ươ
A le ................................................................................... 3
H
1.2 C c â đo n l đ l p l i trong Agile ............................................................... 7
H
1.3 Mức độ phổ biến của c c ươ
2009 – 2010 [9] ................................... 10
H

1.4 TFD Cycle [13]................................................................................................... 12
H
1.5 TDD cycle and Traditional Cycle [10] ............................................................... 13
H
1.6 TDD step [15] ...................................................................................................... 14
H
1. T o o ec k ể
ử............................................................................................ 15
H
1. T
lớ
ss ess ............................................................................................. 16
H
1.9 Lớp nghi p vụ ..................................................................................................... 18
H
1.10 Lớ đố ượng dữ li u trung gian ..................................................................... 19
H
1.11 Thêm tham chiếu .............................................................................................. 19
H
1.12 Acceptance - Test Driven Development (ATDD) Cycle [6]............................. 23
H
1.13 Chu kỳ đơ
ản của ATDD [12] ...................................................................... 25
H
1.14 ATDD và TDD [12] .......................................................................................... 26
H nh 1.15 ATDD trong mô hình l p [12] ........................................................................... 26
H
1.16 Mối liên h của BDD, ATDD, TDD ................................................................. 40
H
2.1 Mô hình của specification by example [3] .......................................................... 42

H
2.2 M
x c đị
v ừ ục
................................................................ 44
H
2.3 T o câ c y
ườ sử ụ [3] ....................................................................... 45
H
2. M
ọa sử ụ ví ụ ....................................................................................... 49
H
2.5 Mộ đ c tả có thể tự động thực hi n với Concordion[3] ..................................... 52
H
2.6 Mộ đ c tả có thể thực
được với FitNesse[3] ................................................. 52
H
3.1 M

.................................................................................. 70
H
3.2 T o o ec k ể
ử............................................................................................ 86
H
3.3 Cà đ s ec flow ................................................................................................. 86
H
3. Cà đ s ec
................................................................................................... 87
H
3.5 T o f le fea e .................................................................................................... 87

H
3. T o kịc ả ........................................................................................................ 88
H
3. T o s e c o kịc ả – ước 1 .......................................................................... 88
H
3. T o s e c o kịc ả – ước 2 .......................................................................... 89
H
3.9 T o s e c o kịc ả – ước 3 .......................................................................... 89
H
3.10 C y kịc ả ................................................................................................... 91


ix
NG I



3.1 C ấ lượ
3.2 ả



v ự

2 đế
4 ........................................................... 79
ể we s e ướ

lịc ............................ 83



1

ỞĐ
Tính cấp thiết và quan trọng của đề tài
Hi n t
đa là l p trình viên t i một công ty phát triển ph n m m với g n
400 nhân viên. Trong những dự án mà tôi tham gia, tôi thấy có những vấ đ sa đa
ồn
t i:


c à
ườ
ay ay đổi yêu c , c c ươ
áp dụng không thích nghi nhanh với nhữ
ay đổi này.

 Sản phẩ

k

được à

 Sản phẩ

k

đú


c

ok

được

ời h n.

với yêu c u của

 Chấ lượng sản phẩm thấ
tích hợ c ưa ốt.
 Mất nhi

ao đú

ể đa

ười sử dụng.

được kiểm thử

ườ

x y , cơ c ế kiểm thử

í để duy trì những tài li u của dự án.

 Chi phí phát triển, kiểm thử lớn.
T đa

k ếm mộ
ươ
ển có ể ả q yế
ữ vấ đ
trên, phù hợp vớ đ c thù của những dự án trong công ty, có thể đưa ự
đến thành
c
, đe l i lợi nhu n và thỏa mãn yêu c u của khách hàng. Th y ướng dẫn của tôi,
tiế s Hồ Tườ
đã c ỉ c o
ươ
"Đ c tả bằng ví dụ", mộ
ươ
tuy t vời có thể giải quyết những vấ đ
ả k
ể ự đã

.
Với mục đíc
cứu, thử nghi
và đ xuất cách thức để triể k a
ươ
pháp này trong thực tiễn của công ty Cổ ph n Ph n m m Vi t Quốc Tế,
đã lựa chọ đ
tài "Nghiên cứu và ứng dụ p
p áp đặc tả phần mềm bằng ví dụ trong phát
triển phần mềm".
Mục tiêu của đề tài
 Nghiên cứu và tìm hiểu nhằm hiể õ c c ươ
:


ướ k ể
ử (TDD – Test Driven Development),

ướ
kể
ửc ấ
(ATDD – Acceptance Test Driven Development),

ướ
ành vi (BDD – Behaviour Driven Development) và Đ c tả bằng
ví dụ (Specification by example).
 Đ xuất cách thức để triển khai ươ pháp này trong môi ường thực tiễn của
công y Cổ
Q ốc Tế.


2
Kết quả cầ đạt đ ợc:
 Hiể õ c c ươ
TDD, ATDD, DD và Đ c tả bằng ví dụ (Specification
by examples)
 Đ xuất cách thức để triể k a
ươ
ày o
ường thực tiễn của
c
y Cổ
Q ốc Tế.
Luậ vă đ ợc trình bày với những phầ sau đây

 C
1 Tổng quan về Agile: Trình bày các khái ni
cơ ản của phát triển
ph n m m linh ho t Agile. Trình bày nguyên lý, quy trình của c c ươ
phát triển linh ho t: TDD, ATDD, BDD.
 C
2 Đặc tả bằng ví dụ: Trình bày các khái ni
cơ ả , ý ưởng, nguyên
lý, quy trình của ươ
Đ c tả bằng ví dụ.
 C
3 Thử nghiệm và đá
á v ệc đ a p
p áp Đặc tả bằng ví dụ
vào thực tế: Mô tả ươ
ực hi n dự án
ụ đ c ả ằ ví ụ.
Kết quả của nghiên cứ đã ực hi n những vấ đ trên, tuy nhiên
ể đ x ấ vẫ c

và sửa đổ c o
ợ vớ c c ự , đả
c
của ự .

ảo

à



3

1 C
m

1 Tổ

qua về Agile

Đ c ả ằ ví ụ là ộ
ươ
o

ươ
l
o A le (Agile software development - ọ ắ là A le).



Agile không phải là mộ
ươ
à là ột h thống các triết lý, nguyên tắc,
giá trị. Agile giố
ư ột chiếc ô với nhi
ươ
k c a
ư: c
,X
(Extreme programming), Crystan, DSDM (Dynamic System Development Method), TDD
(Test Driven Development), ATDD (Aceptance Test Driven Development), BDD

(Behaviour Driven Development), Specification By Example...

H

1.1 Mộ số

ươ

A le


4
C c ươ
TDD, ATDD, BDD có c
ướ đ vớ
ươ
đ c ả
ằ ví ụ, đ
ướ đế xây ự đú sả

ựa
v ckể
ử ự độ , xây
ự đú y c . TDD ườ được ể
eo ướ k ể
ử ự độ
ức đơ vị,
ATDD là k ể
ử ự độ
ức c ấ

sả
ẩ , DD c
có ể được ể là ộ
ATDD, ư
DD có đị
a cụ ể

ảc cđ k c ấ
.Đ c ả
ằ ví ụ c


DD, ư vớ ỗ đ
k
c ấ
cụ ể có đưa a
c c ví ụ cụ ể để
ảc oc cđ
k đó, c
ư là ộ đ c ả c o ộ đ
k
c ấ
.
To


c ươ
l

ày,

s
o A l e, c c

ày
ươ




cơ ả v :
TDD, ATDD, BDD.

ươ

1.1 G ớ t ệu về Agile
Công ngh ph n m m với nhữ
ươ
ển phát triển truy n thống
ư: M
c ước, mô hình xoắn ốc,
ướ đố ượng... đã k
đ ứng
được yêu c u v ph n m m ngày nay. Kinh tế biế động từng ngày, yêu c u của những
sản phẩm ph n m
c

ay đổ c o đế k c ú được hoàn thành. Sau khi
ph n m m hoàn thành, có thể là 6 tháng, 1 ă , 2 ă , ó đã k
đ ứ được yêu
c u, ho c do chỉ được à

ao c o k c à vào a đo n cuối của dự án nên không
có được phản hồi v vi c sản phẩ có đ ứng yêu c u hay không. Mộ
ươ
phát triển ph n m m linh ho A l e đã a đờ để giải quyết những vấ đ trên.


l
o Agile là ộ
c c ẫ và k
ớ,

sả

ựa
c u kỳ ( ay v
l ) và ă
ưở , ú sả

ế


àk c à
o
ố ằ v c y c sự a
a của k c à
ỗ ước[4]. A le ấ
sự ợ
c c
c
ữa ó l

v
và c c
c y
ak
oa , sự ao ế ực ế , sự ự ổ c ức c
c , ườ x y
à
ao ữ
ịk
oa , ả ồ vớ

ay đổ .
1.2 Tuyên ngôn Agile
T
a ă 2001, ười bảy nhà phát triển ph n m m (Kent, Beck Mike
Beedle, Arie van BenneKum, Alistair Cock burn, Ward Cunning ham, Martin Flowler,
James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brain Marick,
Robert C.Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas) đã p gỡ
nhau ở ow
, U a Reso để thảo lu n v c c ươ
ển ph n m m gọn
nh và linh ho t. Họ đã c
ố Tuyên ngôn Phát triển ph n m m linh ho ( Manifesto
for Agile of wa e Develo e
– gọi tắ là Tuyên ngôn Agile ) để đị
ac c
hiểu v Phát triển ph n m m linh ho t.[1]


5

N

y



y

Agile

ư sa :

C ú
đã
a cách

h nó và ú đỡ ườ k c ực
.
Qua c
v c này, chúng tôi đã đ đế v c đ
Cá â và sự t
tác
ầ mềm c ạy tốt ơ là
Cộ tác vớ k ác à
ả ồ vớ các t ay đổ

ơ
à
ơ
ơ




ơ



c c

ực

cao:

là q y
và c
cụ;
l đ y đủ;
là đà
ợ đồ ;

s kế o c .

Mặc dù các điều bên phải vẫn còn giá trị, nhưng chúng tôi đánh giá cao hơn
các mục ở bên trái.



â và sự t

tác


à quy t

và c

cụ

Co
ườ là à
q a ọ
ấ của sự à
ể đưa ự
đế
à c
, ay cả k k
có ữ
xấ có ể là


ay cả k
ự có ữ

c
à

. Mộ q y
ố có
v
x ấ sắc, ộ q y
à v x ấ sắc.


Mộ à v
ỏ có ể c ỉ là ộ l
v
ư
ao ế và cộ
c ố vớ c c à v k c. N ó
ự có co số
l
v
có k ả ă
ao ế ố ễ à c
ơ

ó có k

ư k
có k ả ă là v c nhóm.

có k ả ă

l

C
cụ,
ịc , c c
ườ
ươ
c,
ố k ể so

ã
ồ ,
ấ cả đ có ể q a ọ đố vớ v c y c c o độ đú đắ của độ
ể .T y
c
cụ k
được ấ
q
ức, sự ư ừa c
cụ c
ưv c ế c
cụ.

c là là xây ự c c ó
ể ước, sa
đó để c c ó
ày cấ
ườ
ựa
c .
ầ mềm c ạy tốt

à tà

ệu đầy đủ

k
có à l
là ộ ả
ọa. N ó


c
o ac c à l

ố và c c ế kế của
ố , để ữ
à v
k
ả l
v
và k c à c
có ể đọc được. N ư
à l
q
s
ấ ấ

a để o a ó, và
ờ a ơ ữa để y
ó c o đồ
ộ vớ

ay
đổ .
c à c ỉ q a â đế v c sả
ẩ có c y được và c y ố ay k
.
v y à l
c ỉ
được o k

ó ực sự q a ọ và c
ế
ay l
ức. T ờ
a lã
í để v ế

à l
k
c
ế s được
để ao đổ v c c c
v c c là và ực
c ú .


6
Cộ

tác vớ k ác

Q
ộ lịc
ườ x y

à

à đàm p á



ộ sả

cố đị và c
í cố đị
có ả ồ của k c à

ợp đồ
vớ
ẫ đế

ườ

ả ước, sa đó

. Dự
à

ể vớ
c
c

.

T ay v

ộc vào ợ đồ , ữ k ố c
v c x c đị
ước, k c à
là v c vớ
ó

ể ,c
cấ
ả ồ ườ x y . Mộ ợ đồ
q y đị
õ y c , lịc
,
là sa l . T o
ườ
ợ c cđ
k oả ở
v
a ước k sả


à . Chìa khóa cho sự thành công là sự hợp tác
m nh m với khách hàng và một hợ đồng mà chi phối sự hợ
c đó ơ là cố gắ để
x c định các chi tiết ph m vi và lịch trình vớ một chi phí cố định.


ồ vớ các t ay đổ

Mộ sả



 M


à ám sát kế

o

ườ

k

k c à
c ưa ợ lý và

oa


ạc

q
ườ


x y

ườ

ay đổ

ấy sả

ay đổ .

ắ đ


ẫ đế

o độ

 N ay cả k c ú
a ể õ y c và c ắc c ắ
ước lượ
ờ a oà
à c
k
ể oà
sả
l

x y

ay đổ v :
ay đổ y

c .

, ọs
ós k
oà c í

ấy



để


ay đổ ,
x c.

v c

v y, k ả ă đ ứ
ay đổ q yế đị sự à c
ay ấ
của

.
c ú
a xây ự kế o c , c ú
a c c ắc c ắ ằ
o và s sà
íc ứ vớ

ay đổ v
vụ và c
.

1.3 N uyê

ý của Agile

c
Agile,

ú



ó

ướ

y


Agile, c c

ươ

à

ể c

ày vào ực ế[1]:

12

y

lý của

1. Ư
cao ấ của c ú
là ỏa ã k c à
q a v c c yể
ao

sớ và l
ục c c

ị.
2. C ào đó v c ay đổ y c ,
c í ấ
ộ o q
ể .C c
q y
l
o
ụ sự ay đổ c o c c lợ ế c
a của k c à .
3. T ườ x y c yể
ao
c y ố ớ k c à , ừ và
đế và

c o c c k oả
ờ a
ắ ơ .
4. N à k
oa và à

ả là v c c
a à
ày o s ố ự
án.



7
5. Xây ự c c ự xung q a
ữ c
â có độ lực. C
cấ c o ọ
ườ và sự ỗ ợ c
ế , và
ưở
ọ để oà
à c
v c.
6.
ươ
q ả ấ để y đ

ó
ể và o

ộ ó
ể là ộ o
ực ế .
7.
c y ố là ước đo c í của ế độ.
8. Các quy trình l
o
úc đẩy

vữ . C c à à ợ, à
ể , và ườ
có ể y


ị độ l
ục k

.
9. L
ục q a â đế c c k
và ế kế ố để a ă sự l
o .
10. ự đơ
ả là c
ế –
ố đa óa lượ c
v c c ưa oà
à .
T ay v lo lắ v
ữ vấ đ
s
của ữ c
v c c ưa c

à , độ ự
ực
ữ c
v c đơ

ấ,
ợ vớ ục
,
vớ c ấ lượ cao ấ , ễ à

ay đổ ế có vấ đ
s
o
ờ a
tiế
eo.
11. C c k ế úc ố
ấ,y c

ấ , và ế kế ố
ấ s được là a ở c c
ó ự ổ c ức.
12. Độ ự
s
ườ x y s y
v v c là sao để ở
q ả ơ , sa
đó ọ s đ c ỉ và ay đổ c c à v của
c o
ợ .
1.4 Đặc t
c ú

của Agile

Có rất nhi
đ có c

1.4.1 Tí


ươ
Agile vớ c c ướng tiếp c n rất khác nhau,
ữ đ c ư sa :

y

ặp (Ite at ve)

Dự án s được thực hi
o c c â đo n l đ l p l . C c â đo (được
gọi là Iteration ho c
) ày ường có khung thời gian ngắn (từ mộ đến bốn tu n).
Trong mỗ
â đo n này, nhóm phát triển thực hi đ y đủ các công vi c c n thiế
ư
l p kế ho ch, phân tích yêu c u, thiết kế, triển khai, kiểm thử (với các mức độ khác nhau)
để cho ra các ph n nhỏ của sản phẩm [9].

H

1.2 C c

â đo

l

đ l

l


o

Agile


8
1.4.2 Tí

t ệm t ế (I c eme ta ) và t ế

óa (Evolutionary)

C ố ỗ
â đo l , ộ
ỏ của sả
ẩ được oà
à , có
ă c y ố , đã được k ể
ử. N ữ
ày được à
ao ay c o k c à
c y ử, lấy được ý k ế
ả ồ của k c à và có ữ đ
c ỉ
íc ợ
sả
ẩ đa được
ể đú vớ ục
của ó. C c â đo
ày ố

a , ừ
của sả
ẩ được oà
à , sả
ẩ được íc l y c o đế k
ẩ đ ứ được oà ộ y c c của k c à . N ư v y, sả
ẩ lớ
eo ờ a và ế óa đế k
à [9].
1.4.3 Tí

t íc ứ

( ay t íc

k ả
để
để
ế
sả
l

– Adaptive)

Do c c â đo n chỉ kéo dài trong một khoảng thời gian ngắn, và vi c l p kế
ho c c
được đ u chỉnh liên tục,
c c ay đổi trong quá trình phát triển (yêu c u
ay đổ , ay đổi công ngh , ay đổ đị
ướng v mục tiêu v.v…) đ u có thể được đ

ứng theo cách thích hợp. Ví dụ, trong Scrum – ươ
ổ biến nhất hi n nay –
trong khi nhóm phát triển sản xuất ra các gói ph n m m, khách hàng có thể đưa
c c
yêu c u mới, chủ sản phẩm (Product Owner) có thể đ
c c y c u này và có thể
đưa vào là v c o
â đo (được gọi là Sprint trong Scrum) tiế
eo. T eo đó,
các quy trình Agile ường thích ứng rất tốt vớ c c ay đổi [9].
1.4.4 N óm tự tổ c ức và ê c ức ă
Cấu trúc nhóm Agile ường là liên chức năng (Cross-functionality) và tự tổ chức
(Self-organizing). T eo đó, c c ó
ày ự thực hi n lấy vi c phân công công vi c mà
không dựa trên các mô tả cứng v chức danh (title) hay làm vi c dựa trên một sự phân cấp
rõ ràng trong tổ chức. Các nhóm này cộng tác vớ
a để ra quyế định, theo dõi tiế độ,
giải quyết các vấ đ mà không chờ m nh l nh của các cấp quản lý. Họ không làm vi c
eo cơ c ế
nh l nh và kiể so (co
a a co ol). N ó ự tổ chức có
a
là ó đã đủ c c k ă (co e e cy) c n thiết cho vi c phát triển ph n m m, do v y nó
có thể được trao quy để tự ra quyế định, tự quản lí và tổ chức lấy công vi c của chính
để đ được hi u quả cao nhất [9].
1.4.5 Quả

ýtế t

t ực


ệm (Emp

ca

cess C

t

)

Các nhóm Agile ra các quyế định dựa trên các dữ li u thực tiễn thay vì tính toán lý
thuyết hay các ti n giả định (prescription). Vi c phân nhỏ dự
à c c â đo n ngắn
góp ph
a ă c c đ ểm mốc để nhóm phát triển thu th p dữ ki c o
đ u chỉnh
các chiế lược phát triển của mình. Nói cách khác, Agile rút ngắ v
đời phản hồi


9
(short feedback life cycle) để dễ à
íc
và a ă
í l
o t. Theo thời gian,
các chiế lược này s tiến g đến tr ng thái tố ư , ờ đó ó có ể kiể so được
tiế
, và â cao ă s ấ lao động [9].

1.4.6 G a t ếp t ực d ệ (Face-to-face communication)
Một số mô hình phát triển ph n m m dựa rất nhi u vào công vi c giấy tờ, từ vi c
thu th p yêu c
ười dùng, viế đ c tả h thống, các thiết kế h thống v.v. Agile không
phả đối công dụng của công vi c tài li
óa, ư đ
cao ơ v c giao tiếp trực
di n thay vì gián tiếp thông qua giấy tờ. V yêu c u của khách hàng, Agile khuyến khích
nhóm phát triển trực tiếp nói chuy n vớ k c à để hiể õ ơ v

khách
hàng thực sự c n, thay vì phụ thuộc nhi u vào các lo vă ản. Trong giao tiếp giữa nội
bộ nhóm phát triển với nhau, thay vì một l p trình viên (thực hi n vi c v ế ã) và mộ k
sư ( ực hi n vi c thiết kế) giao tiếp với nhau thông qua bản thiết kế, Agile khuyến khích
a
ười này trực tiế ao đổi và thống nhất với nhau v thiết kế của h thống và cùng
nhau triển khai thành các chức ă
eo y c u.
Bản thân các nhóm Agile ường nhỏ (í ơ
ườ a
ười, một nhóm lớn
ườ được phân nhỏ vớ cơ c ế hợ
cđ c
để l
l

lượng giao tiếp
tố đa) để đơ giản hóa quá trình giao tiế , úc đẩy vi c cộng tác hi u quả. Các dự án lớn
muốn dùng Agile ường phải phân thành nhóm nhỏ đồng thời làm vi c vớ
a ướng

đến một mục tiêu chung. Vi c này có thể đ
ỏi một số nỗ lực đ
kể trong vi c đ u
phối các mức ư
ữa các nhóm.
Các nhóm phát triể
ường t o a c c ó q e và cơ c ế ao đổi trực di n một
c c
ường xuyên. Mộ o c c cơ c ế ường thấy là các cuộc họp t p trung hằng
ngày (Daily meeting, Daily Scrum, Standup meeting). T đây, ất cả c c à v được
yêu c u nói rõ cho nhóm của mình biế
đã là
, đa là
, sắ là
và đa
g p phả k ó k ă ào o q
là v c.
cơ c ế ày được thực hi n hi u quả,
nhóm luôn luôn nắ được tình hình công vi c của mình, có các à động thích hợ để
vượt qua các trở lực để thực hi n thành công mục tiêu của dự án [9].
1.4.7

át t ể dựa t ê

á t (Value-based development)

Một trong các nguyên tắc cơ ản của Agile là
n m m ch y tố c í là ước
đo của tiế độ . N y
ắc này giúp nhóm dám lo i bỏ đ c c c

v c ư ừa không
trực tiếp mang l i giá trị cho sản phẩm.
Để v
trực tiế và

à được cơ c ế là
ường xuyên vớ k c

v c dựa trên giá trị , ó Agile ường làm vi c
à ( ay đ i di n của khách hàng), cộng tác trực


10
tiếp với họ để biết yêu c u nào có độ ưu tiên cao hơn, mang l i giá trị ơ sớm nhất có
thể cho dự án. Nhờ đó c c ự án Agile ường giúp khách hàng tố ư óa được giá trị
của dự án. Một cách g
ư ực tiếp, Agile a ă đ
kể độ hài lòng của khách hàng
[9].
Sự phát triển của Agile
Theo khảo sát của hãng nghiên cứu thị ường Forrester, mức độ phổ biến của
Agile hi đa ở mức cao nhất, và gấp nhi u l n so vớ c c ươ
y n thống
ư
c ước hay CMMI (xem Hình 1.3). Hơ
ế, một số ươ
Agile có xuất
xứ và được sử dụng hi u quả ngoài ph m vi phát triển ph n m m.

H


1.3 Mức độ



ế của c c

ươ

2009 – 2010 [9]

1.5 TDD
1.5.1 L c sử
ươ
TDD đa được ứng dụng hi n ay đã được chuẩn hóa l i bởi Kent
eck
ườ được biế đế
ư là c a đẻ của
ươ
l p trình Extreme
Programming. Với sự a đời và phát triển m nh m của Extreme Programming và Agile,
đã k ế c o TDD được chấp nh n và phổ biến trong cộ đồng phát triển ph n m m. Sở
ó TDD
đ được chuẩn hóa l i bởi Kent Beck bở TDD đã được đ c
ước
đây o k oa ọc máy tính từ nhữ
ă 19 0, thời kỳ của mainframe [10].


11

Sự k c a cơ ản của TDD ước đây và TDD o e
eck đưa a là: T ước
đây quá trình k ể
ử được thực hi n thủ công, còn TDD ngày nay
kể
ử được tự
động hóa bởi cộng cụ k ể
ử ự độ .
TDD hi đ đ
Smalltalk SUnit. Do cộ
phổ biến.

đã được thực hi n trên cộ đồng Smalltalk với công cụ
đồng Smalltalk rất nhỏ nên a đo n này TDD vẫ c ưa được

TDD thực sự cất cánh là từ k
ó được ứng dụng trên cộ đồng java với bộ công
cụ JUnit. JU được viết l i từ ý ưởng của SUnit bởi chính Kent Beck và một số ười
khác. Với sự phổ biến của nó, các bộ công cụ với các n n tảng khác l lượ được a đời
với tên gọi chung là XUnit bao gồm các cộng ngh
ư: H , R y, y o o
JavaSc …
1.5.2 Ý t ở
TDD là c c ế c
ế óa o

ựa
ý ưở kế ợ 2 ươ
áp p


evelo e
ơ
v ế c c ca k ể
ử c o c ức ă c
đủ ã
ồ để ỏa ã (f lf ll) c c ca k ể
ử và
(refactoring) ã
ồ đã được v ế để ố ư ó [13].
TDD có 2
- Nó là ộ
c c k c, ó là
v ế ã để ực
c y c và ế

ục đíc c í

:

k ể đ c ả (specification), khô
ả là k ể
a (val a o ). Nói
ươ
để
v y c
vụ, ế kế ước k
y c đó. Đây c
là ý ưở q a ọ
o
ươ

ế
kế eo ươ
Agile.

- M k c TDD c

s c (clean code và code smell).

ộ c

l

. Mục

1.5.3 Nguyên lý


ể ó c

. Nó được s
a
đó là: TFD-Test-first
ể , ế đó
vế
ươ
c ẩ
óa

ức c o TDD = Refactoring + TFD.


ớ TFD (Test First Development)

của TDD là v ế

ã


12

Thêm 1 kiểm thử

[Pass]

Chạy kiểm thử

[Fail]

Thay đổi mã lập trình

[Fail]

[Pass,Tiếp tục
phát triển]

Chạy kiểm thử

[Pass, ngừng
phát triển]

H


1.4 TFD Cycle [13]

C c ước:
 Thêm 1 ca k ể
sai.
 C y ca k ể
c .
 C
c kể

ã
ử.

 C yl kể
kể
ử được
 T ực

l

ử, và v ế

ã c ỉ vừa đủ, c ủ yế ở

ử, v cơ ả là k ể
ồ để

ực


ử, ế c ưa
ỏa ã .
ấ cả c c ước

y
ỏa

ử s sa v
c

ã c ưa

và c y l

ã q ay l

vớ c c y

c

cấ

úc để ca k ể

ực



ca k ể


ử để

sửa

ã. C

l

ế

eo.


y

ỏa

ã y

l

đế khi


13
ớ TDD a c
H
y

sa có

ố :

1 ước là c


ấy



óa l

ọa sự k c

a

ã.
ữa TDD vớ

ươ

kể



Viết 1 kiểm thử

Pass

Chay kiểm thử


Kết quả

Fail
Viết mã lập trình

Sửa lỗi

Kết thúc lập trình
dựa trên yêu cầu

Chay kiểm thử

Fail

Viết tất cả các
kiểm thử tự động

Kết quả

Pass
Chạy kiểm thử
Refactor

Fail

Sửa lỗi

Chay kiểm thử

Kết quả


Kết thúc

Kết quả

Pass

Chu kỳ TDD
H
ựk c

ươ
ử c ỉ đơ

Chu kỳ truyền thống

1.5 TDD cycle and Traditional Cycle [10]

a cơ ả c í
y

là x c
l

là ả c ấ v ế k ể
c ỉvế kể
ửk
ã đã v ế .

ử ước k v ế ã của TDD.

đã v ế ã xong. N ư v y k ể


14
ớ TDD, đ ể x ấ
là ừ k ể
ửc ứk
ả ã
ồ .N ưv ykể
ửs
ư là ộ
của
ể ứ
ụ . Có ể co k ể
ử ư là
ể y
c , ế kế và ư v y TDD s ú cả ế c ấ lượ c
ư ế kế ã
ồ .
1.5.4 Quy trình
Để thực hi n TDD c n 5 ước






ư sa :[2]

N ườ l

v so
ảo kịc ả k ể
ử ( es case) c o ộ y c .
C y ấ cả c c kịc ả k ể
ử và ấy có 1 kịc ả
ớ có kế q ả ấ
.
ịc ả k ể
ử ớ ấ
v
c ức ă đó c ưa được xây ự .
Dựa vào o
ố của kịc ả k ể
ử, ườ
ể s xây ự

lượ
ã
ồ vừa đủ để l c y ứ 2 của kịc ả đó à c
.
C y ấ cả c c k ể
ử và ấy ấ cả đ
à c
, ế

q ay l đ
c ỉ
ã
ồ c o đế k k
có k ể

ử ào ấ
.
kịc ả k ể
ử được c y à c
,l
v
ế à cả ế mã
ồ sao c o ấ cả c c k ể
ử vẫ
ành công.
c cả ế
ã
ồ bao

c c c ú íc , lo ỏ c c ư ừa, ố ư c c ế .

H

1.6 TDD step [15]

T o c c ước trên
ước chuẩn hóa mã nguồ (Refac o
) c í là đ ểm
m nh chính của ươ
TDD. Nó vừa đảm bảo cho ã
ồ oà
à đú y
c
a đ u, l i vừa được cấu trúc l để cải tiến chấ lượng ã theo các chuẩn.



×