PHẦN MỀM NGUỒN MỞ
VÀ ỨNG DỤNG TRONG THIẾT KẾ WEB
Trình bày: Nguyễn Quốc Hùng
Bộ môn: CNPM
PHẦN I – Phần mềm nguồn mở
Chương I – Tổng quan
Chương II – Các mô hình tổ chức và kinh
doanh PMNM
Chương III – Kinh nghiệm áp dụng PMNM trên
thế giới và hiện trạng tại Việt nam
II – Các mô hình tổ chức và kinh doanh
PMNM
II.1. So sánh mô hình phát triển dự án PMNM
và PMNK
II.2. Cộng đồng PMNM
II.3. Các mô hình kinh doanh PMNM
II.1 So sánh mô hình phát triển dự án
PMNM và PMNK
II.1.1. Quy trình phát triển PM
II.1.2. Quy trình phát triển PMNK
II.1.3. Mô hình phát triển PMNM
II.1.1. Quy trình phát triển PM
Các phần mềm (mở hay đóng) đều thực hiện theo
các bước sau:
–
Xác định các yêu cầu phần mềm (Requirement Engineering)
–
Phân tích hệ thống phần mềm (Analysis)
–
Thiết kế chi tiết (Design)
–
Thực hiện (Deployment)
–
Kiểm thử (Testing)
–
Tích hợp, triển khai (Intergration – Implementation)
–
Bảo dưỡng
II.1.2. Quy trình phát triển PMNK
Các PMNK tuân thủ nghiêm ngặt theo các bước của
quy trình nêu trên
Tuy nhiên, PMNK thường phụ thuộc HĐH → sử dụng
các hàm của HĐH đó (API – Application
Programming Interface)
–
Các hàm API được mô tả chi tiết về dữ liệu đầu vào, đầu ra,
các hoạt động (tài liệu của nhà cung cấp HĐH)
–
Không được biết mã nguồn của hàm (vì là bí mật kinh doanh
của nhà cung cấp HĐH)
–
Nhà cung cấp chịu trách nhiệm đảm bảo hàm hoạt động
đúng theo mô tả
II.1.2. Quy trình phát triển PMNK (tiếp)
II.1.3. Mô hình phát triển PMNM
Mô hình phát triển PMNM có đủ tất cả các giai đoạn
của quy trình nói chung
Dự án PMNM được chia làm 2 loại theo tính chất:
–
Dự án được tài trợ toàn phần: Kinh phí được tài trợ toàn
phần bởi các tổ chức. Quy trình phát triển giống bất kỳ dự án
phần mềm thương mại nào khác (nhưng tính chất lại là
nguồn mở). Ví dụ: BSD, BIND, Sendmail...
–
Dự án không được tài trợ: Không được hỗ trợ kinh phí, mọi
người tham gia dự án với tính chất phi thương mại. (Tuy
nhiên vẫn có những điều khoản quy định: Cung cấp mã
nguồn miễn phí hay có phí, người sử dụng có quyền sửa đổi
và sử dụng mã nguồn hay ko?)
II.1.3. Mô hình phát triển PMNM (tiếp)
Các quá trình của dự án PMNM
–
(1) Xác định yêu cầu của phần mềm (Requirement
Engineering):
Thông thường các yêu cầu phần mềm được phân tán và
lan truyền trên internet
Lập trình viên và những người quan tâm trao đổi các
thông tin về đặc tính của hệ thống và công cụ
–
(2) Phân tích hệ thống phần mềm (Analysis):
Thông thường, các phân tích hệ thống không được thực
hiện trên các dự án không được tài trợ
II.1.3. Mô hình phát triển PMNM (tiếp)
–
(3) Thiết kế chi tiết (Design):
Đây cũng là một bước bị xem nhẹ trong quá trình phát triển
PMNM
Thông thường, thiết kế chi tiết được thực hiện ở giai đoạn
thực hiện
–
(4) Thực hiện (Development):
Cơ hội viết mã nguồn được xem là động cơ chính thúc đẩy cá
nhân tham gia và dự án
–
(5) Kiểm thử (Testing)
Các chức năng của phần mềm được kiểm thử miễn phí và
tích cực vì người dùng không phải trả tiền sử dụng phần mềm
II.1.3. Mô hình phát triển PMNM (tiếp)
–
(6) Triển khai:
Phần mềm được tự triển khai bởi người sử dụng
–
(7) Bảo dưỡng:
Phần mềm không cần bảo dưỡng
II.1.3. Mô hình phát triển PMNM (tiếp)
II.1.3. Mô hình phát triển PMNM (tiếp)
Các đặc điểm của quá trình phát triển PMNM
–
Trao đổi thông tin: Quá trình trao đổi thông tin giữa các thành viên
trong dự án MNM thông thường được thực hiện trên các dịch vụ
Internet (Email lists, Newsgroups của các Website của dự án)
–
Khả năng hợp tác lớn và không phụ thuộc vào vị trí địa lý của các
thành viên
–
Khả năng thực hiện song song: Nếu như mô hình các thành phần
đã được xác định thì có thể tổ chức các nhóm lập trình viên giải
quyết các nhiệm vụ độc lập. Lập trình viên tham gia theo sở thích
nên quá trình thực hiện rất nhanh chóng
–
Tránh được hiện tượng Code Focking (phân nhánh) Là hiện
tượng thường gặp phải khi có nhiều phiên bản mã nguồn của
phần mềm – nhất là trong các dự án lớn)
II.1.3. Mô hình phát triển PMNM (tiếp)
Các ưu điểm của mô hình phát triển PMNM
–
Phát triển PMNM cho phép xây dựng các sản phẩm phần mềm
chất lượng và miễn phí dựa trên sự hợp tác của đông đảo các lập
trình viên (Ví dụ: Linux)
–
Thúc đẩy quá trình tham gia của nhiều người vào quá trình xây
dựng và phát triển phần mềm. Phát triển PMNM là quá trình tự
phát triển, nếu dự án PMNM thu hút được sự quan tâm của đông
đảo người sử dụng thì nó sẽ phát triển rất nhanh chóng
–
PMNM cho phép kiểm soát mã nguồn, kiểm thử và gỡ lỗi với chất
lượng cao hơn các PMNK
–
PMNM thúc đẩy khả năng tái sử dụng của mã. Lập trình viên có
khả năng truy cập tới toàn bộ mã nguồn và anh ta có khả năng để
lựa chọn sử dụng và kế thừa những gì cần thiết
II.2. Cộng đồng PMNM
Nếu như PMNK được phát triển bởi một đội
dự án thì PMNM được phát triển bởi cả một
cộng đồng
Cộng đồng PMNM là lực lượng điều khiển
sự tiến hóa của PMNM
Để tham gia vào cộng đồng hoặc xây dựng
phát triển và duy trình cộng đồng, phải nắm
được bản chất, cấu trúc, hoạt động của cộng
đồng đó
II.2. Cộng đồng PMNM (tiếp)
II.2.1. Các thành viên trong cộng đồng
II.2.2. Cấu trúc cộng đồng
II.2.3. Tiến hóa của hệ thống và cộng đồng
II.2.1. Các thành viên trong cộng đồng
Một số nhóm nghiên cứu PMNM phân định ra 8 loại
thành viên trong cộng đồng PMNM:
–
Người dùng thụ động (Passive User): Chỉ đơn thuần sử
dụng các phần mềm như các phần mềm thương mại, quan
tâm đế PMNM chủ yếu do chất lượng cao và khả năng tự
thay đổi khi cần thiết
–
Người đọc (Reader): Người dùng chủ động, tích cực,
không chỉ sử dụng mà còn cố gắng tìm hiểu xem hệ thống
hoạt động như thế nào bắng cách đọc mã nguồn. Đóng vai
trò như người xét duyệt (Peer Reviewers) trong tổ chức phát
triển phần mềm truyền thống
–
Người báo lỗi (Bug Reporter): Phát hiện và thông báo lỗi
(không sửa lỗi và có thể không đọc mã nguồn), đóng vai trò
của người kiểm thử (testers) trong tổ chức phần mềm truyền
thống
II.2.1. Các thành viên trong cộng đồng
(tiếp)
–
Người sửa lỗi (Bug Fixer): Sửa các lỗi do họ phát hiện hoặc
người khác thông báo. Phải đọc, hiểu cặn kẽ phần mã nguồn phát
sinh lỗi thì mới có thể chỉnh sửa được
–
Người phát triển ngoại vi (Peripheral Developer): Đóng góp
thêm các chức năng, tính năng mới cho hệ thống (đóng góp là ko
thường xuyên → thời gian tham gia ngắn)
–
Người phát triển tích cực (Active Developer): Thường xuyên
đóng góp các tính năng mới và giải quyết các lỗi. Là lực lượng
phát triển chủ yếu của các hệ PMNM
–
Thành viên cốt cán (Core Member): Chịu trách nhiệm dẫn dắt,
điều phối sự phát triển của dự án PMNM. Là những người
“thường trực” của dự án, tham gia với thời gian đủ dài và có
những đóng góp nhất định cho sự tiến hóa và phát triển của hệ
thống. Trong một số cộng đồng PMNM, những thành viên cốt cán
được gọi là những người bảo trì (Maintainers)
–
Trưởng dự án (Project Leader): Là người nêu sáng kiến, tạo lập
dự án, có trách nhiệm quán xuyến hướng phát triển của dự án
II.2.1. Các thành viên trong cộng đồng
(tiếp)
Không phải cả 8 loại nêu trên phải nhất thiết có trong
1 dự án PMNM. Tỷ lệ phân bố có thể khác nhau, tên
gọi các loại thành viên trong từng dự án cũng có thể
khác nhau
Chú ý:
–
Trong dự án phần mềm thương mại, vai trò của các thành
viên là “bị chỉ định” bởi lãnh đạo, cấp trên
–
Trong dự án PMNM, các thành viên tự xác định vai trò của
mình theo khả năng và sở thích cá nhân
II.2.2. Cấu trúc cộng đồng
II.2.2.1. Đĩa cấu trúc cộng đồng PMNM
II.2.2.2. Phân tích cấu trúc của một số dự án
PMNM
–
GNU
–
Linux
–
PostgreSQL
–
Jun
II.2.2.1. Đĩa cấu trúc cộng đồng PMNM
II.2.2.1. Đĩa cấu trúc cộng đồng PMNM
(tiếp)
Cấu trúc đĩa bao từ ngoài vào trong (có thể coi là cấu trúc phân
cấp)
Ở trung tâm của đĩa là trưởng dự án
Càng gần tâm thì vai trò của thành viên càng có nhiều ảnh
hưởng tới dự án
Vòng ngoài cùng là người dùng thụ động, ít có ảnh hưởng tới
dự án. Tuy nhiên lại có vai trò quyết định tới sự tồn tại và phát
triển dự án (nếu đồng đảo người dùng quan tâm sẽ kích thích
thành viên cốt cán làm việc hăng say hơn – yếu tố tâm lý và xã
hội)
Vai trò và ảnh hưởng trong cộng đồng không liên quan đến tuổi
tác và địa vị của thành viên. Càng đóng góp nhiều thì thành viên
càng tiến gần vào tâm của cấu trúc hơn (việc thay đổi vai trò là
thường xuyên, không cố định như phần mềm thương mại)
II.2.2.1. Đĩa cấu trúc cộng đồng PMNM
(tiếp)
Để duy trì cộng đồng PMNM có được sự phát triển bền vững,
phải đảm bảo tính cân đối trong cấu trúc
–
Nếu tất cả các thành viên là người dùng thụ động → không tiến
hóa
–
Nếu tất cả đều là thành viên cốt cán → khó điều hòa mọi cố gắng,
phát triển. Sự tiến hóa của phần mềm là không bền vững
Phân bố thành viên trong từng cộng đồng PMNM khác nhau phụ
thuộc vào bản chất của hệ
–
Nói chung, phần lớn thành viên là người dùng thụ động (trong
cộng đồng Apache, 99% thành viên là người dùng thụ động)
–
Tỷ lệ người dùng giảm nhanh từ người đọc đến thành viên cốt
cán. Đa số các PMNM chỉ do số ít các thành viên thực sự phát
triển
II.2.2.2. Phân tích cấu trúc của một số
dự án PMNM
Dự án Lĩnh vực
1 GNU Môi trường phát triển
2 Linux Hệ điều hành
3 PostgreSQL Cơ sở dữ liệu
4 Jun Đa phương tiện
GNU
Truởng dự án (Project Leader)
–
Các chương trình GNU thường do trưởng dự án đề xuất dưới sự trợ giúp
đắc lực của các thành viên cốt cán
–
Trưởng dự án đưa ra phần lớn các quyết định về phát triển của hệ thống,
quyết định đóng góp nào được ghi nhận và đưa vào PMNM đó
–
Số lượng phản hồi nhiều → có nhiều phản hồi bị bỏ qua
Người phát triển tích cực (Active Developer)
–
Đóng góp bằng chương trình và mã nguồn
–
Làm cầu nối trung gian để cải tiến các mã nguồn do người phát triển ngoại
vi và người sửa lỗi thực hiện
–
Lựa chọn mã nguồn tốt để trưởng dự án xem xét và quyết định tích hợp
vào sản phẩm PMNM
Người đọc (Reader):
–
Vì GNU là một phần mềm có chất lượng cao, được phát triển bởi đội ngũ
lập trình chuyên nghiệp nên có cộng đồng đông đảo người đọc
–
Người đọc GNU thu được nhiều hiểu biết về kỹ năng lập trình, các tri thức
hữu ích
–
Họ là người xét duyệt tốt cho phần mềm