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ệ
Trang 1PHẦ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
Trang 3II – 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
Trang 4II.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
Trang 5II.1.1 Quy trình phát triển PM
Trang 6II.1.2 Quy trình phát triển PMNK
quy trình nêu trên
các hàm của HĐH đó (API – Application
Trang 7II.1.2 Quy trình phát triển PMNK (tiếp)
Trang 8II.1.3 Mô hình phát triển PMNM
của quy trình nói chung
– 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ã
Trang 9II.1.3 Mô hình phát triển PMNM (tiếp)
Trang 10II.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
Trang 11II.1.3 Mô hình phát triển PMNM (tiếp)
Trang 12II.1.3 Mô hình phát triển PMNM (tiếp)
Trang 13II.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)
Trang 14II.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
Trang 15II.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 đó
Trang 17II.2.1 Các thành viên trong cộng đồng
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
Trang 18II.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)
Trang 19II.2.1 Các thành viên trong cộng đồng (tiếp)
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
Trang 20II.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
– Jun
Trang 21II.2.2.1 Đĩa cấu trúc cộng đồng PMNM
Trang 22II.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)
Trang 23II.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
Trang 24II.2.2.2 Phân tích cấu trúc của một số
dự án PMNM
Trang 25 Truởng dự án (Project Leader)
đắc lực của các thành viên cốt cán
quyết định đóng góp nào được ghi nhận và đưa vào PMNM đó
Người phát triển tích cực (Active Developer)
vi và người sửa lỗi thực hiện
vào sản phẩm PMNM
Người đọc (Reader):
lập trình chuyên nghiệp nên có cộng đồng đông đảo người đọc
Trang 27– Không có trưởng dự án duy nhất như Linux, do các thành viên cốt cán liên lạc với nhau qua mailing-list để thảo luận và quyết định hướng đi của hệ thống
– Việc đưa vào hệ thống 1 chức năng mới phải do ít nhất 1 thành viên cốt cán đưa ra và được bỏ phiếu bới tất cả các thành viên cốt cán
– Gồm khoảng 30 người, phát triển các chương trình dưới
dạng gói và chỉ được tích hợp vào hệ thống khi được phê chuẩn bởi các thành viên cốt cán
Trang 28– Có 1 trưởng dự án (Atsuki Aoki), làm việc với các thành viên cốt cán
– Tất cả các phát triển đều thực hiện trong nhóm này
– Rất ít người báo lỗi do phiên bản chỉ được công bố sau khi
đã kiểm thử cẩn thận
– Ít, phần lớn đọc mã nguồn Jun để học hỏi và sử dụng cho hệ thống tương tự viết trên ngôn ngữ khác
Trang 29II.2.3 Tiến hóa của hệ thống và cộng đồng
II.2.3.1 Tiến hóa của hệ thống
II.2.3.2 Tiến hóa của cộng đồng PMNM
II.2.3.3 Đồng tiến hóa của hệ thống và cộng đồng
Trang 30II.2.3.1 Tiến hóa của hệ thống
cách phân tích sự tiến hóa của 4 hệ thống đã nêu trên
Trang 31II.2.3.1 Tiến hóa của hệ thống (tiếp)
GNU:
– Dự án chất lượng cao, phiên bản thống nhất và “sạch”
– Một gói chương trình trước khi được tích hợp vào phiên bản chính thức phải được kiểm thử và chỉnh sửa kỹ
– Mẫu hình tiến hóa của GNU là tập trung theo một luồng trục
chính
Linux:
– Cho phép nhiều cách cài đặt khác nhau cho cùng 1 chức năng
– Có thể có nhiều nhánh tiến hóa khác nhau từ cùng một chương trình
– Mẫu hình tiến hóa của Linux là mẫu hình phân rã (“trăm hoa đua
nở”)
Trang 32II.2.3.1 Tiến hóa của hệ thống (tiếp)
PostgreSQL:
– Có thể coi là giải pháp hỗn hợp
– Mỗi khi có yêu cầu mới, người phát triển tích cực tự tạo đội để triển khai đáp ứng yêu cầu đó
– Tuy nhiên những cài đặt trên (được nhiều nhóm phát triển cho
cùng 1 chức năng) chỉ tồn tại trong một khoảng thời gian nhất
định, sau đó sẽ được các thành viên cốt cán xem xét tích hợp vào phiên bản lõi
– Mẫu hình tiến hóa của PostgreSQL là mẫu hình hội tụ từ nhiều
nhánh vào một cành chung
Jun
– Có ít người tham gia phát triển, tiến hóa theo mẫu hình tuyến tính
đơn (cây có 1 nhánh) với các phiên bản kế tiếp nhau
– Trước khi công bố ra cộng đồng, các thành viên của Jun đã kiểm
Trang 33II.2.3.2 Tiến hóa của cộng đồng PMNM
Sự tiến hóa của cộng đồng PMNM liên quan đến sự thay đổi vai trò của các thành viên
Không giống dự án phần mềm thương mại, ở dự án PMNM thành viên có thể thay đổi vai trò của mình theo khả năng và sở thích, mối quan tâm và thời gian
Con đường từ một thành viên mới đến thành viên cốt cán:
đề anh ta quan tâm
đọc)
lỗi)
Trang 34II.2.3.2 Tiến hóa của cộng đồng PMNM (tiếp)
trình học để nâng cao trình độ của từng thành viên
không phải thành viên nào muốn cũng có thể đi sâu vào bên trong (phụ thuộc năng lực)
ngoài cùng
– Sự có mặt của thành viên có mong muốn đóng góp và tăng ảnh hưởng của mình trong cộng đồng
– Cơ chế xã hội của cộng đồng trong việc khuyến khích và cho phép thành viên thay đổi vai trò của mình một cách dễ dàng
Trang 35II.2.3.3 Đồng tiến hóa của hệ thống và cộng đồng
PMNM muốn phát triển bền vững phải có
được cả sự phát triển của hệ thống và cộng đồng của nó
Trang 36II.3 Các mô hình kinh doanh PMNM
II.3.1 PMNM có thể kinh doanh?
II.3.2 Sơ đồ mô hình kinh doanh PMNM
II.3.3 Các nhà phân phối và bán lẻ PMNM II.3.4 Các dịch vụ liên quan đến PMNM
Trang 37II.3.1 PMNM có thể kinh doanh?
Liệu PMNM có thể kinh doanh khi tất cả đều mở? Khi giá phần mềm rất rẻ?
PM “đóng” còn bị sao chép lậu, vậy “mở” thì kinh doanh được không?
Phần này sẽ nghiên cứu mô hình kinh doanh của một số doanh nghiệp nguồn mở (chủ yếu doanh thu từ các dịch vụ bổ sung như tư vấn
và hỗ trợ)
Trang 38II.3.1 PMNM có thể kinh doanh?
Trang 39II.3.1 PMNM có thể kinh doanh?
Trang 40II.3.1 PMNM có thể kinh doanh?
Trang 41II.3.2 Sơ đồ mô hình kinh doanh PMNM
Phân biệt giữa kinh doanh
dựa sản phẩm (product
related business) và kinh
doanh dựa vào các dịch vụ
(service related business):
Trang 42II.3.3 Các nhà phân phối và bán lẻ
PMNM
II.3.3.1 Các nhà phân phối Linux gốc
II.3.3.2 Các nhà phân phối PMNM đặc chủng
Trang 43II.3.3.1 Các nhà phân phối Linux gốc
đến Linux (tư vấn, hỗ trợ, tích hợp và đào tạo)
Trang 44II.3.3.1 Các nhà phân phối Linux gốc (tiếp)
– Hai mảng thị trường:
Thị trường đông đảo người dùng của các bộ phần mềm dùng cho doanh nghiệp vừa và nhỏ, cá nhân
một lựa chọn nghiêm túc như với một hệ điều hành máy chủ Các đối thủ cạnh tranh là Windows NT, các hệ thống Unix.
Thị trường cái giải pháp riêng lẻ (thường cung cấp cho các doanh nghiệp vừa và lớn)
– Thị trường các giải pháp liên quan đến dịch vụ:
Hầu hết các nhà cung cấp tính tới việc kinh doanh giải pháp như là một dòng doanh thu chủ yếu mang lại lợi nhuận ngày
Trang 45II.3.3.1 Các nhà phân phối Linux gốc (tiếp)
Quan tâm đầu tiên của các nhà phân phối trong chuỗi giá trị của phần mềm: Phát triển phần mềm; Tài liệu phần mềm; Đóng gói phần mềm; Marketing và bán; Tư vấn; Triển khai – Tích hợp; Đào tạo; Hỗ trợ; Quản trị ứng dụng
Trang 46II.3.3.1 Các nhà phân phối Linux gốc (tiếp)
– Không phải đầu tư viết lại hệ điều hành, chỉ phải đầu tư phát triển và tối ưu hóa
– Không thể định giá sản phẩm một cách tự do (vì là PMNM)– Lợi nhuận thấp: PMNM, giá rẻ, phần lớn lợi nhuận là giá trị gia tăng do đóng gói sản phẩm
– Vì lợi nhuận trên 1 đơn vị không cao, các công ty phải mở rộng thị trường trên đông đảo người sử dụng
– Khác biệt bởi thương hiệu: Các sản phẩm gần giống nhau, yếu tố thành công chủ yếu là do khác biệt về thương hiệu Các công ty xây dựng thương hiệu bằng nhiều cách (quảng cáo, hội chợ, cấp chứng chỉ đào tạo Linux )
Trang 47II.3.3.2 Các nhà phân phối PMNM đặc
chủng
Dịch vụ và sản phẩm
– Chuyên dụng trên PMNM khác với HĐH
– Các sản phẩm bao gồm các ứng dụng, các công cụ quản trị và phát
triển
– Thông thường chạy trên Linux, một số có thể chạy trên cả Windows
– Một vài ví dụ: Zope – hệ quản trị nội dung, Sendmail – máy chủ thư điện tử
Thị trường
– Thị phần cao do tập trung vào các sản phẩm chuyên dụng (các sản
phẩm máy chủ Web, các hệ quản trị nội dung)
– Khách hàng thường là các nhà phân phối hoặc các nhà chế tạo thiết bị gốc (OEM – Original Equipment Manufacturer)
– Thị trường PM đặc chủng khó tiếp cận hơn Nên không hướng vào
Trang 48II.3.3.2 Các nhà phân phối PMNM đặc
chủng (tiếp)
– Trong thị trường PMNK, các PM đặc chủng thường có giá cao Tuy nhiên PMNM loại này gần như không có giới hạn về tiếp cận, do đó thu lợi từ việc bán PM gần như là không thể
– Để tăng nguồn thu, phương pháp là đa dạng hóa các sản phẩm
Trang 49II.3.3.3 Các nhà bán lẻ của các nhà phân phối PMNM và các sản phẩm bổ sung
Dịch vụ và sản phẩm
hàng chính của các nhà phân phối hoặc xuất bản
O’Reilly – nhà xuất bản sách đào tạo và các tài liệu PMNM)
CNET, ZDNet: Các kênh bán lẻ PMNM
Thị trường
Người dùng tư nhân, các công ty, nhà quản trị
Trang 50II.3.3.3 Các nhà bán lẻ của các nhà phân phối PMNM và các sản phẩm bổ sung
Thuận lợi & khó khăn
thấp, nói chung không thể coi là một mô hình kinh
doanh
Đối với các PM thương mại, tài liệu thường được các nhà sản xuất thực hiện hoặc phối hợp với 1 nhà xuất bản thực hiện
Tài liệu PMNM đang ngày càng trở nên thông dụng và còn được sử dụng bên ngoài cộng đồng PMNM (ví dụ:
Sự thành công của O’Reilly trong việc xuất bản các tài
Trang 51Chương III – Kinh nghiệm áp dụng PMNM trên thế giới và hiện trạng tại Việt nam
III.1 Áp dụng PMNM trên thế giới
III.2 Kinh nghiệm áp dụng PMNM tại Nhật Bản
III.3 Hiện trạng áp dụng PMNM tại Việt Nam
Trang 52III.1 Áp dụng PMNM trên thế giới
90% máy chủ tên miền tại Mỹ, 70% máy chủ thư điện tử, 60% máy chủ Web
Giữa năm 2001, 56% doanh nghiệp toàn cầu sử dụng PMNM
Hầu hết các trường đại học (đặc biệt tại các nước tiên tiến) sử dụng PMNM
Hệ thống quản lý thông tin khổng lồ của Yahoo và AOL dùng PMNM Các công ty khác đang hướng vào PMNM Bưu điện Mỹ, NASA, Sony, Corel, Mercedes Benz, Netscape, IBM
Tại Châu Âu:
– Đức cấm dùng các sản phẩm của Microsoft trong các hệ thống mang tính “nhạy cảm” Quốc hội kêu gọi Chính phủ đảm bảo mọi phần mềm
sử dụng trong khu vực NN dựa trên PMNM (đến 2006).
Trang 53III.1 Áp dụng PMNM trên thế giới (tiếp)
– Tổng cục Cảnh sát Anh thử nghiệm áp dụng 60.000 máy chủ sang PMNM
Châu Á
– Chính phủ Hàn quốc sử dụng PMNM cho hơn 120.000 máy tính,
kế hoạch đến 2003 sẽ sử dụng PMNM tin học hóa văn phòng các
– Đài loan dự kiến tiết kiệm 295 triệu USD nhờ sử dụng PMNM.
– Thái lan, Philipine, Malaysia có kế hoạch sử dụng PMNM cho các
cơ quan Nhà nước