Tải bản đầy đủ (.ppt) (79 trang)

Phần mềm mã nguồn mở

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (459.34 KB, 79 trang )


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

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×