DSpace at VNU: 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 tài liệu, giáo án...
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
I TH HƯ NG
NGHI N C NG NG HƯ NG H Đ C T H N
NG TR NG H T TRI N H N
L ẬN ĂN THẠC SĨ
HÀ NỘI, 2015
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
I TH HƯ NG
NGHI N C NG NG HƯ NG H Đ C T
H N NG TR NG H T TRI N H N
Ngành: C
Chuyên ngành:
L ẬN ĂN THẠC SĨ NGƯỜI HƯỚNG ẪN KH A HỌC TS H TƯỜNG INH
HÀ NỘI, 2015
Trang 3LỜ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 vă ày
Học viên thực hi n
T
Trang 4LỜ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 a đ đ 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 o oa, T ườ đã n tình chỉ bảo, rèn luy n, truy đ t những tri thức, k ă , k m quý báu cho tôi trong suố
ữ ă ọc vừa qua
Học viên thực hi n
T
Trang 5C L 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 y lý của A le 6
1.4 Đ c ư của A le 7
1.4.1 Tí l (I e a ve) 7
1.4.2 Tí ế (I c e e al) và ế óa (Evol o a y) 8
1.4.3 Tí íc ứ ( ay íc – Adaptive) 8
1.4.4 N ó ự ổ c ức và l c ức ă 8
1.4.5 Q ả lý ế ực (E cal ocess Co ol) 8
1.4.6 G ao ế ực (Face-to-face communication) 9
1.4.7 ể ựa ị ( al e-based development) 9
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 í ụ ọa 15
1.5.7 Đ 20
1.6 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 í ụ ọa 27
1.6.7 Đ 28
Trang 61.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 Đ 38
1.8 Tổ ợ TDD, ATDD, DD 39
2 C ươ 2: ươ đ c ả ằ ví ụ 41
2.1 Lịc sử 41
2.2 Ý ưở 41
2.3 Nguyên lý 42
2.3.1 X c đị v ừ ục 43
2.3.2 Đ c ả y c ộ c c cộ c o ó ực ự 46
2.3.3 M ọa sử ụ ví ụ 48
2.3.4 Là ị đ c ả 50
2.3.5 Tự độ ẩ đị à k c ay đổ đ c ả 51
2.3.6 T ẩ đị ườ x y 55
2.3.7 L ục ế óa à l ố 57
2.4 Quy trình 58
2.5 C cụ ỗ ợ 63
2.6 í ụ ọa 64
2.7 o s Đ c ả ằ ví ụ và UML 64
2.8 Đ 65
2.8.1 C c 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 Đ ể yế 67
2.8.4 Đ của độ ự 67
3 C ươ 3: T ử và đ v c đưa ec f ca o y Exa le vào ực ế 69
Trang 73.1 Mục đíc 69
3.2 Q y ể c c ự II 69
3.2.1 Đ c đ ể ự 69
3.2.2 M ể 70
3.2.3 M cả ế ụ đ c ả q a ví ụ 74
3.2.4 ươ ụ ớ vào o c c độ ự o c
ty 77
3.3 T ực q ể eo ec f ca o y Exa le 78
3.3.1 Đố vớ ữ ự đa o q ể 78
3.3.2 Đố vớ ự " ể we s e ướ ẫ lịc " 80
3.3.3 Dự ử 94
3.4 Đ 94
3.4.1 Đ của ả â 94
3.4.2 Đ của độ ự 95
KẾT LUẬN 96
Trang 8DANH 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
Trang 9NG TH ẬT NGỮ ANH IỆT
T ế A T ế Specification by example Đ c ả ằ ví ụ
Acceptance Test Driven Development ể ướ k ể ử c ấ
Behaviour Driven Development ể ướ à v
Test Driven Development ể ướ k ể ử User story Câ c y ườ sử ụ
Incremental T ế
Evolutionary T ế óa
Adaptive T íc
Empirical Process Control Q ả lý ế ực
Face to face communication G ao ế ực
Value based development ể ựa ị
Developer L v
Bussiness analyst N à â íc vụ
Validation T ẩ đị
Living document Tà l số
Key Example í ụ k óa
Test case Ca k ể ử
Cross functionality L c ức ă
Self organizing Tự ổ c ức
Trang 10ANH 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
Trang 11T I LIỆ THA KH Tiếng anh
1 Robert C.Martin and Mical Martin(2006), Agile Principles, Patterns, and Practices in C# , pp 27-36
2 Kent Beck (2002), Test - Driven Development By Example , pp 5
3 Gojko Adzic (2011), SPECIFICATION BY EXAMPLE How successful team deliver
e sof wa e , pp 3-197
4 Mario E.Moreira, Michael Lester, Steve Holzner (2010), A le Fo D es , pp 7
5 Ma k s Ga e (2012), ATDD y Exa le: A ac cal G e o Acce a ce Tes
D ve Develo e
6 Elisabeth Hendrickso (200 ), D v Develo e w Tes : ATDD a TDD ,
pp 3
7 e (2011), Lea -Agile Acceptance Test-Driven Development: Better
of wa e T o Colla o a o , pp 2-6
8 John Ferguson Smart (2014), BDD in Action: Behaviour Driven Development for the
whole software lifecycle , pp 12-30
Website
9 http://www.hanoiscrum.net/hnscrum/learning/106-tongquanAgile
10 http://derekbarber.ca/blog/2012/03/27/why-test-driven-development
11 http://blog.codeship.com/behavior-driven-development/
12 http://www.methodsandtools.com/archive/archive.php?id=72p10 ( Part 7 – Part 10)
13 http://agiledata.org/essays/tdd.html
14 http://en.wikipedia.org/wiki/Behavior-driven_development
15 http://www.softwaresprint.com/2012/11/missing-step-in-test-driven-development.html