Đang tải... (xem toàn văn)
tìm hiểu phần mềm mã nguồn mở
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. [...]... 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... 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... (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 yêu cầu phần mềm đƣợc phân tán và lan... 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... 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... đƣợc chất lƣợng phần mềm, v.v… 2.2.2 Loại phần mềm mã nguồn mở (*) Dựa theo tính chất của dự án phát triển, phần mềm mã nguồn mở đƣợc chia làm hai loại: (l) Các dự án đƣợc tài trợ toàn phần: Các dự án này đƣợc hỗ trợ kinh phí toàn phần bởi các tổ chức ví dụ nhƣ Free Software Foundation Khi đó chúng ta có thể coi nhƣ đây là một dự án phát triển phần mềm giống nhƣ bất kỳ một dự án phần mềm thƣơng mạ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... 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... 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... 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