3. I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC
3
I.1 So sánh mô hình phát triển phần mềm truyền thống và hiện tại
Incremental
Spiral
Cocomo
Cocomo II
RAD
RUP
…
Requirements
Analysis
Design
Coding
Testing
Maintenance
Waterfall and Similar Methodology Others Agile and Similar Methodology
4. I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)
4
I.1 So sánh mô hình phát triển phần mềm truyền thống và hiện tại (TT)
Waterfall and Similar
Methodology
Agile and Similar Methodology
Hướng kế hoạch (plan – driven)
Chỉ phù hợp khi yêu cầu khách hàng
không thay đổi .
Tạo ra phần mềm nhưng chưa biết
được giá trị sử dụng (không đúng yêu
cầu?).
Mất nhiều thời gian và chi phí cho
việc quay lại để chỉnh sửa ở các giai
đoạn trước.
Thường trễ tiến độ do kế hoạch
không sát với yêu cầu và khi yêu cầu
thay đổi.
Rủi ro cao.
Hướng giá trị (value – driven).
Chấp nhận thay đổi và cho phép xử lý thay đổi nhẹ
nhàng và nhanh chóng.
Chia nhỏ để xử lý và xác định được kết quả qua từng
lát cắt. Quá trình chia nhỏ xử lý được lặp lại cho đến khi
sản phẩm hoàn tất.
Tạo ra phần mềm có giá trị và được triển khai cho
khách hàng sử dụng một cách sớm nhất.
Thường xuyên giao tiếp và nhận phản hồi từ phía
khách hàng.
Liên tục cải tiến cho các giai đoạn (lát cắt) sau.
Giảm thiểu rủi ro.
5. I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)
5
I.1 So sánh mô hình phát triển phần mềm truyền thống và hiện tại (TT).
(Hiện tại) (Truyền thống)
6. I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)
6
I.2 Chi tiết workflow của Agile methodology thông qua Scrum methodology.
7. I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)
7
I.2 Chi tiết workflow của Agile methodology thông qua eXtreme
Programing (XP) methodology.
8. I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)
8
I.3 Định nghĩa hệ thống tích hợp liên tục (Continuous Integration ).
Phần mềm phát triển theo mô hình Agile còn được gọi là phần mềm
tích hợp liên tục (Continuous Integration ).
Hệ thống tích hợp liên tục là thành phần sống còn của một Agile team.
Trích dẫn định nghĩa của Martin Fowler “ Continuous Integration is a
software development practice where members of a team integrate their
work frequently, usually each person integrates at least daily - leading to
multiple integrations per day. Each integration is verified by an automated
build (including test) to detect integration errors as quickly as possible.
Many teams find that this approach leads to significantly reduced
ntegration problems and allows a team to develop cohesive software more
rapidly.”
9. I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)
9
I.4 Minh họa hệ thống tích hợp liên tục
Trung tâm của
hệ thống tích
hợp liên tục
10. I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)
10
I.5 Thực tiễn của hệ thống tích hợp liên tục (Practices of Continuous
Integration)
Qu n lý phiên b n (source control and version control ).ả ả
T đ ng build bao g m test.ự ộ ồ
Đôi ngũ phát tri n th ng xuyên chuy n (commit) source vể ườ ể ề
n i l u tr chính (mainline).ơ ư ữ
M i khi code có thay đ i s build l i (mainline) thông quaỗ ổ ẽ ạ
build server.
Báo l i cho ng i l p trình gây l i và qu n lý d án.ỗ ườ ậ ỗ ả ự
Phát hành phiên b n hoàn ch nh cho khách hàng khi khôngả ỉ
còn l i.ỗ
T đ ng phân ph i phiên b n m i đ n khách hàng.ự ộ ố ả ớ ế
M i ng i có th nhìn th y nh ng gì đã x y ra (thay đ i,ọ ườ ể ấ ữ ả ổ
l i…) đ xem xét và gi i quy t.ỗ ể ả ế
11. I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)
11
I.6 Thuận lợi và khó khi áp dụng hệ thống tích hợp liên tục
Khó khăn:
C n th i gian thi t l p h th ng ban đ u.ầ ờ ế ậ ệ ố ầ
Đòi h i qu n lý d án, ng i l p trình, ng i ki m đ nh ph i amỏ ả ự ườ ậ ườ ể ị ả
hi u mô hình phát tri n ph n m m Agile, h th ng tích h p CI,ể ể ầ ề ệ ố ợ
cách s d ng các công c h tr cho Agile và CI.ử ụ ụ ỗ ợ
Chi phí thi t b ph n c ng (các server cho CI).ế ị ầ ứ
12. I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)
12
I.7 Tại sao cần hệ thống tích hợp liên tục?
Gi m thi u r i ro do l i đ c phát hi n s m.ả ể ủ ỗ ượ ệ ớ
Gi m thi u s l p l i cho các quá trình.ả ể ự ặ ạ
T o ph n m m có giá tr s d ng s m nh t có th và s n sàng tri nạ ầ ề ị ử ụ ớ ấ ể ẳ ể
khai m i lúc m i n i.ọ ọ ơ
Cung c p cái nhìn xuyên su t t ng quan và c th cho t ng giaiấ ố ổ ụ ể ừ
đo n.ạ
Nâng cao k năng c a đ i ngũ nhân viên phát tri n ph n m m.ỹ ủ ộ ể ầ ề
C i thi n ch t l ng ph n m m.ả ệ ấ ượ ầ ề
…
13. I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)
13
I.8 Những công cụ được sử dụng trong hệ thống tích hợp liên tục
Code Repositories
SVN, Mercurial, Git, Visual Source Safe…
Continuous Build Systems
Jenkins, Bamboo, Cruise,Hudson,…
Test Unit Frameworks
JUnit,Cucumber , CppUnit …
Test report website
Mantis, TestLink, Redmine…
Artifact Repositories
Nexus, Artifactory, Archiva …
And others
14. II. GI I THI U JENKINSỚ Ệ
14
II.1 Giới thiệu
Là một ứng dụng web application mã nguồn mở (được cộng đồng phát triển theo giấy
phép MIT) đóng vai trò máy chủ build & test của hệ thống tích hợp liên tục.
Jenkins được viết bằng Java nên Jenkins có thể kết hợp được với hầu hết các công cụ
khác của hệ thống tích hợp liên tục với nhiều nền tảng khác nhau và đặc biệt là tảng
mobi application (android).
Tiền thân là Hudson được viết bởi Kosuke Kawaguchi tại Sun, kể từ khi Sun được mua
lại bởi Oracle vào năm 2010, một bộ phận phát triển Hudson đã tách ra phát triển riêng
và được đặt tên là Jenkins.
Được sử dụng rộng rãi và được phát triển cải tiến liên tục bởi cộng đồng mã nguồn mở
Đạt nhiều giải thưởng :InfoWorld Bossies Award, 2011 O'Reilly Open-Source Award, 2011
ALM&SCM, SDTimes 100, 2010, 2011 ,GlassFish Community Innovation Award 2008, Duke's
Choice Award 2008
Được các tổ chức lớn tin dùng: Ebay,Apache, NASA,Boeing,Mozilla, Linked in,…
15. II. GI I THI U JENKINS (TT)Ớ Ệ
15
II.2 Đặc điểm của Jenkins
Dễ dàng cài đặt và sử dụng.
Đa nền tảng.
Hỗ trợ cho nhiều công nghệ phát triển phần mềm.
Được sử dụng rộng rãi.
Dễ mở rộng.
Dễ dàng liên kết với các công cụ khác của hệ thống tích hợp liên tục thông qua các
plug in.
…
Miễn phí.
16. III. VAI TRÒ C A JENSKIN TRONG CIỦ
16
III.1 Là trái tim c a CIủ
Là CI server (build & test server) gi v trí trung tâm “tráiữ ị
tim” cho m i ho t đ ng c a h th ng.ọ ạ ộ ủ ệ ố
Khách hàng, Kiểm định,…
17. III. VAI TRÒ C A JENSKIN TRONG CI (TT)Ủ
17
III.2 Khép kín quy trình phát tri n ph n m mể ầ ề
m t cách t đ ng.ộ ự ộ
Nh vào vi c h tr đa n n t ng, công nghờ ệ ỗ ợ ề ả ệ
Jenkins giúp khép kín quy trình phát tri n ph nể ầ
m m m t cách t đ ng theo mô hình Agile nóiề ộ ự ộ
chung và h th ng tích h p liên t c nói riêng.ệ ố ợ ụ
V i h n 400 plugin và đ c phát tri n thêmớ ơ ượ ể
không ng ng Jenkins đã tr thành tr th đ cừ ở ợ ủ ắ
l c cho h th ng CI.ự ệ ố
18. III. VAI TRÒ C A JENSKIN TRONG CI (TT)Ủ
18
III.2 Khép kín quy trình phát tri n ph n m mể ầ ề
m t cách t đ ng (TT).ộ ự ộ
Source control
Tool
SVN, VSS,
CSV, GIT,
Team Foundation
Server
…
Test Tool
TestLink,
Junit.Nunit,
MSTest…
Build Tool
Ant, Maven,
MSBuild,
Cmake
Notification
Code
Coverage
Virtual
Machines
Static
Analysis
Deploy
Server
Jenkins
Customer
Developer
And others
team
19. IV. L I ÍCH JENKINS MANG L IỢ Ạ
19
Tất cả với Jenkins hầu như là tự động.
Giảm thời gian và chi phí.
Nâng cao năng lực nhân viên?
Có thể tóm gọn lợi ích Jenkins mang lại là FESS.
Faster.
Easier.
Safer.
Smarter.
20. V. Đ NH H NG PHÁT TRI N AGILE &Ị ƯỚ Ể
CI?
20
Áp dụng một phần của Jenkins
• Build server
• Version control
Áp dụng test unit
Quản lý dự án theo mô hình Agile
Áp dụng tất cả những hỗ trợ của Jenkins trong CI
1
2
3
4
21. VI. KHÓ KHĂN KHI ÁP D NG AGILE &Ụ
CI?
21
Thay đ i quan ni m cũ v qu n lý d án?ổ ệ ề ả ự
Thi t l p quy trình ban đ u phù h p?ế ậ ầ ợ
Thi t l p h th ng ?ế ậ ệ ố
K năng c a qu n lý d án, l p trình viên, ki mỹ ủ ả ự ậ ể
đ nh viên?ị