Đưa ra những đặc thù dự án của Công Ty, sau đó phân tích những hạn chế hiện tai của Công Ty, kết hợp với những ưu điểm của tiến trình linh hoạt, mà trong đó là Scrum Framework để định hư
Trang 1-
HUỲNH THỊ TÚ UYÊN
NGHIÊN CỨU TIẾN TRÌNH LINH HOẠT VÀ ỨNG DỤNG SCRUM FRAMEWORK ĐỂ XÂY DỰNG QUY TRÌNH PHÁT TRIỂN PHẦN MỀM CHO CÔNG TY TNHH PHẦN MỀM
Trang 2CÔNG TRÌNH ĐƢỢC HOÀN THÀNH TẠI
Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm:
(Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ)
Trang 3ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: Huỳnh Thị Tú Uyên MSHV: 10320989 Ngày, tháng, năm sinh: 05/07/1984 Nơi sinh: Quảng Ngãi Chuyên ngành: Hệ Thống Thông Tin Quản Lý Mã số: 60 34 48
I TÊN ĐỀ TÀI:
Nghiên cứu tiến trình linh hoạt và ứng dụng Scrum Framework để xây dựng quy trình phát triển phần mềm cho Công Ty TNHH Phần Mềm Hoàn Cầu
II NHIỆM VỤ VÀ NỘI DUNG:
Nghiên cứu lý thuyết về các thành tố tạo thành và nguyên lý hoạt động của tiến trình linh hoạt, mà trong đó là Scrum Framework Tìm hiểu về thông tin Công Ty, thông tin dự án cũng như quy trình phát triển của Công Ty TNHH Phần Mềm Hoàn Cầu Đưa ra những đặc thù dự án của Công Ty, sau đó phân tích những hạn chế hiện tai của Công Ty, kết hợp với những ưu điểm của tiến trình linh hoạt, mà trong
đó là Scrum Framework để định hướng cho việc xây dựng quy trình phát triển phần mềm cho Công Ty TNHH Phần Mềm Hoàn Cầu Xây dựng chi tiết quy trình phát triển phần mềm phù hợp cho Công Ty TNHH Phần Mềm Hoàn Cầu Triển khai, áp dụng quy trình vào các dự án tại Công Ty và đánh giá kết quả
III NGÀY GIAO NHIỆM VỤ: 14/01/2013
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 22/11/2013
Trang 4LỜI CẢM ƠN
Trước tiên xin trân trọng cảm ơn quý Thầy Cô công tác và giảng dạy ở trường Đại học Bách khoa TP Hồ Chí Minh đã tận tình giúp đỡ, hướng dẫn và truyền đạt kiến thức từ khi Em là học viên cao học ngành Hệ thống thông tin quản lý
Trong quá trình thực hiện luận văn đã gặp không ít khó khăn Để có được kết quả này, ngoài nổ lực của bản thân còn có sự đóng góp rất lớn từ người thân, thầy cô
và bạn bè Em xin ghi vào đây những lời tri ân đầy trân trọng
Xin được gởi lời cảm ơn chân thành nhất đến Thầy PGS TS Đặng Trần Khánh đã tận tình giúp đỡ, định hướng và hướng dẫn trong suốt quá trình thực hiện luận văn
để Em có thể hoàn thành nghiên cứu này
Xin được cảm ơn Anh Phan Trung Hiếu, giám đốc Công Ty TNHH Phần Mềm Hoàn Cầu, đã cho phép và tạo điều kiện cho Em thực hiện luận văn tại Công Ty TNHH Phần Mềm Hoàn Cầu
Sau cùng, Em xin cảm ơn những người bạn đã động viên và hỗ trợ trong suốt thời gian qua
TP Hồ Chí Minh, tháng 11 năm 2013
Huỳnh Thị Tú Uyên
Trang 5TÓM TẮT
Luận văn này cung cấp quy trình phát triển phần mềm cho Công Ty TNHH Phần Mềm Hoàn nói riêng và cho những Công Ty phần mềm có quy mô và đặc trưng về Công Ty cũng như về các dự án phần mềm nói chung, dựa trên việc nghiên cứu và
áp dụng các ưu điểm nổi bật phù hợp của tiến trình linh hoạt mà cụ thể là Scrum Framework
Kết quả của việc áp dụng quy trình này tại Công Ty TNHH Phần Mềm Hoàn Cầu cho kết quả tốt trong việc cải thiện thời gian thực hiện, chất lượng của dự án, đồng thời giảm rủi ro sản xuất, chi phí thấp Khả năng trao đổi giữa khách hàng và nhà phát triển, giữa những thành viên trong đội được đặt lên mức cao Bên cạnh đó việc phát hiện lỗi, các vấn đế sớm và chào đón việc thay đổi yêu cầu, thậm chí rất muộn trong quá trình phát triển dự án và đặc biệt phát triển những chức năng khách hàng thực sự cần để mang lại giá trị cho khách hàng, làm gia tăng độ hài lòng của khách hàng
Trang 6This paper provides a software development process specifically for the GSOFT Company (and other software companies of similar size and function) as well as software projects in general based on research and application of strengths relative
to the Agile development process with focus on scrum framework
The result of applying this process to the GSOFT Company brings out the best results in improvement of execution time and project quality while also reducing production risks and lowering costs Communication between the Client and development team are paramount In regards to early bug and issue detection, managing change requirements, and even accepting late development features requested by the Client for vital software, customer satisfaction is our number one priority
Trang 7LỜI CAM ĐOAN
Em xin cam đoan kết quả nghiên cứu của đề tài “Nghiên cứu tiến trình linh hoạt và ứng dụng Scrum framework để xây dựng quy trình phát triển phần mềm cho Công
Ty TNHH Phần Mềm Hoàn Cầu” là từ quá trình học tập và nghiên cứu khoa học của bản thân Các dữ liệu, thông tin trong nghiên cứu được tìm hiểu, khảo sát, lựa chọn và thu thập có nguồn gốc khoa học rõ ràng, chính xác và đáng tin cậy
TP Hồ Chí Minh, tháng 11 năm 2013
Huỳnh Thị Tú Uyên
Trang 8MỤC LỤC
MỤC LỤC 7
DANH MỤC TỪ VIẾT TẮT 10
DANH MỤC HÌNH 14
DANH MỤC BẢNG 15
CHƯƠNG 1: MỞ ĐẦU 16
1.1 Xây dựng vấn đề nghiên cứu 16
1.2 Lý do thực hiện đề tài: 19
1.3 Mục tiêu nghiên cứu 19
1.3.1 Mục tiêu đề tài 19
1.3.2 Câu hỏi nghiên cứu 19
1.4 Phạm vi nghiên cứu 20
1.4.1 Đối tượng nghiên cứu 20
1.4.2 Không gian và thời gian 20
1.5 Ý nghĩa nghiên cứu 20
1.6 Kết cấu của luận văn 20
1.7 Kết chương 21
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 22
2.1 Tổng quan về phát triển phần mềm linh hoạt Agile 22
2.1.1 Định nghĩa về phát triển phần mềm linh hoạt Agile 22
2.1.2 Mức độ phổ biến Agile theo thống kê của Forrester 22
2.1.3 Tỷ lệ thành công của các dự án sử dụng Agile thường gấp 3 lần so với CMMi 23
2.1.4 Các nguyên tắc và giá trị cốt lõi trong Agile 24
2.2 Tuyên ngôn Phát triển Phần mềm Linh hoạt 25
2.1.1 Cá nhân và Sự tương tác 25
2.1.2 Phần mềm Chạy tốt hơn Tài liệu Đầy đủ 27
2.1.3 Cộng tác với khách hàng hơn là Thương thảo Hợp đồng 28
2.1.4 Phản hồi với Thay đổi hơn là Bám sát Kế hoạch 29
2.3 Mô tả cụ thể về Scrum Framework 30
2.3.1 Định nghĩa về Scrum 30
2.3.2 Các thành tố cấu thành Scrum [6] 31
2.3.2.1 Ba giá trị cốt lõi 31
Trang 92.3.2.2 Ba vai trò 31
2.3.2.3 Bốn cuộc họp 32
2.3.2.4 Ba công cụ 33
2.3.3 Nguyên lý hoạt động của Scrum 33
2.3.4 So sánh Scrum với các quy trình phần mềm truyền thống 34
2.3.4.1 Các quy trình truyền thống: 34
2.3.4.2 Đối với quy trình Scrum 35
2.4 Kết chương 36
CHƯƠNG 3: GIỚI THIỆU VÀ ĐẶC TRƯNG CÁC DỰ ÁN CỦA GSOFT 38
3.1 Giới thiệu về GSOFT 38
3.1.1 Giới thiệu chung 38
3.1.2 Sơ đồ tổ chức 41
3.2 Quy trình phát triển phần mềm GSOFT đã sử dụng trước đó là mô hình thác nước 46
3.3 Đặc trưng các dự án của GSOFT 49
3.3.1 Nguyên nhân từ khách hàng: 51
3.3.2 Nguyên nhân từ nội bộ dự án: 51
3.3.3 Nguyên nhân khách quan: 52
3.4 Kết chương 55
CHƯƠNG 4: XÂY DỰNG CHI TIẾT QUY TRÌNH CHO GSOFT 56
4.1 Xây dựng chi tiết quy trình linh hoạt cho GSOFT 56
4.1.1 Giai đoạn 1: Chuẩn bị, lập kế hoạch và thiết kế ở mức cao [11] : 57
4.1.2 Giai đoạn 2 : Thực thi để hoàn thiện sản phẩm [15] 61
4.1.3 Giai đoạn 3: Kết thúc 77
4.2 Chọn công cụ để hiện thực quy trình linh hoạt cho GSOFT 79
4.3 Đào tạo khung làm việc và công cụ triển khai Scrum cho nhân viên trong GSOFT 82
4.4 Kết chương 83
CHƯƠNG 5: ÁP DỤNG THỬ NGHIỆM QUY TRÌNH SCRUM TẠI GSOFT VÀ ĐÁNH GIÁ KẾT QUẢ 84
5.1 Dự án số 1: FOLUP 84
5.1.1 Tầm nhìn của sản phẩm 85
5.1.2 Số Sprint trong dự án FOLUP 85
5.1.3 Tốc độ đốt cháy của Sprint 01 86
Trang 105.1.4 Tốc độ đốt cháy của Sprint 02 87
5.1.5 Tốc độ đốt cháy của Sprint 03 88
5.1.6 Tốc độ đốt cháy của Sprint 04 89
5.1.7 Nguyên nhân dẫn đến thành công của dự án FOLUP 90
5.2 Dự án số 2: LPCH (Lucile Packard Children’s Hospital) 90
5.2.1 Tầm nhìn của sản phẩm (Product Vision) 90
5.2.2 Số Sprint trong dự án LPCH 91
5.2.3 Tốc độ đốt cháy của Sprint 01 91
5.2.4 Tốc độ đốt cháy của Sprint 02 92
5.2.5 Tốc độ đốt cháy của Sprint 03 93
5.2.6 Nguyên nhân dẫn đến thành công của dự án LPCH 93
5.3 Dự án số 3: FRED 94
5.3.1 Tầm nhìn của sản phẩm 94
5.3.2 Tổng cộng dự án có 3 Sprint như bên dưới 95
5.3.3 Tốc độ đốt cháy của Sprint 01 95
5.3.4 Tốc độ đốt cháy của Sprint 02 96
5.3.5 Tốc độ đốt cháy của Sprint 03 97
5.3.6 Nguyên nhân dẫn đến thất bại của dự án khi sử dụng mô hình Scrum: 98
5.4 Đánh giá kết quả 98
5.4.1 Đánh giá kết quả dự án FOLUP 101
5.4.2 Đánh giá kết quả dự án LPCH 102
5.4.3 Đánh giá kết quả dự án FRED 103
5.5 Đặc trưng dự án nào thì sử dụng mô hình linh hoạt phù hợp .105
5.6 Những thuận lợi và khó khăn khi triển khai Scrum tại GSOFT 109
5.6.1 Thuận lợi khi triển khai Scrum tại GSOFT 109
5.6.2 Khó khăn khi triển khai Scrum tại GSOFT 110
5.7 Kết chương 111
CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 112
6.1 Kết luận 112
6.2 Hướng phát triển 113
TÀI LIỆU THAM KHẢO 115
PHỤ LỤC 117
Trang 11DANH MỤC TỪ VIẾT TẮT
Chỉ
mục
Từ viết tắt Thuật ngữ Ý nghĩa
Chart
việc còn lại
truyền thông CMMi Capability Maturity Model
DDD Detail Design Document Tài liệu thiết kế chi tiết hệ
Trang 12EVM Earned Value Management Quản lý giá trị thu được
F FPT-IS FPT Information Systems Công ty hệ thống thông tin
FPT
cộng đồng FDD Feature Driven Development Phát triển dựa vào tính năng
Company
Công ty trách nhiệm hữu hạn phần mềm hoàn cầu
Ideal Time Là thời gian thực để hoàn
thành một công việc nào đó
cần chuỗi từ một điểm sản xuất
Trang 13L Learn Learn Software
Development
Quy trình sản xuất tinh gọn
LPCH Lucile Packard Children‟s
Hospital
Bệnh viện trẻ em Lucile Packard
Specification
Tài liệu đặc tả hệ thống theo hướng lập trình
Trang 14Stakehoder Người liên quan
Châu Âu Stoty
Công ty tin học Tường Minh
gia công phần mềm và đầu tư hàng đầu của Mỹ
Trang 15DANH MỤC HÌNH
Hình 2.1: Nguyên lý hoạt động của Scrum [7] 33
Hình 3.1: Sơ đồ tổ chức 1 41
Hình 3.2: Sơ đồ tổ chức 2 42
Hình 3.3: Sơ đồ tổ chức 3 43
Hình 3.4: Sơ đồ tổ chức 4 44
Hình 3.5: Sơ đồ tổ chức 5 45
Hình 3.6: Vòng đời phát triển phần mềm tại GSOFT 46
Hình 3.7: Bức tranh tổng thể vòng đời phát triển với quy trình của GSOFT 47
Hình 4.1: Các giai đoạn của quy trình Scrum tại GSOFT 56
Hình 4.2: Chi tiết về quy trình Scrum tai GSOFT 57
Hình 4.3: Product Backlog trong dự án thực tế 59
Hình 4.4: Xác định thành viên trong dự án 60
Hình 4.5: Thiết kế kiến trúc của hệ thống 61
Hình 4.6: Kịch bản trong dự án thực tế 63
Hình 4.7: Cách thức để tập hợp kịch bản dự án 64
Hình 4.8: Ví dụ về kich bản đăng ký vào hệ thống 65
Hình 4.9: Cách xác định độ phức tạp của kịch bản cho việc ước lượng dự án 68
Hình 4.10: Bảng ước lượng theo tam giác 69
Hình 4.11: : Bảng so sánh của Ideal days và Story points [18] 71
Hình 4.12: Danh sách kiểm tra để làm DoD 72
Hình 4.13: 7 giai đoạn mang lại giá trị trong tiến trình linh hoạt 78
Hình 4.14: Bảng so sánh để chọn công nghệ áp dụng tại GSOFT [22] 80
Hình 5.1: FOLUP_Burn down chart của Sprint 01 86
Hình 5.2: FOLUP_Burn down chart của Sprint 02 87
Hình 5.3: FOLUP_Burn down chart của Sprint 03 88
Hình 5.4FOLUP_Burn down chart của Sprint 04 89
Hình 5.5: LPCH_burn down chart của Sprint 01 91
Hình 5.6: LPCH_burn down chart của Sprint 02 92
Hình 5.7: LPCH_burn down chart của Sprint 03 93
Hình 5.8: FRED_burn down chart của Sprint 01 95
Hình 5.9: FRED_burn down chart của Sprint 02 96
Hình 5.10: FRED_burn down chart của Sprint 03 97
Trang 16DANH MỤC BẢNG
Bảng 1.1: Doanh thu Công nghệ thông tin 16
Bảng 1.2: Bảng xếp hạng thành phố phát triển trong việc gia công phần mềm 17
Bảng 2.1: Mức độ phổ biến Agie theo thống kê của Forrester năm 2010 23
Bảng 2.2: Tỷ lệ dự án thành công nhờ sử dụng Agile 24
Bảng 2.3:Bảng so sánh các quy trình phần mềm [8] 36
Bảng 3.1: Biểu đồ về độ lớn (size) dự án 49
Bảng 3.2: Biểu đồ về phân khúc thị trường 50
Bảng 3.3:Biểu đồ về tính đúng hạn trong việc phát triền dự án 50
Bảng 3.4: Mô tả đặc trưng dự án tại GSOFT 54
Bảng 5.1: Bảng đo lường tại GSOFT 99
Bảng 5.2: Bảng công thức đo lường tại GSOFT 100
Bảng 5.3: Bảng đánh giá kết quả của dự án FOLUP 101
Bảng 5.4: Bảng đánh giá kết quả của dự án LPCH 102
Bảng 5.5: Bảng đánh giá kết quả của dự án FRED 103
Bảng 5.6: Bảng đặc trưng dự án nào thì sử dụng mô hình linh hoạt phù hợp 108
Bảng 5.7: Bảng danh sách kiểm tra Scrum 109
Trang 17Chương 1: MỞ ĐẦU
Tóm tắt chương:
Nội dung của chương này trình bày tổng quan về tình hình phát triển của nền công nghiệp phần mềm ở Việt Nam, đồng thời đưa ra những khó khăn trong việc phát triển phần mềm và xu hướng để giải quyết khó khăn đó là áp dụng tiến trình linh hoạt Chương này cũng trình bày lý do thực hiện đề tài, mục tiêu của đề tài và nội dung, bố cục của đề tài
1.1 Xây dựng vấn đề nghiên cứu
Trong những năm gần đây, do sự khủng hoảng kinh tế toàn cầu, doanh thu của ngành công nghiệp công nghệ thông tin chủ yếu là do sự tăng trưởng cao của lĩnh vực công nghiệp phần cứng, điện tử với doanh thu chiếm 82% [1] Công nghiệp phần mềm và công nghiệp nội dung số cũng tăng trưởng nhưng tốc độ chậm lại Năm
2011, doanh thu công nghiệp phần mềm chỉ đạt 1,17 tỷ USD tăng trưởng khiêm tốn 10% [1]
Bảng 1.1: Doanh thu Công nghệ thông tin
Nguồn : Sách trắng về CNTT-TT Việt Nam 2012
2011 Việt Nam được xếp hạng thứ 8 trong tổng số 50 nước hấp dẫn nhất về gia công phần mềm, tăng 2 bậc so với 2009 và 11 bậc so với 2007, vượt lên trên Philipine và tiến sát Thái Lan [1] Báo cáo căn cứ vào các chỉ số tài chính (giá) với
Trang 1840%, kỹ năng và sự sẵn sàng của nguồn nhân lực (30%) và môi trường kinh doanh (30%) Việt Nam được đánh giá đứng đầu về chỉ số tài chính [1]
Việt Nam vẫn nằm trong danh sách top 30 nước dẫn đầu thế giới về gia công dịch
vụ và top 10 châu Á - Thái Bình Dương [1]
Theo Báo cáo về 100 thành phố hấp dẫn nhất thế giới về gia công phần mềm được
Công ty tư vấn Tholons công bố tháng 6/2012, TP.Hồ Chí Minh đang đứng ở vị trí
16 ( lên 1 bậc) còn Hà Nội ở vị trí 21 (giữ nguyên) [1]
Bảng 1.2: Bảng xếp hạng thành phố phát triển trong việc gia công phần mềm
Nguồn: Sách trắng về CNTT-TT Việt Nam 2012
Số lượng doanh nghiệp phần mềm, dịch vụ CNTT tăng nhanh, tính đến năm 2012,
cả nước có khoảng trên 1.000 doanh nghiệp, tăng gấp 2,5 lần so với năm 2005, trong đó chủ yếu tập trung tại tỉnh, thành phố lớn, với nhân lực trên 70.000 người [1] Năng suất lao động bình quân toàn ngành phần mềm và dịch vụ đạt trên 14.800 USD/lao động, nhưng với các doanh nghiệp có thâm niên cung cấp dịch vụ cho nước ngoài thì mức doanh thu đạt trên 20.000USD/người/năm, đặc biệt đối với lĩnh vực tích hợp hệ thống doanh thu đạt trên 30.000USD/người/năm [1]
Việt Nam hiện đã có nhiều doanh nghiệp phần mềm có quy mô trên 1.000 người như FPT-IS, TMA Solutions , đặc biệt FSoft đã có trên 3500 lao động [1] Cả nước
Trang 19đã có 03 doanh nghiệp đạt chứng chỉ quản lý chất lượng quốc tế CMMi cấp độ 5, và hàng chục công ty có chứng chỉ CMMi cấp độ 4, CMMi cấp độ 3 hoặc ISO-9001 [1].Hiện tại có 7 khu phần mềm tập trung đang hoạt động, trong đó có một số khu khá thành công, được nhiều người biết đến như Công viên phần mềm Quang Trung, Công viên phần mềm Đà Nẵng, Khu công nghệ phần mềm Đại học quốc gia TP Hồ Chí Minh v.v
Với tiềm năng phát triển vô cùng to lớn của ngành công nghiệp phần mềm ở Việt Nam, để đảm bảo chất lượng và hạn chế rủi ro trong việc phát triển các dự án phần mềm, các công ty có vốn nước ngoài có quy mô lớn như CSC, Havernash, Pyramid
và một số Công ty phần mềm có vốn trong nước như FSoft, FPT-IS, TMA Solutions, áp dụng theo các quy trình chuẩn quốc tế, quy trình linh hoạt như CMMi, Agile, Scrum Framework, Learn, Kanban…còn các công ty có quy mô nhỏ vừa và nhỏ ở Việt Nam thì việc nghiên cứu và áp dụng các quy trình phần mềm tiên tiến này còn gặp nhiều hạn chế như thiếu thông tin, không có đội ngũ chuyên gia…dẫn đến tính cạnh tranh của các Công ty phần mềm vừa và nhỏ ở Việt Nam không cao, chất lượng dự án không cao, làm tác động không tốt đến sự phát triển của công nghiệp phần mềm ở Việt Nam [2]
Bên cạnh đó dữ liệu ngành công nghiệp cho thấy hơn 60% các yêu cầu về sản phẩm hay dự án bị thay đổi suốt quá trình phát triển phần mềm [3] Ngay cả khi các dự án truyền thống kết thúc đúng thời gian, đúng kinh phí, với tất cả các tính năng theo kế hoạch, nhưng khách hàng thường không hài lòng vì những gì họ thấy không thật sự đúng như những gì họ muốn vì khi đội dự án chuyển giao cho khách hàng thì có đến 64% các tính năng của sản phẩm mà khách hàng hiếm khi sử dụng hoặc không bao giờ sử dụng [4]
Do đó tiến trình phát triển phần mềm linh hoạt ra đời nhằm khắc phục các vấn đề ở trên nhằm khuyến khích đội dự án chủ động lấy công việc từ danh sách đã được sắp xếp, tự quản công việc, tập trung vào việc cải thiện cách thức làm việc bằng sự cam
Trang 20kết của chính các thành viên trong đội dự án làm tăng tốc độ hoàn thành dự án và giảm thiếu 40% sai sót [3]
1.2 Lý do thực hiện đề tài:
Nghiên cứu tiến trình linh hoạt và đặc biệt Scrum Famework để xây dựng một quy trình phát triển phần mềm cho các Công Ty phần mềm vừa và nhỏ ở Việt Nam và
áp dụng triển khai thực tế vào GSOFT
1.3 Mục tiêu nghiên cứu
1.3.1 Mục tiêu đề tài
Xây dựng hoàn chỉnh quy trình phát triển phần mềm cho GSOFT dựa trên những đặc trưng về quy mô và dự án của GSOFT Áp dụng triển khai thử nghiệm ít nhất trên ba dự án tiêu biểu của GSOFT để đánh giá kết quả để áp dụng rộng rãi cho GSOFT nói riêng và các Công Ty phần mềm có đặc trưng về Công Ty, dự án tương
tự nói chung
1.3.2 Câu hỏi nghiên cứu
Hiện tại GSOFT đang áp dụng quy trình quản lý phần mềm nào?
Quy trình đó có đảm bảo các dự án bàn giao đúng tiến độ hay không? Có phát sinh thêm thời gian hay không?
Hiện tại trong một dự án phần mềm có những vai trò nào?
Tỷ lệ lỗi trước và sau khi bàn giao cho khách hàng?
Hiện tại trên thế giới có những quy trình quản lý dự án phần mềm nào tiên tiến? Quy trình đó có áp dụng phù hợp vào trong GSOFT hay không?
Trang 211.4 Phạm vi nghiên cứu
1.4.1 Đối tượng nghiên cứu
Đối tượng của nghiên cứu này là tiến trình linh hoạt, đặc biệt là Scrum Framework, đặc thù của GSOFT, các dự án cũng như quy trình phát triển phần mềm hiện tại của GSOFT
1.4.2 Không gian và thời gian
Không gian: nghiên cứu được thực hiện trên phạm vi các dự án phần mềm triển khai ở Việt Nam và gia công cho các khách hàng ngoài phạm vi lãnh thổ Việt Nam tại GSOFT
Thời gian: từ ngày 14/01/2013 đến ngày 22/11/2013
1.5 Ý nghĩa nghiên cứu
Xây dựng hoàn chỉnh quy trình phát triển phần mềm cho GSOFT Kết quả của việc
áp dụng quy trình này tại GSOFT cho kết quả tốt trong việc cải thiện thời gian thực hiện, chất lượng của dự án, đồng thời giảm rủi ro sản xuất, chi phí thấp Khả năng trao đổi giữa khách hàng và nhà phát triển, giữa những thành viên trong đội được đặt lên mức cao Bên cạnh đó việc phát hiện lỗi, các vấn đế sớm và chào đón việc thay đổi yêu cầu , thậm chí rất muộn trong quá trình phát triển dự án và đặc biệt phát triển những chức năng khách hàng thực sự cần để mang lại giá trị cho khách hàng, làm gia tăng độ hài lòng của khách hàng
1.6 Kết cấu của luận văn
Luận văn bao gồm 5 chương:
Chương 1: Mở đầu
Chương 2: Cơ sở lý thuyết
Chương 3: Giới thiệu về GSOFT và đặc trưng dự án của Công Ty
Chương 4: Xây dựng quy trình phát triển phần mềm cho GSOFT
Trang 22 Chương 5: Áp dụng thử nghiệm quy trình phát triển phần mềm Scrum Framework tại GSOFT và đánh giá kết quả
Chương 6: Kết luận và hướng phát triển
1.7 Kết chương
Trong chương này xác định rõ lý do chọn đề tài, mục tiêu nghiên cứu và những câu hỏi nghiên cứu Đối tượng nghiên cứu và phạm vi nghiên cứu cũng được xác định
Trang 23Chương 2: CƠ SỞ LÝ THUYẾT
Tóm tắt chương:
Nội dung của chương này trình bày tổng quát cơ sở lý thuyết về tiến trình linh hoạt, mức độ phổ biến sử dụng Agile trong phát triển dự án phần mềm, tỷ lệ thành công của dự án sử dụng Agile so với sử dụng mô hình CMMi, các nguyên tắc và giá trị cốt lõi trong Agile Sau đó sẽ trình bày cụ thể về tiến trình linh hoạt được dùng
để áp dụng cho GSOFT, đó là Scrum Framework: các thành tố cấu thành Scrum, nguyên tắc hoạt động của Scrum, so sánh Scrum Framework với các mô hình truyền thống khác
2.1 Tổng quan về phát triển phần mềm linh hoạt Agile
2.1.1 Định nghĩa về phát triển phần mềm linh hoạt Agile
Phát triển phần mềm linh hoạt (Agile Software Development – gọi tắt là Agile) là một triết lý cùng với nhóm các phương pháp và phương pháp luận phát triển phần mềm dựa trên các nguyên tắc phát triển phân đoạn lặp và tăng trưởng, theo đó nhu cầu và giải pháp tiến hóa thông qua sự hợp tác giữa các nhóm tự quản và liên chức năng Agile thường sử dụng cách lập kế hoạch thích ứng, việc phát triển và chuyển giao theo hướng tiến hóa, sử dụng các khung thời gian ngắn và linh hoạt để dễ dàng phản hồi lại với các thay đổi trong quá trìh phát triển Ngày nay, triết lý Agile đã vượt xa khỏi khu vực truyền thống của mình là phát triển phần mềm để đóng góp sự thay đổi trong cách thức làm việc, quản lý, sản xuất ở các ngành khác như sản xuất, dịch vụ, kinh doanh, tiếp thị, giáo dục v.v
2.1.2 Mức độ phổ biến Agile theo thống kê của Forrester
Thuật ngữ Agile chính thức được sử dụng rộng rãi theo cách thống nhất kể từ khi
“Tuyên ngôn Agile” được giới thiệu ra công chúng năm 2001 Nhờ tính linh hoạt,
đa dạng và hiệu quả cao, các phương pháp Agile ngày càng trở thành sự lựa chọn hàng đầu của các khách hàng, nhà phát triển, các công ty phát triển phần mềm
Theo khảo sát của hãng nghiên cứu thị trường Forrester (Bảng 2.1), mức độ phổ
Trang 24biến của Agile hiện đang ở mức cao nhất, và gấp nhiều lần so với các phương pháp truyền thống như thác nước hay CMMi
Bảng 2.1: Mức độ phổ biến Agie theo thống kê của Forrester năm 2010
Nguồn từ Forrester Research
2.1.3 Tỷ lệ thành công của các dự án sử dụng Agile thường gấp 3 lần
so với CMMi
Các dự án Agile có tỷ lệ thành công gấp 3 lần so với những dự án không dùng Agile Báo cáo đó cho thấy rằng, “Quy trình linh hoạt là phương thuốc phổ dụng dành cho các dự án phát triển phần mềm thất bại Các ứng dụng phần mềm được phát triển bởi các quy trình linh hoạt có tỷ lệ thành công gấp 3 lần so với phương pháp thác nước truyền thống và có tỷ lệ phần trăm thấp hơn nhiều về thời gian và chi phí phát sinh.” Standish Group đánh giá dự án thành công dựa trên thời gian, ngân sách, và tất cả các tính năng được lên kế hoạch.Họ không báo cáo về việc có bao nhiêu dự án trong cơ sở dữ liệu của mình nhưng họ cho biết kết quả này được thực hiện trên các dự án từ năm 2002 đến 2010 Biểu đồ sau sẽ cho thấy các số liệu
cụ thể trong báo cáo của họ (Bảng 2.2)
0.0% 5.0% 10.0% 15.0% 20.0% 25.0% 30.0% 35.0% 40.0%
Agile (Phát triển phần mềm linh hoạt)
Không sử dụng một quy trình chính thức
Iterative development (Phát triển phân đoạn lặp)
Rational Unified Process (Quy trình phát triển phần …
Spiral (Quy trình xoắn ốc) Waterfall (Quy trình thác nước) Capability Maturity Model Integration (Mô hình trưởng …
ISO 9000 (Cơ Quan Thiết Lập Tiêu Chuẩn Hóa Quốc Tế)
Trang 25Bảng 2.2: Tỷ lệ dự án thành công nhờ sử dụng Agile Nguồn từ “CHAO Manifesto” năm 2011 của Standish Group
2.1.4 Các nguyên tắc và giá trị cốt lõi trong Agile
Phát triển phần mềm linh hoạt Agile làm một thuật ngữ có nguồn gốc từ Tuyên Ngôn Phát triển Phần mềm Linh hoạt, tuyên ngôn này được soạn thảo năm 2001 bởi một nhóm gồm 17 nhà khoa học (các nhà sáng tạo Scrum, XP, DSDM và Crystal, đại diện của phát triển hướng tính năng và một vài nhà lãnh đạo khác trong lĩnh vực công nghiệp phần mềm) [5] Tuyên ngôn Agile đã tổng kết ra một số giá trị và nguyên tắc chung, phổ quát cho tất cả các phương pháp luận về linh hoạt đang tồn tại độc lập tại thời điểm đó Văn bản này đưa ra bốn giá trị cốt lõi cho phép các nhóm đạt được hiệu suất cao
Các giá trị cốt lõi này còn được hỗ trợ bởi 12 nguyên tắc [5]
Ưu tiên cao nhất của chúng tôi là thỏa mãn khách hàng thông qua việc chuyển giao sớm và liên tục các phần mềm có giá trị
Chào đón việc thay đổi yêu cầu, thậm chí rất muộn trong quá trình phát triển Các quy trình linh hoạt tận dụng sự thay đổi cho các lợi thế cạnh tranh của khách hàng
Thường xuyên chuyển giao phần mềm chạy tốt tới khách hàng, từ vài tuần đến vài tháng, ưu tiên cho các khoảng thời gian ngắn hơn
Nhà kinh doanh và nhà phát triển phải làm việc cùng nhau hàng ngày trong suốt
Trang 26 Xây dựng các dự án xung quanh những cá nhân có động lực Cung cấp cho họ môi trường, sự hỗ trợ cần thiết và tin tưởng họ để hoàn thành công việc
Phương pháp hiệu quả nhất để truyền đạt thông tin tới nhóm phát triển và trong nội bộ nhóm phát triển là hội thoại trực tiếp
Phần mềm chạy tốt là thước đo chính của tiến độ
Các quy trình linh hoạt thúc đẩy phát triển bền vững Các nhà tài trợ, nhà phát triển và người dùng có thể duy trì một nhịp độ liên tục không giới hạn
Liên tục quan tâm đến các kĩ thuật và thiết kế tốt để gia tăng sự linh hoạt
Sự đơn giản – nghệ thuật tối đa hóa lượng công việc chưa xong – là căn bản
Các kiến trúc tốt nhất, yêu cầu tốt nhất và thiết kế tốt nhất sẽ được làm ra bởi các nhóm tự tổ chức
Nhóm phát triển sẽ thường xuyên suy nghĩ về việc làm sao để trở nên hiệu quả hơn, sau đó họ sẽ điều chỉnh và thay đổi các hành vi của mình cho phù hợp
2.2 Tuyên ngôn Phát triển Phần mềm Linh hoạt
Cá nhân và sự 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ác với khách hàng hơn là đàm phán hợp đồng
Phản hồi với các thay đổi hơn là bám sát kế hoạch
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 [5]
2.1.1 Cá nhân và Sự tương tác
Cá nhân và sự tương tác giữa họ là cốt yếu để nhóm đạt được hiệu suất cao Các nghiên cứu về “bão hòa truyền thông” trong một dự án cho thấy rằng, khi không có vấn đề trong truyền thông, nhóm có thể thực hiện công việc tốt hơn 50 lần so với mức trung bình trong lĩnh vực của mình [3] Để tạo điều kiện cho truyền thông, các phương pháp linh hoạt thường xuyên sử dụng chu trình thanh tra và thích nghi Chu
Trang 27trình này có thể diễn ra hằng phút với lập trình cặp, hằng giờ với tích hợp liên tục, hằng ngày với đứng họp, hằng phân đoạn với các buổi họp sơ kết và cải tiến
Tuy nhiên, chỉ tăng tần suất phản hồi và giao tiếp là không đủ để loại bỏ các vấn đề
về truyền thông Chu kỳ thanh tra và thích nghi làm việc tốt chỉ khi các thành viên trong nhóm thể hiện những hành vi quan trọng sau:
Tôn trọng giá trị của mỗi cá nhân
Trung thực trong truyền thông
Minh bạch về dữ liệu, hoạt động, và quyết định
Tin tưởng vào sự hỗ trợ của mỗi cá nhân với nhóm
Cam kết với nhóm và các mục tiêu của nhóm
Để thúc đẩy các hành vi này, nhà quản lý linh hoạt phải cung cấp một môi trường
hỗ trợ, các nhà huấn luyện phải tạo điều kiện thuận lợi, và các thành viên của nhóm phải thể hiện chúng Chỉ khi đó nhóm mới có thể phát huy được hết tiềm năng của mình
Đạt tới các hành vi đó khó khăn hơn rất nhiều so với việc hình thành chúng Hầu hết các nhóm tránh lé sự thật, sự minh bạch, và tin tưởng vào các chuẩn mực văn hóa hoặc có những kinh nghiệm tiêu cực từ các xung đột xuất phát từ truyền thông trung thực trước đây Để chống lại những khuynh hướng này, ban lãnh đạo và thành viên nhóm phải tạo điều kiện cho những xung đột tích cực Làm như vậy không chỉ giúp tạo ra hành vi sinh lợi mà còn đem lại các lợi ích khác:
Cải tiến quy trình phụ thuộc vào nhóm trong việc tạo ra danh sách các trở ngại hoặc vấn đề trong tổ chức, đối mặt với chúng một cách trung thực, và sau đó loại bỏ chúng một cách có hệ thống tùy theo độ ưu tiên
Đổi mới chỉ xảy ra với việc tự do trao đổi các ý tưởng mâu thuẫn lẫn nhau, một hiện tượng được nghiên cứu và viết thành tài liệu bởi Takeuchi và Nonaka, những người cha đỡ đầu của Scrum
Trang 28Việc hướng các nhóm tới mục tiêu chung đòi hỏi nhóm phải đối mặt và giải quyết các vấn đề về xung đột
Cam kết làm việc cùng nhau sẽ xảy ra chỉ khi mọi người đồng ý với mục tiêu chung và sau đó đấu tranh cho sự tiến bộ của bản thân cũng như nhóm
Ý cuối cùng ở trên nói về cam kết là đặc biệt quan trọng Đó là khi mà các cá nhân
và các nhóm được cam kết mà họ cảm thấy có trách nhiệm với việc cung cấp các giá trị cao, đó là điểm mấu chốt đối với các nhóm phát triển phần mềm Các phương pháp linh hoạt tạo điều kiện cho việc cam kết bằng cách khuyến khích các nhóm đưa ra một danh sách các công việc được ưu tiên hóa, để họ tự quản lý công việc của mình và tập trung vào cải tiến về cách thực hiện các công việc đó Thực hành là nền tảng của tự tổ chức, đó là động lực để đạt được kết quả trong một nhóm Agile
Để tạo ra các nhóm có hiệu suất cao, các phương pháp linh hoạt coi trọng cá nhân
và sự tương tác hơn là quy trình và công cụ Thực tế cho thấy rằng, tất cả các phương pháp linh hoạt tìm kiếm sự gia tăng trong truyền thông và cộng tác thông qua việc kiểm tra thường xuyên các chu trình thanh tra và thích nghi Tuy nhiên, các chu trình đó chỉ thực sự làm việc tốt khi mà các nhà lãnh đạo Agile khuyến khích các cuộc xung đột tích cực, thứ cần thiết để xây dựng một nền tảng vững chắc cho sự trung thực, tính minh bạch, lòng tin, sự tôn trọng, và cam kết từ các nhóm Agile của họ
2.1.2 Phần mềm Chạy tốt hơn Tài liệu Đầy đủ
Phần mềm chạy tốt là một trong những khác biệt lớn mà phát triển linh hoạt mang lại Tất cả các phương pháp linh hoạt thể hiện Tuyên ngôn Agile bằng cách nhấn mạnh việc cung cấp một phần nhỏ của phần mềm chạy tốt tới khách hàng sau một khoảng thời gian nhất định
Tất cả các nhóm Agile phải xác lập những gì họ muốn nói là “phần mềm chạy tốt”, cái thường được biết như là định nghĩa hoàn thành Ở mức độ cao, một phần của
Trang 29chức năng hoàn thành chỉ khi các tính năng của chúng vượt qua tất cả các kiểm thử
và có thể được vận hành bởi người dùng cuối Ở mức thấp nhất, các nhóm phải vượt qua được kiểm thử đơn vị và kiểm thử hệ thống Các nhóm tốt nhất còn bao gồm việc kiểm thử tích hợp, kiểm thử hiệu năng, và kiểm thử chấp nhận của khách hàng trong định nghĩa hoàn thành đối với một phần chức năng Thông qua nguồn dữ liệu phong phú từ các dự án, một công ty CMMI Cấp độ 5 cho thấy việc xác định kiểm thử chấp nhận cùng với các tính năng, triển khai một loạt các tính năng và theo độ
ưu tiên, ngay lập tức chạy các kiểm thử chấp nhận với mỗi tính năng, và sửa bất cứ một lỗi nào có độ ưu tiên cao nhất sẽ tăng gấp đôi tốc độ sản xuất và giảm các sai sót đến 40% Điều này có được từ một công ty có tỷ lệ sai sót thấp nhất thế giới [3]
Tuyên ngôn Agile khuyến nghị các nhóm cung cấp phần mềm chạy tốt sau một khoảng thời gian nhất định Đồng thuận với định nghĩa hoàn thành là một trong những cách thực tế để nhóm Agile mang lại hiệu suất và chất lượng cao, cái cần thiết để hoàn thành mục tiêu này
2.1.3 Cộng tác với khách hàng hơn là Thương thảo Hợp đồng
Trong hai thập kỷ qua, tỉ lệ thành công của các dự án tăng hơn hai lần trên toàn thế giới Điều này được cho là vì các dự án nhỏ hơn và mức độ chuyển giao thường xuyên đã cho phép khách hàng cung cấp các thông tin phản hồi về phần mềm hoạt động một cách đều đặn hơn Các tác giả của bản Tuyên ngôn đã làm sáng tỏ điều này khi họ nhấn mạnh rằng việc để khách hàng tham gia vào quá trình phát triển phần mềm là hết sức cần thiết để dẫn tới thành công
Các phương pháp phát triển linh hoạt đã thúc đẩy giá trị này bằng cách đưa vào một đồng minh tích cực của khách hàng làm việc sát cánh với đội phát triển Lấy một ví
dụ, một nhóm Scrum đầu tiên có hàng ngàn khách hàng Sẽ là không khả thi nếu cho phép tất cả khách hàng tham gia vào quá trình phát triển sản phẩm, vì vậy họ chọn ra một vị đại sứ của khách hàng, được gọi là PO, để đại diện cho không chỉ tất
cả khách hàng trong trường hợp này mà còn bao gồm cả quản lý, dịch vụ khách
Trang 30hàng, và các bên liên quan khác PO có trách nhiệm cập nhật danh sách yêu cầu về sản phẩm sau mỗi bốn tuần thời điểm mà nhóm Scrum phát hành phiên bản sản phẩm chạy tốt, có tính đến yếu tố thực tế cùng phản hồi của khách hàng và các bên liên quan Điều này cho phép khách hàng có thể giúp định hình sản phẩm phần mềm đang được tạo ra
Một nhóm XP đầu tiên đã bắt đầu với một dự án CNTT nội bộ Họ có thể có sẵn người sử dụng đầu cuối của công ty trong nhóm làm việc với họ hàng ngày Khoảng 10% thời gian, các tư vấn viên và nhóm nội bộ có thể tìm được một người dùng cuối có thể làm việc với nhóm từng ngày 90% thời gian còn lại, họ phải cử ra người đại diện cho khách hàng Người này, được nhóm XP gọi là Customer, làm việc trực tiếp với người dùng cuối để cung cấp một danh sách các tính năng rõ ràng cùng độ ưu tiên cho phép đội phát triển có thể thực hiện [3]
Cộng tác với khách hàng (hoặc đại diện của khách hàng) trên cơ sở hàng ngày là một trong những lý do lý giải tại sao các dữ liệu trong ngành công nghiệp cho thấy rằng các dự án linh hoạt có tỉ lệ thành công cao hơn gấp đôi so với các dự án truyền thống tính trung bình trên toàn thế giới Các phương pháp phát triển linh hoạt đã nhận ra điều đó, và do vậy, chúng đã tạo ra một vị trí đặc biệt trong đội hình phát triển để dành riêng cho vị khách hàng đại diện này
2.1.4 Phản hồi với Thay đổi hơn là Bám sát Kế hoạch
Phản hồi với thay đổi là điều cần thiết cho việc tạo ra một sản phẩm làm hài lòng khách hàng cũng như mang lại những giá trị kinh doanh Dữ liệu ngành công nghiệp cho thấy hơn 60% các yêu cầu về sản phẩm hay dự án bị thay đổi suốt quá trình phát triển phần mềm [3] Ngay cả khi các dự án truyền thống kết thúc đúng thời gian, đúng kinh phí, với tất cả các tính năng theo kế hoạch, nhưng khách hàng thường không hài lòng vì những gì họ thấy không thật sự đúng như những gì họ muốn Luật Humphrey nói rằng khách hàng không bao giờ biết những gì họ muốn cho đến khi họ thấy phần mềm hoạt động Nếu khách hàng không nhìn thấy phần
Trang 31mềm hoạt động cho đến khi kết thúc dự án, sẽ là quá muộn cho việc kết hợp các thông tin phản hồi của họ ở thời điểm này Các phương pháp phát triển linh hoạt tìm kiếm sự phản hồi của khách hàng trong suốt dự án để có thể kết hợp thông tin phản hồi và thông tin mới ngay khi sản phẩm đang được phát triển
Tất cả các phương pháp phát triển linh hoạt đều được tích hợp sẵn những tiến trình thay đổi các kế hoạch trong một khoảng thời gian đều đặn dựa trên những thông tin phản hồi từ phía khách hàng cũng như bên đại diện của khách hàng Các kế hoạch được thiết kế để sao cho luôn cung cấp giá trị kinh doanh cao nhất trước hết Bởi vì 80% giá trị nằm trong 20% các tính năng, một dự án phát triển linh hoạt chạy tốt có
xu hướng kết thúc sớm, trong khi hầu hết các dự án truyền thống thường kết thúc trễ Kết quả là, khách hàng thì vui vẻ hơn, và các nhà phát triển thì thích thú với công việc của họ hơn Các phương pháp phát triển linh hoạt dựa trên những hiểu biết đó, để thành công hơn chúng phải có kế hoạch để thay đổi Đó là lý do tại sao chúng thiết lập các quy trình, chẳng hạn như Sơ kết và Cải tiến, được thiết kế đặc biệt để thay đổi các ưu tiên thường xuyên dựa trên thông tin phản hồi của khách hàng và giá trị kinh doanh [3]
2.3 Mô tả cụ thể về Scrum Framework
2.3.1 Định nghĩa về Scrum
Scrum là một trong các khung làm việc linh hoạt phổ biến nhất hiện nay Scrum được dùng để quản lý các dự án phát triển phần mềm, nhưng cũng được dùng trong các công việc khác với độ phức tạp và tính sáng tạo rất đa dạng [6]
Dựa trên lý thuyết quản lý thực nghiệm: Scrum sử dụng kỹ năng lặp và tăng dần để tối ưu hóa sự hiệu quả và kiểm soát rủi ro Scrum rất đơn giản, dễ đọc và khả năng ứng dụng lớn Vì vậy, để dùng Scrum chúng ta cần nghiên cứu các thanh phần sau đây
Trang 32 Thanh tra
Công tác thanh tra liên tục các hoạt động trong Scrum bảo đảm cho việc phát hiện các vấn để cũng như giải pháp để thông tin đa dạng và hữu ích đến được với các bên tham gia dự án Với việc truy xét kỹ càng và liên tục là cơ chế khởi đầu cho việc thích nghi và cải tiến liên tục trong Scrum
Trang 33 Nhóm phát triển
Là một nhóm liên chức năng có nhiệm vụ giải quyết các yêu cầu từ PO để tạo ra các gói sản phẩm tốt nhất
2.3.2.3 Bốn cuộc họp
Lập kế hoạch cho Sprint
Nhóm phát triển sẽ gặp gỡ với PO để lên kế hoạch làm việc cho một Sprint Các công việc như là: chọn lựa các yêu cầu cần phát triển, phân tích và nhận biết các công việc phải làm kèm theo các ước lượng thời gian cần thiết để hoàn tất các công việc Scrum sử dụng phương thức lập kế hoạch từng phần và tăng dần theo thời gian Theo đó, việc lập kế hoạch không diễn ra duy nhất một lần trong vòng đời của
dự án mà được lặp đi lặp lại, có sự thích nghi với tình hình thực tiễn trong tiến trình
đi đến sản phẩm
Buổi họp hằng ngày
SM cùng với Nhóm phát triển tổ chức họp hằng ngày để Nhóm chia sẽ tiến độ công việc cũng như các khó khăn gặp phải trong quá trình phát triển phần mềm suốt một Sprint
Buổi họp đánh giá
Cuối Sprint, Nhóm phát triển cùng với PO sẽ rà soát lại các công việc đã hoàn thành trong Sprint vừa qua và đề xuất các chỉnh sửa hoặc thay đổi cần thiết cho sản phẩm
Buổi họp cải tiến
Dưới sự chỉ đạo của SM, Nhóm phát triển sẽ rà soát lại toàn diện Sprint vừa kết thúc và tìm cách cải tiến quy trình làm việc cũng như bản thân sản phẩm
Trang 342.3.2.4 Ba công cụ
Product Backlog
Có thể hiểu như là danh sách các yêu cầu của dự án PO chịu trách nhiệm sắp xếp
độ ưu tiên cho từng hạng mục trong Product Backlog dựa trên các giá trị do PO định nghĩa
Sprint backlog
Là kết quả của buổi họp lập kế hoạch cho một Sprint với sự kết hợp giữa PO và Nhóm phát triển Họ sẽ cùng nhau phân tích các yêu cầu theo độ ưu tiên từ cao xuống thấp để hiện thực hóa các hạng mục trong Product Backlog dưới dạng danh sách công việc
Burndown Chart
Đây là biểu đồ hiển thị xu hướng của dự án dựa trên lượng thời gian cần thiết để hoàn tất công việc Burndown Chart còn được dung để theo dõi tiến độ của một Sprint hoặc của cả dự án
2.3.3 Nguyên lý hoạt động của Scrum
Hình 2.1: Nguyên lý hoạt động của Scrum [7]
Nguồn từ scrum.org
Trang 35Với mỗi dự án thì nhiệm vụ của PO là tạo ra các Product Backlog chứa các yêu cầu của dự án với các hạng mục được sắp xếp theo thứ tự ưu tiên Nhóm phát triển sẽ có nhiệm vụ hiện thực hóa các hạng mục do PO yêu cầu với sự lặp đi lặp lại các giai đoạn nước rút trong vòng 2 đến 4 tuần, với đầu vào là các Product Backlog và đầu
ra là các gói sản phẩm có thể chuyển giao được Trong lúc cùng nhau đua nước rút thì Nhóm phát triển cùng họp với PO để lên kế hoạch cho từng Sprint Kết quả của mỗi buổi họp là các Sprint Backlog Trong quá trình phát triển Nhóm phát triển sẽ thường xuyên cập nhật Sprint Backlog và thực hiện công việc này hằng ngày để cùng nhau chia sẽ tiến độ công việc cũng như các khó khăn trong quá trình làm việc Mỗi sprint kết thúc là lúc nhóm tạo ra các gói phần mềm có thể chuyển giao được Cuối mỗi Sprint, Nhóm phát triển cùng họp đánh giá với PO để thấy được Nhóm phát triển đã chuyển giao được những gì, còn những gì phải làm hoặc phải thay đổi, cải tiến Sau khi cuộc họp đánh giá kết thúc, SM và Nhóm phát triển sẽ phải tổ chức họp cải tiến để tìm ra các cải tiến mới trước khi Sprint tiếp theo bắt đầu
Các Sprint sẽ được lặp đi lặp lại cho tới khi các hạng mục trong Product Backlog được hoàn tất hoặc khi PO quyết định dừng dự án căn cứ vào tình hình thực tế Với chiến thuật “quan trọng làm trước”nên các hạng mục mang lại giá trị lớn cho dự án
Do đó, Scrum luôn mang lại giá trị tốt nhất cho người đầu tư cho dự án Quy trình luôn được cải tiến nên nhóm Scrum thường có năng suất hoạt động cao và đây là lợi ích mà Scrum mang lại cho các tổ chức
2.3.4 So sánh Scrum với các quy trình phần mềm truyền thống
2.3.4.1 Các quy trình truyền thống:
Quy trình thác nước
Chia dự án phần mềm gồm các giai đoạn: đặt tả yêu cầu, thiết kế hệ thống, cài đặt, kiểm thử và bảo trì Quy trình này dễ quản lý nhưng kém linh hoạt và không hiệu quả bởi có sự thay đổi trong giai đoạn sau sẽ có ảnh hưởng lớn đến các giai đoạn trước Tất cả các yêu cầu công việc được xác định trong quá trình lập kế hoạch gồm
Trang 36những việc cơ bản như: xác định các yêu cầu sản phẩm, chi phí sản phẩm, ngày hoàn thành…Dẫn đến khả năng thành công thấp nếu có những yêu cầu mới hoặc chỉnh sửa sản phẩm sẽ có sự ảnh hưởng rất lớn đến các giai đoạn trước
Quy trình xoắn ốc
Chia dự án thành các giai đoạn như: lập kế hoạch, phân tích rủi ro, giao tiếp khách hang, đánh giá lại, sản xuất và phân phối Nhưng chưa được sử dụng rộng rãi
2.3.4.2 Đối với quy trình Scrum
Điểm mạnh nhất đó là việc linh hoạt, dự án không được cố định từ đầu về thời gian hoàn thành hay những yêu cầu mà nó sẽ được xác định khi phát triển thực tế
Phân phối sản phẩm mềm dẻo: nội dung sản phẩm chuyển giao được xác định linh hoạt theo môi trường sử dụng thực tế
Thời gian biểu linh hoạt: có thể muộn hoặc sớm hon so với kế hoạch ban đầu
Chất lượng sản phẩm tốt và giảm rủi ro sản xuất, chi phí thấp Khả năng trao đổi giữa khách hàng và nhà phát triển, giữa những thành viên trong đội được đặt lên mức cao
Tốc độ phát triển nhanh, tiết kiệm thời gian Việc chuẩn bị hành động cho những thay đổi trong quá trình phát triển tốt hơn vì hầu như hàng ngày luôn có những buổi họp đánh giá lại ở những vòng lặp phát triển
Các lỗi và các vấn đề được phát hiện sớm hơn rất nhiều so với các phương pháp truyền thống bởi vì khách hàng được tham gia đánh giá rất nhiều và đầu ra của sản phẩm rất nhanh Và khi đi sai hướng, có thể hủy ngay Sprint đó để quay lại với bản
kế hoạch
Trang 37Đặc điểm Thác nước Xoắn ốc SCRUM
Xác định các giai
đoạn phát triển
lập kế hoạch và kết thúc
Sản phẩm cuối
cùng
Được xác định trong quá trình lập
kế hoạch
Được xác định trong quá trình lập
kế hoạch
Xác định trong quá trình xây dựng dự
án Chi phí sản phẩm Được xác định
sản phẩm
Được xác định trong quá trình lập
kế hoạch
Thay đổi cục bộ Xác định trong quá
trình xây dựng dự
án Đáp ứng với môi
trường sử dụng
Trong kế hoạch ban đầu
Trong kế hoạch ban đầu
Xuyên suốt từ kế hoạch đến xây dựng và kết thúc Khả năng sáng tạo,
linh hoạt của nhóm
Hạn chế khả năng tiếp cận, linh hoạt của nhóm
Hạn chế khả năng tiếp cận, linh hoạt của nhóm
Không Hạn chế khả năng tiếp cận, linh hoạt của nhóm Kinh nghiệm trao
đổi Đào tạo trước cho đến khi bắt tay làm
Bên cạnh đó dựa trên thông kê của một tập đoàn đáng tin cậy là CHAO Manifesto
năm 2011 của Standish Group về tính thiết thực và hiệu quả mang lại cho khách
hàng so với các mô hình trước đây
Trang 38Qua những phân tích này, rút ra được vấn đề liên quan trong việc sử dụng tiến trình linh hoạt mà đặc biệt là Scrum Framework trong việc phát triển các dự án phần mềm.
Trang 39Chương 3: GIỚI THIỆU VÀ ĐẶC TRƯNG CÁC DỰ ÁN
CỦA GSOFT
Tóm tắt chương:
Nội dung của chương này giới thiệu Công Ty TNHH Phần Mềm Hoàn Cầu (GSOFT) về tổ chức, loại hình kinh doanh, đối tượng khách hàng, phạm vi hoạt động và đặc trưng dự án Bên cạnh đó đưa ra các nguyên nhân dẫn đến sự trể tiến
độ trong dự án và quy trình phát triển hiện tại mà GSOFT đã và đang sử dụng trước đó
3.1 Giới thiệu về GSOFT
Công Ty TNHH Phần Mềm Hoàn Cầu được thành lập theo giấy phép số:
4102048910 do Sở Kế Hoạch Đầu Tư TP.Hồ Chí Minh cấp ngày 06/04/2007 với số lượng nhân viên hiện tại là 47 thành viên
Tên giao dịch viết tắt: GSOFT [9]
Tên đầy đủ bằng tiếng Việt: Công Ty Trách Nhiệm Hữu Hạn Phần Mềm Hoàn
Cầu
Tên viết tắt bằng tiếng Việt: Công Ty TNHH Phần Mềm Hoàn Cầu
Tên đầy đủ bằng tiếng Anh: Global Software Limitted Company
Trụ sở chính: 239 Âu Cơ, Phường 5, Quận 11, Tp.HCM
Website: www.gsoft.com.vn[9]
3.1.1 Giới thiệu chung
GSOFT là một công ty phần mềm hướng công nghệ, được sáng lập bởi những người có tâm huyết, có năng lực và kinh nghiệm chuyên môn cao với mong muốn hình thành và phát triển một công ty phần mềm hàng đầu tại Việt Nam và vươn tầm
ra thế giới
GSOFT cung cấp các giải pháp kết nối cộng đồng dựa trên nền tảng công nghệ Internet, xây dựng website, các giải pháp thương mại điện tử và các giải pháp phần
Trang 40mềm quản lý từ xa GSOFT luôn đáp ứng được những yêu cầu công nghệ, kỹ thuật mới nhất, làm thỏa mãn những nhu cầu khó tính nhất của khách hàng GSOFT định hướng nghiên cứu và ứng dụng công nghệ phần mềm vào thực tiễn đời sống nhằm nâng cao chất lượng sống cộng đồng thỏa “khát khao nâng tầm cuộc sống” đã in sâu trong tâm tưởng từng con người GSOFT
Dù sản phẩm có giá trị lớn hay nhỏ, sự uy tín và tính chuyên nghiệp với khách hàng đều được GSOFT đặt lên hàng đầu Mọi sản phẩm đều được sự bảo trì, hỗ trợ tối đa
từ phía GSOFT để đảm bảo công việc kinh doanh của khách hàng không bị gián đoạn
Với phương châm UY TÍN, CHẤT LƢỢNG VÀ CHUYÊN NGHIỆP, GSOFT
mong muốn đem đến cho quý khách hàng những sản phẩm phần mềm chất lượng nhất!
TẦM NHÌN
GSOFT định hướng xây dựng và phát triển thành một mái nhà chung cho những người có khả năng và đam mê sáng tạo trong lĩnh vực công nghệ phần mềm nói riêng và lĩnh vực công nghệ thông tin nói chung, hoạt động và mở rộng phát triển sâu rộng trong cả nước, vươn ra khu vực và toàn cầu bằng những giải pháp và sản phẩm công nghệ trí tuệ, độc đáo giúp nâng cao chất lượng cuộc sống
SỨ MỆNH
Đối với khách hàng: Bằng cách khai thác, ứng dụng những thành tựu khoa
học công nghệ mới nhất, GSOFT mang lại những giải pháp, sản phẩm dịch
vụ giúp khách hàng gia tăng hiệu quả công việc, tăng doanh thu và giá trị thương hiệu của khách hàng, đồng thời giúp khách hàng giảm thiểu chi phí quản lý, chi phí quảng bá, truyền thông, tiếp thị, bán hàng
Đối với đồng nghiệp: GSOFT luôn tạo ra một môi trường năng động, kích
thích sự sáng tạo và phát triển toàn diện, vượt trội cho từng thành viên