Tải bản đầy đủ (.docx) (77 trang)

Tìm hiểu 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 (537.57 KB, 77 trang )

TRƯỜNG ĐH HÙNG VƯƠNG
KHOA TOÁN – CÔNG NGHỆ

THỰC TẬP CHUYÊN NGÀNH
Hệ chính quy
Chuyên ngành: Tin học
Tên đề tài
TÌM HIỂU PHẦN MỀM MÃ NGUỒN MỞ
Giáo viên hướng dẫn: kỹ sư Đinh Thái Sơn
Lớp: k7- ĐH tin

NĂM 2012

1


TRƯỜNG ĐH HÙNG VƯƠNG
KHOA TOÁN – CÔNG NGHỆ

THỰC TẬP CHUYÊN NGÀNH
Hệ chính quy
Chuyên ngành: Tin học
Tên đề tài
TÌM HIỂU PHẦN MỀM MÃ NGUỒN MỞ
Giáo viên hướng dẫn: kỹ sư Đinh Thái Sơn
Lớp: k7- ĐH tin

NĂM 2012

2



LỜI CÁM ƠN
Chúng em xin gửi lời cám ơn và biết ơn sâu sắc nhất tới Kỹ sư Đinh
Thái Sơn đã chỉ bảo và hướng dẫn tận tình cho chúng em trong suốt quá trình
thực tập này.
Chúng em chân thành cám ơn các thầy, cô trong bộ môn tin, khoa toáncông nghệ - trường Đại Học Hùng Vương đã giúp đỡ và tạo những điều kiện
thuận lợi cho chúng em hoàn thành tốt đợt thực tập này.
Chúng em cũng xin cám ơn ban lãnh đạo khoa Toán-Công nghệ và ban
lãnh đạo trường Đại Học Hùng Vương đã tạo điều kiện cho chúng em được
học tập và thực tập tại trường.
Cuối cùng, chúng em muốn gửi lời cám ơn và biết ơn vô hạn tới bố mẹ,
anh chị em và tất cả bạn bè đã cổ vũ và tạo điều kiện tốt nhất cho chúng em
hoàn thành đợt thực tập này.
Xin chân thành cảm ơn!
Trưởng nhóm

3


MỤC LỤC

DANH SÁCH CÁC TỪ VIẾT TẮT
STT
1
2
3
4
5
6
7

8
9
10
11
12
13
14
15

Nội dung viết tắt
Phần mềm mã nguồn mở
Gnu’s Not Unix
General Public Licence
Lesser General Public Licence
Berkely Software Distribution
Free Software Foundation
Phần mềm nguồn đóng
Công nghệ thông tin
Công nghệ phần mềm
Hệ thống phiên bản đồng thời
Hệ thống kiểm soát sửa đổi
Thông tin và Truyền thông
Ủy ban nhân dân
Giáo dục đào tạo
Common Public License

DANH SÁCH HÌNH VẼ
Hình 1: Mô hình thác nước điển hình
4


Từ viết tắt
PMMNM
GNU
GPL
LGPL
BSD
FSF
PMNĐ


Hình 2: Vòng đời của tính năng trong mô hình phát triển mã nguồn mở
Hình 3: Mô hình quy trình PMMNM
Hình 4: Giao diện màn hình hệ điều hành Linux
DANH SÁCH BẢNG BIỂU
Bảng 1: Danh mục sản phẩm phần mềm mã nguồn mở đáp ứng được yêu cầu
sử dụng trong các cơ quan nhà nước, tổ chức nhà nước
Bảng 2: Thống kê việc triển khai mã nguồn mở tại Việt Nam đến tháng
3/2010

LỜI MỞ ĐẦU
1. Tính cấp thiết của đề tài
Trong vài thập niên gần đây, cùng với sự thay đổi và phát triển không
ngừng của ngành công nghệ thông tin nói chung thì ngành công nghệ phần
mềm cũng đang có những bước tiến vượt bậc. Khi đã phát triển lên 1 tầm cao
thì nhu cầu người dùng cũng ngày càng tăng khi đó người ta lại quan tâm tới
3 khả năng sau của một phần mềm đối với người sử dụng:
– Khả năng phân phối lại (Distribution Possibility): Quyền được phép
sao chép và phân phối lại phiên bản phần mềm mà bạn đang có trong tay (có
giấy phép sử dụng nó) hay không?
– Khả năng truy cập vào mã nguồn (Accessibility to source code): Chủ

sở hữu phần mềm cho phép bạn xem mã nguồn, sử dụng, sửa đổi mã nguồn
phần mềm của họ cho mục đích của bạn hay không?
– Phí sử dụng phần mềm (Free): Khi bạn sử dụng một phần mềm, bạn
phải trả tiền hay không cho người chủ sở hữu phần mềm đó?
Những khả năng trên chỉ có trên các phần mềm mã nguồn mở (Open
Source Software). Như vậy sử dụng phần mềm mã nguồn mở có rất nhiều ưu
điểm như:
5


+ Ưu diểm đầu tiên là chi phí thấp. Chu kỳ sống của một mã nguồn mở
thường bắt đầu là phần mềm nhỏ, miễn phí. Phần mềm này thường sẽ phát
triển tới bản beta, vesion 1.0, 2.0,… cho tới khi nhận được sự ủng hộ và tài
trợ rộng rãi của cộng đồng. Những phần mềm như vậy sẽ nhanh chóng có
được thương hiệu riêng và nhóm phát triển bắt đầu đưa ra các dịch vụ hỗ trợ
người dùng có chi phí.
+ Ưu điểm thứ 2 là tính đa dạng của mã nguồn mở. Một phần mềm tốt
trên môi trường này sẽ nhanh chóng được một nhóm phát triển khác triển khai
trên môi trường khác. Các tính năng cũng sẽ được cộng đồng mã nguồn mở
bổ sung vào. Để làm như vậy, các phần mềm đều có kiến trúc mở, theo dạng
module để có thể sẵn sàng cấu hình tính năng mới.
+ Ưu điểm thứ 3 là độ ổn định và ít lỗi. Một khi đã chọn giải pháp mã
nguồn mở, doanh nghiệp luôn có thể biết rõ hiện còn bao nhiêu lỗi, các lỗi sẽ
sửa lúc nào, phiên bản nào,… Điểm này khác hẳn những phần mềm mã nguồn
đóng ở chỗ chúng vẫn có lỗi nhưng không biết khi nào lỗi được sửa. Bản chất
của mã nguồn mở là phát triển bởi nhóm người nhỏ nhưng dùng và kiểm tra
bởi nhiều người, có thể hàng trăm, hàng ngàn người. Nhóm phát triển, để
phần mềm của mình đạt được tiêu chuẩn mã nguồn mở thường phải đưa ra
đầy đủ các tài liệu thiết kế, hướng dẫn cài đặt, các forum thảo luận, yêu cầu
tính năng, các hệ thống kiểm soát mã nguồn, lỗi,…

Đề tài “tìm hiểu phần mềm mã nguồn mở ” tập trung nghiên cứu về quá
trình phát triển và khả năng ứng dụng của phần mềm mã nguồn mở tại Việt
Nam và lợi ích thiết thực của nó.
2. Mục đích nghiên cứu
- Tìm hiểu và nắm rõ những kiến thức cơ bản và chuyên sâu về phần
mềm mã nguồn mở.
- Tìm hiểu về thực trạng ứng dụng phần mềm mã nguồn mở tại các cơ
quan nhà nước và trong hệ thống giáo dục ở Việt Nam.
- Cài đặt và sử dụng một phần mềm mã nguồn mở demo.
3. Phạm vi nghiên cứu
6


- Đối tượng nghiên cứu: phần mềm mã nguồn mở.
- Phạm vi nghiên cứu: tìm hiểu về phần mềm mã nguồn mở, ứng dụng
của nó trong các cơ quan nhà nước và trong giáo dục tại Việt Nam. Giới thiệu
một phần mềm mã nguồn mở demo.
4. Phương pháp nghiên cứu
- Phương pháp nghiên cứu tài liệu: Tìm hiểu qua nhiều nguồn tài liệu
để rút ra những ý chính, những kết luận chính xác và hiệu quả nhất về phần
mềm mã nguồn mở, về thực trạng việc triển khai mã nguồn mở trong cơ quan
nhà nước và trong hệ thống giáo dục tại Việt Nam. Nghiên cứu về một phần
mềm mã nguồn mở demo.
- Phương pháp tham khảo ý kiến chuyên gia: Từ những vấn đề mà đã
tìm hiểu nghiên cứu qua tài liệu, hỏi trực tiếp giảng viên hướng dẫn và các
giảng viên trong bộ môn tin để hoàn thiện hơn về cả hình thức và nội dung.

7



CHƯƠNG 1: TỔNG QUAN VỀ PHẦN MỀM MÃ NGUỒN MỞ
1.1 Định nghĩa phần mềm mã nguồn mở
Phần mềm mã nguồn mở (PMMNM) là những phần mềm được cung
cấp dưới cả dạng mã và nguồn, không chỉ là miễn phí về giá mua mà chủ yếu
là miễn phí về bản quyền: người dùng có quyền sửa đổi, cải tiến, phát triển,
nâng cấp theo một số nguyên tắc chung qui định trong giấy phép PMMNM
(ví dụ General Public Licence – GPL) mà không cần xin phép ai, điều mà họ
không được phép làm đối với các phần mềm nguồn đóng (tức là phần mềm
thương mại).. Nhìn chung, điều thuận lợi chính PMMNM đem lại là sự miễn
phí và cho phép người dùng có quyền “sở hữu hệ thống”.
Nhà cung cấp Phần mềm mã nguồn mở có quyền yêu cầu người dùng
trả một số chi phí về các dịch vụ bảo hành, huấn luyện, nâng cấp, tư vấn,
vv… tức là những dịch vụ thực sự đã thực hiện để phục vụ người dùng,
nhưng không được bán các sản phẩm nguồn mở vì nó là tài sản của trí tuệ
chung, không phải là tài sản riêng của một nhà cung cấp nào.
Tiện ích mà mã nguồn mở mang lại chính là quyền tự do sử dụng
chương trình cho mọi mục đích, quyền tự do để nghiên cứu cấu trúc của
chương trình, chỉnh sữa phù hợp với nhu cầu, truy cập vào mã nguồn, quyền
tự do phân phối lại các phiên bản cho nhiều người, quyền tự do cải tiến
chương trình và phát hành những bản cải tiến vì mục đích công cộng.

1.2 Các điều khoản phân phối của phần mềm mã nguồn mở
Tự do và miễn phí tái phân phối :
8


Phần mềm có thể có nhiều bản sao và được tự do phân phối. Tuy nhiên,
cần có giấy phép bản quyền khi thực hiện phân phối phần mềm. Bản quyền
không giới hạn bất cứ ai bán hay đem cho phần mềm. Bản quyền không đòi
hỏi việc phải giữ nguyên trạng phần mềm và không phải trả tiền bản quyền

hay các lệ phí khác để bán phần mềm.
Mã nguồn
Chương trình phải đi kèm mã nguồn, và phải cho phép phân phối cả mã
nguồn cũng như dạng đã được biên dịch. Ở những nơi mà một số dạng sản
phẩm không được phân phối cùng mã nguồn thì phải có các cách thức được
phổ biến rộng rãi nhằm lấy được mã nguồn với chi phí không cao hơn chi phí
tái sản xuất hợp lý–khuyến khích cho phép tải về một cách miễn phí qua
Internet.
Vì mục đích của mã nguồn mở là tạo điều kiện để việc phát triển được
thuận lợi nên yêu cầu sự sửa đổi mã nguồn cũng phải được tạo điều kiện thực
hiện. Do đó, mã nguồn phải để dạng được ưa chuộng mà theo đó một lập trình
viên sẽ có thể tham gia sửa đổi chương trình được. Việc biến đổi mã nguồn
thành một dạng mã gây rối một cách có chủ tâm là không được phép.

Các chương trình phát sinh
Bản quyền phải cho phép sửa đổi và các chương trình phát sinh từ đó,
và phải cho phép chúng được phân phối cùng các điều khoản như giấy phép
của phần mềm gốc.

Tính toàn vẹn của mã nguồn cung cấp bởi Tác giả
Bản quyền có thể hạn chế không cho phép mã nguồn được phân phối ở
dạng đã được sửa đổi nếu như “các file vá” cùng mã nguồn nhằm mục đích
sửa đổi chương trình ở thời gian tạo sản phẩm. Bản quyền phải cho phép một
cách tường minh việc phân phối phần mềm được tạo ra từ mã nguồn được sửa
9


đổi. Bản quyền có thể yêu cầu các sản phẩm phát sinh phải mang một cái tên
hay một số hiệu phiên bản khác so với phần mềm gốc.
Theo đó, bản quyền mã nguồn mở phải đảm bảo rằng mã nguồn sẽ tồn

tại ở dạng dễ dàng lấy được, nhưng có thể yêu cầu rằng nó sẽ được phân phối
với mã nguồn nguyên gốc ban đầu kèm với các bản vá. Theo cách này, những
thay đổi “không chính thức” có thể xuất hiện ở hình thức sẵn sàng để tiếp cận
nhưng được phân biệt một cách dễ dàng với mã nguồn cơ sở.

Không có sự phân biệt đối xử giữa các cá nhân hay nhóm người
Bản quyền phải không được phân biệt đối xử với bất cứ cá nhân hay
nhóm người nào.

Không phân biệt đối xử với bất cứ một lĩnh vực công việc nào
Bản quyền phải không được cản trở bất cứ ai khỏi việc sử dụng chương
trình trong một lĩnh vực công việc cụ thể. Ví dụ, nó không được cản trở
không cho chương trình đó được dùng trong một doanh nghiệp, hay không
được dùng cho việc nghiên cứu gien.

Việc phân phối bản quyền
Các quyền lợi đi kèm với chương trình phải áp dụng cho tất cả những ai
mà chương trình đó được tái phân phối đến, đồng thời không cần phải thực thi
một thứ giấy phép phụ nào do các bên đó quy định.

Giấy phép phải không được dành riêng cho một sản phẩm
Các quyền lợi đi cùng chương trình phải không được phụ thuộc vào
việc chương trình đó là một bộ phận hay một bản phân phối phần mềm cụ thể
khác. Nếu chương trình được tách ra từ bản phân phối nào đó và được sử
10


dụng hay phân phối dưới các điều khoản của giấy phép kèm theo chương
trình thì tất cả các bên mà chương trình được phân phối đến cũng nên có được
các quyền lợi ngang bằng như những quyền lợi được đưa ra theo bản phân

phối phần mềm gốc.

Bản quyền phải không được cản trở các phần mềm khác
Bản quyền phải không được áp đặt các giới hạn lên các phần mềm khác
mà được phân phối kèm với phần mềm có bản quyền đó. Ví dụ, bản quyền
không được chỉ dẫn nhất quyết rằng tất cả các phần mềm khác được phân
phối trên cùng một phương tiện thì phải là phần mềm mã nguồn mở.

Giấy phép phải trung dung về mặt công nghệ
Không cho phép tồn tại điều khoản nào của bản quyền khẳng định sự
liên quan đến bất cứ một công nghệ riêng biệt hay một kiểu giao diện nào.

1.3 Lịch sử phần mềm mã nguồn mở
Richard Stallman là người sáng lập ra dự án GNU (Gnu’s Not Unix)
vào năm 1984, với mục đích phát triển một hệ điều hành máy tính miễn phí
GNU. Bằng cách này ông đã cho người dùng máy tính sự tự do mà họ chưa
hề có được trước đây. GNU trở thành thuật ngữ để chỉ các phần mềm tự do:
mọi người được quyền tự do sao chép và phiên bản, cũng như thay đổi nó ở
bất cứ mức độ dù lớn hay nhỏ. Stallman còn là tác giả chính và đầu tiên của
một loạt các sản phẩm kiểu phần mềm soạn thảo GNU Emacs, chương trình
dịch GNU Compiler, phần mềm gỡ rối GNU Debugger và nhiều gói phần
mềm GNU khác. Ông là Chủ tịch của Tổ chức Phần mềm Tự do (Free
Software Foundation).
Phần mềm tự do mã nguồn mở, dùng để chỉ các phần mềm có giấy
phép sử dụng theo kiểu GNU. Tự do ở đây không ám chỉ sự miễn phí, mà chỉ
11


nói về các quyền tự do mà phần mềm tự do nguồn mở mang lại cho người sử
dụng: tự do chạy, tự do sao chép, tự do phân phối lại, nghiên cứu, thay đổi và

cải tiến cho phù hợp với nhu cầu sử dụng của mình mà không cần phải tới sự
cho phép, hoặc phải trả tiền cho bất cứ cá nhân hoặc nhóm người nào.
1.4 Giấy phép phần mềm mã nguồn mở
1.4.1 Các loại giấy phép mã nguồn mở:
Kiểu BSD - (Open Source BSD-style):
Một nhóm đã phát triển các PMMNM theo giấy phép phân phối
Berkely (BSD – Berkely Software Distribution) cho phép sử dụng và phân
phối lại các phần mềm này dưới dạng mã nhị phân và mã nguồn. Tuy người
dùng có quyền sửa đổi mã, nhưng về nguyên tắc nhóm phát triển không cho
phép người dùng tự do lấy mã nguồn từ kho mã ra sửa (gọi là check-out) và
đưa mã đã sửa vào lại kho mã mà không được họ kiểm tra trước (gọi là các
“check-in”).
Kiểu Apache (Open Source Apache-style):
Chấp nhận nguồn mở kiểu BSD nhưng cho phép những người ngoài
nhóm phát triển xâm nhập vào lõi của mã nền (core codebase).
Kiểu CopyLeft hay kiểu Linux (Open Source CopyLeft, Linuxstyle):
Phần mềm mã mở kiểu CopyLeft hay còn gọi là giấy phép GPL
(General Public Licence) là một bước tiến quan trọng theo hướng tự do hóa
của các giấy phép phần mềm. Giấy phép GPL yêu cầu không những mã
nguồn gốc phải được phân phối theo các qui định của GPL mà mọi sản phẩm
dẫn xuất cũng phải tuân thủ GPL.
1.4.2 Giấy phép công cộng GNU
Giấy phép Công cộng GNU (tiếng Anh: GNU General Public License,
viết tắt GNU GPL hay chỉ GPL) là giấy phép phần mềm tự do phổ biến
nhất, mới đầu do Richard Stallman viết cho dự án GNU. Đây là giấy phép
12


cho phần mềm tự do, được phát hành cho phần lớn các sản phẩm của dự án
GNU.

Các giấy phép cho hầu hết các phần mềm không cho phép tự do chia sẻ
và thay đổi các phần mềm. Ngược lại, GNU General Public License được
dành để đảm bảo quyền tự do để chia sẻ và thay đổi tất cả các phiên bản của
một chương trình. Tổ chức phần mềm miễn phí sử dụng Giấy phép Công
cộng của GNU cho hầu hết các phần mềm thuộc dự án GNU.
Giấy phép GPL cho phép người sử dụng các quyền sau đây:
- Tự do chạy chương trình cho bất cứ mục đích nào.
- Tự do tìm hiểu cách hoạt động của chương trình, và tự do sửa
đổi nó.
- Tự do tái phân phối bản sao.
- Tự do cải tiến chương trình, và phát hành những gì cải tiến ra
công cộng.
Giấy phép GPL ít ràng buộc hơn so với các giấy phép tự do khác như là
Giấy phép BSD, tại vì GPL bảo đảm các quyền tự do ở trên được giữ trong
các bản sao và tác phẩm phái sinh. Nó là giấy phép kiểu copyleft nên nó làm
cho các tác phẩm bắt nguồn từ chương trình dưới GPL cũng phải được phát
hành dưới GPL. Không giống vậy, các giấy phép kiểu BSD để những tác
phẩm phái sinh được tái phân phối như phần mềm thương mại.
Các phiên bản của GPL
Version 1 – General Public License – GPL v1, 1989
Version 2 – General Public License – GPL v2, 1991
Version 2 – Library General Public License – LGPL v2, 1991
Version 2.1 – Lesser General Public License – LGPL v2.1, 1999
Version 3 – GPLv3, 2007
Phiên bản hiện hành của giấy phép này là phiên bản 2, được phát hành
vào năm 1991. Giấy phép bản quyền gốc của các phần mềm tự do nguồn mở
13


chính là giấy phép GPL. Các phần mềm được cung cấp theo giấy phép GPL

chính là các phần mềm tự do nguồn mở tuân thủ theo các quyền của GPL.
Một số qui định đáng lưu ý trong GPL Version 2:
– Có thể bán mã thực thi tạo ra từ phiên bản sửa đổi tuy nhiên mã
nguồn phải công bố.
– Mã nguồn của sản phẩm và tất cả các sửa đổi sau đó phải tồn tại dưới
dạng phần mềm tự do.
– Tất cả các chương trình có sử dụng mã nguồn GPL phải phát hành
dưới giấy phép GPL.
– Liên kết động hay tĩnh đến mã nguồn hoặc thự viện GPL.
– Sao chép một số dạng của mã nguồn GPL.

Giấy phép công cộng GNU hạn chế:
Giấy phép công cộng GNU hạn chế (LGPL) là giấy phép sửa đổi của
GPL, được sử dụng cho một số thư viện phần mềm. Đây là phiên bản đầu
tiên của giấy phép GNU hạn chế. Giấy phép này cũng được coi là phiên bản
kế tiếp của giấy phép công cộng GNU phiên bản 2.0 do đó nó có phiên bản
là 2.1 phát hành tháng 2 năm 1999.
Có 1 số chú ý trong LGPL 2.1 như sau:
– Được tạo ra để cho phép liên kết động mã nguồn không phát hành
dưới dạng GPL hoặc LGPL vào mã nguồn LGPL.
– Dàn xếp việc sử dụng các thư viện tự do vào mục đích thương mại, ví
dụ thư viện GNU
– Hầu hết các điều khoản và điều kiện tương tự GPL.
– Nếu bạn thay đổi và phân phối một thư viện LGPL.
– Thư viện và những thay đổi phải được công bố (mã thực thi và mã
nguồn cùng với chú thích về những sửa đổi).
– Bằng sáng chế được gắn với sự phân phối những sửa đổi.
14



1.5 So sánh phần mềm mã nguồn mở và phần mềm mã nguồn đóng
1.5.1. Ưu điểm
Về độ tin cậy và tính an ninh của phần mềm:

- PMMNM có mã nguồn để công khai trên Internet nên được rà soát
liên tục bởi nhiều người. Còn phần mềm nguồn đóng (PMMNĐ) việc rà soát
mã nguồn chỉ do nhóm phát triển phần mềm thực hiện. Vì vậy khả năng phát
hiện lỗi và các lỗ hổng an ninh của PMMNM cao hơn.
- Khi đã phát hiện lỗi và lỗ hổng an ninh, PMMNM có đông đảo các
nhà lập trình tham gia sửa, nên sẽ sửa nhanh hơn.
=> Từ hai lý do trên, độ tin cậy và tính an ninh của PMMNM cao hơn
PMMNĐ.
Về khả năng thay đổi để thích ứng nhanh với yêu cầu sử dụng:
PMMNM có mã nguồn có thể thay đổi không hạn chế cho phép thay
đổi tùy vào hoàn cảnh và mục đích sử dụng sao cho phù hợp. Nếu là PMMNĐ
thì phải thương lượng với nhà cung cấp.
Về khả năng độc lập với nhà cung cấp:
Do mã nguồn công khai, nhiều nhà cung cấp có thể tìm hiểu để làm chủ
phần mềm. Do đó PMMNM có thể được vận hành và bảo trì bởi nhiều nhà
cung cấp. Ngược lại với PMMNĐ, chỉ người viết ra nó mới hiểu rõ. Vì vậy
khả năng lựa chọn nhà cung cấp PMMNM rộng hơn. Khi cần, bỏ nhà cung
cấp này, chọn nhà cung cấp khác cho cũng phần mềm đó dễ dàng hơn.
Về phạm vi áp dụng:
Giấy phép sử dụng PMMNM không hạn chế người sử dụng cũng như
lĩnh vực sử dụng. Do đó khi cần, có thể cung cấp nhanh phần mềm đó cho
những người sử dụng mới. Ngược lại, giấy phép sử dụng PMMNĐ có những

15



quy định chặt chẽ, ví dụ, là giấy phép cấp cho cơ quan A dùng vào mục đích
đào tạo chẳng hạn. Khi cần mở rộng phải mua giấy phép khác.
Về chi phí sử dụng:
PMMNM gần như miễn phí hoàn toàn khâu đăng ký. Đa số các sản
phẩm sử dụng chỉ phải trả một ít chi phí cho những dịch vụ nhất định khi cần
thiết PMMNM có thể được tải hầu như hoàn toàn miễn phí từ Internet. Đương
nhiên dùng PMMNM rõ ràng là rẻ hơn rất nhiều so với dùng phần mềm có
bản quyền.
Phí sử dụng PMMNĐ thường tính theo đầu máy tính. Phí sử dụng
PMMNM (nếu có) không tính theo kiểu đó, nó không hạn chế số lượng máy
cài. Vì vậy, khi số người dùng không dự kiến trước được thì dùng PMMNM
lợi hơn vì cài thêm cho nhiều máy mà không bị tăng phí.

Thử nghiệm nhanh:
PMMNM đặc biệt thích hợp để tạo mẫu và thử nghiệm nhanh. Vì vậy,
những trường hợp cần có bản chạy thử với chi phí nhỏ nhất và thời gian
nhanh nhất thì PMMNM là rất phù hợp.

1.5.2 Nhược điểm
Hạn chế tính năng
Nhiều lĩnh vực chưa có sản phẩm phần mềm hoàn thiện mặc dù có rất
nhiều dự án PMMNM đang được tiến hành do thiếu những người vừa giỏi về
kỹ thuật lại vừa thạo về chuyên ngành kinh doanh, nghiên cứu.
PMMNM thường không hoàn toàn tương thích với PMMNĐ, nhất là
khi cài trên máy để bàn. Khi nào các công ty chuyển hẳn từ hệ thống chuẩn
đóng sang chuẩn mở thì nhược điểm này sẽ được khắc phục.

16



Hiện tại, ở Việt Nam, theo đánh giá của Liên minh phần mềm doanh
nghiệp BSA và công ty Dữ liệu Quốc tế IDC thì tỉ lệ vi phạm bản quyền phần
mềm còn ở mức khá cao khoảng 85%. Mặc dù, các PMMNM là hoàn toàn
miễn phí nhưng vẫn có rất nhiều người chấp nhận vi phạm bản quyền hơn là
sử dụng các PMMNM.
Theo giới chuyên môn, các PMMNM nói chung vẫn còn kém xa về
chất lượng so với các phần mềm có thu phí. Chẳng hạn những phần mềm
trong ngành dầu khí tại Việt Nam có phần mềm lên tới 10.000 đô la và hiện
nay vẫn chưa có phần mềm miễn phí nào có thể sánh kịp. Riêng phần mềm
office của Windows thì đã có vô số những sản phẩm cạnh tranh với nó như
OpenOffice, Google Docs, Zoho,… Nhưng thực tế tại Việt Nam, rất ít người
sử dụng các phần mềm này vì chúng còn thiếu nhiều tính năng so với bản của
Microsoft.
Thiếu sáng tạo
Điểm hạn chế thứ hai của PMMNM là thiếu tính sáng tạo. 100% các
phiên bản của những phần mềm này thường chỉ có một nhiệm vụ duy nhất là
bắt chước y chang các tính năng của bản nâng cấp các phần mềm thu phí.
Điển hình nhất là Ubuntu với Mac và Windows. Khi Windows và Mac phát
triển một loạt các tính năng giao diện mới thì Ubuntu cũng xây dựng bổ sung
các tính năng đó. Một vài chuyên gia cho rằng, nếu thực sự những PMMNM
giành được thị phần lớn, nó sẽ vấp phải một rào cản cực lớn đó là bản quyền,
vì tất cả những nội dung của các phần mềm này đều là sao chép lại các phần
mềm bản quyền. Bởi vì lý do đó, theo đánh giá của cộng đồng mạng, khá
nhiều người đã chán nản quay lại dùng các phần mềm trả phí (đã crack) vì
tính năng của chúng được cập nhật thường xuyên hơn.

Giao diện chưa hấp dẫn
17



PMMNM còn thiếu tính tiện dụng vốn là đặc trưng của phần mềm
thương mại. Giao diện đồ họa với người sử dụng (GUI – Graphical User
Interface) của PMMNM chưa thực sự thân thiện.
Bảo mật không bảo đảm
Mặc dù được cho rằng có độ bảo mật tốt và dễ phát hiện và chữa lỗi
nhưng không ai dám khẳng định những PMMNM là an toàn. Nếu như với
Windows hay Apple, những sản phẩm của họ do các lập trình viên giỏi nhất
trên thế giới sáng tạo ra thì các PMMNM lại do một nhóm các lập trình viên
đủ mọi trình độ từ khắp nơi trên thế giới xây dựng nên. Nhiều người thường
có sự nhầm lẫn về độ bảo mật của các phần mềm và không phải phần mềm ít
bị tấn công, ít lỗ hổng là an toàn.
Theo đánh giá của các chuyên gia, Internet Explorer là trình duyệt web
an toàn nhất so với các trình duyệt khác, nhưng nó bị tấn công nhiều vì được
sử dụng nhiều trên thế giới. Safari thậm chí còn “dính” rất nhiều lỗi bảo mật
hơn cả Internet Explorer nhưng lại ít bị hacker tấn công, đơn giản vì hệ điều
hành Macintosh chiếm một tỷ trọng quá nhỏ trên thế giới.
Điều này cũng đồng nghĩa với các hệ điều hành mã nguồn mở dễ bị tấn
công hơn rất nhiều lần vì code thiết kế được cung cấp sẵn trên mạng. Nếu như
một PMMNM có thể do nhiều người thiết kế nhưng đến lúc nó bị tấn công thì
lại không có ai đứng ra chịu trách nhiệm. Không những thế, các phiên bản
những hệ điều hành dạng này khá nhiều và phức tạp nên người dùng đôi khi
sẽ không biết họ đang dùng sản phẩm nào. Đó cũng là lý do, tại sao các hãng
sản xuất máy tính, thà chấp nhận bỏ tiền mua hệ điều hành Microsoft
Windows còn hơn sử dụng các hệ điều hành nguồn mở miễn phí như Hacao
hay Ubuntu.

18


Mã nguồn mở không có nghĩa là miễn phí

Các code thiết kế ban đầu của các phần mềm ban đầu được cung cấp
miễn phí trên mạng, nhưng khá nhiều công ty đã đi theo hướng sử dụng các
code này để biến chúng thành sản phẩm của riêng mình. Công ty Mozilla bỏ
tiền thuê nhân viên phát triển trình duyệt web mã nguồn mở Firefox và cung
cấp miễn phí trên mạng. Nếu miễn phí thì tiền đâu để Mozilla trả lương cho
nhân viên? Theo thông cáo báo chí năm 2009, Firefox kiếm được gần 100
triệu đô là nhờ việc tích hợp các công cụ search vào bên trong nó. Hiện tại,
Hoa Kỳ đang dự định đánh thuế công ty này vì mục đích phi lợi nhuận ban
đầu của Firefox đã không còn nữa.
Các PMMNM muốn phát triển tốt phải có một tổ chức đầu tư nghiên
cứu chuyên sâu. Và một khi đã dày công nghiên cứu, phát triển thì chẳng ai
chấp nhận cho không chất xám và công sức của chính mình.

Nguồn mở là kì vọng:
Khâu đào tạo chỉ chú trọng vào phần mềm nguồn đóng dẫn đến nhân
lực chuyên sâu về PMMNM thiếu và yếu.
“Nói đến nguồn mở là nói đến kì vọng” chỉ những ai “nhảy” vào lĩnh
vực này mới thấy hết cái “xương” của nó. Thực tế bất cập là nhiều người hiểu
sai khi nghĩ rằng đã “mở” là miễn phí. Trong khi bản chất của doanh nghiệp
là lợi nhuận. Nếu người dùng chỉ nghĩ tới miễn phí thì doanh nghiệp cung cấp
sẽ không có được lợi nhuận.
Nhiều chuyên gia cũng đã bình luận “ứng dụng PMMNM như đường
hầm không thấy lối ra”, vì thế đòi hỏi cần có mô hình để phát triển sao cho
hợp lí.

19


CHƯƠNG 2: PHÁT TRIỂN PHẦN MỀM MÃ NGUỒN MỞ
2.1 Mô hình phát

2.1.1 Giới thiệu

triển phần mềm mã nguồn mở

Mô hình phát triển phần mềm mã nguồn mở được đặc trưng bởi các qui
trình và giá trị làm cho nó khác biệt với mô hình phát triển sở hữu độc quyền
theo truyền thống.
Mô hình phát triển phần mềm được nhiều tổ chức thực hiện thường
gồm những giai đoạn riêng rẽ các hoạt động phát triển như kiểu thác nước đổ
cho tới một sự phát hành của dự án. Tuy nhiên, mô hình phát triển phần mềm
mã nguồn mở có cách tiếp cận khác, ưu tiên cho qui trình phát triển dễ thay
đổi hơn được đặc trưng bằng sự gia tăng trong các đội về sự cộng tác, tích
hợp và kiểm thử liên tục, và sự can thiệp lớn hơn của người sử dụng đầu cuối.
2.1.2

Mô hình phát triển truyền thống
Đặc trưng của mô hình phát triển phần mềm truyền thống là mô hình

thác nước. Mô hình thác nước khá nổi tiếng và được sử dụng nhiều bởi nhiều
20


nhóm phát triển phần mềm và nhiều doanh nghiệp trên thế giới. Đây là mô
hình thác nước điển hình:
Phân tích yêu cầu
Thiết kế
Triển khai thực hiện
Kiểm thử
Liên kết & bảo trì


Hình 1: Mô hình thác nước điển hình
Trong đó quy trình phát triển trông giống như một dòng chảy, với các
bước được thực hiện theo trật tự nghiêm ngặt và không có sự quay lui hay
nhảy vượt các bước là: phân tích yêu cầu, thiết kế, triển khai thực hiện, kiểm
thử, liên kết và bảo trì.
- Đầu tiên, nghiên cứu kỹ lưỡng về các yêu cầu của khách hàng và sau
đó tổng hợp các yêu cầu.
21


- Thiết kế: tạo ra các tài liệu dành cho lập trình viên, trong đó mô tả chi
tiết các phương pháp và kế hoạch thực hiện các yêu cầu đã được làm rõ ở
bước trước.
- Các lập trình viên sẽ dựa vào tài liệu trên tiến hành viết phần mềm
bao gồm: mã hóa và viết mã.
- Kiểm thử và chỉnh sửa phần mềm
- Khi sản phẩm được sử dụng thì dựa vào yêu cầu người dùng thì tiến
hành bảo trì, bảo dưỡng phần mềm.
Mặc dù mô hình này rất hợp lý theo từng bước nhưng nó cũng có khá
nhiều khuyết điểm khi xây dựng phần mềm như:
- Yêu cầu khách hàng luôn thay đổi không cụ thể chính xác ngay từ
đầu.
- Sự cạnh tranh giữa các công ty đòi hỏi phần mềm phải có hiệu quả
cao và đáp ứng đúng và đủ yêu cầu của khách hàng.
- Thời gian sống của phần mềm không được xác định nó phụ thuộc vào
nhu cầu thị trường.
- Khi phần mềm đã hoàn thành mà khách hàng lại có yêu cầu khác thì
đòi hỏi lập trình viên phải làm lại từ đầu và khách hàng phải chờ đợi khá lâu.
Phương pháp phát triển phần mềm truyền thống thì có sự quản lý chặc
chẽ:

• Quản lý ai là người viết các phần mã lệnh, phương pháp mà họ liên
kết các gói mã lệnh với nhau.
• Quản lý nội dung của phần mềm.
• Quản lý trong xuất quá trình vận hành sản phẩm cho tới khi sản phẩm
không được sử dụng nữa
2.1.3

Mô hình phát triển phần mềm mã nguồn mở
Phần mềm mã nguồn mở (OSS) là dự án được xây dựng và duy trì bởi

một mạng lưới của các lập trình viên tình nguyện và không có một thiết kế
ban đầu rõ ràng, không có một qui trình quản lý chính thức. Phần mềm mã
22


nguồn mở nói chung cho phép bất cứ ai có thể tạo ra các thay đổi của phần
mềm, cho phù hợp với các hệ thống điều hành và có thể chia sẻ nó với những
người khác.
Mô hình này sử dụng một chính sách lỏng lẽo trong việc:
- Phát hành mã nguồn
- Quản lý ai là người viết mã nguồn cho việc sửa lỗi và cho các chức
năng mới.
Một trong những đặc tính cốt lõi của mô hình phát triển mã nguồn mở
là cá nhân hoặc các đội lập trình có trách nhiệm cho sự phát triển là duy trì
mã nguồn. Các tính năng được đóng góp sẽ được đưa vào trong một thân mã
nguồn duy nhất từ một hoặc nhiều người duy nhất, những người mà đảm bảo
cho các mã nguồn mới được phát hành đáp ứng được toàn bộ yêu cầu và tập
hợp các tiêu chuẩn được thiết lập cho dự án.
Vòng đời phát triển tính năng của một dự án phần mềm nguồn mở bắt
đầu với một ý tưởng, tính năng hoặc sự cải tiến cho một dự án mới, được đề

xuất cho các lập trình khác của dự án. Tiếp sau là thảo luận về yêu cầu cho
tính năng đó, bước tiếp theo là thiết kế và triển khai nó. Vòng đời tính năng
của một dự án được minh họa như sau:

23


2.1.4

Sự khác và giống nhau giữa 2 mô hình trên
Các yêu cầu cần thiết cho phát triển một phần mềm là: lập trình viên,

máy tính, kênh phân phối, kỹ thuật viên.
• Đối với CNPM truyền thống:
- Số lượng lập trình viên và các tài nguyên khác thì phụ thuộc vào nơi
đảm nhiệm xây dựng phần mềm.
- Phần mềm là bản quyền nên cần xây dựng cơ chế bảo vệ phần mềm.
• Đối với PMMNM:
–Lập trình viên làm việc trên tinh than tình nguyên.
–Sử dụng hạ tầng cơ sở (ví dụ máy tính) sẵn có.
–Phân phối qua Internet
2.2 Quy trình phát triển phần mềm
2.2.1 Các giai đoạn phát triển

mã nguồn mở

Quy trình phát triển phần mềm luôn được xây dựng trên cơ sở các giai
đoạn chuẩn của Công nghệ phần mềm. Một cách tổng quát có thể nói rằng cả
hai quy trình phát triển phần mềm mã nguồn mở và phần mềm mã nguồn
đóng đều thực hiện theo các bước sau:

Bước 1: Xác định các yêu cầu phần mềm (Requirement Engineering):
24


Xác định phần mềm cần phải làm gì, có những yêu cầu gì. Trong giai
đoạn này chúng ta cùng với khách hàng xác định các yêu cầu phần mềm về
mặt chức năng, tổng hợp các yêu cầu phần mềm và mô hình hóa các yêu cầu
phần mềm.
Bước 2: Phân tích hệ thống phần mềm (Analysis):
Tiến hành phân tích hệ thống phần mềm: xác định kiến trúc cấu hình
phần cứng, xác định kiến trúc phần mềm, mô hình phát triển phần mềm, xác
định các kiến trúc và thành phần đáp ứng các yêu cầu của phần mềm.
Bước 3: Thiết kế chi tiết (Design):
Thiết kế chi tiết các thành phần trong kiến trúc tổng thể của phần mềm.
Các thành phần có thể được xây dựng dựa trên các phương pháp luận: hướng
đối tượng, hướng thành phần,... Mục đích của giai đoạn này là thiết kế chi tiết
các thành phần để có thể tiến hành lập trình.
Bước 4: Thực hiện (Development):
Thực hiện viết mã cho các mô-đun và các thành phần theo thiết kế. Quá
trình này có thể phân chia cho các lập trình viên để tiến hành song song, sau
đó tiến hành liên kết các thành phần lại với nhau đề tạo thành sản phẩm phần
mềm một cách tổng thể.
Bước 5: Kiểm thử phần mềm (Testing):
Kiểm thử phần mềm theo các kịch bản kiểm thử đã vạch ra. Giai đoạn
này phải đảm bảo tất cả các mô-đun phần mềm đều được kiểm thử và chạy
không có lỗi và đáp ứng đầy đủ các chức năng như theo yêu cầu phần mềm.
Bước 6: Tích hợp triển khai (Integration Implementation):
Cài đặt phần mềm để đưa vào sử dụng. Thông thường các công việc
trong giai đoạn này liên quan đến đào tạo người dùng, tiến hành nhập các dữ
liệu thực, v.v…

Bước 7: Bảo dưỡng phần mềm (Maintenance):
Các hỗ trợ cho người sử dụng trong quá trình sử dụng phần mềm.

25


×