HÀ NỘI - 2009
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
MỤC LỤC
CHƯƠNG 1
MỞ ĐẦU 1 -
1.1. Khái niệm bảo trì phần mềm - 1 -
1.2. Khái niệm quản lý cấu hình phần mềm - 1 -
1.3. Vai trò của quản lý cấu hình phần mềm - 1 -
1.4. Hoạt động quản lý cấu hình - 3 -
1.4.1. Các khái niệm cơ bản trong quản lý cấu hình - 3 -
1.4.2. Các hoạt động chính trong quản lý cấu hình - 3 -
CHƯƠNG 2
THỰC TRẠNG VÀ GIẢI PHÁP 12 -
2.1. Thực trạng - 12 -
2.2. Đề xuất giải pháp - 13 -
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 14 -3.1. Mục tiêu hệ thống - 14 -
3.2. Các chức năng hệ thống - 14 -
3.3. Mô hình khái niệm - 14 -
3.3.1. Các khái niệm - 15 -
3.4. Xác định các tác nhân, ca sử dụng và mô tả ca sử dụng - 15 -
3.4.1. Xác định các tác nhân - 15 -
3.4.2. Xác định các ca sử dụng (Use Case) - 16 -
CHƯƠNG 6
KẾT LUẬN 58 -
TÀI LIỆU THAM KHẢO 59 -
Mở đầu
- 1 -
CHƯƠNG 1
MỞ ĐẦU
Chương này nhằm giới thiệu những khái niệm và hoạt động chung của việc “bảo trì
phần mềm” và “hệ thống quản lý cấu hình”.
1.1. Khái niệm bảo trì phần mềm
Bảo trì phần mềm (Software Maintenance) là việc chỉnh sửa một sản phẩm phần
mềm sau khi đã chuyển giao để sửa lỗi, để cải tiến hiệu năng (performance) hoặc các
thuộc tính khác, hoặc làm thích ứng sả
n phẩm trên một môi trường bị thay đổi.
[7]
Trong bảo trì phần mềm chúng ta xem xét hoạt động nâng cấp phần mềm
• Nâng cấp phần mềm: Là việc sử dụng hay triển khai (deploying) một phiên
bản phần mềm mới để thay thế cho một phiên bản phần mềm khác (cũ hơn).
Ví dụ: Nâng cấp phiên bản trình duyệt Firefox 3.0.4 lên Firefox 3.0.7
1.2. Khái niệm quản lý cấu hình phần mềm
Quản lý cấu hình phần mềm (Software Configuration Management – SCM) là sự
phát triển và áp dụng các chuẩ
n và các thủ tục để quản lý sự phát triển của hệ thống
sản phẩm. Quản lý cấu hình là hoạt động bao trùm trong suốt tiến trình phần mềm. Bởi
vì những thay đổi có thể xảy ra vào bất cứ lúc nào, hoạt động quản lý cấu hình được
phát triển để xác định thay đổi, kiểm soát thay đổi, đảm bảo rằng những thay đổi đó
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
(test), và một phiên bản khác nữa đang trong quá trình phát triển, khi có một
lỗi xảy ra, việc sửa lỗi phải đồng bộ giữa ba phiên bản này, nếu quản lý mã
Mở đầu
- 3 -
nguồn không tốt, vấn đề đồng bộ rất khó thực hiên được. Nếu lỗi do khách
hàng phát hiện ra, lỗi đó phải được sửa trong tất cả các phiên bản về sau.
Quản lý cấu hình được thực hiện xuyên suốt chu kỳ sống của dự án, từ lúc bắt
đầu đến lúc kết thúc, thậm chí vẫn còn trong giai đoạn bảo trì sản phẩm sau dự án.
1.4. Hoạt động quản lý cấu hình
1.4.1. Các khái niệm cơ bản trong quản lý cấu hình
• Hạng mục cấu hình (Configuration Item - CI): Là tên gọi của các sản phẩm, sản
phẩm trung gian, một file hoặc một nhóm file, tài liệu hoặc một nhóm tài liệu
trong dự án mà ta cần phải quản lý và kiểm soát.
Ví dụ: một file mã nguồn, tài liệu về yêu cầu sản phẩm, bản thiết kế,…
• Ranh giớ
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
Mở đầu
- 5 -
• 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
CI
• Quy ước đặ
t tên trong dự án, kể cả tên file.
• Quy trình kiểm soát thay đổi (change control process).
• Chỉ định thành viên nhóm kiểm soát cấu hình (Configuration Control
Board –CCB).
• Thông tin nơi lưu trữ các CI.
• Kiểm kê và báo cáo cấu hình (configuration accounting and reporting)
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)
Mở đầu
- 7 -
Sản phẩm (Product)
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
Đồng thời, trong quản lý baseline, vai trò và nhiệm vụ của những người thiết lập
• Kỹ sư chất lượng (Quality Engineer)
• Và những ai bị ảnh hưởng bởi các thay đổi
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
Mở đầu
- 9 -
• 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
• Hoàn thành, và
• Có thể được tái tạo bởi khách hàng, ví dụ: Khách hàng có thể tạo ra file
chạy (executable) từ các file mã nguồn được gửi tới
Trong quá trình chuyển giao (release), việc quản lý đòi hỏi ph
ải thực hiện các
công việc sau:
• Tiến hành “ghim chết” baseline môi trường phát triển sản phẩm và các
file, tài liệu (sẽ chuyển giao)
• 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)
Mở đầu
- 11 -
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
Hệ thống kiểm soát phiên bản có cơ chế để đảm bảo việc chia sẻ dữ liệu giữa các
nhà phát triển xảy ra tin cậy, và mọi sự thay đổi diễn ra trong kho dữ liệu đều được
kiểm soát.
Hầu hết các công cụ quản lý cấu hình hiện thời mới chỉ kiểm soát phiên bản mã
nguồn phục vụ trong quá trình phát triển phần mềm, mà chưa hỗ trợ kiểm soát phiên
bả
n theo hướng “nâng cấp phần mềm” từ phía người sử dụng. Chẳng hạn: khách hàng
đang dùng phần mềm, họ muốn thực hiện nâng cấp lên một phiên bản khác (mới hơn),
điều gì sẽ xảy ra, và phải quản lý thế nào ?
Vì vậy chúng tôi sẽ trình bày một giải pháp nâng cấp phần mềm tự động kết hợp
với hệ thống kiểm soát phiên bản.
2.2. Đề xuất giải pháp
Giải pháp đưa ra là xây dựng một công cụ vừa cho phép quản lý phiên bản phần
mềm, vừa hỗ trợ xử lý hoạt động nâng cấp phần mềm tự động theo yêu cầu của người
sử dụng.
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.
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
- 14 -
Khái niệm Mô tả
Phienban Phiên bản của phần mềm
Manguon Mã nguồn của phần mềm (file mã
nguồn, file tài liệu,…)
Phienban_Manguon Phiên bản phần mềm và mã nguồn phụ
thuộc
HanhdongChuyendoi Các hành động được thực hiện khi nâng
cấp phiên bản (giữ nguyên, xóa, thêm,
sửa một mã nguồn nào đó)
QuanhePhienban Quan hệ giữa hai phiên bản kế tiếp nhau
3.4. Xác định các tác nhân, ca sử dụng và mô tả ca sử dụng
3.4.1. Xác định các tác nhân
Hệ thống mô phỏng chỉ gồm 1 tác nhân: Người dùng
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
- 16 -
Tác nhân Các ca sử dụng nghiệp
vụ
Kết quả đem lại
Tạo phiên bản Tạo phiên bản, lưu vào cơ sở dữ liệu
Thiết lập quan hệ giữa
các phiên bản
Tạo mối quan hệ giữa các phiên bản,
lưu vào cơ sở dữ liệu
Gán mã nguồn cho phiên
bản
Xác định các file mã nguồn của
Uc5. Xem thông tin phiên bản
Uc6. Xóa phiên bản
2. Gói quản lý mã nguồn
Uc7. Tạo mã nguồn
Uc8. Sửa thông tin mã nguồn
Uc9. Xem thông tin mã nguồn
Uc10. Xóa mã nguồn
3. Gói quản lý nâng cấp phiên bản
Uc11. Lựa chọn phiên bản hiện dùng
Uc12. Kiểm tra update
3.5. Biểu đồ sử dụng theo gói và mô tả ca sử dụng của hệ thống
3.5.1. Gói quản lý phiên bản Hình 09. Biểu đồ Use Case gói quản lý phiên bản
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
- 18 -
Mô tả Use Case trong gói quản lý phiên bản
Uc1. Tạo phiên bản
- Tên ca sử dụng: Tạo phiên bản
- Tác nhân: Người dùng (User)
- Mục đích: Khởi tạo phiên bản phần mềm mới, lưu vào cơ sở dữ
liệu
- Mô tả khái quát: Người dùng nhấn nút yêu cầu tạo phiên bản mới, rồi
thực hiện các chỉ dẫn tạo phiên bản
- Tham chiếu: R.1.1
- 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 mục tạo phiên bản 2. Hiển thị form tạo phiên bản
3. Người dùng nhập thông tin cần thiết
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
- 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
- Mô tả khái quát: Người dùng chọn phiên bản, sau đó chọn chức năng
“gán mã nguồn cho phiên bản” để thực hiện
- Tham chiếu: R.1.3
- 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 gán mã nguồn,
rồi chọn nút “add/remove source”
2. Hiển thị form gán mã nguồn cho
phiên bản
3. Chọn những mã nguồn muốn gán,
rồi nhấn “Ok”
4. Lưu lại thông tin về chỉ định mã
nguồn cho phiên bản vào cơ sở dữ liệu
- Ngoại lệ:
Uc4. Sửa thông tin phiên bản
- Tên ca sử dụng: Sửa thông tin phiên bản
- Tác nhân: Người dùng (User)
- Mục đích: Sửa thông tin của một phiên bản nào đó
- Mô tả khái quát: Người dùng chọn phiên bản cần sửa và nhấn nút sửa
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
- 20 -
- Tham chiếu: R.1.4
- Mô tả diễn biến:
- Mục đích: Xóa phiên bản khỏi cơ sở dữ liệu