Tải bản đầy đủ (.pdf) (78 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 (1.01 MB, 78 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
Họ và tên sinh viên: Nguyễn Tuấn Anh
Lê Văn Ngọc
Vũ Thị thu Thủy
Vi Văn Toàn
Lớp: k7- ĐH tin





NĂM 2012

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
Họ và tên sinh viên: Nguyễn Tuấn Anh
Lê Văn Ngọc
Vũ Thị thu Thủy
Vi Văn Toàn
Lớp: k7- ĐH tin






NĂM 2012
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án-
cô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
Sinh viên: Lê Văn Ngọc










MỤC LỤC





DANH SÁCH CÁC TỪ VIẾT TẮT
STT
Nội dung viết tắt
Từ viết tắt
1
Phần mềm mã nguồn mở
PMMNM
2
Gnu’s Not Unix
GNU
3
General Public Licence
GPL
4
Lesser General Public Licence
LGPL
5
Berkely Software Distribution
BSD
6
Free Software Foundation
FSF

7
Phần mềm nguồn đóng
PMNĐ
8
Công nghệ thông tin
CNTT
9
Công nghệ phần mềm
CNPM
10
Hệ thống phiên bản đồng thời
CVS
11
Hệ thống kiểm soát sửa đổi
SVN
12
Thông tin và Truyền thông
TT & TT
13
Ủy ban nhân dân
UBND
14
Giáo dục đào tạo
GDĐT
15
Common Public License
CPL





DANH SÁCH HÌNH VẼ
Hình 1: Mô hình thác nƣớc điển hình
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ƣ:
+ Ƣ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
- Đố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.






















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 :
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
đổ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ử
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ỉ
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, Linux-
style):
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
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ở
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.

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
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.
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
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.
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í.


















CHƢƠNG 2: PHÁT TRIỂN PHẦN MỀM MÃ NGUỒN MỞ
2.1 Mô hình phát triển phần mềm mã nguồn mở
2.1.1 Giới thiệu
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
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:













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.
- 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
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ì
- 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ã
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:



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 mã nguồn mở
2.2.1 Các giai đoạn phát triển

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):
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.
Đây là trình tự chung của bất kỳ một dự án phát triển phần mềm nào.
Thông thƣờng các giai đoạn này đƣợc thực hiện đúng nhƣ thứ tự đã chỉ ra.
Một số phát triển của mô hình này đã đƣợc thực hiện với mục đích phân công
các công việc trong từng giai đoạn có thể thực hiện song song khi phần mềm
có khối lƣợng công việc lớn (cho các dự án lớn) và nhân sự thực hiện dự án
có số lƣợng đông (mô hình RUP).
Phân phối phần mềm mã nguồn mở (PMMNM) có nghĩa là mã nguồn
của phần mềm đƣợc phân phối và truyền bá cùng với các ứng dụng của nó.
Mô hình phát triển PMMNM cũng có tất cả các giai đoạn của quy trình phát
triển phần mềm:
- Xác định các yêu cầu phần mềm: Lập trình mã nguồn mở cần phải
xây dựng các công cụ cần thiết để phát triển phần mềm. Thông thƣờng các

×