Chuong 2 Ma Nguon Mo Va Quan Tri

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 40

PHÁT TRIỂN ỨNG DỤNG MÃ NGUỒN MỞ

CHƯƠNG 2
MÃ NGUỒN MỞ VÀ QUẢN TRỊ

1
NỘI DUNG

1. Cộng đồng mã nguồn mở


2. Các vấn đề trong quá trình cộng tác
3. Quản trị mã nguồn mở

2
CỘNG ĐỒNG MÃ NGUỒN MỞ

▪ Các ứng dụng mã nguồn mở được phát triển


bởi một cộng đồng gồm nhiều thành viên làm
việc cùng nhau với mục tiêu chung.
▪ Các cộng đồng phát triển mã nguồn mở đạt
được sự thành công đều có cấu trúc tổ chức
tương tự như các công ty phần mềm chuyên
nghiệp.
▪ Cấu trúc của cộng đồng mã nguồn mở gồm
nhiều nhóm với các vai trò khác nhau.

3
CỘNG ĐỒNG MÃ NGUỒN MỞ

MỘT SỐ NHÓM CÔNG VIỆC

4
CỘNG ĐỒNG MÃ NGUỒN MỞ
NHÓM PHÁT TRIỂN (Developers' Group)

▪ Thiết kế kiến trúc, phát triển các chức năng và kiểm


soát các phiên bản mã nguồn của phần mềm mã
nguồn mở.
▪ Thiết kế kiến trúc
• Yêu cầu chuyên môn cao, có nhiều kinh nghiệm,
hiểu rõ về toàn bộ hệ thống phần mềm.
• Thiết kế các module cơ bản.
• Phân tích và thiết kế giải thuật.
• Quy ước cách phát triển chức năng dựa theo kiến
trúc được thiết kế.
• ...

5
CỘNG ĐỒNG MÃ NGUỒN MỞ
NHÓM PHÁT TRIỂN (Developers' Group)

▪ Phát triển các chức năng


• Mỗi chức năng có thể được phân chia thành các
module nhỏ hơn.
• Sử dụng ngôn ngữ lập trình để xây dựng các chức
năng.
• Kiểm soát và theo dõi mã nguồn
▪ Kiểm soát các phiên bản mã nguồn
• Mã nguồn của phần mềm có sự thay đổi liên tục
trong quá trình phát triển các chức năng.
• Kiểm soát các phiên bản mã nguồn để quản lý được
các thay đổi của mã nguồn một cách hiệu quả

6
CỘNG ĐỒNG MÃ NGUỒN MỞ
NHÓM TÍCH HỢP (Builders' Group)

▪ Phần mềm thường được chia nhỏ thành nhiều module,


mỗi module được phát triển bởi các nhóm khác nhau.
▪ Nhóm tích hợp có nhiệm vụ biên dịch các module đã
phát triển xong và tích hợp các module lại với nhau để
tạo thành phần mềm hoàn chỉnh.
▪ Khi một module có sự thay đổi → cần biên dịch và tích
hợp lại.

7
CỘNG ĐỒNG MÃ NGUỒN MỞ
NHÓM TÍCH HỢP (Builders' Group)

8
CỘNG ĐỒNG MÃ NGUỒN MỞ
NHÓM KIỂM THỬ (Testers' Group)

▪ Kiểm thử các chức năng để tìm ra các lỗi của phần mềm
▪ Các loại kiểm thử:
• Kiểm thử hộp trắng
• Kiểm thử hộp đen
▪ Các mức độ kiểm thử:
• Kiểm thử đơn vị
• Kiểm thử tích hợp
• Kiểm thử hệ thống
• Kiểm thử alpha
• Kiểm thử beta

9
CỘNG ĐỒNG MÃ NGUỒN MỞ
NHÓM QUẢN LÝ PHÁT HÀNH PHẦN MỀM
(Release Management Group)
▪ Quản lý các phiên bản đã phát hành của phần mềm
▪ Các tính năng mới
▪ Các lỗi phần mềm đã được sửa
▪ Sự khác nhau giữa các phiên bản
▪ Quy ước cách đặt tên các phiên bản
▪ ...

10
CỘNG ĐỒNG MÃ NGUỒN MỞ
CÁC VẤN ĐỀ TRONG QUÁ TRÌNH CỘNG TÁC

▪ Phần mềm mã nguồn mở có số lượng lớn thành viên


tham gia phát triển, các thành viên có thể không thuộc
cùng một tổ chức.

11
CỘNG ĐỒNG MÃ NGUỒN MỞ

MỘT SỐ VẤN ĐỀ TRONG QUÁ TRÌNH PHÁT TRIỂN

▪ Xây dựng khung cấu trúc cho ứng dụng.


• Cấu trúc mã nguồn, các thành phần cơ bản
• Tài liệu hướng dẫn
• Các quy tắc
▪ Quản trị mã nguồn
• Theo dõi sự thay đổi.
• Giải quyết xung đột mã nguồn.
• Kiểm thử, tích hợp.

12
CỘNG ĐỒNG MÃ NGUỒN MỞ

MỘT SỐ VẤN ĐỀ TRONG QUÁ TRÌNH PHÁT TRIỂN

▪ Quản lý phản hồi đóng góp từ cộng đồng.


• Yêu cầu chức năng bổ sung
• Các lỗi phát sinh.
▪ Quản lý các phiên bản của ứng dụng.
• Chuyển đổi giữa các phiên bản.
• Sự phụ thuộc phiên bản vào các ứng dụng khác.
▪ Tìm kiếm các nguồn tài trợ.
• Đảm bảo dự án duy trì bền vững.

13
QUẢN TRỊ MÃ NGUỒN MỞ

▪ Trong quá trình phát triển, mã nguồn của ứng


dụng luôn có sự thay đổi liên tục → cần phải
có các công cụ hỗ trợ quản trị.
▪ Các công cụ cho phép quản trị mã nguồn mở:
• GitHub
• GitLab
• BitBucket
• SourgeForge
• Mercurial
• Travis CI
• Jenkins 14
QUẢN TRỊ MÃ NGUỒN MỞ

CHỨC NĂNG CHÍNH CỦA CÔNG CỤ QUẢN TRỊ

▪ Lưu trữ mã nguồn trên máy chủ.


▪ Theo dõi sự thay đổi trong mã nguồn và quản
lý các phiên bản cập nhật.

15
QUẢN TRỊ MÃ NGUỒN MỞ

CHỨC NĂNG CHÍNH CỦA CÔNG CỤ QUẢN TRỊ

16
QUẢN TRỊ MÃ NGUỒN MỞ

CHỨC NĂNG CHÍNH CỦA CÔNG CỤ QUẢN TRỊ


▪ Giải quyết vấn đề xung đột mã nguồn.

▪ Mỗi lập trình viên làm việc trên các nhánh riêng trong
quá trình phát triển.
▪ Mã nguồn trên các nhánh cần được xem xét và kiểm
thử trước khi tích hợp vào nhánh chính.
17
QUẢN TRỊ MÃ NGUỒN MỞ

CHỨC NĂNG CHÍNH CỦA CÔNG CỤ QUẢN TRỊ


▪ Tự động kiểm thử, tích hợp mã nguồn

TRAVIS CI JENKIN

18
QUẢN TRỊ MÃ NGUỒN MỞ

THỰC HÀNH
QUẢN TRỊ MÃ NGUỒN SỬ DỤNG GIT VÀ GITHUB

19
QUẢN TRỊ MÃ NGUỒN MỞ

GIT VÀ GITHUB
▪ Git là một hệ thống kiểm soát phiên bản phân tán (
distributed version control system) dùng để theo
dõi sự thay đổi của mã nguồn trong quá trình phát
triển phần mềm nhằm hỗ trợ việc cộng tác giữa
các lập trình viên.
▪ GitHub là một dịch vụ cung cấp nơi lưu trữ mã
nguồn trên nền tảng web cho các dự án phát triển
phần mềm.

20
QUẢN TRỊ MÃ NGUỒN MỞ

GIT VÀ GITHUB

▪ GitHub lưu trữ mã nguồn, lập trình viên cập nhật


mã nguồn trên GitHub thông qua Git.
▪ Có thể theo dõi và thực hiện tích hợp các sự thay
đổi cho mã nguồn. 21
QUẢN TRỊ MÃ NGUỒN MỞ

LƯU TRỮ MÃ NGUỒN TRÊN GITHUB


▪ Tạo tài khoản GitHub tại: https://github.com
▪ Tạo một kho lưu trữ (repository).

22
QUẢN TRỊ MÃ NGUỒN MỞ

LƯU TRỮ MÃ NGUỒN TRÊN GITHUB


▪ Thêm thành viên cộng tác

▪ Upload mã nguồn lền GitHub

23
QUẢN TRỊ MÃ NGUỒN MỞ

GIT
▪ Cài đặt Git: https://git-scm.com/downloads
▪ Cài đặt Tortoise Git để sử dụng Git bằng giao diện:
https://tortoisegit.org/

24
QUẢN TRỊ MÃ NGUỒN MỞ

CẤU HÌNH GIT


▪ Mở Git Bash và chạy các lệnh sau
git config --global user.name "username"
git config --global user.email "email"

25
QUẢN TRỊ MÃ NGUỒN MỞ

KẾT NỐI GIT VÀ GITHUB


▪ Mở Git Bash
ssh-keygen -t rsa -b 4096 -C "email"
clip < ~/.ssh/id_rsa.pub
▪ Mở tài khoản GitHub, click Avatar (góc trên bên phải) →
Setting → SSH and GPG Keys →Click vào New SSH Key
và dán SSH Key

26
QUẢN TRỊ MÃ NGUỒN MỞ

27
QUẢN TRỊ MÃ NGUỒN MỞ

MỘT SỐ THAO TÁC TRÊN GIT VÀ GITHUB


▪ Clone
▪ Tạo nhánh
▪ Commit
▪ Push
▪ Pull
▪ Switch/checkout
▪ Resolve
▪ Revert
▪ Pull Request
▪ ...
28
QUẢN TRỊ MÃ NGUỒN MỞ

MỘT SỐ THAO TÁC TRÊN GIT VÀ GITHUB


▪ Clone
• Sao chép mã nguồn từ GitHub
• Chọn mã nguồn cần tải

29
QUẢN TRỊ MÃ NGUỒN MỞ

MỘT SỐ THAO TÁC TRÊN GIT VÀ GITHUB


▪ Clone (tt)
• Di chuyển đến vị trí trên máy tính cần lưu mã
nguồn. Ví dụ: D:/Laravel
• Click chuột phải → Git Clone

30
QUẢN TRỊ MÃ NGUỒN MỞ

MỘT SỐ THAO TÁC TRÊN GIT VÀ GITHUB


▪ Tạo nhánh
• Khi cùng phát triển một phần mềm, mỗi thành
viên nên làm việc trên một nhánh riêng để hạn
chế việc xung đột mã nguồn.

31
QUẢN TRỊ MÃ NGUỒN MỞ

MỘT SỐ THAO TÁC TRÊN GIT VÀ GITHUB


▪ Commit
• Cập nhật các sự thay đổi của mã nguồn
• Tại vị trí mã nguồn trên máy tính, click chuột
phải →Git Commit

32
QUẢN TRỊ MÃ NGUỒN MỞ

MỘT SỐ THAO TÁC TRÊN GIT VÀ GITHUB


▪ Commit (tt)

Ghi chú sự
thay đổi
của mã
nguồn

Các file mã
nguồn có
sự thay đổi

Chọn Commit 33
QUẢN TRỊ MÃ NGUỒN MỞ

MỘT SỐ THAO TÁC TRÊN GIT VÀ GITHUB


▪ Push
• Gửi các thay đổi của mã nguồn trên máy tính
lên GitHub
• Tại vị trí mã nguồn trên máy tính, click chuột
phải →TortoiseGit → Push

34
QUẢN TRỊ MÃ NGUỒN MỞ

MỘT SỐ THAO TÁC TRÊN GIT VÀ GITHUB


▪ Pull
• Cập nhật lại mã nguồn trên máy tính từ GitHub
• Tại vị trí mã nguồn trên máy tính, click chuột
phải →TortoiseGit → Push

35
QUẢN TRỊ MÃ NGUỒN MỞ

MỘT SỐ THAO TÁC TRÊN GIT VÀ GITHUB


▪ Switch/Checkout
• Thay đổi nhánh làm việc.
• Tại vị trí mã nguồn trên máy tính, click chuột
phải →TortoiseGit → Switch/Checkout → Chọn
nhánh làm việc khác

36
QUẢN TRỊ MÃ NGUỒN MỞ

MỘT SỐ THAO TÁC TRÊN GIT VÀ GITHUB


▪ Resolve
• Kiểm tra và chỉnh sửa mã nguồn khi có sự xung
đột.
• Tại vị trí mã nguồn trên máy tính, click chuột
phải →TortoiseGit → Resolve

37
QUẢN TRỊ MÃ NGUỒN MỞ

MỘT SỐ THAO TÁC TRÊN GIT VÀ GITHUB


▪ Revert
• Phục hồi lại mã nguồn trên máy tính tại thời
điểm commit gần nhất.
• Tại vị trí mã nguồn trên máy tính, click chuột
phải →TortoiseGit → Revert

38
QUẢN TRỊ MÃ NGUỒN MỞ

MỘT SỐ THAO TÁC TRÊN GIT VÀ GITHUB


▪ Pull Request
• Gộp mã nguồn trên hai nhánh.

39
HỎI & ĐÁP

40

You might also like