Phần mềm Nguồn Mở (Open-Source Software)

Võ Đức Quang Khoa CNTT-Đại học Vinh

Nội dung chính

Chương 1: Phần mềm nguồn mở Chương 2: Phát triển phần mềm nguồn mở Chương 3: Một số PM nguồn mở quan trọng Chương 4: Phát triển Website dựa trên PM

nguồn mở

Chương 2: Phát triển PM nguồn mở

Cộng đồng phát triển PM nguồn mở Tiến trình phát triển phần mềm nguồn mở Hệ thống quản l{ phiên bản mã nguồn

o CVS (Concurrent Versions System) o Subversion (SVN) o Github

Cộng đồng phát triển PM nguồn mở

đồng của chúng.

o Phần lớn các thành viên tham gia để trao đổi, tương

tác với các thành viên khác trong cộng đồng.

o Một dạng cộng đồng khác trong đó một số thành viên có các vai trò đặc biệt hơn, có quyền quyết định các vai trò hoạt động khác thông qua, ví dụ, báo cáo lỗi, viết tài liệu, hỗ trợ các thành viên khác, v.v.

 Cộng đồng, đơn giản là một nhóm cá nhân chia sẻ một/một vài sự quan tâm chung nào đó. o Cả phần mềm nguồn đóng và mở đều có các cộng

Cộng đồng phát triển PM nguồn mở

Lợi thế của cộng đồng nguồn mở:

o Nhiều bình duyệt sẽ làm cho chất lượng, tính an

toàn.

o Có thế sao chép nhanh chóng mà không lo lắng về

chi phí (miễn phí hoặc thấp).

o Có thể chia sẻ chi phí phát triển với những người

trong cộng đồng

o Có thể sửa đổi trong các trường hợp cần thiết

Phát triển phần mềm nguồn mở

Các hoạt động trong phát triển phần mềm:

o Đặc tả: Định nghĩa việc hệ thống làm gì; o Thiết kế và thực thi: Định nghĩa việc hệ thống

được tổ chức như thế nào và thực thi hệ thống;

o Kiểm chứng: Kiểm tra việc hệ thống thực hiện

những gì mà khách hàng muốn;

o Tiến hoá: Thay đổi hệ thống để đáp ứng các thay

đổi như khách hàng cần

Phát triển phần mềm nguồn mở

o Nhóm phát triển, o Trong cùng một công ty o Cộng đồng cùng phát triển

 Ý tưởng của Stallman chia sẻ mã nguồn cho một cộng đồng rộng rãi cùng phát triển bắt đầu từ 1970.

 Nhu cầu chia sẻ mã nguồn giữa:

 Phát triển phần mềm nguồn mở là một tiến trình phát triển phần mềm trong đó mã nguồn được công bố.

Phát triển phần mềm nguồn mở

Một số vấn đề:

o Người tham gia phát triển khắp nơi trên thế giới o Họ cải tiến mã nguồn cùng lúc o Họ luôn có nhu cầu chỉnh sửa mã nguồn trên

phiên bản mới nhất

o Gửi thông báo lỗi bất kz lúc nào

Phát triển phần mềm nguồn mở

Giải quyết vấn đề:

o Quy trình, phương thức quản trị việc phát triển o Mức độ mở o Lựa chọn công cụ hỗ trợ việc phát triển sản phẩm

một cách đồng thời

Hệ thống quản l{ phiên bản mã nguồn

 VCS (version control systems) là hệ thống lưu giữ các phiên bản của mã nguồn của sản phẩm phần mềm

cho từng thành viên

 VCS cho phép người quản trị phân chia các tập tin

 Cho phép các thành viên có thể phát hiện lỗi và

sửa lỗi thuận tiện

 Tự động so sánh và cập nhật mã nguồn khi các

thành viên sửa đổi cùng một tập tin tại cùng một thời điểm

Hệ thống quản l{ phiên bản mã nguồn

Hoạt động theo mô hình o Sao chép – Sửa đổi – Gộp

Hệ thống quản l{ phiên bản mã nguồn

 Người phát triển (developer) tải một bản copy đang làm việc của chương trình từ hệ thống (check out)  Người phát triển chỉnh sửa bản sao chép một cách tự do. Cùng thời điểm, các người phát triển khác cũng đang làm việc trên bản copy của họ

 Người phát triển kết thúc việc thay đổi và chuyển nó

cho hệ thống quản l{ mã nguồn (commit)

 Các nhà phát triển khác có thể yêu cầu truy vấn thư viện các bản copy để thấy bản copy chính (master copy) có thay đổi hay không. Nếu có, hệ thống tự động cập nhật các bản copy đang làm việc của họ

Hệ thống quản l{ phiên bản mã nguồn

Hệ thống quản l{ phiên bản mã nguồn

o CVS (Concurrent Versions System) o Subversion (SVN) o Git o Github o SourceForge o ...

CVS (Concurrent Versions System)

 CVS: Hệ thống các phiên bản đồng thời.  Đây là hệ thống quản l{ phần mềm mã nguồn mở, được đề xuất bởi Dick Grune vào những năm 80

 CVS được dùng để theo vết tất cả các công việc và các

thay đổi trong một tập hợp các tập tin.

 CVS cho phép nhiều lập trình viên phát triển phần

mềm cộng tác với nhau

 CVS được cấp phép bởi giấy phép công cộng GNU GPL  Ngừng phát hành phiên bản mới từ 2008

Subversion (SVN)

phần mềm quản l{ phiên bản Concurrent Versioning System (CVS) đã cũ và có nhiều nhược điểm

 Subversion được thiết kế với mục đích thay thế

tham gia phát triển Subversion

 Một số các lập trình viên chính cho dự án CVS

 Subversion rất phổ biến trong giới mã nguồn mở và được dùng để quản l{ mã nguồn cho nhiều ứng dụng Phần mềm miễn phí như: Apache Software Foundation, KDE, GNOME, Free Pascal, FreeBSD, GCC, Python, Ruby,..

Subversion (SVN)

 Google Code, BountySource chỉ dùng Subversion

 SourceForge.net và Tigris.org, nơi chứa miễn phí chuyên nghiệp dành cho các ứng dụng tự do, đều hỗ trợ Subversion cho các ứng dụng lưu trữ trong máy chủ

để quản l{ các phiên bản mã nguồn

License. Do đó Subversion là một phần mềm nguồn mở và miễn phí

 Subversion được phát hành với giấy phép Apache

Git/Github

Git là phần mềm quản l{ mã nguồn phân tán được phát triển bởi Linus Torvalds vào năm 2005, ban đầu dành cho việc phát triển nhân Linux.

Hiện nay, Git trở thành một trong các phần mềm quản l{ mã nguồn phổ biến nhất Git là phần mềm mã nguồn mở được phân

phối theo giấy phép công cộng GPL2

Git/Github

 GitHub là một dịch vụ cung cấp kho lưu trữ mã nguồn Git dựa

trên nền web cho các dự án phát triển phần mềm.

 Cung cấp cả phiên bản trả tiền lẫn miễn phí cho các tài khoản  Các dự án mã nguồn mở sẽ được cung cấp kho lưu trữ miễn

phí

 Đến 4/2016, GitHub có hơn 14 triệu người sử dụng với hơn 35

triệu kho mã nguồn

 Github đã trở thành một yếu có sức ảnh hưởng trong cộng

đồng phát triển mã nguồn mở

 Nhiều nhà phát triển đã xem nó là một sự thay thế cho HS xin việc. Một số nhà tuyển dụng đánh giá ứng viên thông qua kho mã nguồn của họ.

Git/Github

Làm việc với Github.com

o Online trên giao diện website o Sử dụng GFW (Github for windows)

 Xem tài liệu bổ sung

Bài tập về nhà

Sử dụng Github.com o Đăng k{ tài khoản o Tạo dự án o Mời 3-5 bạn tham gia vào dự án o Quản l{, phát triển dự án

Chuẩn bị cho bài học tiếp theo

o Phần mềm VMWare o File ISO tạo máy ảo Linux