Tải bản đầy đủ (.docx) (11 trang)

Công nghệ phần mềm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (81.4 KB, 11 trang )

TRẢ LỜI CÂU 1:NOI DUNG• Công nghệ phần mềm?
. Pressman[1995]: CNPM là bộ môn tích hợp các quy trình, các phương pháp, các công cụ để phát triển phần mềm máy tính.
• Somerville[1995]: CNPM là lĩnh vực liên quan đến lý thuyết, phương pháp và công cụ dùng cho phát triển phần mềm.
3 mặt cơ bản của CNPM
• Quy trình/thủ tục ,Phương pháp , Công cụ.
Đây chính là lĩnh vực nghiên cứu của CNPM
• Quy trình phát triển : Xác định tập hợp các thao tác, trình tự thực hiện • Các định các kết quả (tài liệu, phần mềm …) của
từng thao tác • Xác định các mốc thời gian cần bản giao của kết quả
• Các phương pháp • Là cách làm cụ thể để xây dựng phần mềm • Mỗi công đoạn có phương pháp riêng • Phân tích (xác định,
đặc tả yêu cầu) • Thiết kế (đặc tả kiến trúc, giao diện, dữ liệu, thủ tục) • Lập trình (cấu trúc, hướng đối tượng) • Kiểm thử (hộp
đen, hộp trắng …) • Quản lý dự án …
• Các công cụ • Các công cụ trợ giúp trong quá trình phát triển phần mềm (CASE -Computer Aided Software Engineering) • Công
cụ thiết kế, quản lý dự án, ngôn ngữ & môi trường lập trình (IDE), công cụ kiểm thử, cài đặt …
Quy trình PTPM
• Có nhiều mô hình PTPM khác nhau => nhiều quy trình khác nhau. • Các thao tác được xem là nền tảng của mọi quy
trình:
• Phân tích - Đặc tả • Thiết kế • Lập trình • Kiểm thử • Tiến hoá
Nhận diện công cụ PTPM
• Trong mỗi giai đoạn sẽ có những công cụ hỗ trợ khác nhau hoặc cùng 1 công cụ hỗ trợ cho nhiều giai đoạn
• Phân tích - đặc tả • Thiết kế • Lập trình • Kiểm thử • Tiến hoá • Quản lý dự án
Phân loại công cụ PTPM • Có 3 loại công cụ (phân loại theo mức độ hỗ trợ)
• Tasks: Hỗ trợ nhưng công việc đặc biệt, 1 giai đoạn trong quy trình PTPM
• Workbenches: Hỗ trợ một vài hoạt độngtrong quy trình PTPM
• Environments: Hỗ trợ phần lớn các công việc trong quy trình PTPM
Tầm quan trọng của công cụ PTPM • Bạn sẽ như thế nào nếu ko có máy tính? • Hãy lập trình một phần mềm Hello word với
notepad? • Hiện nay, công cụ chiếm vị trí quan trọng trong việc xác định hiệu suất công việc
CÂU 2:Đặt vấn đề
• Phát triển phần mềm đơn lẻ: một người làm, trên một máy.
• Phát triển phần mềm trong môi trường công nghiệp: Nhiều người cùng làm, trên nhiều máy tính khác nhau => • Nhiều người cùng
làm việc trong cùng 1 file • Quản lý các thay đổi của mã nguồn, file tài liệu … • …  Cần phải có công cụ quản lý
Khái niệm


• Version Control System (VCS) còn gọi là Source Control or Revision Control • VCS là một hệ thống lưu giữ các phiên bản của
mã nguồn (files) giúp nhà phát triển phần mềm có thể dễ dàng theo dõi sự thay đổi theo thời gian và lấy lại các phiên bản trước đó.
Khái niệm • Tại sao cần phải có một hệ thống VCS? • Phần lớn các dự án phần mềm là lớn • Sự thay đổi là rất nhiều và nhanh
chóng • Số lượng người thay đổi là rất nhiều
Khái niệm
• Một VCS tốt cần có các đặc điểm sau: • Backup and Restore • Synchronization: Cho phép chia sẻ và luôn cập nhật phiên bản
mới nhất • Short-term undo: Quay trở lại phiên bản trước đó • Long-term undo: Quay trở lại và kiểm tra sự thay đổi ở phiên bản
cách đó rất xa • Track Changes and Track Ownership : Lưu trữ và theo dõi sự thay đổi (thời điểm nào? Ai? Lý do? Ghi chú? …) •
Branching and merging: Phân nhánh cho các mục đích khác (thử nghiệm, tạo phiên bản khác …) sau đó trộn với nhánh chính Các
thuật ngữ cơ bản
• Repository (Repo): • Một nơi lưu trữ files, chứa mọi bản chính của tập tinh khi nó được thêm vào • Thường đặt trên server • Có
thể chứa: Mã nguồn, tài liệu, hình ảnh … • Tập tin nào nên đưa vào nơi chứa? • Server: Máy tính lưu Repo • Client: Máy tính kết
nối lên Repo • Working Set/Working Copy: • Thư mục thường đặt tại máy client của mỗi thành viên • Là nơi lấy phiên bản của tập
tin và sửa chữa • Trunk/Main: Là thư mục chính để lưu trữ mà nguồn • Conflict: • Xung đột xảy ra khi các bên cùng thay đổi một
tài liệu, và hệ thống không thể giải quyết. • Một người sẽ phải giải quyết xung đột bằng cách chọn: kết hợp, 1 trong 2, …• Delta
compression: • Hầu hết các VCS đều sử dụng phương pháp này để tổ chức lưu trữ tập tin. • Phương pháp này chỉ lưu trữ sự khác
nhau của 2 phiên bản • Lock: Khi làm việc nhóm, các thành viên có thể cùng chỉnh sửa một tập tin tại một thời điểm => xung đột.
Làm sao để tránh xung đột? Sử dụng cơ chế khoá (locking). Có 2 loại: • Khoá nghiêm ngặt (strict locking): • Đặt thuộc tính read-
only cho tập tin trên kho chứa • Hạn chế: Nếu 1 thành viên locking để sửa quá lâu => ảnh hưởng tới thành viên khác • Khoá tự do
(optimistic locking): Cho phép nhiều người cùng sửa 1 tập tin. Khi các tập tin được cập nhật, VCS sẽ thực hiện trên nguyên tắc: •
Nếu 2 bản cập nhật khác dòng => ghép • Nếu 2 bản cập nhật cùng dòng => cho phép chọn cách cập nhật • Branching: Phân nhánh
• Khi làm việc nhóm, mọi thành viên đều có phần mã chung (nhánh chính - mainline). • Khi có yêu cầu tách phần mã chung đó để
thử nghiệm, phân phối … => sử dụng branching • Branching là một cơ chế của VCS cho phép tách một phần của dự án ra riêng •
Việc đánh số phiên bản tại nhánh cũng thay đổi so với mainline • Branching: Phân nhánh • Merging: Ghép • Nhiều nhánh được
tách ra làm việc độc lập, tuy nhiên có thể phát hiện một số lỗi có thể làm ảnh hưởng đến nhánh chính => phải cập nhật vào nhánh
chính • Sử dụng merging để làm việc này • Version (phiên bản) • Mỗi tập tin có nhiều phiên bản được đánh số khác nhau • Phiên
bản được tạo ra khi tập tin sau khi hiệu chỉnh được cập nhật vào Repo • Tuỳ VCS khác nhau mà có cách đánh số phiên bản khác
nhau • Add: Thêm file vàotrong Repo và bắt đầu theo dõi bởi VCS • Revision: Xem phiên bản của file • Head: Phiên bản của Repo
• Check out: Download file từ repo về • Changelog/History: Xem danh sách các thay đổi từ khi file được tạo ra • Update/Sync: Cập
nhật các file ở local từ các file mới nhật tại Repo

Các chức năng cơ bản • Revert: Bỏ qua các thay đổi ở local và lấy phiên bản mới nhất tại repo • Check in: Upload file vào repo •
Một Revision mới được tạo ra • Người khác sẽ phải check out về để có phiên bản mới nhất
Các chức năng nâng cao • Branch: Tạo nhánh • Merge (or patch): Chấp nhận sự thay đổi từ tập tin, nhánh khác cho file hiện tại •
Resolve: Sửa chữa, giải quyết các thay đổi bị confilct và kiểm tra phiên bản chính xác • Locking: Đánh dấu, tạo khoá để kiểm soát
tập tinh, thực thi cơ chế locking • Breaking the lock: Ép buộc mở khoá tập tin để chỉnh sửa (do người khoá đi vắng, nghỉ ...) •
Check out for edit: = Checkout + Locking • Diff/Change/Delta: Tìm sự khác nhau giữa 2 file, 2 phiên bản …
Bài 2
Contents
• Tổng quan về MS Visual Source Safe • Các thao tác phía server
• Các thao tác phía client MS Visual Source Safe • SP của Microsoft • Model: Client-Server • License: Có chủ sở hữu • Tương lai: •
Phiên bản cuối là MS VSS 2005 (10/2005) • Sau này là Visual Team System 2008, 2010
Các thao tác phía server • Microsoft Visual Source Safe Administration • Thao tác: • File • New database • Open Database •
Tools • Option … • Users• Add • Delete •Edit • Change password
Các thao tác phía Client • File • Open Database • Create Project • Set Working Folder • Add files • Versions • Get lastest version •
Check out • Undo check out • Check in
Các thao tác phía Client • Tools • Show History … • Show Differences… • Set Working Folder • Tích hợp VSS vào Visual
Studio.net
CÂU 3:
SVN LÀ GÌ?
Subversion là một phần mềm cung cấp các chức năng quản lý phiên bản mã nguồn và tài liệu. Hiểu đơn giản nó cũng chỉ là một
trình quản lý file, thư mục. Tuy nhiên, nó cao cấp hơn ở chỗ nó cho phép quản lý nhiều phiên bản của cùng 1 file, có thể rollback lại
khi có sai sót; quản lý lịch sử sửa đổi; quản lý người dùng . Hỗ trợ giải quyết đụng độ, tranh chấp … và nhiều thứ mà nói thật mình
cũng chưa tìm hiểu hết.( Hệ thống SVN là một hệ thống quản lý phần tài nguyên của một dự
án. Hệ thống có khả năng tự cập nhật, so sánh và kết hợp tài nguyên mới vào phần tài nguyên
cũ.
) . Một số khái niệm
Subversion dựa trên mô hình quản lí tập trung kiểu client/server. Mô hình này có 2 khái niệm cơ bản: Repository đặt ở server là nơi
tập trung quản lí các phiên bản của các tập tin. Working Copies đặt ở client là các phiên bản làm việc của các tập tin trong
repository. Repository thì chỉ có một, trong khi working copies có thể có nhiều (tương ứng với repository đó). Một kịch bản thường
thấy là các tập tin của project A được lưu ở repository. Sau đó, mỗi thành viên của project A, ví dụ P1, P2 sẽ checkout để lấy 1

phiên bản copy các file của project A này về máy cục bộ của mình (gọi là working copies). Mỗi khi P1 muốn các thay đổi trên các
tập tin của project A ở máy cục bộ của mình cập nhật lên repository, anh ta sẽ dùng lệnh commit. Nếu P2 muốn thấy những thay đổi
của P1 trên repository cập nhật xuống phiên bản đang dùng của mình, anh ta sẽ dùng lệnh update. Trường hợp P1 và P2 cùng cập
nhật một tập tin, đây là vấn đề phức tạp nhất, và thao tác này gọi là merge. Subversion cung cấp các công cụ để nhận biết sự thay
đổi của các tập tin ở working copies so với repository, đồng thời cũng cung cấp công cụ để giúp việc merge được dễ dàng. Để quản
lí các phiên bản khác nhau, subversion dùng khái niệm revision. Nói một cách đơn giản, để hệ thống có thể quản lí được sự thay đổi
của các tập tin, mỗi tập tin sẽ có dạng Name-Revision. Ví dụ foo.c-rev1 và foo.c-rev2 là 2 revision của tập tin foo.c. Cứ mỗi lần
commit, toàn bộ repository sẽ có một con số revision mới (mỗi con số này là duy nhất và số của revision sau lớn hơn số của
revision trước). Một điểm cần lưu ý là trong subversion, dù chỉ thay đổi một tập tin sau lệnh commit, nhưng toàn bộ các tập tin của
repository sẽ có cùng một con số revision. Do đó, ko nhất thiết là foo.c-rev1 và foo.c-rev2 phải có nội dung khác nhau. Thông
thường, để có thể nhận biết được những thay đổi qua mỗi lần commit, người ta thường note lại những thay đổi này trước khi
commit. Những note này sẽ được lưu vào history để sau này khi view lên có thể nhận biết được hiện trạng của từng revision, để khi
muốn quay trở lại trạng thái trước đó cũng rất dễ dàng.
Một lưu ý rất căn bản đó là nếu bạn muốn subversion quản lí các phiên bản/thay đổi của một tập tin nào đó, thì mọi thao tác liên
quan đến tập tin đó, ví dụ như xóa, sửa, tạo mới, etc đều phải thông qua subversion. Nói một cách khác, bạn nên tránh xóa một tập
tin trong working copies bằng chức năng thông thường của file manager, ví dụ như dùng nút Del trong Explorer, thay vào đó nên
dùng lệnh xóa của các subversion clients.
CÁC LỆNH CƠ BẢN:
1. Lệnh tạo thư mục mkdir - Ý nghĩa: Lệnh này sử dụng để tạo thư mục trong repository của bạn. (giống lệnh MD trong Doc
command) - Cấu trúc lệnh: svn mkdir <đường dẫn thư mục mới tạo> -m <Mô tả về dự án> --username <username> --password
<password> Trong trường hợp bạn ko gõ tham số -m, chương trình sẽ hiển thị màn hình để các bạn nhập comment vào (chương
trình này được thiết lập trong biến SVN_EDITOR ở bài trước) - Ví dụ: + Tạo dự án mới: svn mkdir svn://localhost/as -m “Asia
standard, a product of asiasoft” --username admin --password nimda + Tạo thư mục con của dự án mới tạo: Tạo thư mục chứa
Source của dự án svn mkdir svn://localhost/as/Src -m “Source code store here” --username admin --password nimda Tạo thư mục
chứa tài liệu svn mkdir svn://localhost/as/Docs -m “Documents of project store here” --username admin --password nimda Tạo
các thư mục con của thư mục chứa tài liệu
svn mkdir svn://localhost/as/Docs/TechDocs -m “Documents for Technical” --username admin --password nimda svn mkdir
svn://localhost/as/Docs/UserDocs -m “Documents for End-User” --username admin --password nimda
2. Xóa thư mục delete (del, remove, rm) - Ý nghĩa: Xóa thư mục (cái này thì giống RD trong DOS command) - Cấu trúc lệnh:
svn delete <đường dẫn tới thư mục cần xóa> --username <username> --password <password>

Có thể thay thế lệnh delete bằng del hoặc remove hoặc rm - Ví dụ:
Xóa thư mục Docs
svn delete svn://localhost/as/docs --username admin --password nimda
3. Lệnh List (ls) - Ý nghĩa: Dùng để liệt kê danh sách các thư mục và file bên trong thư mục đang được list (giống DIR trong Dos
command)
- Cấu trúc lệnh: svn list <đường dẫn đến thư mục cần xem danh sách thư mục và file> --username <username> --password
<password> - Ví dụ:
Trong ví dụ này, tôi đã thử dùng SVN để liệt kê các thư mục và file bên trong dự án của nhóm Quản lý xây dựng trên google code
(tại thời điểm 14h41 ngày 05/11/2010) và nhận được kết quả như sau:
C:\svn-win32-1.5.6\bin>svn ls />NhanVien/
congtrinh/
khachhang/
main/
quanlykho/
quanlyvattu/
Trong ví dụ trên, các bạn có thể thay lệnh list bằng lệnh ls
4. Lệnh checkout (co) - Ý nghĩa: Lệnh này sử dụng để lấy phiên bản mã nguồn mới nhất từ thư mục dự án trên repository về thư
mục trên máy trạm.
- Cấu trúc lệnh: svn checkout <đường dẫn thư mục trên máy chủ> <đường dẫn thư mục trên máy trạm> --username <username>
--password <password>
Các bạn có thể thay thế lệnh checkout ở trên bằng lệnh co.
- Ví dụ: Trong ví dụ này, tôi sẽ lấy mã nguồn mới nhất từ thư mục Src của dự án AS đã tạo ở trên về thư mục D:/dev/as/src/ trên
máy trạm.
svn checkout svn://localhost/as/src d:/dev/as/src --username admin --password nimda
Nếu thành công, chương trình sẽ có thông báo: Checked out revision n. //(n là số phiên bản hiện tại mới nhất) Trong trường hợp
thư mục d:/dev/as/src chưa có, SVN sẽ tự tạo.
- Xong bước tạo Repository, ta tiếp tục cấu hình cho Repository này
o Mở file E:\Subversion Repository\conf\ svnserve.conf, ta bỏ đi các comment bên trong
[general]
anon-access = none

auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository
- anon-access = none/read/write : cho phép user chưa thẩm định quyền truy cập có các chức năng không/đọc/ghi
- auth-access=none/read/write : cho phép user đã thẩm định quyền có các chức năng không/đọc/ghi
- password-db=passwd : chỉ ra file chứa thông tin mật khẩu là file passwd – ngang hàng với file cấu hình này
- authz-db = authz : chỉ ra file chứa thông tin phân quyền là file authz – ngang hàng với file cấu hình này
o Sau khi cấu hình file svnserve.conf, ta tiếp tục cấu hình thông tin cho 2 file passwd và authz ở trên
File paswd
[users]
phuongnhn = phuong
nguyend = nguyen
thaint = thai
tuanvd = tuan
File authz
[groups]
admin = phuongnhn,nguyend
java = phuongnhn,nguyend, tuanvd
csharp= phuongnhn,nguyend, thaint
php = phuongnhn,nguyend
[/]
@admin = rw
[/javaproject]
@java = rw
csharp = r
[/csharpproject]
@csharp = rw
Phuongnhn = r
[/]: thư mục gốc

Chỉ có nhóm admin có quyền đọc và ghi
[/javaproject]: thư mục dự án javaproject
Nhóm java có thể đọc và ghi
Nhóm csharp được phép đọc

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×