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
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
đ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.
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
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
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ó.
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
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,
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í.
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
- 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
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