Đề cương mã NGUỒN mở
Trang 1LÝ THUYẾT MÃ NGUỒN MỞ Câu 1: Trình bày khái niệm phần mềm mã nguồn mở và phần mềm tự do? Nêu điểm khác nhau cơ
bản gữa 2 phần mềm này?
Định nghĩa:
*Phần mềm nguồn mở viết tắt là OSS (Open Source Software):
Định nghĩa về OSS: Có nhiều định nghĩa khác nhau về OSS như sau:
OSS được hiểu là phần mềm hoặc hệ phần mềm cho phép người truy cấp có thể truy cập một cách tự do (Free – access) đến mã nguồn và được quyền sửa đổi mã nguồn đó
OSS là các phần mềm cho phép người sử dụng có quyền chạy, sao chép, phân phối hay thay đổi
và cải tiến nó cho phù hợp với nhu cầu sử dụng mà không cần phải có sự cho phép hay phải trả tiền
Định nghĩa OSS của tổ chức OSI (Tổ chức sáng kiến nguồn mở - Open source Initiatitive): OSS
là phần mềm tự do có sử dụng bất kì một dạng bản quyền nào được chấp nhận của OSI trong bản liệt kê các bản quyền mà mở của tổ chức
=> Như vậy OSS không chỉ đảm bảo cho người phát triển mà còn cho phép toàn bộ người sử dụng
có quyền sử dụng, thay đổi, sửa đổi mã nguồn
* Phần mềm tự do: (Free software) là phần mềm thoả mãn 4 điều kiện tự do, bao gồm:
Tự do chạy chương trình với mọi mục đích
Tự do nghiên cứu chức năng của chương trình, và thích ứng chương trình theo nhu cầu của bạn (hệ quả là quyền truy cập mã nguồn của chương trình)
Tự do phân phối bản sao của chương trình cho mọi người
Tự do cải tiến chương trình và tự do công bố cải tiến của mình
Điểm khác nhau gữa 2 PMMNM và PMTD:
Theo định nghĩa của OSI, PMNM không khác lắm so với PMTD Tuy nhiên tiêu chí của PMNM
ít khắt khe hơn → mập mờ, dễ bị lợi dụng
PMNM không nhấn mạnh về tư tưởng “tự do” mà chú ý nhiều hơn đến “miễn phí” và “mã nguồn”
Người sử dụng và phát triển nên tránh nhầm lẫn giữa PMTD và PMNM bằng cách xác định các tiêu chí, điều kiện của giấy phép sử dụng và phân phối phần mềm
Câu2: Có bao nhiêu thành viên trong cộng đồng phát triển phần mềm mã nguồn mở?Hãy trình bày hiểu biết về những thành viên đó?
*: 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:
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 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
Trang 2 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
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 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
Câu 3:Phân tích lợi ích của PMMNM đối với người sáng lập và người sử dụng?
Phân tích lợi ích:
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
=>
Như vậy OSS không chỉ đảm bảo cho người phát triển mà còn cho phép toàn bộ người sử dụng có quyền sử dụng, thay đổi, sửa đổi mã nguồn
Câu 4:Hãy nêu hiểu biết của mình về sự phát triển PMMNM tại việt Nam?Những cơ hội và thách thức đặt ra cho sự phát triển PMMNM tại Việt Nam?
Sự phát triển của PMNM tại Việt Nam:
Quá trình phát triển của PMNM:Linux vào Việt nam đầu những năm 90, phong trào PMNM bắt đầu
xuất hiện bằng sự hình thành các nhóm nghiên cứu Linux, ngoài ra còn được ứng dụng tại các trung tâm đào tạo: Viện tin học Pháp ngữ, Đại học quốc gia HCM, ĐH Bách khoa, ĐH Cần Thơ, ĐH Huế
Hai sản phẩm quan trọng: Hệ điều hành Linux, các ứng dụng Tin học văn phòng được việt hóa bởi Việt Khang (Vietkey Linux), CMC Ngoài ra còn có các sản phẩm nhúng trên các thiết bị cầm tay
Trang 3Đối với các thiết bị cầm tay, nhúng: CDiT(Tổng công ty bưu chính Viễn thông), Vietkey group, Cadpro
Ứng dụng trên Web: Nhất Vinh – phần mềm thiết kế & quản lý Web
Máy tính hiệu năng cao: ĐHBK mô phỏng luyện kim, Viện toán học – các sản phẩm mô phỏng dự báo thời tiết, công ty AIC bộ Quốc phòng cho các nhiệm vụ huấn luyện, đào tạo sử dụng trang thiết bị quốc phòng
Hợp tác Quốc tế: IBM, Sun, UNDP, Hàn quốc, Trung quốc, Nhật bản
Đặt ra những thách thức:
Ý thức về bản quyền phần mềm thấp (dùng PM không hợp pháp là bình thường)
Phụ thuộc vào một môi trường (quen dùng Microsoft)
Thiếu hiểu biết pháp lý về PMNM (chưa hiểu biết về lợi ích của PMNM – chung – riêng)
Thiếu nguồn nhân lực và kinh nghiệm (chưa có đội ngũ có kinh nghiệm cung cấp các dịch vụ hỗ trợ)
Và những cơ hội:
Nhu cầu bảo vệ bản quyền phần mềm: Hiệp định thương mại Việt Mỹ, WTO, Bell
Chính phủ kiểm soát chi tiêu CNTT
Cộng đồng PMNM trên thế giới đạt được nhiều kết quả
Sinh viên và thế hệ trẻ Việt nam có năng lực tiếp thu nhanh đối với sự đổi mới và chuyển đổi
Các tổ chức quốc tế và nhiều nước hỗ trợ việc hợp tác và ứng dụng phát triển PMNM: UNDP; WB
Câu 5: Trình bày về mô hình đĩa cấu trúc cộng đồng pm MNM?
Mô hình đĩa cấu trúc cộng đồng PMNM:
Trang 4Cấ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
Để 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 bởi vì nếu tất cả các thành viên là người dùng thụ động thì phần mềm không thể phát triển còn nếu tất
cả đều là thành viên cốt cán thì lại 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ệ phần mềm 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) và 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
Câu 6:Hãy trình bày mô hình phát triển PMMNM, các quá trình của dự án phần mềm mã nguồn
mở và các ưu điểm của mô hình phát triển PMMMN?
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 không?)
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):
(2) Phân tích hệ thống phần mềm (Analysis):
(3) Thiết kế chi tiết(Design)
(4) Thực hiện (Development):
(5) Kiểm thử (Testing):
(6) Triển khai
(7) Bảo dưỡng
Các ưu điểm của mô hình phát triển PMNM
Trang 5 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
Câu 7: So sánh quy trình phát triển PMMNM và PM nguồn đóng?
So sánh điểm khác nhau: Dựa vào biểu đồ trên ta thấy chi phí cho việc phát triển phần mềm nguồn
đóng là tương đối lớn, chi phí chuyển đổi từ phần mềm nguồn đóng sang phần mềm nguồn mở còn cao hơn cả chi phí để xây dựng phần mềm nguồn đóng
Việc phát triển phần mềm theo hướng OSS sẽ là hướng tốt nhất, tiết kiệm thời gian và hiệu quả kinh
tế cao nhất, từ đó đẩy nhanh được sự phát triển phần mềm nói riêng và Công nghệ thông tin nói chung
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 cho nên sử dụng các hàm của HĐH đó (API – Application Programming Interface)
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 và dự án không được tài trợ
So sánh điểm giống nhau:
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)
Trang 6• Bảo dưỡng
Câu 8 Trình bày ưu,nhược điểm của 1 số PM mã nguồn mở:
PrestaShop – Giải pháp website thương mại điện tử cho cá nhân và doanh nghiệp với những chức
năng đầy đủ và hoàn thiện nhất của một website 2.0 chuyên nghiệp bán hàng trực tuyến e-Commerce shopping cart
Được phát triển từ năm 2005, trước đây PrestaShop khá ít tên tuổi, do phát hành chủ yếu với phiên bản tiếng Pháp Nhưng thời gian gần đây, với những cải tiến vượt bậc, PrestaShop đã trở thành mã nguồn
mở khá phổ biến
Ưu điểm chính
Đầy đủ các chức năng của một website bán hàng trực tuyến: thêm, sửa, xóa, thống kê sản phẩm, nhà sản xuất, nhà phân phối, khách hàng ,…
Theo dõi tình trạng bán hàng, thông báo cho khách hàng bằng tin nhắn sms, thu thập thông tin khách hàng,…
Áp dụng được nhiều phương thức thanh toán khác nhau với các đơn vị tiền tệ lưu hành phổ biến
Tốc độ tải và xử lý nhanh An toàn, bảo mật
URL thân thiện, tối ưu máy tìm kiếm SEO, quản lý nội dung CMS…
Bạn không cần quan tâm tới chi phí mua phần mềm hay vấn đề bản quyền vì Prestashop là phần mềm nguồn mở và hoàn toàn miễn phí
Thường xuyên cập nhật các phiên bản mới hơn để sửa các lỗi bugs và bổ sung thêm các chức năng, modules mới
Dễ dàng quản trị website với các công cụ tương đối đầy đủ và bảng điều hướng thuận tiện
Dễ dàng tích hợp và mở rộng phát triển các modules độc lập
Giao diện thân thiện, dễ sử dụng, có thể thiết kế giao diện độc lập
khuyết điểm:
Khả năng quản lý Url-rewrite khá yếu, không có khả năng mở rộng tùy biến Làm giảm đáng
kể khả năng SEO của website
Thuật toán tìn kiếm của PrestaShop được đánh giá là khá yếu so với các Opensource khác
Kiến trúc Extensions hỗ trợ cho bên thứ 3 tự phát triển khá yếu