Tiểu luận Nhập môn công nghệ phần mềm - Đề tài: Nghiên cứu, tìm hiểu công cụ lưu trữ mã nguồn online

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI  
KHOA CÔNG NGHỆ THÔNG TIN  
BÀI TIỂU LUẬN  
MÔN HỌC: NHẬP MÔN CÔNG NGHỆ PHẦN MỀM  
Đề tài: Nghiên cứu, tìm hiểu công cụ lưu trữ mã nguồn  
online  
Giáo viên hướng dẫn : Ths.Nguyễn Thái Cường  
Nhóm thực hiện  
: Nhóm 8  
Lớp  
: 201930503200001  
Hà Nội, 2020  
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI  
KHOA CÔNG NGHỆ THÔNG TIN  
BÀI TIỂU LUẬN  
MÔN HỌC: NHẬP MÔN CÔNG NGHỆ PHẦN MỀM  
Đề tài: Nghiên cứu, tìm hiểu công cụ lưu trữ mã nguồn  
online  
Giáo viên hướng dẫn : Ths.Nguyễn Thái Cường  
Nhóm thực hiện  
: Nhóm 8  
Lớp  
: 201930503200001  
Sinh viên thực hiện : Đặng Thị Thu Thảo (NT)  
Lê Sỹ Đức  
Dương Thị Nhung  
Nguyễn Phương Thảo  
Nguyễn Viết Trí  
Hà Nội, 2020  
MỤC LỤC  
3
4
LỜI CẢM ƠN  
Để hoàn thành bài tập lớn này, chúng em xin cảm ơn chân thành đến toàn thể  
thầy cô trong trường Đại học công nghiệp Hà Nội nói chung và các thầy cô trong  
khoa Công nghệ thông tin nói riêng, những người đã tận tình hướng dẫn, chỉ bảo và  
trang bị cho chúng em những kiến thức bổ ích trong những năm học vừa qua. Chúng  
em xin gửi lời cảm ơn đến thầy Nguyễn Thái Cường đã tận tình hướng dẫn, trực tiếp  
chỉ bảo và tạo điều kiện giúp đỡ chúng em trong suốt quá trình làm bài tập lớn. Thầy  
không chỉ truyền đạt kiến thức của môn học mà còn truyền đạt những kỹ năng về  
thuyết trình, kỹ năng làm việc nhóm.  
Chúng em xin chân thành cảm ơn !  
Sinh viên thực hiện  
Nhóm 8  
5
 
PHẦN I. MỞ ĐẦU  
1.  
2.  
Tên đề tài  
Nghiên cứu,tìm hiểu công cụ lưu trữ mã nguồn online với  
công cụ Github  
Lý do chọn đề tài  
Trong quá trình phát triển phần mềm, chúng ta thường sẽ gặp phải nhiều vấn  
đề như:  
- Làm thế nào để quản lý được các phiên bản của quá trình quản lý phần  
mềm?  
- Làm thế nào để quản lý mã nguồn chung cho cả nhóm?  
- Phần code này là của ai viết, người nào phải chịu trách nghiệm khi có  
lỗi xảy ra?  
- Khánh hàng muốn sử dụng lại một phiên bản đã phát hình cũ thì làm  
như thế nào?  
…
Để giải quyết được vấn đề đó, chúng ta có thể sử dụng các công cụ quản lý  
phiên bản và Github là một trong số đó, với công cụ này, toàn bộ phiên bản có thể  
được lưu trữ trên một thư mục (Repository) và tất cả các thành viên tham gia dự án  
có thể thực hiện các thao tác đưa thay đổi lên, cập nhật thay đổi về, cập nhật những  
thay đổi, lấy về những thay đổi do các thành viên khác cập nhật trước đó,..  
Hơn thế nữa việc quản lý cấu hình tốt sẽ đem lại nhiều lợi ích:  
- Giảm thiểu sự nhầm lẫn, tổ chức và quản lý tốt hơn các khoản mục  
phần mềm  
- Tổ chức các hoạt động cần thiết để đảm bảo tính toàn vẹn của nhiều  
sản phẩm phần mềm  
- Đảm bảo tính nguyên vẹn cấu hình hiện tại của sản phẩm  
- Tối ưu hóa chi phí phát triển, bảo trì và hỗ trợ sau bán hàng  
- Cung cấp môi trường phát triển, bảo trì, thử nghiệm và sản xuất ổn  
định  
- Nâng cao chất lượng và tuân thủ các tiêu chuẩn kỹ thuật phần mềm  
- Giảm chi phí làm lại những thành phần đã thực hiện trước đó  
…
6
     
3.  
Mục đích đề tài  
Tìm hiểu về cách sử dụng các chức năng của Github. Các lệnh của Github  
được thực hiện như thế nào. Cách đưa một Project mới lên Github, tải một Procject  
từ Github về máy cá nhân, commit thay đổi. Qua đó trang bị kỹ năng quản lý phiên  
bản trong một dự án, đặc biệt là khi các thành viên tham gia có những khoảng cách  
lớn về mặt địa lý.  
4.  
Bố cục đề tài  
Nội dung đề tài được trình bày trong 4 chương:  
Chương 1. Tổng quan về mã nguồn online  
Chương 2. Công cụ quản lý phiên bản Github: Giới thiệu về Git, Github; Ưu,  
nhược điểm của Github; So sánh Github với công cụ quản lý phiên bản khác.  
Chương 3. Ứng dụng  
5.  
Phương pháp  
-
-
-
Tìm kiếm thông tin  
Đọc hiểu tài liệu  
Cài đặt và sử dụng Github  
7
     
PHẦN II. NỘI DUNG  
CHƯƠNG 1. TỔNG QUAN VỀ QUẢN LÝ CẤU HÌNH PHẦN MỀM  
Khái niệm quản lý cấu hình phần mềm  
1.1  
Quản lý cấu hình phần mềm (configuration management) là tập các hoạt động  
để quản lý các thay đổi của phần mềm trong suốt vòng đời của nó. Một loại hoạt động  
bảo đảm chất lượng phần mềm, được áp dụng cho tất cả các pha của kỹ nghệ. Bao  
trùm suốt tiến trình phát triển và tiến hóa của phần mềm.  
1.2  
Nội dung  
Nội dung quản lý cấu hình phần mềm bao gồm:  
- Xác định các thay đổi.  
- Kiểm soát các thay đổi.  
- Bảo đảm các thay đổi đã được thực hiện.  
- Báo cáo các thay đổi cho người quan tâm.  
Quản lý cấu hình khác bảo trì phần mềm:  
- Bảo trì phần mềm là các hoạt động kỹ nghệ xuất hiện sau khi phân  
phát phần mềm và nó đi vào hoạt động.  
- Quản lý cấu hình phần mềm là các hoạt động theo dõi và kiểm soát  
, từ bắt đầu dự án phát triển phần mềm và chỉ kết thúc khi phần mềm  
không HĐ nữa.  
Kết quả của tiến trình kỹ nghệ phần mềm là các thông tin có thể được chia  
thành 3 loại:  
- Các chương trình máy tính (cả mức nguồn và mức chạy được).  
- Các tài liệu mô tả chương trình máy tính đó (nhắm đến cả những  
người thực hành kỹ thuật lẫn những người dùng).  
- Các cấu trúc dữ liệu (cả bên trong và ngoài chương trình)  
1.3  
Cấu hình phần mềm  
Các khoản mục cấu thành lên các thành phần của phần mềm được sản ra như  
là những chế tác của tiến trình kỹ nghệ phần mềm được tập hợp lại trong một cái tên  
chung gọi là cấu hình phần mềm.  
Các chế tác này có nhiều mức khác nhau:  
- Bộ phận - tổng thể (phạm vi)  
- Chưa hoàn thiện – hoàn thiện (theo tiến trình, chất lượng)  
8
         
- Ở các mức tiến hóa khác nhau (các phiên bản)  
Công cụ quản lý cấu hình  
1.4  
Các đường mốc giới là ranh giới được đặt ra:  
- Trước mốc giới, cấu hình có thể thay đổi nhanh chóng và không  
chính thức.  
- Sau mốc giới, cần các thủ tục đặc biệt và chính thức để đánh giá và  
kiểm soát từng thay đổi cấu hình.  
Đường mốc giới để đánh dấu việc cập nhật hay phân phát một vài khoản mục  
cấu hình phần mềm. Tại đường mốc các khoản mục cấu hình phần mềm tương ứng  
được đưa vào cơ sở dữ liệu dự án  
Hình 1.1 Đường mốc giới  
1.5  
Các khoản mục cấu hình phần mềm  
Đặc tả hệ thống  
Kế hoạch dự án phần mềm.  
Đặc tả yêu cầu:  
- Đặc tả yêu cầu phần mềm.  
- Nguyên mẫu thi hành được hoặc nguyên mẫu “giấy tờ”  
Sổ tay sử dụng sơ cấp  
Các đặc tả thiết kế:  
- Dữ liệu  
- kiến trúc  
- Môđun (thủ tục)  
- Giao diện  
- Đối tượng (nếu dùng kỹ thuật hướng đối tượng)  
9
   
Mã nguồn và kiểm thử:  
- Kế hoạch và thủ tục kiểm thử .  
- Các ca kiểm thử & các kết quả được ghi lại.  
- Các sổ tay vận hành & sổ tay lắp đặt.  
- Chương trình thi hành được.  
- Các môđun & mã thi hành được  
- Các môđun đã liên kết  
Mô tả cơ sở dữ liệu:  
- Lược đồ & cấu trúc các file  
- Nội dung hồ sơ ban đầu  
Sổ tay người sử dụng  
- Các tài liệu bảo trì  
- Các báo cáo những vấn đề phần mềm  
- Các yêu cầu bảo trì  
- Đặt thay đổi kỹ nghệ  
- Các chuẩn & các thủ tục cho kỹ nghệ phần mềm.  
Sự hình thành quản lý cấu hình  
1.6  
Trách nhiệm nguyên thuỷ của quản lý cấu hình phần mềm – SCM là kiểm soát  
các thay đổi  
Sau này thêm các trách nhiệm:  
- Xác định các khoản mục cấu hình, các version của phần mềm;  
- Kiểm toán cấu hình phần mềm nhằm bảo đảm phần mềm đã được  
phát triển đúng và  
- Báo cáo mọi thay đổi đã được áp dụng cho cấu hình đó.  
Nhiệm vụ quản lý cấu hình  
1.7  
1.8  
5 nhiệm vụ cụ thể quản lý cấu hình phần mềm:  
- Xác định cấu hình  
- Kiểm soát version  
- Kiểm soát đổi thay  
- Kiểm toán cấu hình  
- Báo cáo thay đổi.  
Câu hỏi cho quản lý cấu hình  
Mọi cuộc thảo luận về quản lý cấu hình phần mềm cần đưa ra các câu hỏi:  
10  
     
- Làm thế nào để tổ chức minh định và quản lý được nhiều version  
của chương trình sao cho nó có thể thay đổi được để thích nghi một  
cách hiệu quả?  
- Làm thế nào để tổ chức kiểm soát được các đổi thay phần mềm trước  
và sau khi phân phát cho người đặt hàng?  
- Ai chịu trách nhiệm việc chấp thuận và đặt thứ tự ưu tiên của các  
đổi thay?  
- Làm thế nào có thể bảo đảm rằng việc đổi thay đã được thực hiện  
đúng?  
- Dùng cơ cấu nào để đánh giá các đổi thay khác?  
Xác định đối tượng cấu hình phần mềm  
1.9  
Cần đặt tên không trùng cho các khoản mục cấu hình phần mềm, để kiểm soát  
quản lý và tổ chức lại theo phương cách hướng đối tượng.  
Có hai loại đối tượng:  
- Đối tượng cơ bản là một “đơn vị văn bản”, được kỹ sư phần mềm  
tạo ra trong quá trình phân tích thiết kế, lập mã và kiểm thử .  
- Đối tượng hỗn hợp được cấu thành từ các đối tượng  
Mỗi đối tượng có một bộ các đặc trưng thể hiện của nó là duy nhất: tên, mô tả,  
danh sách các nguồn lực, sự hiên thực hoá. Mô tả đối tượng bằng một danh sách các  
khoản mục dữ liệu:  
- Kiểu khoản mục cấu hình phần mềm (tài liệu hay chương trình hay  
dữ liệu).  
- Chứng thư dự án (thuộc phần nào trong dự án).  
- Thông tin đổi thay và/hoặc thông tin version  
Nguồn lực là tất cả các thực thể được cung cấp, xử lý, tham khảo, và các thứ  
khác được đối tượng cần đến. Mối quan hệ giữa các đối tượng là quan hệ bộ phận –  
toàn bộ. Ta có đồ thị các đối tượng. Một quan hệ khác là quan hệ liên quan với nhau  
(<interrelated>). Để kiểm soát đổi thay của đối tượng ta cần đến đồ thị tiến hoá cho  
từng đối tượng, nó mô tả lịch sử đổi thay của đối tượng đó.  
1.10 Kiểm soát phiên bản  
Kiểm soát phiên bản bằng tổ hợp các thủ tục & các công cụ để quản lý các  
phiên bản khác nhau của các đối tượng cấu hình (đã được tạo ra trong tiến trình kỹ  
nghệ phần mềm). Quản lý cấu hình cho phép người sử dụng đặc tả các cấu hình thay  
11  
   
thế của hệ thống phần mềm bằng lựa chọn các phiên bản thích hợp và gắn kết với các  
thuộc tính; nhờ đó mà cho phép đặc tả một cấu hình bằng mô tả tập các thuộc tính  
mong muốn.  
Để xây dựng một biến thể thích hợp của một phiên bản của một chương trình,  
mỗi thành phần của phiên bản được gán một “bộ thuộc tính” - là một danh sách các  
đặc trưng. Một phiên bản hay biến thể được xây dựng cần xác định thành phần nào  
được dùng hay cần thay đổi. Một cách khác để hình thành khái niệm về quan hệ giữa  
các thành phần, các biến thể, các phiên bản là biểu diễn chúng như là một vụng (pool)  
đối tượng. Mỗi thành phần được cấu tạo bởi một bộ các đối tượng trong cùng một  
mức xét duyệt. Mỗi biến thể là một bộ các đối tượng trong cùng một mức xét duyệt.  
Xác định khi các thay đổi mỗi phiên bản chủ yếu đã được thực hiện đối với một vài  
đối tượng.  
12  
CHƯƠNG 2. TỔNG QUAN VỀ QUẢN LÝ PHIÊN BẢN PHẦN MỀM  
2.1  
Quản lý phiên bản phần mềm  
Quản lý mã nguồn chủ yếu liên quan đến việc theo dõi các sửa đổi đối với  
mã. Các công cụ để quản lý mã nguồn đôi khi được gọi là "Hệ thống quản lý mã  
nguồn" (SCMS - Source Control Management System), "Hệ thống kiểm soát phiên  
bản" (VCS – Version Control System), "Hệ thống kiểm soát sửa đổi" (RCS - Revision  
Control System) hoặc đơn giản là "kho mã" tùy thuộc vào các tính năng mà chúng  
cung cấp hoặc cách chúng được sử dụng. Một "kho lưu trữ" thường đề cập đến một  
dự án. Các hệ thống quản lý phiên bản phải bao gồm các tính năng như xác thực truy  
cập, theo dõi lịch sử sửa đổi, các phiên bản.  
Quản lý phiên bản còn được gọi là “Kiểm soát phiên bản” hoặc “Kiểm soát  
sửa đổi”, là phương tiện để theo dõi và kiểm soát hiệu quả các thay đổi đối với một  
tập hợp các thực thể có liên quan.  
Kiểm soát phiên bản thường được sử dụng nhất để theo dõi và kiểm soát các  
thay đổi đối với mã nguồn. Nó là một công cụ rất quan trọng trong một chiến lược  
quản lý vòng đời tổng thể của một phần mềm. Qua nhiều năm, nhiều hệ thống kiểm  
soát phiên bản khác nhau đã được phát triển, đặc biệt là trong các lĩnh vực quản lý  
phiên bản và quản lý tài liệu. Các hệ thống này có thể là thương mại hoặc nguồn mở  
và thường chạy như các ứng dụng độc lập.  
Hệ thống quản lý phiên bản có thể hoạt động như kho lưu trữ trung tâm (ví dụ  
như Git). Đối với những hệ thống này, người dùng cá nhân nhận được một bản sao  
hoàn chỉnh của một kho lưu trữ (ví dụ, sao chép nó) và lưu trữ nó cục bộ. Những thay  
đổi đó sau đó được đẩy / kéo vào kho gốc để sẵn sàng cho các thành viên khác trong  
nhóm. Môi trường cộng tác cũng đã được phát triển (ví dụ GForge, GitHub, GitLab,  
v.v.) xung quanh các hệ thống điều khiển phiên bản để tạo thuận lợi cho việc tiếp cận  
theo nhóm dựa trên việc quản lý vòng đời của các ứng dụng.  
Trong phát triển phần mềm mã nguồn mở, những người tham gia hầu hết đến  
từ những vùng địa lý khác nhau, do đó cần có các công cụ để hỗ trợ người tham gia  
trong việc phát triển mã nguồn. Vào đầu những năm 2000, Hệ thống phiên bản đồng  
thời (CVS) là một ví dụ nổi bật về một công cụ quản lý phiên bản đang được sử dụng  
trong các dự án phần mềm mã nguồn mở. CVS giúp quản lý các tập tin và mã số của  
một dự án khi một số người đang làm việc trên dự án cùng một lúc. CVS cho phép  
nhiều người cùng làm việc trên cùng một tệp. Điều này được thực hiện bằng cách di  
chuyển tệp vào thư mục của người dùng và sau đó hợp nhất các tệp khi người dùng  
hoàn tất. CVS cũng cho phép người dùng dễ dàng truy xuất phiên bản trước của  
13  
   
tệp. Vào giữa những năm 2000, hệ thống điều khiển sửa đổi Subversion (SVN) được  
tạo ra để thay thế CVS. Nó nhanh chóng đạt được nền tảng như một hệ thống quản lý  
phiên bản PMNM  
2.2  
Một số công cụ quản lý phiên bản  
Có nhiều công cụ quản lý phiên bản như:  
- Github: Là nơi lưu trữ source code nổi tiếng thế giới thế giới, Github  
có chức năng như một nguồn resource phát triển độc lập. Các  
developer có thể xây dựng project, chia sẻ với cộng đồng và cộng  
đồng có thể sửa đổi.  
- GitLab nó cũng tương tự như GitHub nhưng GitLab theo hướng  
kinh doanh- Launchpad :Là nhà của untity và nhiểu tiện ích linux  
phổ biến.Phần lớn các dự án lưu trữ tại launchpad phát triển và xây  
dựng cho cộng đồng Linux  
- Hệ thống phiên bản đồng thời (CVS). CVS đã xuất hiện từ những  
năm 80 và đã rất phổ biến với cả các nhà phát triển thương mại và  
nguồn mở.  
- Mercurial bắt đầu gần cùng thời với Git và cũng là một công cụ  
kiểm soát sửa đổi phân tán.  
Ngoài ra còn có các công cụ khác như SVN, VisualSourceSafe.  
14  
 
CHƯƠNG 3. CÔNG CỤ QUẢN LÝ PHIÊN BẢN GITHUB  
Git là gì?  
3.1  
Git là tên gọi của một Hệ thống quản lý phiên bản phân tán(Distributed  
Version Control System – DVCS) là một trong những hệ thống quản lý phiên bản  
phân tán phổ biến nhất hiện nay. DVCS nghĩa là hệ thống giúp mỗi máy tính có thể  
lưu trữ nhiều phiên bản khác nhau của một mã nguồn được nhân bản (clone) từ một  
kho chứa mã nguồn (repository), mỗi thay đổi vào mã nguồn trên máy tính sẽ có thể  
ủy thác (commit) rồi đưa lên máy chủ nơi đặt kho chứa chính. Và một máy tính khác  
(nếu họ có quyền truy cập) cũng có thể clone lại mã nguồn từ kho chứa hoặc clone  
lại một tập hợp các thay đổi mới nhất trên máy tính kia. Trong Git, thư mục làm việc  
trên máy tính gọi là Working Tree.  
Ngoài ra, có một cách hiểu khác về Git đơn giản hơn đó là nó sẽ giúp bạn lưu  
lại các phiên bản của những lần thay đổi vào mã nguồn và có thể dễ dàng khôi phục  
lại dễ dàng mà không cần copy lại mã nguồn rồi cất vào đâu đó. Và một người khác  
có thể xem các thay đổi của bạn ở từng phiên bản, họ cũng có thể đối chiếu các thay  
đổi của bạn rồi gộp phiên bản của bạn vào phiên bản của họ. Cuối cùng là tất cả có  
thể đưa các thay đổi vào mã nguồn của mình lên một kho chứa mã nguồn.  
Cơ chế lưu trữ phiên bản của Git là nó sẽ tạo ra một “ảnh chụp” (snapshot)  
trên mỗi tập tin và thư mục sau khi commit, từ đó nó có thể cho phép bạn tái sử dụng  
lại một ảnh chụp nào đó mà bạn có thể hiểu đó là một phiên bản. Đây cũng chính là  
lợi thế của Git so với các DVCS khác khi nó không “lưu cứng” dữ liệu mà sẽ lưu với  
dạng snapshot.  
3.2  
Cơ chế check in – check out trong Git  
Mỗi tập tin trong Git được quản lý dựa trên ba trạng thái: committed, Modified,  
và staged. Committed có nghĩa là dữ liệu được lưu trữ một cách an toàn trong cơ sở  
dữ liệu.Modified có nghĩa là bạn đã thay đổi tập tin nhưng chưa commit vào cơ sở dữ  
liệu.và Staged là bạn đánh dấu sẽ commit phiên bản hiện tại của một tập tin đã chỉnh  
sửa trong lần commit sắp tới. Điều này tạo ra ba phần riêng biệt của một dự án sử  
15  
     
dụng Git: thư mục Git, thư mục làm việc ,và khu vực tổ chức(staging area)  
Hình 3.1 Cơ chế check in - check out trong Git  
3.3  
GitHub là gì?  
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. GitHub 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 sẽ được cung cấp kho lưu trữ miễn phí. Tính đến  
tháng 4 năm 2016, GitHub có hơn 14 triệu người sử dụng với hơn 35 triệu kho mã  
nguồn, làm cho nó trở thành máy chủ chứa mã nguồn lớn trên thế giới.  
Github đã trở thành một yếu tố có sức ảnh hưởng trong cộng đồng phát triển  
mã nguồn mở. Thậm chí nhiều nhà phát triển đã bắt đầu xem nó là một sự thay thế  
cho sơ yếu lý lịch và một số nhà tuyển dụng yêu cầu các ứng viên cung cấp một liên  
kết đến tài khoản Github để đánh giá ứng viên. Sự phát triển của nền tảng GitHub bắt  
đầu vào ngày 19 tháng 10 năm 2007. Trang web được đưa ra vào tháng 4 năm 2008  
do Tom Preston-Werner, Chris Wanstrath, và PJ Hyett thực hiện sau khi nó đã được  
hoàn thành một vài tháng trước đó, xem như giai đoạn beta.  
Dự án trên Github có thể được truy cập và thao tác sử dụng một giao diện dòng  
lệnh và làm việc với tất cả các lệnh Git tiêu chuẩn. Github cũng cho phép người dùng  
đăng ký và không đăng ký để duyệt kho công cộng trên trang web. Github cũng tạo  
ra nhiều client và plugin cho máy tính để bàn. Trang web cung cấp các chức năng  
mạng xã hội như feed, theo dõi, wiki (sử dụng phần mềm Gollum Wiki) và đồ thị  
mạng xã hội để hiển thị cách các nhà phát triển làm việc trên kho lưu trữ. Một người  
sử dụng phải tạo ra một tài khoản cá nhân để đóng góp nội dung lên Github, nhưng  
các kho mã nguồn công cộng có thể được duyệt và tải về với bất cứ ai. Với một người  
dùng đã đăng ký tài khoản, họ có thể thảo luận, quản lý, tạo ra các kho, đóng góp cho  
kho của người dùng khác, và xem xét thay đổi mã.  
16  
 
GitHub cũng có một dịch vụ khác: một trang web kiểu pastebin gọi là Gist,  
dùng để lưu trữ các đoạn mã; trong khi Github sẽ được cho lưu trữ các dự án lớn hơn.  
Một dịch vụ lưu trữ khác được gọi là Speaker Deck. Các phần mềm chạy GitHub  
được viết bằng Ruby on Rails và Erlang.  
3.4  
Phạm vi  
GitHub chủ yếu được sử dụng để lưu trữ mã nguồn phần mềm, nhưng cũng  
thường được sử dụng với nhiều loại tập tin như Final Cut hoặc các tài liệu Word.  
Ngoài mã nguồn, Github hỗ trợ các định dạng và các tính năng sau đây: 3D làm cho  
các tập tin mà có thể được xem trước bằng cách sử dụng tích hợp trình xem file STL  
mới hiển thị các tập tin trên một khung 3D. Người xem được hỗ trợ bởi WebGL và  
Three.js; Nguồn gốc định dạng PSD của Photoshop có thể được xem trước và so với  
các phiên bản trước của cùng một tập tin; Lồng nhiệm vụ danh sách; Tài liệu và Wiki;  
Các trang web nhỏ có thể được lưu trữ từ kho công cộng trên Github. Định dạng URL  
là http://projectname.github.io. Và có thể được tạo ra bằng cách bắt đầu một kho  
lưu trữ được định dạng như projectname.io; Code Snippets (bằng cách sử dụng tên  
miền phụ Gist); Theo dõi vấn đề và tính năng yêu cầu; Trực quan của dữ liệu không  
gian địa lý  
Github dành cho doanh nghiệp: Github cho doanh nghiệp cũng hoạt động  
giống Github.com, nhưng hỗ trợ phiên bản trả phí cho các doanh nghiệp muốn bảo  
vệ mã nguồn của mình, không công khai ra cộng đồng.  
Việc làm: Một trong những nguồn thu nhập khác của Github là GitHub  
Jobs nơi sử dụng lao động có thể gửi lời mời làm việc với $450/listing. Nhân viên  
bán hàng của GitHub không được trả lương trên cơ sở hoa hồng.  
Phổ biến: 24 Tháng Hai năm 2009, trong một cuộc nói chuyện tại Yahoo! trụ  
sở thành viên trong nhóm GitHub công bố trong một cuộc nói chuyện tại trụ sở  
trên Yahoo! rằng trong năm đầu tiên GitHub là trực tuyến, nó tích lũy 46.000 kho  
công cộng, 17.000 trong số họ trong tháng trước đó một mình. Vào thời điểm đó,  
khoảng 6.200 kho đã được chia hai ít nhất một lần và 4.600 sáp nhập, 05 tháng 7 năm  
2009, một Blog Github bài thông báo họ đạt đến 100.000 người sử dụng nhãn hiệu,  
27 tháng 7 năm 2009, Tom Preston-Werner thông báo rằng những con số này đã tăng  
lên 90.000 kho công cộng duy nhất, 12.000 đã được chia hai ít nhất một lần, với tổng  
số 135.000 kho. Vào tháng 7 năm 2010, GitHub thông báo rằng nó chứa 1 triệu  
kho. Vào tháng 4 năm 2011, GitHub thông báo rằng nó được lưu trữ 2 triệu kho. 16  
Tháng 1 năm 2013, GitHub thông báo đã thông qua 3 triệu người sử dụng đánh dấu  
và sau đó được lưu trữ hơn 5 triệu kho. Tháng 7 năm 2012, Peter Levine, đối tác ở  
17  
 
nhà đầu tư GitHub của Andreessen Horowitz, nói rằng GitHub đã được phát triển  
doanh thu 300% mỗi năm kể từ năm 2008 "có lợi nhuận suốt từ đó đến giờ".  
3.5  
Độ tin cậy và quản lý bảo mật trên Github  
GitHub có hơn 800 dự án chuyên về bảo mật cung cấp cho các nhà quản trị  
CNTT và các chuyên gia an toàn thông tin đủ loại công cụ để phân tích phần mềm  
độc hại , kiểm tra tấn công xâm nhập, tầm soát máy tính và mạng, ứng phó sự cố,  
giám sát mạng, và nhiều việc khác.  
Kiểm tra tấn công xâm nhập: Khi nói đến kiểm tra tấn công xâm nhập, không  
có lựa chọn nào tốt hơn Metasploit Framework của Rapid7. Thư viện các kiểu tấn  
công phong phú của nó có thể sử dụng để đánh giá mức độ an toàn của ứng dụng hoặc  
hệ thống mạng trước khi bị tin tặc kẻ tấn công. Metasploit có cấu trúc mô-đun linh  
hoạt cho từng loại thiết bị, dùng để kiểm tra máy tính, điện thoại di động, thiết bị định  
tuyến (router), chuyển mạch (switch), hệ thống điều khiển công nghiệp và các thiết  
bị nhúng. Metasploit có thể chạy trên nhiều nền tảng, bao gồm Windows, Linux, Mac,  
Android và iOS.  
Phòng thủ toàn diện: CFSSL của CloudFlare là "con dao Thụy Sĩ" đa năng  
cho phép tạo chữ ký số, xác minh và đóng gói chứng chỉ TLS. Vừa là công cụ dòng  
lệnh vừa là máy chủ HTTP API, CFSSL cho phép nhà quản trị CNTT tạo công cụ  
TLS/PKI tùy chỉnh và cấp chứng chỉ số (CA) có thể sử dụng nhiều khóa chữ ký.  
CFSSL còn có tính năng quét TLS kiểm tra cấu hình máy chủ dò tìm lỗ hổng và  
chuyển gói tin để thiết lập cấu hình hay thu hồi chứng chỉ. Việc vô tình lộ dữ liệu  
nhạy cảm như các khóa và mật khẩu là vấn đề phổ biến trong phát triển phần mềm.  
Gitrob giúp các chuyên gia bảo mật quét kho mã nguồn của mình trên GitHub tìm  
các tập tin nhạy cảm. Tuy GitHub có sẵn chức năng dò tìm những thông tin này,  
nhưng Gitrob giúp cho công việc đơn giản hơn bằng cách lập danh sách tất cả kho  
chung và riêng trên GitHub, và dựa trên đó dò tìm các tên tập tin có thể chứa thông  
tin nhạy cảm. Gitrob lưu kết quả tìm kiếm vào một cơ sở dữ liệu PostgreSQL và hiển  
thị với một ứng dụng web đơn giản.  
Giám sát mạng: Bro Security Network Monitor cho phép các chuyên gia bảo  
mật giám sát tất cả máy tính trên mạng (có thể can thiệp vào luồng dữ liệu mạng và  
kiểm tra các gói tin truyền trên mạng) và cho phép các nhà phân tích kiểm tra lớp ứng  
dụng. Ngôn ngữ kịch bản của Bro có thể dùng để tạo các chính sách giám sát cho  
website. Theo thông tin trên trang web của dự án (https://github.com/bro/bro), Bro  
được sử dụng nhiều trong môi trường khoa học như các trường đại học, viện nghiên  
cứu, và các trung tâm điện toán. OSSEC là hệ thống phát hiện xâm nhập dựa trên máy  
18  
 
chủ có các tính năng theo dõi nhật ký hệ thống (log) và quản lý sự kiện và thông tin  
bảo mật (SIEM - security information and event management), có thể chạy trên nhiều  
nền tảng gồm Linux, Mac OS, Solaris, AIX, và Windows. Nó thường được dùng để  
phân tích log, kiểm tra sự toàn vẹn tập tin, giám sát chính sách, phát hiện rootkit, cảnh  
báo thời gian thực, … Bằng cách cấu hình OSSEC gửi cảnh báo khi có những thay  
đổi hệ thống tập tin trái phép hay hành vi độc hại chèn vào các nhật ký phần mềm,  
các tổ chức và doanh nghiệp có thể đảm bảo việc tuân thủ các chính sách bảo mật .  
Ứng phó sự cố và điều tra: Mozilla Defense Platform (MozDef) cung cấp  
cho các chuyên gia bảo mật nền tảng để giám sát, ứng phó và hợp tác đối phó với  
những sự cố bảo mật trong thời gian thực, cho phép tự động hóa việc xử lý sự cố.  
MozDef sử dụng Elasticsearch, Meteor và MongoDB, mở rộng các tính năng SIEM  
truyền thống với các biểu đồ, hình ảnh trực quan. Đây là nền tảng hiện được sử dụng  
tại Mozilla. OS X Auditor phân tích các thành phần mở rộng của hệ thống, các thành  
phần của bên thứ ba, các tập tin tải về và các ứng dụng cài đặt trên hệ thống đang  
chạy (hoặc bản sao). Công cụ điều tra này trích xuất thông tin người dùng chẳng hạn  
như lịch sử và cookie trình duyệt, các tập tin tải về, dữ liệu đăng nhập, tài khoản mạng  
xã hội và email, kết nối Wi-Fi... và xác minh “uy tín” của từng thứ dựa trên nhiều  
nguồn.  
Nghiên cứu và dò tìm lỗ hổng: Công cụ phân tích malware tự động Cuckoo  
Sandbox có nguồn gốc từ một dự án năm 2010 trong chương trình Google Summer  
of Code (hỗ trợ phát triển các dự án mã nguồn mở). Cuckoo cho phép mổ xẻ các tập  
tin nghi ngờ và giám sát các hành vi có thể gây hậu quả trong một môi trường ảo cô  
lập, nó kết xuất bộ nhớ và phân tích dữ liệu (chẳng hạn như lần vết các lệnh gọi API)  
để xác định hành vi của một tập tin đáng ngờ thực hiện trên hệ thống. Jupyter (Jupyter  
Notebook) là ứng dụng web cho phép tạo và chia sẻ tài liệu (sổ tay) có chứa mã  
nguồn, ký hiệu, hình ảnh trực quan và văn bản chú giải. Dự án này không chuyên về  
bảo mật nhưng bất kỳ chuyên gia gia bảo mật nào cũng cần phải có. Có nhiều công  
cụ bổ sung cho nó, trong đó có Jupyterhub, một máy chủ nhiều người dùng.  
3.6  
Tính năng API của Github  
Ngoài những tính năng tuyệt vời của hệ thống quản lý source phân tán GIT  
nói chung, Github còn hỗ trợ người dùng những tính năng quan trọng thông qua API  
sau: API to Update The Repository via HTTP: GitHub hỗ trợ người dùng có thể edit  
file source code từ web browser thông qua HTTP – POST; API to Access Compare  
Views: Tính năng này hỗ trợ người dùng review và so sánh code của dự án thông qua  
việc xem các commit, comments, các dòng khác nhau giữa 2 version của file code ...  
19  
 
Tính năng này cũng thông qua HTTP - POST, người dùng có thể thực hiên trên web  
browser; API to Manage Service Hooks: GitHub hỗ trợ tính năng mở rộng post-  
receive hooks. Tính năng này cho phép người dùng đăng ký 1 URL của mình (như là  
một web hook) cho các respository. Bất cứ khi nào có người push source code của họ  
lên repository, GitHub sẽ thông báo cho bạn biết bằng cách POST thông tin (dạng  
JSON) về lần push đó đến URL mà bạn đã đăng ký trước đó.  
3.7  
Ưu, nhược điểm của Github  
3.7.1 Ưu điểm  
Git dễ cài đặt và sử dụng, an toàn và nhanh chóng. Có thể giúp quy trình làm  
việc code theo nhóm đơn giản hơn rất nhiều bằng việc kết hợp các phân nhánh  
(branch).  
Giúp cải thiện kỹ năng lập trình bằng cách theo dõi và sửa đổi thường xuyên:  
Bạn có thể làm việc ở bất cứ đâu vì chỉ cần clone mã nguồn từ kho chứa hoặc clone  
một phiên bản thay đổi nào đó từ kho chứa, hoặc một nhánh nào đó từ kho chứa. Dễ  
dàng trong việc triển khai sản phẩm. Chứng minh bạn là 1 lập trình viên thực thụ.  
Giúp học hỏi các kỹ năng mới.  
3.7.2 Nhược điểm  
Tài khoản github là miễn phí,nhưng kho chứa riêng tư lại bị giới hạn nếu muốn  
dùng thêm phải trả phí. Phát hiện nhiều điểm yếu trên thuật toán SHA1 của Github  
việc này có thể dẫn đến bị mã hóa dữ liệu. Sử dụng github trên window hơi cồng  
kềnh. Hệ thống quản lý phiên bản buộc bạn đánh dấu rõ ràng vào tập tin. Trong khi  
điều này đặc biệt phiền toái vì nó lại dính líu đến việc phải liên lạc với máy chủ trung  
tâm  
3.8  
So sánh SVN với GitHub và ViSual SourceSafe, CVS  
3.8.1 SVN  
SVN(viết tắt của Subversion là một hệ thống quản lý version control system-  
VCS). Nó là 1 hệ thống quản lý phiên bản tập trung. SVN Subversion là hệ thống  
quản lý phiên bản mạnh mẽ, hữu dụng, và linh hoạt. Tích hợp vào Windows explorer,  
mỗi khi cập nhật phải vào đúng thư mục rồi cập nhật, rất bất tiện ( nếu muốn tích hợp  
vào trong Visual studio thì bạn phải cài đặt thêm Visual SVN, phải tốn tiền mua).  
Không phép bạn cài đặt nhiều loại "tiến trình công việc" (workflow). SVN có khả  
năng xử lý các cấu trúc lồng nhau của các dự án và các gói Java  
Rất dễ bị xung đột (conflic) nếu sửa file mà không update trước, nếu đã bị conflic thì  
bạn phải mở chức so sánh 2 phiên bản rồi tiến hành sửa. SVN Subversion quản lý tập  
tin và thư mục theo thời gian. SVN Subversion giống như một hệ thống file server  
20  
   
Tải về để xem bản đầy đủ
docx 55 trang yennguyen 24300 Free
Bạn đang xem 20 trang mẫu của tài liệu "Tiểu luận Nhập môn công nghệ phần mềm - Đề tài: Nghiên cứu, tìm hiểu công cụ lưu trữ mã nguồn online", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docxtieu_luan_nhap_mon_cong_nghe_phan_mem_de_tai_nghien_cuu_tim.docx