ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Bùi Chí Tài
NGHIÊN CỨU MỘT GIẢI PHÁP BẢO TRÌ PHẦN
MỀM TỰ ĐỘNG KẾT HỢP VỚI HỆ THỐNG
QUẢN LÝ CẤU HÌNH
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
HÀ NỘI - 2009
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Bùi Chí Tài
NGHIÊN CỨU MỘT GIẢI PHÁP BẢO TRÌ PHẦN
MỀM TỰ ĐỘNG KẾT HỢP VỚI HỆ THỐNG
QUẢN LÝ CẤU HÌNH
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Cán bộ hướng dẫn: ThS. Đào Kiến Quốc
HÀ NỘI – 2009
TÓM TẮT NỘI DUNG
Trong khóa luận tốt nghiệp này, chúng tôi tìm hiểu và nghiên cứu về hệ thống quản
lý cấu hình phần mềm, mà nhiệm vụ quan trọng nhất là quản lý phiên bản. Hầu hết công
cụ quản lý phiên bản hiện thời chỉ chú trọng hỗ trợ cho những nhà phát triển trong khi
phát triển phần mềm nhằm kiểm soát mọi sự thay đổi của phần mềm do nhà phát triển
tạo ra, mà chưa hỗ trợ việc nâng cấp phần mềm tự động về phía khách hàng, rộng hơn là
bảo trì phần mềm tự động. Vì vậy trong khóa luận này, chúng tôi sẽ đề xuất một giải
pháp kết hợp việc nâng cấp tự động với hệ thống quản lý phiên bản.
Dựa trên ý tưởng đó, chúng tôi đã tiến hành phân tích, thiết kế và cài đặt thử nghiệm
chương trình mô phỏng kết hợp nâng cấp phần mềm với hệ thống quản lý phiên bản.
MỤC LỤC
1.3. Vai trò của quản lý cấu hình phần mềm
Tại sao lại phải quản lý cấu hình ?
[3]
Thực tiễn phát triển phần mềm chúng ta thường gặp những sự cố như:
• Một lỗi nào đó của phần mềm đang xây dựng đã tốn công sửa chữa, bỗng
nhiên xuất hiện trở lại.
1
Mở đầu
• Một chức năng nào đó của phần mềm đã được phát triển và kiểm tra cẩn thận
bỗng thất lạc hoặc biến mất một cách khó hiểu.
• Một chương trình đã được kiểm tra cẩn thận bỗng nhiễn không chạy được
nữa.
• Một chương trình gồm nhiều đơn thể (module), mỗi đơn thể gồm nhiều chức
năng, các chức năng được chia ra cho nhiều lập trình viên, mỗi chức năng bao
gồm nhiều tập tin mã nguồn, với nhiều phiên bản khác nhau. Khi tích hợp hệ
thống và biên dịch, trong hàng chục tập tin mã nguồn với hàng trăm phiên
bản, tập tin nào, phiên bản nào là đúng và cần lấy để tiến hành tích hợp.
Quản lý cấu hình tốt sẽ giải quyết được nhiều vấn đề có thể xảy ra:
• Cập nhật đồng thời: Khi 2 hoặc nhiều lập trình viên làm việc cách biệt nhau
nhưng trên cùng một chương trình hoặc dự án, những thay đổi mà người này
thực hiện có thể phá vỡ kết quả làm việc của người khác. Ví dụ: Sản phẩm
anh A làm ra sử dụng kết quả công việc của anh B, sản phẩm của anh B thay
đổi dẫn đến sản phẩm của anh A không chạy được.
• Chia sẻ mã nguồn: Trong các hệ thống lớn, khi các chức năng chung bị thay
đổi, tất cả những người liên quan phải được biết. Không quản lý mã nguồn tốt
thì không có cách nào đảm bảo tất cả những người liên quan đều được thông
báo những thay đổi đó.
• Vấn đề phiên bản phần mềm (release): Hầu hết các chương trình hoặc hệ
thống lớn được phát triển với nhiều phiên bản từ thấp đến cao. Trong trường
hợp một phiên bản khách đang dùng, phiên bản khác đang được kiểm tra
hoạt động khác nhau liên quan đến quản lý cấu hình. Định nghĩa rõ ràng
ai thực hiện, ai tham gia xem xét (review), ai phê duyệt (approve) trên các
hạng mục cấu hình (CI) của dự án, cũng như vai trò của khách hàng,
người sử dụng đầu cuối. Ví dụ minh họa:
Role
Project
Manager
CM
Responsible
CM
Librarian
Tool
Responsible
Subsystem
CCB
Full
System
CCB
Task 1 R S I
Task 2 I R I C
Task 3 I R A C
R: Responsible;A:Approval;S:Support;I:Inform;C:Consult
4
Mở đầu
• Công cụ, môi trường và cơ sở hạ tầng. Phần này mô tả các công cụ phần
mềm hoặc quy trình thủ tục được sử dụng để hỗ trợ trong việc quản lý cấu
hình, chẳng hạn công cụ quản lý phiên bản sản phẩm (version control).
Mô tả vị trí các máy chủ, máy trạm, cấu hình hệ thống client-server,…
• Phương pháp nhận diện (identification) và thiết lập các baseline trên các
gồm việc định danh và lưu trữ của CI đó).
Một phiên bản nói dễ hiểu là một thực thể mới của một CI sau khi đã qua một hoặc
nhiều lần xem xét và thay đổi.
Phiên bản của một CI khác với phiên bản của các file thành phần bên trong đó. Ví
dụ phiên bản của CI module “ExpMod” khác với phiên bản của file thành phần
“ExpMod.h” và “ExpMod.c”
Hình 04. Ví dụ phiên bản
Các phiên bản quan trọng của CI có thể được đánh nhãn (label) để đánh dấu và
biểu thị:
• Một “mốc” quan trọng trong tiến trình phát triển CI đó, ví dụ: một phiên
bản được nâng cấp sau một thay đổi lớn.
• Phiên bản mà CI được phê duyệt
• Phiên bản được baseline
d. Quản lý baseline
Các loại baseline thường gặp bao gồm: Chức năng
Kế hoạch
Yêu cầu khách hàng (Requirements)
Sản phẩm (Product)
6
Mở đầu
Bản phân phối (Release)
Kiểm thử (Test)
Môi trường hoạt động (Environment)
Quản lý baseline bao gồm:
• Chọn các CI cho mỗi loại baseline
• Tiến hành “ghim chết” baseline tại thời điểm sau khi các thay đổi đã được
chấp thuận và phê duyệt
Thông thường baseline được tiến hành tại điểm kết thúc của mỗi pha (phase) hay
các “mốc” quan trọng trong dự án.
Hình 05. Mô tả baseline
Nhiệm vụ của CCB thường là:
• Bảo đảm tất cả các thay đổi được các bộ phận liên quan nhận biết và tham
gia
8
Mở đầu
• Xem xét, phê chuẩn hoặc phủ quyết các thay đổi trên các baseline
• Kiểm tra, xác nhận các thay đổi
• Phê chuẩn các bản phân phối sản phẩm đến khách hàng
f. Báo cáo tình trạng cấu hình (Configuration Status Accounting)
Công việc này bao gồm việc ghi nhận và báo cáo tình trạng của các CI cũng như
các yêu cầu thay đổi, tập hợp các số liệu thống kê về các CI góp phần tạo nên sản phẩm.
Nó trả lời các câu hỏi như: có bao nhiêu files bị ảnh hưởng khi sửa chữa một lỗi phần
mềm (bug) nào đó ?
Kết quả của công việc này được ghi lại trong báo cáo Configuration Status
Accounting Report (CSAR). Báo cáo chỉ rõ các điểm:
• Liệt kê tất cả các baseline và các CI thành phần có liên quan
• Làm nổi bật các CI đang được phát triển hoặc vừa bị thay đổi
• Liệt kê các thay đổi đang còn dang dở hay đang hoàn thành, và các
baseline bị ảnh hưởng bởi các thay đổi đó
Báo cáo này được làm thường xuyên và định kỳ, xuyên suốt dự án.
g. Kiểm định (Auditing)
Có 3 loại kiểm định thường được thực hiện:
CSAR Audit
Kiểm định này thường được làm sau mỗi lần một CSAR được tạo ra, bao
gồm:
• Bảo đảm rằng các baseline mới nhất được liệt kê trong CSAR
• Bảo đảm rằng tất cả các CI tạo nên một baseline được liệt kê
• Kiểm tra các CI đã bị thay đổi từ lần baseline trước đó, so sánh chúng với
các yêu cầu thay đổi để khẳng định sự thay đổi trên các CI là hợp lý
Physical configuration audit (PCA)
• Thực hiện báo cáo CSAR
• Thực hiện các kiểm nghiệm (audit) PCA và FCA
• Đóng gói các file và tài liệu sẽ chuyển giao
• Xác nhận đã nhận bản release từ khách hàng
i. Lưu trữ và chép dự phòng (Backup and Archive)
10
Mở đầu
Lưu trữ và chép dự phòng là một hoạt động của quản lý cấu hình, đồng thời là một
trong những hoạt động quan trọng của sản xuất phần mềm. Nó giúp khắc phục các
trường hợp rủi ro bị mất mát dữ liệu do thao tác sai, do virus, hoặc do sự cố phần cứng,
phần mềm. Ngoài ra, công việc này còn hỗ trợ cho hoạt động kiểm soát phiên bản trong
trường hợp muốn sử dụng các phiên bản khác nhau.
Lưu trữ và chép dự phòng đòi hỏi toàn bộ sản phẩm và sản phẩm trung gian của dự
án phải được định kỳ chép dự phòng trên những thiết bị hoặc những nơi khác một cách
an toàn.
Khi dự án kết thúc, cần thực hiện các công việc sau:
• Lưu trữ toàn bộ dữ liệu dự án, tuân thủ quy trình lưu trữ đã được thiết lập
(định nghĩa bởi dự án hoặc quy định ở cấp công ty)
• Lưu trữ hoặc hủy bỏ các tài liệu ở dạng giấy
• Dọn sạch dữ liệu hoặc thông tin của dự án vừa kết thúc, sau khi đã chép
lưu trữ
11
Thực trạng và Giải pháp
CHƯƠNG 2
THỰC TRẠNG VÀ GIẢI PHÁP
2.1. Thực trạng
Một trong những nhiệm vụ chính của hệ thống quản lý cấu hình là kiểm soát phiên
bản phần mềm (control version), hiện nay có rất nhiều công cụ kiểm soát phiên bản
phần mềm, chẳng hạn như: SubVersion, CVS (phần mềm mã nguồn mở), IBM Rational
ClearCase, Visual SourceSafe (của Microsoft),..v.v..
Công cụ này cần phải lưu các phiên bản đã có, cũng như mối quan hệ giữa các
phiên bản, các hoạt động diễn ra khi nâng cấp từ một phiên bản này tới một phiên bản
khác
Do thời gian nghiên cứu về lĩnh vực này không nhiều và kinh nghiệm còn hạn chế,
nên chúng tôi mới chỉ xây dựng hệ thống mô phỏng hoạt động nâng cấp tự động kết hợp
với quản lý phiên bản với các chức năng đã nêu mà bỏ qua nhiều chức năng khác của hệ
thống quản lý phiên bản, và chưa xây dựng được một hệ thống client – server hoàn
chỉnh.
Chương 3,4 sẽ trình bày phần phân tích và thiết kế hệ thống trên, chương 5 sẽ là
cài đặt hệ thống.
13
Phân tích hệ thống mô phỏng hoạt động nâng cấp tự động kết hợp với quản lý phiên bản
CHƯƠNG 3
PHÂN TÍCH HỆ THỐNG MÔ PHỎNG HOẠT ĐỘNG NÂNG CẤP TỰ
ĐỘNG KẾT HỢP VỚI QUẢN LÝ PHIÊN BẢN
3.1. Mục tiêu hệ thống
Mục tiêu của hệ thống là mô phỏng hoạt động nâng cấp phần mềm kết hợp với
một hệ thống quản lý phiên bản đơn giản.
3.2. Các chức năng hệ thống
R.1. Gói quản lý phiên bản
R.1.1. Tạo phiên bản
R.1.2. Thiết lập quan hệ giữa các phiên bản
R.1.3. Gán mã nguồn cho phiên bản
R.1.4. Sửa thông tin phiên bản
R.1.5. Xem thông tin phiên bản
R.1.6. Xóa phiên bản
R.2. Gói quản lý mã nguồn
R.2.1. Tạo mã nguồn
R.2.2. Sửa thông tin mã nguồn
R.2.3. Xem thông tin mã nguồn
Gán mã nguồn cho phiên
bản
Xác định các file mã nguồn của
phiên bản, lưu vào cơ sở dữ liệu
Sửa thông tin phiên bản Sửa các thông tin của phiên bản và
lưu lại
Xem thông tin phiên bản Hiển thị thông tin về phiên bản được
chọn
Xóa phiên bản Xóa phiên bản trong cơ sở dữ liệu
Tạo mã nguồn Tạo mã nguồn mới, lưu vào cơ sở dữ
liệu
Sửa thông tin mã nguồn Sửa thông tin của mã nguồn và lưu
lại
Xem thông tin mã nguồn Hiển thị thông tin mã nguồn
Xóa mã nguồn Xóa mã nguồn trong cơ sở dữ liệu
Lựa chọn phiên bản hiện
dùng
Chọn một phiên bản làm phiên bản
hiện thời để thực hiện chức năng mô
phỏng nâng cấp
Kiểm tra update Kiểm tra xem có phiên bản mới hơn
phiên bản hiện dùng hay không để
nâng cấp
3.4.2. Xác định các ca sử dụng (Use Case)
1. Gói quản lý phiên bản
Uc1. Tạo phiên bản
Uc2. Thiết lập quan hệ giữa các phiên bản
Uc3. Gán mã nguồn cho phiên bản
Uc4. Sửa thông tin phiên bản
Uc5. Xem thông tin phiên bản
4. Lưu thông tin phiên bản mới tạo vào
cơ sở dữ liệu
- Ngoại lệ: - Đã tồn tại phiên bản giống vậy trong cơ sở dữ liệu
- Người dùng nhập không đầy đủ hoặc sai thông tin,
yêu cầu nhập lại
Uc2. Thiết lập quan hệ giữa các phiên bản
- Tên ca sử dụng: Thiết lập quan hệ giữa các phiên bản
- Tác nhân: Người dùng (User)
- Mục đích: Xác định mối quan hệ giữa các phiên bản với nhau và
lưu lại trong cơ sở dữ liệu
- Mô tả khái quát: Người dùng chọn phiên bản cần thiết lập quan hệ, rồi
chọn chức năng thiết lập quan hệ phiên bản.
- Tham chiếu: R.1.2
- Mô tả diễn biến:
Hành động của tác nhân Hồi đáp của hệ thống
1. Chọn phiên bản cần thiết lập quan
hệ, rồi chọn nút thiết lập quan hệ
2. Hiển thị form thiết lập quan hệ phiên
bản
3. Lựa chọn phiên bản bị tác động, rồi
nhấn “Ok”
4. Lưu lại quan hệ giữa các phiên bản
vào cơ sở dữ liệu
- Ngoại lệ:
Uc3. Gán mã nguồn cho phiên bản
- Tên ca sử dụng: Gán mã nguồn cho phiên bản
18
Phân tích hệ thống mô phỏng hoạt động nâng cấp tự động kết hợp với quản lý phiên bản
- Tác nhân: Người dùng (User)
- Mục đích: Xác định phiên bản gồm những mã nguồn nào
- Ngoại lệ: - Người dùng nhập không đầy đủ hoặc sai thông tin,
yêu cầu nhập lại
Uc5. Xem thông tin phiên bản
- Tên ca sử dụng: Xem thông tin phiên bản
- Tác nhân: Người dùng (User)
19