Bằng cách tiếp cận và phân tích những vấn đề mà công ty VNG đang gặp phải trong các dự án phần mềm web tại công ty, nguyên nhân dẫn đến hiệu quả các dự án không cao dần được làm rõ, cho
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
NGUYỄN ANH VŨ
ỨNG DỤNG QUI TRÌNH PHÁT TRIỂN PHẦN MỀM LINH HOẠT
ĐỂ NÂNG CAO HIỆU QUẢ TRONG QUẢN LÝ DỰ ÁN PHẦN MỀM
TẠI CÔNG TY CỔ PHẦN VNG (VNG CORPORATION) Chuyên ngành: Quản trị Kinh doanh
KHÓA LUẬN THẠC SĨ
TP HỒ CHÍ MINH, tháng 05 năm 2012
Trang 2-
NGUYỄN ANH VŨ
ỨNG DỤNG QUI TRÌNH PHÁT TRIỂN PHẦN MỀM LINH HOẠT
ĐỂ NÂNG CAO HIỆU QUẢ TRONG QUẢN LÝ DỰ ÁN PHẦN MỀM
TẠI CÔNG TY CỔ PHẦN VNG (VNG CORPORATION) Chuyên ngành: Quản trị Kinh doanh
KHÓA LUẬN THẠC SĨ
TP HỒ CHÍ MINH, tháng 05 năm 2012
Trang 3CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Cán bộ hướng dẫn khoa học: TS Phạm Quốc Trung
Cán bộ chấm nhận xét 1: PGS TS Lê Nguyễn Hậu
Cán bộ chấm nhận xét 2: TS Nguyễn Thanh Hùng
Khóa luận thạc sĩ được bảo vệ/nhận xét tại HỘI ĐỒNG CHẤM BẢO VỆ KHÓA LUẬN THẠC SĨ TRƯỜNG ĐẠI HỌC BÁCH KHOA,
ngày 25 tháng 05 năm 2012
Thành phần hội đồng đánh giá khóa luận thạc sĩ gồm:
1 Chủ tịch: PGS TS Lê Nguyễn Hậu
2 Thư ký: TS Nguyễn Thanh Hùng
3 Ủy viên: TS Phạm Quốc Trung
Trang 4TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc Lập - Tự Do - Hạnh Phúc
Tp HCM, ngày 25 tháng 05 năm 2012 NHIỆM VỤ KHÓA LUẬN THẠC SĨ Họ và tên học viên: NGUYỄN ANH VŨ Giới tính: Nam
Ngày, tháng, năm sinh: 19/03/1984 Nơi sinh: Bình Thuận
Chuyên ngành: Quản trị Kinh doanh MSHV: 10170854
Khoá (Năm trúng tuyển): 2010
1- TÊN ĐỀ TÀI: Ứng dụng qui trình phát triển phần mềm linh hoạt để nâng cao hiệu quả
trong quản lý dự án phần mềm tại công ty Cổ phần VNG (VNG Corporation)
2- NHIỆM VỤ KHÓA LUẬN:
Nhiệm vụ của khóa luận bao gồm các phần sau đây:
(1) Tìm hiểu Qui trình phát triển phần mềm linh hoạt (Agile);
(2) Xác định thực trạng quản lý dự án phần mềm tại công ty Cổ phần VNG;
(3) Phân tích và đánh giá các vấn đề tồn tại tại công ty;
(4) Đưa ra các giải pháp và lựa chọn giải pháp;
(5) Ứng dụng triển khai thử nghiệm Agile tại công ty và đánh giá kết quả thử nghiệm; (6) Đưa ra các nhận xét, kết luận và kiến nghị
3- NGÀY GIAO NHIỆM VỤ: 05/12/2011
4- NGÀY HOÀN THÀNH NHIỆM VỤ: 08/04/2012
5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: Tiến sĩ Phạm Quốc Trung
Nội dung và đề cương Khóa luận thạc sĩ đã được Hội Đồng Chuyên Ngành thông qua
Phạm Quốc Trung
Trang 5LỜI CẢM ƠN
Trong quá trình thực hiện đề tài Khóa luận này, Tác giả nhận được rất nhiều
sự giúp đỡ của nhiều thầy cô, đồng nghiệp, gia đình và bạn bè thương mến Tác giả rất trân trọng và xin phép cảm ơn:
Tiến sĩ Phạm Quốc Trung – Khoa Quản lý Công nghiệp, trường Đại học Bách khoa Thành phố Hồ Chí Minh – dù rất bận rộn với công việc và gia đình, song vẫn dành cho Tác giả sự quan tâm rất lớn trong suốt quá trình thực hiện
đề tài này Thầy là người luôn theo sát và kịp thời hướng Tác giả đi theo đúng mục tiêu đề ra
Tiến sĩ Nguyễn Thanh Hùng và Tiến sĩ Nguyễn Mạnh Tuân – Khoa Quản lý Công nghiệp, trường Đại học Bách khoa Thành phố Hồ Chí Minh – đã có những nhận xét quý báu, giúp tác giả hoàn thiện về phương pháp nghiên cứu cũng như nội dung đề tài
Các đồng nghiệp trong bộ phận phát triển phần mềm tại công ty Cổ phần VNG (VNG Corporation) đã nhiệt tình giúp đỡ Tác giả trong công tác thu thập
số liệu và nghiên cứu tại bộ phận
Các Thầy, Cô trong khoa Quản lý Công nghiệp, trường Đại học Bách khoa Thành phố Hồ Chí Minh đã cung cấp nhiều kiến thức chuyên ngành, giúp Tác giả
có được phương pháp và nền tảng trong quá trình thực hiện đề tài
Ngoài ra, gia đình đã tạo động lực và điều kiện giúp Tác giả an tâm
và tập trung trong thời gian thực hiện đề tài
Tất cả đã giúp Tác giả hoàn tất đề tài khóa luận theo một cách tốt nhất có thể Cuối cùng, Tác giả kính chúc quý Thầy, Cô dồi dào sức khỏe và thành công trong sự nghiệp cao quý Đồng kính chúc các Anh, Chị và các đồng nghiệp trong bộ phận phát triển phần mềm công ty Cổ phần VNG luôn dồi dào sức khỏe, đạt được nhiều thành công tốt đẹp trong công việc Kính chúc các thành viên trong gia đình dồi dào sức khỏe và luôn vui vẻ, hạnh phúc
Trân trọng kính chào, Nguyễn Anh Vũ
Trang 6LỜI CAM ĐOAN
Tôi, Nguyễn Anh Vũ, xin cam đoan: Khóa luận “Ứng dụng qui trình phát triển phần mềm linh hoạt để nâng cao hiệu quả trong quản lý dự án phần mềm tại công ty Cổ phần VNG (VNG Corporation)” là công trình
nghiên cứu khoa học của riêng tôi Các số liệu nêu ra và trích dẫn trong Khóa luận là trung thực Toàn bộ kết quả nghiên cứu của Khóa luận chưa từng được bất cứ ai khác công bố tại bất cứ công trình nào
Tp HCM, ngày 08 tháng 04 năm 2012
Tác giả Khóa luận,
Nguyễn Anh Vũ
Trang 7TÓM TẮT
Qui trình phát triển/xây dựng phần mềm (Software Development/ Engineering Process - SEP) đang ngày càng trở nên cần thiết và có tính chất quyết định để tạo ra sản phẩm chất luợng tốt với chi phí thấp và năng suất cao cho tổ chức sử dụng Tuy nhiên, việc xác định đúng qui trình phù hợp với tính chất và loại dự án trong tổ chức là một vấn đề khó khăn cho cho bất kỳ doanh nghiệp nào, đặc biệt là doanh nghiệp có các dự án phần mềm vừa và nhỏ Trong đó, công ty cổ phần VNG (VNG Corporation) với rất nhiều dự án phần mềm dạng web có qui mô vừa và nhỏ, cũng không phải là một ngoại lệ Bằng cách tiếp cận và phân tích những vấn đề mà công ty VNG đang gặp phải trong các dự án phần mềm web tại công ty, nguyên nhân dẫn đến hiệu quả các dự án không cao dần được làm rõ, cho thấy phần lớn các nguyên nhân đều qui về qui trình phát triển phần mềm đang được sử dụng không còn phù hợp với yêu cầu ngày càng cao và linh hoạt của các dự án tại bộ phận phát triển phần mềm Thông qua tìm hiểu, phân tích và đánh giá phương pháp phát triển phần mềm linh hoạt (Agile) so với các phương pháp khác, cho thấy Agile là phương pháp phát triển phần mềm tiên tiến, có nhiều điểm nổi bật và phù hợp với các dự án có qui mô vừa và nhỏ Trong bài viết này, Agile được đề xuất như là một giải pháp để khắc phục các vấn đề về qui trình phát triển phần mềm tại công ty VNG, góp phần giải quyết phần lớn các vấn đề
về hiệu quả của các dự án tại công ty Hơn nữa, một dự án thử nghiệm dựa trên qui trình phát triển phần mềm linh hoạt cũng được lên kế hoạch và thực hiện
để củng cố thêm cho giải pháp Với kết quả đáp ứng được các yêu cầu đề ra
và thỏa mãn ba tiêu chí đánh giá chất lượng dự án phần mềm, dự án thử nghiệm cho thấy tính khả thi của việc ứng dụng Agile trong qui trình phát triển phần mềm tại công ty VNG trên thực tế
Trang 8ABSTRACT
Software development/engineering process (SEP) becomes more and more necessary and is the key factor to create a better quality product with low costs and high productivity However, how to choose the process which is suitable to properties and types of projects of organization is a difficult problem for many enterprises, especially for enterprise with small and medium software projects VNG Corporation, an enterprise with a lot of small and medium web forms software projects, is not an exception
By approaching and analyzing the problem that VNG is facing in software projects, the causes of ineffective projects are clarified gradually Almost the causes belong to software development process The software development process being used is no longer consistent with the increasing requirements and flexibilities of the project in the software development department After researching, analyzing, evaluating and comparing Agile to other software methods, Agile is an advanced software development method, has many pros points and consitent with small and medium software projects In this research, Agile is suggested as a method to overcome problems in the software development process at VNG company, and to solve requirements of high effectiveness of projects Moreover, a prototyped project based on flexible software development process is also planned and proceeded to consolidate the solution Because the result meets all requirements and satisfies three criterias of software project quality, a prototyped project prove the feasibility of applying Agile in software development process at VNG company in practice
Trang 9MỤC LỤC
CHƯƠNG 1 TỔNG QUAN - GIỚI THIỆU ĐỀ TÀI 1
1.1 Lý do hình thành đề tài 1
1.2 Tên đề tài 2
1.3 Mục tiêu 2
1.4 Đối tượng nghiên cứu 2
1.5 Phạm vi thực hiện 3
1.6 Phương pháp nghiên cứu 3
1.7 Ý nghĩa đề tài 5
1.8 Các bước thực hiện 6
1.9 Bố cục đề tài 7
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 8
2.1 Qui trình phát triển phần mềm linh hoạt 8
2.1.1 Giới thiệu 8
2.1.2 Tuyên ngôn Agile (Agile Manifesto) 9
2.1.3 Nguyên lý Agile (Agile Principles) 11
2.1.4 Đặc trưng Agile 12
2.1.5 Các phương pháp Agile 13
2.2 Một số qui trình phát triển phần mềm khác 16
2.3 Giới thiệu Capability Maturity Model Integration (CMMI) 18
2.4 So sánh các mô hình 19
2.5 Thành công của dự án phần mềm 22
CHƯƠNG 3 HIỆN TRẠNG CÔNG TY CỔ PHẦN VNG 25
3.1 Tổng quan 25
3.2 Hiện trạng 26
3.3 Qui trình phát triển phần mềm công ty VNG 29
3.4 Phân tích vấn đề 30
3.5 Nhận diện và phân tích giải pháp 33
Trang 10CHƯƠNG 4 ỨNG DỤNG AGILE TRONG CÁC DỰ ÁN PHẦN MỀM TẠI
CÔNG TY CỔ PHẦN VNG 36
4.1 Đánh giá mức độ phù hợp 36
4.2 Kế hoạch ứng dụng 39
4.3 Hiệu quả sau khi ứng dụng 42
4.4 Kết quả triển khai thử nghiệm 44
CHƯƠNG 5 KẾT LUẬN 49
5.1 Kết quả đạt được 49
5.2 Hạn chế của đề tài 50
5.3 Hướng phát triển của đề tài 50
Phụ lục A Danh sách các nhà phát triển phần mềm đưa ra tuyên ngôn Agile 51
Phụ lục B Bảng câu hỏi phỏng vấn về thực trạng của bộ phận 51
Phụ lục C Bảng câu hỏi phỏng vấn về bài học kinh nghiệm 55
Phụ lục D Bảng câu hỏi phỏng vấn về sự phù hợp ứng dụng Agile 59
TÀI LIỆU THAM KHẢO 62
Trang 11DANH MỤC HÌNH
Hình 1.1 Các bước thực hiện đề tài 6
Hình 2.1 Phương pháp Agile 9
Hình 2.2 Qui trình Scrum 13
Hình 2.3 Vòng đời của qui trình XP 15
Hình 2.4 Mô hình thác nước (Waterfall) 16
Hình 2.5 Mô hình chữ V 16
Hình 2.6 Mô hình prototype 17
Hình 2.7 Mô hình tiến hóa 17
Hình 2.8 Qui trình RUP 18
Hình 2.9 Các cấp độ của CMMI 19
Hình 2.10 Ba loại thành công của một dự án phần mềm 23
DANH MỤC BẢNG BIỂU Bảng 2.1 Tuyên ngôn Agile 10
Bảng 2.2 So sánh các mô hình (1) 20
Bảng 2.3 So sánh các mô hình (2) 21
Bảng 2.4 So sánh các mô hình (3) 22
Bảng 4.1 Kết quả ứng dụng Agile (thành công về tổ chức) 45
Bảng 4.2 Kết quả ứng dụng Agile (thành công về kỹ thuật) (1) 46
Bảng 4.3 Kết quả ứng dụng Agile (thành công về kỹ thuật) (2) 47
Bảng 4.4 Kết quả ứng dụng Agile (thành công về cá nhân) 48
Trang 12CHƯƠNG 1 TỔNG QUAN - GIỚI THIỆU ĐỀ TÀI 1.1 Lý do hình thành đề tài
Trong thời gian từ năm 2009 đến năm 2011, bộ phận phát triển website của công ty Cổ phần VNG (VNG Corporation, gọi tắt và VNG) nhận được hơn 20 yêu cầu phát triển các sản phẩm từ phía khách hàng nội bộ (Nguồn: Thông tin bộ phận phát triển phần mềm VNG) Tuy nhiên, có đến 30%
dự án không hoàn thành đúng tiến độ đề ra Một phần nguyên nhân là do hạn chế
về mặt kỹ thuật của các thành viên, nhưng phần lớn vẫn là những thay đổi đến từ phía khách hàng trong quá trình phát triển sản phẩm (Trung bình có từ
5 đến 10 thay đổi cho các sản phẩm có thời gian thực hiện 1 tháng - Nguồn: Thông tin thống kê và phân tích từ bộ phận phát triển phần mềm VNG) Điều này
đã gây nên những gia tăng về chi phí thực hiện dự án (Trung bình tăng 20%
so với dự kiến ban đầu - Nguồn: Thông tin bộ phận phát triển phần mềm VNG), đồng thời cũng gây ảnh hưởng chung đến công ty trong kế hoạch giới thiệu sản phẩm đến người dùng cuối, dẫn đến giải pháp tạm thời được sử dụng khá nhiều cho các dự án trễ hạn: Thiết lập các trang giả (nội dung tĩnh)
để thay thế cho sản phẩm chưa xuất bản kịp
Ngoài ra, cũng như những công ty về phát triển phần mềm ở Việt Nam, VNG vẫn còn tồn tại những qui trình không thống nhất, không chuẩn trong quản lý các dự án phần mềm, là một trong những nguyên nhân chính, góp phần tạo nên những vấn đề trên
Bên cạnh đó, qui trình phát triển phần mềm linh hoạt (Agile) ra đời
đã bổ sung thêm một giải pháp lựa chọn cho các công ty phần mềm Với sự linh hoạt tối đa, Agile đã thuyết phục được sự hợp tác của các công ty phần mềm trong việc triển khai qui trình Nhiều diễn đàn về Agile (đại diện
có nhóm Hanoi Scrum ở Hà Nội, Agile forum Vietnam ở TP HCM, hai nhóm này đã thu hút trên 300 thành viên) được xây dựng, thu hút đông đảo
Trang 13thành viên, số lượng bài viết ngày càng tăng, đã tạo nên một cộng đồng phát triển mạnh cho Agile tại Việt Nam
Đứng trước nhu cầu chuẩn hóa qui trình phát triển phần mềm trong bộ phận phát triển phần mềm tại công ty và nhận ra tính ưu việt của Agile, đề tài
“Ứng dụng qui trình phát triển phần mềm linh hoạt để nâng cao hiệu quả trong quản lý dự án phần mềm tại công ty Cổ phần VNG (VNG Corporation)” được đưa ra với mong đợi giải quyết các vấn đề tồn tại ở trên và xa hơn
là cải thiện hiệu quả của các dự án phần mềm của công ty trong tương lai
Chi tiết hơn, mục tiêu của đề tài này bao gồm: (1) Tìm hiểu Qui trình phát triển phần mềm linh hoạt (Agile); (2) Xác định thực trạng quản lý dự án phần mềm tại công ty Cổ phần VNG: những hạn chế về chất lượng, thời gian
và chi phí; (3) Qua đó, xây dựng kế hoạch triển khai chi tiết cho qui trình phát triển phần mềm linh hoạt vào các dự án phần mềm tại công ty; (4) Triển khai thử nghiệm và đánh giá
1.4 Đối tượng nghiên cứu
Các thành viên tham gia vào các dự án phần mềm web (bao gồm thành viên
bộ phận và khách hàng) tại bộ phận phát triển phần mềm của công ty Cổ phần VNG (VNG Corporation)
Trang 141.5 Phạm vi thực hiện
Đề tài này được thực hiện với phạm vi trong bộ phận phát triển phần mềm ứng dụng Web tại công ty Cổ phần VNG, chi nhánh Thành phố Hồ Chí Minh
1.6 Phương pháp nghiên cứu
Đề tài được thực hiện qua 3 giai đoạn:
Giai đoạn tổng hợp lý thuyết và thu thập dữ liệu
Thu thập số liệu là một công việc quan trọng trong nghiên cứu khoa học (NCKH) Mục đích của thu thập số liệu (từ các tài liệu NCKH có trước,
từ quan sát và thực hiện thí nghiệm) là để làm cơ sơ lý luận khoa học hay luận cứ chứng minh giả thuyết hay tìm ra vấn đề cần nghiên cứu
Tổng hợp lý thuyết về Qui trình phát triển phần mềm linh hoạt (Agile) thông qua các thông tin thứ cấp: bài báo, tạp chí khoa học công nghệ, trang web chính thức của Agile
Tổng hợp những điểm chính về các qui trình phát triển phần mềm khác thông qua các thông tin thứ cấp: bài báo, tạp chí khoa học công nghệ
Thu thập số liệu thống kê kết quả dự án tại nhóm phát triển phần mềm web của công ty VNG qua phỏng vấn sâu các thành viên quản lý của
dự án (project manager, 3-5 người)
Thu thập những bài học đúc kết (lesson learnt) từ các dự án
đã hoàn thành, thông qua phỏng vấn các thành viên trong nhóm phát triển phần mềm web tại công ty (10-15 người)
Số lượng dự án ước lượng tham gia đánh giá: 20 dự án (từ năm 2009 đến năm 2011)
Kết thúc giai đoạn này là các thông tin thống kê về mặt lý thuyết cho qui trình dự định ứng dụng (Agile) và đánh giá hiện trạng của đối tượng dự định ứng dụng qui trình (bộ phận phát triển phần mềm tại công ty VNG)
Trang 15Giai đoạn xử lý số liệu và đề xuất giải pháp
Đánh giá những thông tin (khó khăn) thu được tại công ty
từ giai đoạn trên, tìm giải pháp khắc phục từ qui trình Agile qua những thông tin mô tả về Agile
Phỏng vấn sâu các chuyên gia (3 người) tại công ty để xác định cấu trúc và khuôn mẫu theo Agile cần thay đổi khi áp dụng vào
bộ phận phát triển phần mềm
Đánh giá khả năng có thể áp dụng qui trình thông qua phân tích các kết quả phỏng vấn và dữ liệu nội bộ, qua đó, tìm các đặc điểm, yêu cầu cần chuẩn bị trước trong kế hoạch áp dụng qui trình Agile vào bộ phận phát triển phần mềm
Đề xuất giải pháp thông qua các dữ liệu trên
Kết thúc giai đoạn này là bản đề xuất giải pháp ứng dụng qui trình phát triển phần mềm Agile vào bộ phận phát triển phần mềm tại công ty
Cổ phần VNG
Giai đoạn triển khai thử nghiệm giải pháp đề xuất tại công ty
Dự án triển khai thử nghiệm là một dự án mới, có qui mô nhỏ (5 developers, thời gian hoàn thành dự kiến là 2 tháng) tại bộ phận phát triển phần mềm ứng dụng web
Lên kế hoạch triển khai và đánh giá hiệu quả của dự án qua các giá trị chất lượng sản phẩm đầu ra, so sánh với mục tiêu đề ra ban đầu
Đánh giá kết quả triển khai thử nghiệm dựa trên các tiêu chí
về chất lượng dự án và các tính chất liên quan qua việc so sánh giữa hai nhóm dự án: nhóm dự án có ứng dụng Agile và nhóm dự án không có ứng dụng Agile Các dự án trong cả hai nhóm có cùng phạm vi, thời gian thực hiện, thành viên tham gia và mức độ
kỹ thuật
Trang 161.7 Ý nghĩa đề tài
Trong bối cảnh qui trình phát triển phần mềm tại bộ phận phát triển phần mềm ứng dụng web của công ty Cổ phần VNG chưa có sự chuẩn hóa, kết hợp với vấn đề về kỹ thuật và con người, bộ phận đang phải đối mặt với nhiều khó khăn và thử thách trong việc quản lý các dự án với nhu cầu phát triển nhanh và thường phải đáp ứng nhiều thay đổi Song song đó, mô hình thác nước được ứng dụng tại bộ phận đã không còn phù hợp với định hướng và tính chất của các dự án hiện tại, gián tiếp gây nên nhiều vấn đề về chất lượng của sản phẩm của dự án Đề tài “Ứng dụng qui trình phát triển phần mềm linh hoạt để nâng cao hiệu quả trong quản lý dự án phần mềm tại công ty
Cổ phần VNG (VNG Corporation)” được thực hiện với mong muốn giải quyết những vấn đề mà bộ phận đang gặp phải, nâng cao hiệu quả hoạt động của bộ phận, kích thích tăng hiệu suất làm việc của các thành viên, qua đó tạo ra các dự án với chi phí thấp và chất lượng cao, thỏa mãn nhu cầu ở mức độ cao
từ phía khách hàng Ngoài ra, ứng dụng Agile cũng giúp chuẩn hóa qui trình của bộ phận, có ý nghĩa rất lớn trong công tác vận hành và phát triển của bộ phận trong tương lai
Trang 171.8 Các bước thực hiện
Tổng hợp lý thuyết các quitrình phát triền phần mềm
Tìm hiểu quy trình phát triển phần mềm hiện tại
tại bộ phận phát triển phần mềm ứng dụng web
của công ty Cổ phần VNG(VNG Corporation)
web tại công ty
So sánh ưu và nhược điểm qua các yếu tố của dự án khi
Trang 18Vì đây là đề tài ứng dụng nên phần cơ sở lý thuyết tiếp theo mang đến những khái niệm và các giá trị liên quan về qui trình sẽ được nghiên cứu ứng dụng – qui trình phát triển phần mềm linh hoạt (Agile) Ngoài ra, việc tiếp cận và tìm hiểu sơ lược, cũng như so sánh ưu và nhược điểm các qui trình phát triển phần mềm khác so với Agile, giúp cho người đọc hiểu rõ hơn về qui trình được nghiên cứu và ứng dụng trong đề tài
Xác định hiện trạng công ty Cổ phần VNG (VNG Corporation)
là phần tiếp theo, hướng người đọc quay lại với mục tiêu của đề tài: ứng dụng qui trình phát triển phần mềm linh hoạt (Agile) vào bộ phận phát triển phần mềm tại công ty VNG Bằng việc phân tích các vấn đề đang tồn tại ngay sau phần giới thiệu tổng quan về công ty và bộ phận phát triển phần mềm ứng dụng,
đã mang lại cho người đọc lý do hình thành của đề tài Tiếp theo sau
là phần phân tích vấn đề mà bộ phận đang gặp phải, qua đó, người đọc hiểu rõ hơn về các phương pháp giải quyết vấn đề mà đề tài muốn đề cập, cũng như làm rõ nhu cầu ứng dụng Agile
Giai đoạn tiếp theo được thực hiện thông qua việc triển khai thử nghiệm Agile tại bộ phận phát triển phần mềm ứng dụng web Các phần đánh giá mức độ phù hợp củng cố thêm cơ sở cho phần lên kế hoạch triển khai thử nghiệm Hiệu quả và kết quả triển khai thử nghiệm cũng được làm rõ để đánh giá kết quả của đề tài, củng cố quan điểm ứng dụng mà đề tài đưa ra ban đầu
Trang 19CHƯƠNG 2
CƠ SỞ LÝ THUYẾT 2.1 Qui trình phát triển phần mềm linh hoạt
2.1.1 Giới thiệu
Phát triển phần mềm linh hoạt (Agile software development – gọi tắt là Agile) là “một 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 (Iterative) và tiệm tiến (Incremental), 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” (Dương, 2011) Đồng thời, Agile cũng là triết lý (philosophy), là cách “tư duy” cho việc phát triển các dự án phần mềm, được cụ thể hóa bởi một số phương pháp phát triển phần mềm (method), chẳng hạn như Extreme Programming (XP) hay Scrum, gọi tắt là các phương pháp Agile Triết lý Agile được đưa ra trong một bản tuyên ngôn (manifesto) gồm bốn điểm và được làm rõ hơn bởi mười hai quy tắc
Agile ra đời trong bối cảnh nhu cầu tăng cao của của cộng đồng phát triển phần mềm vào đầu những năm 90 là cần có một phương pháp phát triển phần mềm nhanh và có tính linh hoạt cao, khắc phục những yếu điểm
mà mô hình thác nước đang tồn tại, bên cạnh đó, cần hướng tới chất lượng sản phẩm phần mềm tạo ra Như nhóm tác giả Abrahamsson, Salo, Ronkainen,
và Warsta (2002) đã nói: Agile là biểu thị cho chất lượng, nhanh nhẹn và khéo léo trong chuyển động, là các phương pháp phát triển phần mềm đang
cố gắng trả lời cho mong muốn của cộng đồng các doanh nghiệp: một qui trình phát triển phần mềm nhỏ gọn và nhanh nhẹn hơn
Agile hướng những kế hoạch đến khả năng đáp ứng tốt với sự thay đổi, chú trọng đến sự tương tác giữa các bên, sử dụng khung thời gian ngắn, phát triển và chuyển giao theo hướng tiến hóa và liên tục
Trang 20Hình 2.1 Phương pháp Agile
(Wikipedia, 2011) Mỗi phương pháp Agile bao gồm một tập hợp các quy tắc (pratice), chẳng hạn quy tắc về sử dụng công cụ quản lý mã nguồn, quy tắc về các chuẩn lập trình hay quy tắc trình diễn sản phẩm hàng tuần cho khách hàng (Shore & Warden, 2007)
Qui trình phát triển phần mềm linh hoạt là qui trình phát triển phần mềm theo phương pháp Agile Theo đó, mỗi dự án (hay sản phẩm) sẽ được chia nhỏ thành nhiều phần theo chức năng Mỗi phần được thực hiện như một sản phẩm hoàn chỉnh và được thực hiện trong phạm vi thời gian ngắn (từ 2 đến 4 tuần) Các phần của sản phẩm (cũng là một sản phẩm hoàn chỉnh với qui mô nhỏ hơn)
sẽ được chuyển giao cho khách hàng sử dụng, phản hồi và cập nhật Song song đó, các phần (chức năng) tiếp theo sẽ được tiếp tục đưa vào phát triển Quá trình này lặp lại nhiều lần cho đến khi sản phẩm cuối cùng hoàn chỉnh
2.1.2 Tuyên ngôn Agile (Agile Manifesto)
“Tuyên ngôn Agile được xuất bản bởi một nhóm những người thực hiện
và các chuyên gia tư vấn trong lĩnh vực phần mềm trong năm 2001” (Abrahamsson, Salo, Ronkainen & Warsta, 2002) Theo đó, ý nghĩa cụ thể của tuyên ngôn được nhóm tác giả trình bày như sau:
Trang 21Bảng 2.1 Tuyên ngôn Agile
Chúng tôi đã phát hiện ra cách phát triển phần mềm tốt hơn bằng cách
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:
Con người và sự tương tác hơn là qui 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
(Cunningham, 2001) Điều thứ nhất, Agile nhấn mạnh mối quan hệ và tính cộng đồng của những nhà phát triển phần mềm, nêu cao vai trò con người trong các hợp đồng hơn
so với quan điểm lấy qui trình và công cụ làm gốc Điều này thể hiện qua các mối quan hệ chặt chẽ của nhóm, qua môi trường làm việc được sắp xếp gần nhau
và các thủ tục thúc đẩy, động viên tinh thần của nhóm
Điều thứ hai, mục tiêu quan trọng của nhóm phần mềm là liên tục
và thường xuyên đưa ra các phần mềm đã qua kiểm thử Các nhà phát triển được khuyến khích viết mã (code) đơn giản, dễ hiểu và mức kỹ thuật cao nhất có thể để làm giảm gánh nặng trong việc tài liệu hóa
Điều thứ ba, nhấn mạnh quan hệ hợp tác giữa khách hàng và các nhà phát triển phần mềm thông qua đàm phán riêng Trên quan điểm kinh doanh, Agile tập trung vào việc chuyển giao các giá trị kinh doanh ngay từ thời điểm
dự án bắt đầu, làm giảm các nguy cơ không được thực hiện theo hợp đồng
Điều thứ tư, nhóm phát triển (bao gồm nhà phát triển phần mềm và đại diện khách hàng) nên có đầy đủ thông tin, thẩm quyền và được quyền xem xét nhu cầu thay đổi trong quá trình phát triển của sản phẩm Điều này có nghĩa là các bên luôn được chuẩn bị để thực hiện các thay đổi yêu cầu
Trang 222.1.3 Nguyên lý Agile (Agile Principles)
Theo Cunningham (2001), để hướng đến tuyên ngôn Agile ở trên, các nhà sáng lập đã đưa ra mười hai nguyên lý sau:
1 Ư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ị
2 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 qui 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
3 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
4 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 dự án
5 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 và sự hỗ trợ cần thiết, và tin tưởng họ để hoàn thành công việc
6 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
7 Phần mềm chạy tốt là thước đo chính của tiến độ
8 Các qui 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
9 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
10 Sự đơn giản – nghệ thuật tối đa hóa lượng công việc chưa xong –
Trang 232.1.4 Đặc trưng Agile
Với tính linh hoạt cao, Agile có những nét đặc trưng mà theo Dương (2011) bao gồm những điều sau:
Tính lặp (Iterative): Agile chia nhỏ quá trình phát triển dự án
ra nhiều phân đoạn (Sprint), có đầy đủ các công việc phát triển dự án như: lập kế hoạch, phân tích yêu cầu, thiết kế, lập trình và kiểm thử
Tính tiến hóa (Evolutionary): Kết quả sau mỗi phân đoạn
là một hay nhiều module (là một phần hoàn chỉnh của sản phẩm cuối) giúp cho khách hàng có cái nhìn trực quan về sản phẩm, qua đó thấy từng bước hoàn thiện và có những thay đổi kịp thời cho các module sau, giúp cho sản phẩm có chất lượng tốt nhất, thỏa mãn nhất yêu cầu của khách hàng
Tính thích nghi (Adaptive): Nhà quản lý dự án có thể nắm bắt tốt hơn
về kế hoạch, quản lý rủi ro trong từng phân đoạn ngắn, qua đó có thể thay đổi cho phù hợp với tình hình thực tế
Cấu trúc nhóm: Linh hoạt, liên kết với nhau tốt Công việc của mỗi nhóm do các thành viên tự thiết kế và quản lý, giữa các nhóm trao đổi với nhau thông qua các mẫu (prototype) thỏa thuận
Quản lý tiến trình thực nghiệm (Empirical Process Control): Các nhóm Agile ra các quyết đị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 giả định
Giao tiếp trực diện: Agile đánh giá cao hơn việc giao tiếp trực diện thay vì gián tiếp thông qua giấy tờ giữa các thành viên trong nhóm, giữa các nhóm với nhau và giữa bộ phận phát triển với khách hàng, điều này làm chậm quá trình tiếp nhận thông tin và xử lý
Phát triển dựa trên giá trị (Value-based): Theo nguyên lý thứ 7
của Agile - “phần mềm chạy tốt chính là thước đo của tiến độ”, giá trị
sản phẩm sau mỗi phân đoạn, cũng như sản phẩm hoàn chỉnh cuối cùng
là yêu cầu cao nhất của khách hàng
Trang 242.1.5 Các phương pháp Agile
2.1.5.1 Phương pháp Scrum
Giới thiệu: Scrum là một cách tiếp cận nhanh để phát triển phần mềm
theo triết lý của Agile, sử dụng cơ chế lặp (Iterative) và tăng dần (Incremental) để tối ưu hóa hiệu quả và kiểm soát rủi ro
Hình 2.2 Qui trình Scrum
(Abrahamsson, Salo, Ronkainen & Warsta, 2002) Theo phương pháp Agile, dự án phần mềm được chia nhỏ thành nhiều phân đoạn, mỗi phân đoạn là một quá trình phát triển phần mềm thu nhỏ, với đầy đủ các công đoạn từ tiếp nhận yêu cầu, phân tích thiết kế, lập trình, kiểm thử và chuyển giao Các phân đoạn này được gọi là Sprint
Giá trị cốt lõi:
- Minh bạch (transparency): Các thông tin trong quá trình phát triển
sản phẩm phải minh bạch giữa các bên, các thành viên trong nhóm
và giữa các nhóm
Trang 25- Thanh tra (inspection): Tính cải tiến liên tục, thích nghi với
sự thay đổi đòi hỏi Scrum phải thanh tra, kiểm soát chặt chẽ tiến độ công việc cam kết
- Thích nghi (adaptation): Đáp ứng nhanh sự thay đổi từ khách hàng,
qua đó đem lại giá trị cao cho sản phẩm cũng như gia tăng sự hài lòng
từ khách hàng
Các vai trò trong Scrum:
- Product Owner (chủ sản phẩm): Là người chịu trách nhiệm
về sự thành công của dự án, người định nghĩa các yêu cầu và đánh giá cuối cùng đầu ra của các nhà phát triển phần mềm
- Scrum Master: Là người có hiểu biết sâu sắc về Scrum và đảm bảo
nhóm có thể làm việc hiệu quả với Scrum
- TeamMember (nhóm phát triển): Một nhóm liên chức năng
(cross-functional) tự quản lý để hiện thực hóa các yêu cầu
Các cuộc họp trong Scrum: Nhằm tạo ra luồng thông tin gắn kết
trong quá trình phát triển sản phẩm, Scrum đưa ra bốn “cuộc họp”
(ceremony) trong nhóm như sau:
- Sprint Planning (Họp Kế hoạch Sprint): Lập kế hoạch cho từng Sprint
(từng phân đoạn phát triển ngắn hạn) thông qua tương tác với khách hàng nhằm làm rõ những yêu cầu cần thiết ưu tiên kế tiếp
- Daily Scrum (Họp Scrum hằng ngày): Họp chia sẻ tiến độ công việc
trong nhóm phát triển, nhằm phát hiện ra những rủi ro, khó khăn
và kịp thời khắc phục
- Sprint Review (Họp Sơ kết Sprint): Họp đánh giá kết quả hoàn thành
cho một phân đoạn
- Sprint Retrospective (Họp Cải tiến Sprint): Họp tìm ra những
trạng thái cần cải tiến cho phần sản phẩm của phân đoạn vừa kết thúc
Trang 26Các tài liệu trong Scrum: Scrum sử dụng các công cụ rất đơn giản
nhưng hiệu quả để trợ giúp công việc Chúng bao gồm bản yêu cầu của chủ sản phẩm (Product backlog), bản kế hoạch của từng Sprint
(Sprint backlog) và biểu đồ Burndown chart
- Product backlog: Các yêu cầu chức năng của hệ thống, của module
cần thực hiện trong sprint ScrumMaster sẽ sắp xếp thứ tự ưu tiên các nhiệm vụ cần làm (thông qua tương tác trực tiếp với khách hàng
để xác định giá trị cần đạt được của module)
- Sprint backlog: Chi tiết danh sách công việc cần phải làm trong sprint
- Burndown chart: Biểu đồ thể hiện khối lượng công việc cũng như thời gian còn lại của dự án
2.1.5.2 Extreme Programming (XP)
XP là một cách tiếp cận nhanh để phát triển phần mềm tuân thủ triết lý Agile XP hoạt động theo mô hình lặp và tăng trưởng Sản phẩm được chia ra thành các phần tăng trưởng nhỏ, mỗi phần được phát triển trong vòng một hoặc vài tuần gọi là một phân đoạn lặp (Iteration) Mỗi phân đoạn là một quá trình hoàn chỉnh từ khâu lên kế hoạch đến khâu kiểm thử sản phẩm
Hình 2.3 Vòng đời của qui trình XP
(Abrahamsson, Salo, Ronkainen & Warsta, 2002)
Trang 27Chính vì việc cập nhật từng phần nhỏ hoàn chỉnh của sản phẩm giúp cho khách hàng có những thay đổi, hiệu chỉnh phù hợp cho sản phẩm cuối và cũng giúp cho nhóm phát triển đáp ứng tốt những thay đổi này trong các phân đoạn tiếp theo
2.2 Một số qui trình phát triển phần mềm khác
Mô hình thác nước (Waterfall)
Hình 2.4 Mô hình thác nước (Waterfall)
Trang 28Trong mô hình Waterfall, kiểm thử được thực hiện trong một giai đoạn riêng biệt Còn với mô hình chữ V, toàn bộ qui trình được chia thành hai nhóm giai đoạn tương ứng nhau: phát triển và kiểm thử Mỗi giai đoạn phát triển
sẽ kết hợp với một giai đoạn kiểm thử tương ứng như được minh họa trong hình trên
Mô hình mẫu (Prototype)
Hình 2.6 Mô hình prototype
(Cao, 2005) Qui trình được bắt đầu bằng việc thu thập yêu cầu với sự có mặt của đại diện của cả phía phát triển lẫn khách hàng nhằm định ra mục tiêu tổng thể của hệ thống phần mềm sau này, đồng thời ghi nhận tất cả những yêu cầu có thể biết được và sơ luợc những nhóm yêu cầu nào cần phải được làm rõ
Sau đó, thực hiện thiết kế nhanh tập trung chuyển tải những khía cạnh thông qua prototype để khách hàng có thể hình dung, đánh giá giúp hoàn chỉnh yêu cầu cho toàn hệ thống phần mềm Việc này không những giúp tinh chỉnh yêu cầu, mà đồng thời giúp cho đội ngũ phát triển thông hiểu hơn những gì cần được phát triển Tiếp theo sau giai đoạn làm prototype này có thể
là một chu trình theo mô hình waterfall hay cũng có thể là mô hình khác
Mô hình tiến hóa
Hình 2.7 Mô hình tiến hóa
(Cao, 2005)
Trang 29Mô hình này thực sự cũng là một dạng dựa trên mô hình mẫu, tuy nhiên
có sự khác biệt:
• Mô hình tiến hóa xây dựng nhiều phiên bản prototype liên tiếp nhau
• Những phiên bản prototype trước sẽ được xây dựng với mục tiêu có thể tái sử dụng trong những phiên bản sau
Rational Unified Process (RUP)
Hình 2.8 Qui trình RUP
(Rational Software, 2001) RUP (Rational Unified Process) là một qui trình công nghệ phần mềm được phát triển bởi hãng Rational Software Nó cung cấp một cách tiếp cận chặt chẽ để phân công công việc và trách nhiệm trong một tổ chức phát triển phần mềm Mục tiêu của RUP là để tạo ra các phần mềm chất lượng cao đáp ứng nhu cầu của người dùng cuối với thời hạn và chi phí có thể định trước
2.3 Giới thiệu Capability Maturity Model Integration (CMMI)
CMMI (Capability Maturity Model Integration) - Mô hình trưởng thành năng lực tích hợp - là một phương pháp tiếp cận cải tiến qui trình, phương pháp này cung cấp cho các tổ chức với các yếu tố thiết yếu của qui trình hiệu quả nhằm cải thiện hiệu suất của họ CMMI dựa trên sự cải tiến qui trình, nhận diện
Trang 30điểm mạnh và điểm yếu trong qui trình của tổ chức và tiến hành thay đổi để biến những điểm yếu thành điểm mạnh (Software Engineering Institute, 2012) CMMI được Viện kỹ nghệ phần mềm Mỹ SEI (Software Engineering Institute) tại trường Đại học Carnegie Mellon ở Pittsburgh, PA phát triển
CMMI được chia thành 5 cấp độ, từ 1 đến 5, mỗi cấp độ có những qui định riêng về qui trình phát triển phần mềm Tuy nhiên, cấp độ càng cao thì qui trình càng chuẩn hóa và càng nhiều qui định cần phải đạt được trong qui trình, do đó, yêu cầu về tài liệu ghi lại cũng tăng cao, đòi hỏi phải thực hiện nghiêm ngặt
về phạm vi và lĩnh vực ứng dụng phù hợp
Trang 31tài liệu thiết kế
đầu vào và đầu ra
rõ ràng
Yêu cầu khách hàng phải được làm rõ ngay từ đầu
Quá trình kiểm thử nằm ở giai đoạn cuối nên có nguy cơ
bị bỏ qua trong trường hợp trễ hạn Nhiều rủi ro thường xảy ra vào giai đoạn gần hoàn thành sản phẩm Chi phí thay đổi cao, đáp ứng chậm
Các dự án có mức rủi ro thấp,
ít thay đổi yêu cầu
Đội ngũ phát triển phần mềm hiểu rõ các bước trong mô hình
Mẫu được thiết kế nhanh nên
có thể không phân tích kỹ yêu cầu, dẫn đến sự khác biệt giữa yêu cầu và sản phẩm mong muốn
Hệ thống chủ yếu dựa trên giao diện người dùng (GUI)
Khách hàng, nhất
là người sử dụng cuối, không thể xác định rõ ràng yêu cầu
Trang 32thể được hiện thực trong
quá trình phân tích yêu
cầu và thiết kế hệ thống
Tính chặt chẽ, minh bạch của qui trình kém
Làm chậm quá trình phân tích yêu cầu
Dự án cần chu kỳ phát triển ngắn
Đội ngũ phát triển không quen thuộc với lĩnh vực của dự án
Mô hình
RUP
Giảm rủi ro Những yêu
cầu quan trọng thường
được phát triển và chuyển
Hệ thống lớn được phát triển trong thời gian dài, khách hàng cần triển khai sớm một
số phần của hệ thống Đội ngũ phát triển quen thuộc với lĩnh vực dự án
CMMI Giảm rủi ro qua cải tiến
qui trình, yêu cầu trong
Chi phí vận hành cao
Thời gian phân bổ cho việc ghi tài liệu nhiều
Giảm tính linh hoạt trong các dự
án
Hệ thống lớn được phát triển trong thời gian dài
Phù hợp trong lĩnh vực gia công (outsourcing) Đội ngũ nhân viên được phân cấp rõ ràng,
có chuyên môn trong từng cấp
Trang 33Bảng 2.4 So sánh các mô hình (3)
Agile Khả năng thích ứng rất cao trước những
thay đổi yêu cầu Rủi ro thấp do được
quản lý tốt qua từng Sprint Thời gian
tương tác giữa các bên liên quan được
rút ngắn do tương tác trực tiếp Giảm thiểu
nhu cầu phát sinh tài liệu trong quá trình
hiện thực hóa nếu không cần thiết
Khách hàng dõi theo những bước phát
triển của sản phẩm mình yêu cầu
thông qua việc chuyển giao liên tục
các module qua từng Sprint
Yêu cầu đội ngũ phát triển phải có kinh nghiệm
Thời gian cần cho các tài liệu trong quá trình dự án đang được phát triển khá lâu
Các dự án vừa và nhỏ (số lượng thành viên trong nhóm từ 10-12 người), thời gian phát triển ngắn
2.5 Thành công của dự án phần mềm
Theo Shore và Warden (2008), quan niệm truyền thống của một dự án phần mềm được coi là thành công khi sản phẩm được giao đúng hạn, trong ngân sách cho phép và làm đúng yêu cầu của khách hàng Trên thực tế, nhiều dự án thỏa mãn tất cả các tiêu chí này nhưng vẫn bị coi là thất bại bởi phần mềm làm ra không được người dùng ưa thích hoặc không mang lại nhiều lợi ích cho các cá nhân, tổ chức sử dụng
Đồng thời, Shore và Warden (2008) cũng chỉ ra ba loại thành công rất quan trọng trong dự án phần mềm: Thành công ở mức cá nhân, thành công
về mặt kỹ thuật và thành công ở mức công ty Nếu không có thành công cá nhân,
sẽ gặp rắc rối trong việc thúc đẩy động lực của bản thân và các thành viên dự án Nếu không thành công về kỹ thuật, mã nguồn của dự án sẽ càng ngày càng trở nên nặng nề và sụp đổ Nếu không có thành công tổ chức, nhóm sẽ thấy được
sự không cần thiết của mình trong công ty
Trang 34Hình 2.10 Ba loại thành công của một dự án phần mềm
(Shore & Warden, 2008) Bằng phân tích của mình, nhóm tác giả Shore & Warden (2008) cũng chỉ ra
sự đáp ứng cả ba loại thành công trên trong các dự án Agile như sau:
Thành công ở mức công ty: Agile nhắm đến việc tạo ra giá trị
và giảm chi phí cho công ty, giúp xác định sớm các kì vọng đối với sản phẩm đang được phát triển để có thể loại bỏ những yêu cầu không mang lại giá trị như mong đợi, tiết kiệm chi phí cho công ty Theo phương pháp Agile, các chuyên gia về nghiệp vụ (business) sẽ làm việc trực tiếp cùng với đội dự án Các chức năng quan trọng nhất của sản phẩm được tập trung phát triển trước
và được đưa vào vận hành sớm nhất có thể Các phiên bản mới với các tính năng mới sẽ lần lượt được đưa thêm vào Ngoài ra, Agile giúp tăng cường khả năng giao tiếp giữa các thành viên trong nhóm, chất lượng mã nguồn được cải tiến liên tục, đảm bảo tiến độ dự án
Thành công về mặt kỹ thuật: Trong Agile, các lập trình viên làm việc
cùng nhau Nhờ vậy, các chi tiết quan trọng sẽ không bị bỏ sót, mỗi đoạn code
sẽ được kiểm tra bởi ít nhất hai người Các lập trình viên liên tục tích hợp những đoạn mã có thể đóng góp thêm giá trị vừa viết vào hệ thống, tạo ra phiên bản mới Để tiến độ công việc được kiểm soát tốt hơn và có thể dễ dàng phản ứng với những thay đổi từ phía khách hàng, nhóm dự án đã tập trung hoàn thành một chức năng trước khi chuyển sang chức năng tiếp theo
Trang 35Thành công về mặt cá nhân: Mỗi thành viên trong dự án Agile đều cảm nhận
được một cách rõ ràng sự thành công của bản thân Điều này thể hiện qua các kết quả đạt được, sự trao đổi kinh nghiệm trong nhóm và tăng khả năng tương tác khách hàng Công việc ở tất cả các khâu trong dự án cho phép thành viên tích lũy nhiều kinh nghiệm, cảm thấy tự tin hơn và trên hết
Trang 36CHƯƠNG 3 HIỆN TRẠNG CÔNG TY CỔ PHẦN VNG 3.1 Tổng quan
Công ty Cổ phần VNG (VNG Corporation, gọi tắt là VNG) - tiền thân
là công ty Vinagame - là công ty phát hành trò chơi trực tuyến và kinh doanh thương mại điện tử được thành lập ngày 9 tháng 9 năm 2004 ở Việt Nam VNG
là công ty đầu tiên phát hành trò chơi trực tuyến có bản quyền ở Việt Nam
và là nhà phát hành trò chơi trực tuyến hàng đầu ở thị trường Các sản phẩm chính là các trò chơi trực tuyến nhập vai nhiều người chơi (MMORPG) như Võ Lâm Truyền Kỳ, Kiếm Thế, Chinh Đồ, Phong Thần, Thuận Thiên Kiếm, cùng các game casual như Zing Dance, Gunny, web game Zing Play, game phổ thông Boom Online Bên cạnh, các sản phẩm web giải trí như Mạng xã hội ZingMe, trang nghe nhạc trực tuyến ZingMp3, trang tin tức ZingNews… và web thương mại điện tử như 123Mua, ZingDeal… đang phát triển mạnh trên thị trường Việt Nam
Bằng nguồn nhân lực dồi dào và được tuyển chọn cao, VNG đã dần chuyển sang phạm vi kinh doanh rộng hơn: kinh doanh trên thị trường internet, với mục tiêu: trở thành công ty internet hàng đầu tại Việt Nam Nhiều sản phẩm của công ty trong lĩnh vực mạng xã hội và thương mại điện tử đang dần chiếm 50% mảng kinh doanh vốn trước đây chỉ là phát hành game của công ty
Bộ phận phát triển phần mềm ứng dụng dạng web được ban lãnh đạo công ty VNG tạo ra nhằm hỗ trợ cho các sản phẩm game mà công ty đã, đang và sẽ phát hành/phát triển trên thị trường Các sản phẩm chủ yếu của bộ phận
là các website ứng dụng, liên kết thông tin và tạo nên cổng thông tin cho toàn bộ các sản phẩm hiện có, cao hơn nữa là tạo ra các liên kết thành viên trong mạng xã hội game thủ, tại đây, mỗi thành viên có thể chia sẻ và tiếp nhận thông tin, tình trạng và các hoạt động từ bạn bè trong danh sách của mình
Trang 37Ngoài ra, bộ phận phát triển phần mềm ứng dụng web cũng phải chịu nhiều
áp lực cho ra đời những sản phẩm hỗ trợ thật tốt chiến lược của công ty, đặc biệt
là trong tình hình cạnh tranh trên thị trường internet ngày càng lớn mạnh tại Việt Nam Sản phẩm của bộ phận đòi hỏi phải đáp ứng kịp thời, đồng thời phải có sự hấp dẫn với người sử dụng, bên cạnh sự kết nối và tương thích với các sản phẩm khác, các sản phẩm của bộ phận cũng phải thể hiện được tính độc lập trong chất lượng và vận hành Với hơn 20 thành viên, chia làm nhiều nhóm dự án nhỏ, mỗi năm bộ phận phát triển phần mềm ứng dụng web cho
ra đời trên dưới sáu sản phẩm, chưa kể những cập nhật cho các phiên bản cũ Với số lượng sản phẩm như vậy, các thành viên trong bộ phận đã phải nỗ lực nhiều và không ngừng cải thiện khả năng của mình ngày càng hoàn thiện hơn
3.2 Hiện trạng
Theo các số liệu thống kê và phân tích từ việc phỏng vấn các trưởng nhóm, trưởng dự án của bộ phận phát triển phần mềm web (3 người) của công ty VNG trong thời gian từ năm 2009 đến năm 2011 (tham khảo thêm ở phụ lục B),
bộ phận phát triển website của công ty VNG nhận được hơn 20 yêu cầu phát triển các sản phẩm từ phía khách hàng nội bộ Tuy nhiên, theo kết quả thống kê nội bộ, có đến 30% dự án không hoàn thành đúng tiến độ đề ra Điều này gây nên tình trạng trì trệ trong các sản phẩm giới thiệu của công ty, giảm nhiều khả năng thu hút khách hàng cho các sản phẩm đang phát hành và các sản phẩm mới Với tình hình cạnh tranh ngày càng gay gắt trong cùng lĩnh vực như hiện nay, công ty VNG nhận thức rõ tầm quan trọng của việc giới thiệu sản phẩm của công ty đến với khách hàng đúng thời điểm và sớm hơn đối thủ cạnh tranh Vì vậy, mặc dù các sản phẩm của bộ phận không có tính chất tạo ra doanh thu trực tiếp, nhưng là nơi khởi nguồn cho việc thu hút khách hàng tham gia, gián tiếp tạo ra doanh thu cho công ty, nên việc phát hành nội dung trễ hoặc chậm cho ra mắt các sản phẩm mới, làm giảm đáng kể khả năng cạnh tranh của công ty, gây nên tổn thất gián tiếp về doanh thu (Một số sản phẩm bị đối thủ
“vượt mặt”, một phần do truyền tải thông tin đến khách hàng chậm)