Kiểm thử & bảo trì PM

9

KIỂM THỬ PHẦN MỀM

Nội dung

9.1 Khái niệm kiểm thử

9.2 Phương pháp thử

9.3 Các kỹ thuật thiết kế trường hợp thử

9.4 Kiểm thử mô đun

9.5 Kiểm thử hệ thống

9.6 Kiểm thử chấp nhận

9.1 Khái niệm kiểm thử

Kiểm thử là giai đoạn cuối cùng trước khi bàn giai sản phẩm cho khách hàng - người dùng.

9.1.1 Khái niệm kiểm thử

• Vai trò: Là khâu mấu chốt đảm bảo chất lượng phần mềm

• Khái niệm: Là tiến trình và là nghệ thuật nhằm phát hiện lỗi bằng việc xem xét lại đặc tả, thiết kế và mã hoá.

• Chú ý: Kiểm thử thành công là phát hiện ra lỗi, kiểm thử không phát hiện ra lỗi là kiểm thử dở (Sue A.Conger- The New SE)

9.1.2 Những khó khăn trong kiểm thử

• Nâng cao chất lượng phần mềm nhưng không vượt quá chất lượng khi thiết kế: chỉ phát hiện các lỗi tiềm tàng và sửa chúng

• Phát hiện lỗi bị hạn chế do thủ công là chính

• Dễ bị ảnh hưởng tâm lý khi kiểm thử

• Khó đảm bảo tính đầy đủ của kiểm thử

9.1.3 Những điểm lưu ý khi thực hiện

(1) Chất lượng phần mềm do khâu thiết kế quyết định là chủ yếu, chứ không phải khâu kiểm thử

(2) Tính dễ kiểm thử phụ thuộc vào cấu trúc chương trình

(3) Người kiểm thử và người phát triển nên khác nhau

(4) Dữ liệu thử cho kết quả bình thường thì không có ý nghĩa nhiều, cần có những dữ liệu kiểm thử mà phát hiện ra lỗi

(5) Khi thiết kế trường hợp thử, không chỉ dữ liệu kiểm thử nhập vào, mà phải thiết kế trước cả dữ liệu kết quả sẽ có

(6) Khi phát sinh thêm trường hợp thử thì nên thử lại những trường hợp thử trướcđó để tránh ảnh hưởng lan truyền sóng

9.1.4 Tương ứng giữa vòng đời phần mềm và qui trình kiểm thử

9.2 Phương pháp thử

Người ta phân biệt 2 phương pháp kiểm thử: Kiểm thử trên bàn hay kiểm thử tĩnh và Kiểm thử trên máy hay kiểm thử động. Kiểm thử tĩnh thường được tiến hành trước nhằm tạo ra kịch bản cho kiểm thử động.

9.2.1 Thử trên bàn (thử tĩnh)

Kiểm thử trên bàn hay Kiểm thử tĩnh: với công cụ là giấy, bút và các tài liệu cần thiết: đặc tả yêu cầu, thiết kế và listing và thực hiện trên bàn nhằm kiểm tra logic, lần từng chi tiết ngay sau khi lập trình xong. Có 2 kỹ thuật được sử dụng:

• Đi xuyên suốt (walk through)

• Thanh tra (inspection)

9.2.2 Thử trên máy

Dùng máy chạy chương trình để điều tra trạng thái từng động tác của chương trình.

9 bước của trình tự kiểm thử bằng máy:

(1) Thiết kế trường hợp thử theo thử trên bàn

(2) Trường hợp thử phải có cả kết quả kỳ vọng sẽ thu được

(3) Dịch chương trình nguồn và tạo môđun tải để thực hiện

(4) Khi trường hợp thử có xử lý tệp vào-ra, phải làm trước trên bàn việc xác định miền của các tệp

(5) Nhập dữ liệu đã thiết kế cho trường hợp kiểm thử

(6) Điều chỉnh môi trường thực hiện môđun tải (tạo thủ tục đưa các tệp truy cập tệp vào chương trình)

(7) Thực hiện môđun tải và ghi nhận kết quả

(8) Xác nhận kết quả với kết quả kỳ vọng

(9) Lặp lại thao tác (5)-(8)

9.3 Các kỹ thuật thiết kế trường hợp thử

Người ta thường sử dụng 2 kỹ thuật kiểm thử: Kiểm thử hộp trắng và kiểm thử hộp đen. Hai kỹ thuật kiểm thử này dành cho kiểm thử mô đun. Ngoài ra còn dùng các kỹ thuật khác như Trên xuống (Top Down) và Dưới lên (Bottom Up) cho kiểm thử tích hợp.

9.3.1 Thử hộp đen (What?)

Kiểm thử hộp đen (Black Box testing) là kỹ thuật thiết kế trường hợp thử dựa trên đặc tả bề ngoài của chương trình. Người kiểm thử chỉ quan tâm đến nhiệm vụ mà mô đun phải đảm nhận, đầu vào cho mô đun và kết quả xử lý - đầu ra.

Kiểm thử hộp đen lại chia nhỏ ra nhiều kỹ thuật:

- Phân đoạn tương đương

- Phân tích giá trị biên

- Đoán lỗi

và một số kỹ thuật khác

Black Box Testing

Trong tài liệu này chúng ta quan tâm đến 3 kỹ thuật trên cùng.

1- Kỹ thuật phân đoạn tương đương (Equivalence Partition)

Kỹ thuật dựa vào khái niệm đoạn tương đương. Người ta chia miền dữ liêụ của bài toán thành những đoạn tương đương: có nghĩa là khi dữ liệu thuộc tập này được cung cấp thi mô đun xử lý và cho kết quả có cùng trạng thái. Ví dụ khi phải giải 1 phương trình bậc 2 : ax2 + bx + c = 0 thì tập các hệ số (a, b, c) cho 2 nghiệm tạo thành 1 tập; tập các hệ số (a, b, c) làm cho phương trình vô nghiệm sẽ tạo nên 1 tập tương đương khác,....

- Thực hiện: Chia dữ liệu vào thành các đoạn, mỗi đoạn đại diện cho một số dữ liệu => việc kiểm thử chỉ thực hiện trên đại diện đó.

- Mục đích: giảm số lượng test.

2- Phân tích giá trị biên (Boundary value analysis)

Là một trường hợp riêng của phân đoạn tương đương. Người ta tiến hành thử trên các giá trị biên: cận dưới và cận dưới cộng 1, cận trên và cận trên trừ 1. Thí dụ với dữ liệu ngày tháng, các chỉ số của mảng, các tệp rỗng,...

3- Đoán nhận lỗi (Error Guessing)

- Thường dựa vào trực giác và kinh nghiệm. Thí dụ lỗi chia cho 0. Nếu môđun có phép chia thì phải kiểm thử lỗi này. Ngoài ra các lỗi đường dẫn hay môi trường cũng thuộc loại này.

- Nhược điểm: không phát hiện hết lỗi. Tuy nhiên, nó cho phép phát hiện các lỗi sơ ý trong lập trình.

9.3.2 Thử hộp trắng (White Box Testing)

Là kỹ thuật thiết kế trường hợp thử dựa trên đặc tả bên trong của chương trình: Cấu trúc điều khiển, cấu trúc dữ liệu.

• Người kỹ sư phần mềm có thể đảm bảo:

- Kiểm tra tất cả các lộ trình độc lập bên trong một mô đun ít nhất 1 lần

- Kiểm tra tất cả các nhánh đúng/sai của lựa chọn

- Kiểm tra việc thực hiện của vòng lặp tại các biên và bên trong vòng lặp

- Kiểm tra các cấu trúc dữ liệu để đảm bảo tính hợp thức.

• Các kỹ thuật:

- Kiểm thử theo lộ trình (Basis path testing)

- Kiểm thử theo cấu trúc điều khiển.

Ở đây chỉ giới thiệu kỹ thuật kiểm thử theo lộ trình độc lập.

Kiểm thử theo lộ trình là kỹ thuật do Tom McCabe đề xuất cho phép nhà kiểm thử tiến hành một số đo về độ phức tạp lô gic của các thủ tục và số đo này được sử dụng để giúp cho việc định nghĩa các lộ trình cơ bản sao cho các lệnh trong chương trình được thực hiện ít nhất một lần trong quá trình kiểm thử. Kỹ thuật này sử dụng Ký pháp đồ hoạ luồng/ đồ thị chương trình. Một đồ thị luồng chương trình là một đồ thị mà:

- Mỗi nút đồ thị biểu diễn 1 lệnh/ 1 dãy lệnh liên tiếp

- Cung của đồ thị biểu diễn luồng điều khiển (trình tự thực hiện).

Thí dụ, sơ đồ khối quá trình thực hiện 1 mô đun được mô tả như hình vẽ:

Thì đồ thị luồng chương trình có dạng:

Chú ý

- Một cung bao giờ cũng phải kết thúc tại 1 nút (có thể nút này không tương ứng với bất kỳ lệnh nào trong thủ tục - nút predicat).

- Vùng bao bởi các cung và nút gọi là Region (khi tính, ta phải tính cả vùng bao ngoài).

Thí dụ đồ thị chương trình trên gồm 4 vùng (các số màu đỏ).

- Với điều kiện phức tạp (nhiều hơn 1 phép so sánh) thì mỗi so sánh lại tách thành 1 nút riêng.

Thí dụ: If a OR b then X else Y Endif

Độ phức tạp lặp (Cyclomatic Complexity)

Độ phức tạp lặp là 1 số đo phần mềm, cung cấp 1 đơn vị đo định lượng về độ phức tạp lô gic của CT. Trong ngữ cảnh áp dụng kiểm thử theo lộ trình, giá trị này sẽ cung cấp số lượng các lộ trình (path) độc lập trong 1 chương trình và đó được coi như là cận trên của số lượng test phải tiến hành để đảm bảo mọi lệnh đều được thực hiện ít nhất 1 lần.

- Lộ trình độc lập? là 1 phần của chương trình bao gồm ít nhất một tập lệnh hay 1 điều khiển mới.

Đồ thị chương trình trên có 4 lộ trình độc lập: 1-11; 1-2-3-4-5-10-1-11; 1-2-3-6-8-9-10-1-11; 1-2-3-6-7-9-10-1-11

• Có 3 cách tính độ phức tạp lặp ký hiệu V(G):

1) V(G) = E - N +2, với E là số cung, N là số nút của G

2) V(G) = số vùng (region)

3) V(G) = P +1, với P là số lượng nút Predicat (nút giả định, không có thật

Xét thí dụ:

1- Số lộ trình độc lập (độ phức tạp lặp) = 6

1-2-10-11-13; 1-2-10-12-13

1-2-3-10-11-13; 1-2-3-4-5-8-9-2 ...

1-2-3-4-5-6-8-9-2...; 1-2-3-4-5-6-7-8-9-2...

...: có nghĩa là phần tiếp theo còn lại đồ thị là chấp nhận được.

2- Đồ thị chương trình : Sinh viên tự vẽ coi như bài tập

3- Số test phải thực hiện: 6

9.4 Phương pháp thử các môđun

Để kiểm thử một phần mềm, người ta tiến hành kiểm thử theo trình tự sau:

• Kiểm thử môđun

• Kiểm thử tích hợp

• Kiểm thử hệ thống

• Kiểm thử chấp nhận ( Testing)

9.4.1 Kiểm thử mô đun

Được tiến hành một cách độc lập từng mô đun theo các kỹ thuật trên. Khi các mô đun được kiểm thử xong, kiểm thử tích hợp được tiến hành.

9.4.2 Kiểm thử tích hợp

Kiểm thử tích hợp với mục đích là kiểm tra giao diện và sự liên tác giữa các mô đun. Do vậy, các mô đun đã được kiểm thử xong coi như không có lỗi ở mức mô đun. Việc truy nhập ở đây là ở mức mô đun và nhằm phát hiện lỗi giao diện khi các mô đun truy nhập (gọi) tới nhau.

Hình trên cho ta một hình ảnh về việc tích hợp theo điều khiển các mô đun như một đồ thị luồng với điểm bắt đầu m1 <Main calls C> c1 <C calls F> f1 <F

Trong kiểm thử tích hợp, các kỹ thuật sau đây thường được sử dụng:

- Kiểm thử dưới lên (Bottom-up Test)

- Kiểm thử trên xuống (Top-down Test)

- Kiểm thử cột trụ (Big bung Test)

- Kiểm thử kẹp (Sandwich Test)

9.4.2.1 Thử dưới lên

Qui trình

- Các môđun mức thấp được tổ hợp vào các chùm thực hiện một chức năng con

- Viết trình điều khiển phối hợp vào/ ra và kiểm thử

- Kiểm thử chùm/bó

- Loại bỏ trình điều khiển và chuyển lên mức trên

Hình ảnh các mô đun được ghép dần từ mức thấp nhất, qau các mức trên và dần lên mức cao nhất

Một số điểm lưu ý của kỹ thuật này:

- Khó lập trình

- Dễ cô lập lỗi

- Mỗi test cho một session

9.4.2.2 Thử trên xuống

Qui trình

- Môđun điều khiển chính được dùng như trình điều khiển kiểm thử, gắn các nút con trực tiếp vào nó

- Thay các nút con bằng các môđun thực tại

(theo chiều sâu / ngang)

- Kiểm thử từng môđun được gắn vào

- Các 1 nút thử xong được thử tiếp nút khác

- Kiểm thử hồi quy

Hình ảnh về thứ tự kiểm thử được minh hoạ như hình trên. Các mô đun ở mức dưới có thể được tổ hợp theo chiều sâu hay theo chiều rộng.

Một số điểm lưu ý của kỹ thuật này:

- Dễ dàng lập trình

- Dễ cô lập lỗi

- 1 test cho 1 session

9.4.2.3 KIểm thử trụ cột Big-bang Test

Qui trình:

- Tích hợp không tăng dần

- Tất các các môđun đều được tổ hợp trước

- Toàn bộ chương trình được kiểm thử tổng thể

- Khó khăn: khó cô lập lỗi, khi chữa xong

lỗi này có thể lỗi mới lại phát sinh

9.4.2.4 Kiểm thử Sandwich

Kết hợp 2 kỹ thuật kiểm thử:

Trên -Xuống cho các mức trên của chương trình;

Dưới - Lên cho các mức phụ thuộc.

Hạn chế:

Khó cô lập lỗi.

9.5 Kiểm thử hệ thống

Kiểm thử hệ thống được tiến hành sau khi việc tích hợp các mô đun đã được thực hiện. Kiểm thử hệ thống nhằm:

• Kiểm thử phục hồi: bắt buộc phần mềm hỏng nhiều cách để kiểm chứng phục hồi

• Kiểm thử an toàn: kiểm chứng cơ chế bảo vệ

• Kiểm thử gay cấn

• Kiểm thử hiệu năng

9.6 Kiểm thử chấp nhận (Acceptance Test)

Nếu các kiểm thử trước được tiến hành bởi nhóm kiểm thử không cần sự hiện diện của người dùng thì kiểm thử này ngược lại cần sự hiện diện của người dùng. Người dùng căn cứ vào yêu cầu đã thống nhất với nhóm phát triển nhằm kiểm tra các yêu cầu về chức năng, về giao tiếp và các ràng buộc khác như hiệu năng, môi trường kỹ thuật. Sau kiểm thử này nếu kết quả tốt phần mềm sẽ được bàn giao cho khách hàng.

10

BẢO TRÌ PHẦN MỀM

Nội dung

10.1. Bảo trì là gì?

10.2 Trình tự nghi ệp vụ bảo trì

10.3 Những khó khăn trong bảo trì

10.4 Những vấn đề trong bảo trì hiện nay

10.5 Mô hình thuần thục bảo trì

10.1 Bảo trì là gì ?

10.1.1 Khái niệm

Theo IEEE (1993), thì bảo trì phần mềm được định nghĩa là việc sửa đổi một phần mềm sau khi đã bàn giao để chỉnh lại các lỗi phát sinh, cải thiện hiệu năng của phần mềm hoặc các thuộc tính khác, hoặc làm cho phần mềm thích ứng trong một môi trường đã bị thay đổi.

Năm 1995, tiêu chuẩn ISO/IEC 12207 định nghĩa: Bảo trì phần mềm là sự thay đổi mã nguồn và các tài liệu liên quan vì một vấn đề hoặc vì sự cần thiết phải phát triển. Mục đích là biến đổi phần mềm hiện có trong khi vẫn giữ nguyên tính toàn vẹn của nó.

10.1.2 Các hình thái bảo trì

IEEE (1993) chia bảo trì phần mềm thành 4 loại:

1- Bảo trì để Tu chỉnh:

Là bảo trì khắc phục những khiếm khuyết có trong phần mềm. Một số nguyên nhân điển hình:

- Kỹ sư phần mềm và khách hiểu nhầm nhau.

- Lỗi tiềm ẩn của phần mềm do sơ ý của lập trình hoặc khi kiểm thử chưa bao quát hết.

- Vấn đề tính năng của phần mềm: không đáp ứng được yêu cầu về bộ nhớ, tệp, . . . Thiết kế sai, biên tập sai . . .

- Thiếu chuẩn hóa trong phát triển phần mềm trước đó.

Qui trình: sử dụng kỹ nghệ ngược nhằm dò lại thiết kế để tu sửa

2- Bảo trì để Thích hợp:

Là tu chỉnh phần mềm theo thay đổi của môi trường bên ngoài nhằm duy trì và quản lý phần mềm theo vòng đời của nó. Thay đổi phần mềm thích nghi với môi trường: công nghệ phần cứng, môi trường phần mềm. Những nguyên nhân chính:

- Thay đổi về phần cứng (ngoại vi, máy chủ,. . .)

- Thay đổi về phần mềm (môi trường): thí dụ như Hệ điều hành

- Thay đổi cấu trúc tệp hoặc mở rộng cơ sở dữ liệu .

3- Bảo trì để Cải tiến:

Là việc tu chỉnh hệ phần mềm theo các yêu cầu ngày càng hoàn thiện hơn, đầy đủ hơn, hợp lý hơn. Những nguyên nhân chính:

- Do muốn nâng cao hiệu suất nên thường hay cải tiến phương thức truy cập tệp.

- Mở rộng thêm chức năng mới cho hệ thống.

- Cải tiến quản lý kéo theo cải tiến tư liệu vận hành và trình tự công việc.

- Thay đổi người dùng hoặc thay đổi thao tác.

Qui trình: sử dụng kỹ thuật tái kỹ nghệ (re-engineering) với mục đích: đưa ra một thiết kế cùng chức năng nhưng có chất lượng cao hơn. Thường tiến hành với hai mảng: tái cấu trúc phần mềm, tái xây dựng cấu trúc dữ liệu cho phù hợp

4- Bảo trì để Phòng ngừa:

Là công việc tu chỉnh chương trình có tính đến tương lai của phần mềm đó sẽ mở rộng và thay đổi như thế nào. Thực ra trong khi thiết kế phần mềm đã phải tính đến tính mở rộng của nó, nên thực tế ít khi ta gặp bảo trì phòng ngừa nếu như phần mềm được thiết kế tốt.

Qui trình:

- Hiểu hoạt động bên trong chương trình

- Thực hiện những thay đổi trên thiết kế không tường minh.

- Thiết kế / lập trình lại.

- Sử dụng công cụ CASE

10.2 Trình tự nghiệp vụ bảo trì

Bảo trì là một quá trình trong vòng đời của phần mềm, cũng tuân theo các pha phân tích, thiết kế, phát triển và kiểm thử từ khi phát sinh vấn đề cho đến khi giải quyết xong.

Theo tiêu chuẩn quốc tế về bảo trì phần mềm ISO/IEC14764, bảo trì phần mềm gồm có hai nhóm chính là bảo trì để Chỉnh sửa (Correction) và bảo trì nâng cao (Enhancement). Bảo trì Chỉnh sửa bao gồm bảo trì Tu chỉnh và bảo trì Phòng ngừa. Bảo trì Nâng cao gồm bảo trì Cải tiến và bảo trì Thích hợp. Do vậy, ta có thể chia làm 2 nhóm:

- Loại 1: Tu chỉnh cải đã có

- Loại 2: Thêm cái mới

Sơ đồ qui trình bảo trì

1- Hiểu phần mềm đã có

- Theo tài liệu nắm chắc các chức năng

- Theo tài liệu chi tiết hãy nắm vững đặc tả chi tiết, điều kiện kiểm thử, . . .

- Dò đọc chương trình nguồn, hiểu trình tự xử lý chi tiết của hệ thống

Ba việc trên đều là công việc thực thi trên bàn.

2- Tu sửa phần mềm đã có

- Bảo trì chương trình nguồn, tạo các môđun mới và dịch lại.

- Thực hiện kiểm thử unit và tu chỉnh những mục liên quan có trong tư liệu đặc tả.

- Chú ý theo sát tác động của môđun được sửa đến các thành phần khác trong hệ thống.

3- Phát triển phần mềm mới

- Khi thêm chức năng mới phải phát triển chương trình cho phù hợp với yêu cầu

- Cần tiến hành từ thiết kế, lập trình, gỡ lỗi và kiểm thử unit

- Phản ảnh vào giao diện của phần mềm (thông báo, phiên bản, . . .)

4- Kiểm chứng tính nhất quán

- Đưa đơn vị (unit) đã dược kiểm thử vào hoạt động trong hệ thống

- Điều chỉnh sự tương tích giữa các môđun

- Dùng các dữ liệu trước đây khi kiểm thử để kiểm thử lại tính nhất quán

- Chú ý hiệu ứng làn sóng trong chỉnh sửa

5- Kiểm tra khi hoàn thành bảo trì

Kiểm tra nội dung mô tả có trong tư liệu đặc tả xem cách ghi tư liệu có phù hợp với mô tả môi trường phần mềm mới hay không ?, những điểm cần lưu ý hay thay đổi đã được mô tả chưa,...

6- Lập biểu quản lý bảo trì

Thiết lập bập biểu quản lý tình trạng bảo trì bao gồm các thông tin:

- Ngày tháng, giờ

- Nguyên nhân

- Tóm tắt cách khắc phục

- Chi tiết khắc phục, hiệu ứng làn sóng

- Người làm bảo trì

- Số công

10.3 Những khó khăn trong bảo trì

Phần lớn các vấn đề có liên quan đến việc bảo trì phần mềm đều có thể quy về những khiếm khuyết trong cách vạch định kế hoạch và xây dựng phần mềm. Trong số nhiều vấn đề cổ điển có thể liên quan đến việc bảo trì phần mềm, có những vấn đề sau:

 Thường khó hay không thể nào theo dõi được sự tiến hoá của phần mềm qua nhiều phiên bản hay lần phát hành. Những thay đổi dã không được chứng minh bằng tư liệu một cách đầy đủ.

 Khó hay không thể nào theo dõi được tiến trình qua đó tạo ra phần mềm.

 Thường đặc biệt khó để hiểu chương trình của ai đó. Cái khó tăng lên khi số phần tử trong cấu hình phần mềm giảm đi. Nếu chỉ có mã chương trình không có tư liệu thì chắc chắn sẽ có nhiều vần đề nghiêm trọng.

 Thường không ai đó bên cạnh để giải thích. Tính cơ động giữa các nhân viên phần mềm khá cao. Chúng ta không thể dựa vào giải thích cá nhân của người phát triển về phần mềm khi cần bảo trì.

 Tài liệu không có hoặc có nhưng rất tồi.Việc thừa nhận rằng phần mềm phải được tư liệu hoá là bước đầu tiên, nhưng tư liệu hoá phải làm sao để có thể hiểu được và nhất quán với chương trình gốc bằng bất cứ giá nào.

 Phần lớn các phần mềm đều không được thiết kế cho sự thay đổi. Chừng nào mà phương pháp thiết kế còn chưa phù hợp với sự thay đổi thông qua các khái niệm như phụ thuộc hàm hay lớp sự vật, thì việc thay đổi đối với phần mềm vẫn còn khó khăn và sinh lỗi.

 Việc bảo trì vẫn chưa được coi là công việc rất quyến rũ. Phần lớn sự nhận thức này đến từ mức độ chán nản cao liên quan đến công việc bảo trì.

Tất cả các vấn đề được mô tả ở trên, một phần đều có thể là do một số chương trình đang tồn tại thì đã phát triển mà không có sự cân nhắc nào về kĩ nghệ phần mềm.

Một số vấn đề quản lí kĩ thuật nẩy sinh như hậu quả của vấn đề liên quan đến việc bảo trì. Liệu có thể phát triển được phần mềm với thiết kế tốt và bảo trì được không? Chúng ta có thể duy trì tính toàn vẹn của phần mềm khi nó phải được thay đổi không ? Liệu có các cách tiếp cận kĩ thuật và quản lí được áp dụng thành công cho việc bảo trì phần mềm không?

10.4 Những vấn đề trong bảo trì hiện nay

• Sáng kiến trong quy trình phát triển phần mềm

(1) Chuẩn hóa mọi khâu trong phát triển phần mềm

(2) Người bảo trì chủ chốt tham gia vào giai đoạn phân tích và thiết kế

(3) Thiết kế để dễ bảo trì

• Sáng kiến trong quy trình bảo trì phần mềm

(1) Sử dụng các công cụ hỗ trợ phát triển phần mềm

(2) Chuẩn hóa thao tác bảo trì và thiết bị môi trường bảo trì

(3) Lưu lại những thông tin sử bảo trì

(4) Dự án nên cử một người chủ chốt của mình làm công việc bảo trì sau khi dự án kết thưc giai đoạn phát triển.

• Phát triển những kỹ thuật mới cho bảo trì

(1) Công cụ phần mềm hỗ trợ bảo trì

(2) Cơ sở dữ liệu cho bảo trì

(3) Quản lý tài liệu, quản lý dữ liệu, quản lý chương trình nguồn, quản lý dữ liệu thử, quản lý sử bảo trì

(4) Trạm bảo trì tính năng cao trong hệ thống mạng lưới bảo trì với máy chủ thông minh

10.5 Mô hình thuần thục bảo trì (Software Maintenance Maturity Model - SMmm)

10.5.1 Các hạn chế của mô hình CMM và CMMI

Các mẫu bảo trì liên quan của CMMi đều cho rằng một vài tiến trình bảo trì là duy nhất với người bảo trì và không phải là phần trong quá trình phát triển phần mềm. Trong các mẫu này thì người ta quan tâm chủ yếu đến việc quản lý dự án mà ít quan tâm đến bảo trì. Cụ thể:

 Không chỉ ra được khái niệm về mức thuần thục bảo trì

 Không quan tâm đến kết quả các hoạt động bảo trì

 Các vấn đề chuyên về bảo trì không được quan tâm thích đáng

 Các quá trình đặc trưng như tái lập tài liệu, kỹ nghệ ngược, tái kỹ nghệ v.v.... không được quan tâm đầy đủ

10.5.2 Mục đích, phương pháp của mô hình

Mô hình SMmm (Software Maintenance Maturity Model) được phát triển bởi các tác giả Alain April, Jane Huffman Hayes, Alain Abran, và Reiner Dumke từ năm 2004. Mô hình này được nghiên cứu theo hướng trả lời các câu hỏi sau:

a.Các tiến trình và các hoạt động nào là đặc biệt của việc bảo trì phần mềm.

b.Bảo trì phần mềm liên quan đến quá trình phát triển phần mềm chuẩn. Vậy các chuẩn và các hoạt động chia sẻ có thể được định nghĩa rõ ràng không?

c.Các tiến trình đặc biệt của việc bảo trì phần mềm có thể được đem vào để xem xét trong các chuẩn quốc tế hiện tại không?

d.Liệu có tồn tại một mô hình thuần thục khả năng có thể bao phủ tất cả các tiến trình của việc bảo trì phần mềm?

e.Kiến trúc đề nghị của mô hình thuần thục khả năng riêng cho việc bảo trì để có thể chỉ ra các hoạt động đặc trưng của quá trình bảo trì?

f.Các chi tiết của một mô hình như thế

SMmm được thiết kế như một mô hình tham khảo tập trung vào khách hàng, đó là một chuẩn đánh giá, cho biết:

- Sự kiểm tra khả năng bảo trì phần mềm của các công ty cung cấp dịch vụ bảo trì phần mềm.

- Bên trong của các tổ chức bảo trì phần mềm.

10.5.3 Nền tảng của mô hình

SMmm được dựa trên mô hình CMMI của SEI dành cho Công nghệ phần mềm. Mô hình này phải được xem như là sự bổ sung của mô hình CMMi, đặc biệt là trong những quy trình thông thường đối với người bảo trì và người phát triển như: xác định quy trình, phát triển, kiểm thử, quản trị cấu hình và thực hiện bảođảm chất lượng

10.5.4 Chi tiết mô hình SMmm

Chi tiết của mô hình SMmm được thể hiện trong bảng sau. Nó bao gồm 4 phạm vi quy trình (process domain), 18 KPAs, 74 Roadmap và 443 thủ tục. Trong đó có một số KPA của riêng quá trình bảo trì, một số KPA khác kế thừa từ mô hình CMM và một số mô hình khác và được biến đổi chút ít cho phù hợp với đặc trưng của quá trình bảo trì hàng ngày.

Phạm vi quy trình KPAs Roadmaps

Quản lý tiến trình

bảo trì phần mềm (Software Maintenance Process Management) Tiêu điểm tiến trình

bảo trì (Maintenance

Process Focus) Thông tin và trách nhiệm

(Responsibility and

Communications)

Tìm kiếm và thu nhận thông tin

(Information gathering and findings)

Kế hoạch hành động (Action

plan)

Định nghĩa tiến trình

/dịch vụ bảo trì (Maintenance Process/Service Definition) Lập tài liệu và chuẩn hóa các

Tiến trình/dịch vụ (Documentation and Standardization of processes/services)

Thích ứng dịch vụ/tiến trình

(Process/Service adaptation)

Dịch vụ/tiến trình giao tiếp

(Communication processes/services)

Lưu trữ các dịch vụ/tiến trình

(Repository of processes/services)

Đào tạo bảo trì

(Maintenance Các yêu cầu, các kế hoạch và

các tài nguyên (Requirements,

Training) plans, and resources)

Huấn luyện cá nhân (Personal

training)

Bắt đầu huấn luyện đối với

người mới (Initial training of newcomers)

Huấn luyện các kế hoạch về

chuyển giao (Projects training on transition)

Huấn luyện người sử dụng

(User training)

Tiến hành tiến trình bảo

trì (Maintenance Process Performance) Xác định các giới hạn bảo trì

(Definition of maintenance measures)

Xác định các ranh giới

(Identification of baselines)

Quản lý số lượng

(Quantitative management)

Mô hình dự kiến (Prediction

models)

Cải tiến và triển khai

bảo trì (Maintenance Innovation and Deployment) Nghiên cứu các cải tiến

(Research of innovations)

Phân tích các đề xuất cải tiến

(Analysis of improvement proposals)

Thí điểm với các đề xuất cải

tiến được chọn (Piloting selected improvement proposals)

Triển khai các cải tiến

(Deployment of improvements)

Đo lường lợi ích của các cải tiến

(Benefit measurement of improvements)

Quản lý yêu cầu

bảo trì phần mềm

(Software

Maintenance Request (MR) Management) Quản lý yêu cầu các dịch vụ và sự kiện (Event and Service Request

Management) Cấu trúc giao tiếp và tiếp xúc

(Communications and contact structure)

Quản lý các yêu cầu sự kiện và

Dịch vụ (Management of events and service requests)

Lên kế hoạch bảo trì

(Maintenance

Planning) Lên kế hoạch bảo trì (1 đến 3 năm)

(Maintenance Planning)

Lên kế hoạch chuyển giao dự án

(Project transition planning)

Lên kế hoạch phục hồi sau sự cố

(Disaster Recovery planning)

Lên kế hoạch về năng lực (Capacity Planning)

Lên kế hoạch về các phiên bản và nâng cấp (Versions and upgrade planning)

Phân tích các tác động (Impact

Analysis)

Giám sát và điều khiển

các yêu cầu dịch vụ và sự kiện (Monitoring and Control of Service Requests and Events) Theo dõi từng bước các hoạt

động đã được thông qua và lên kế hoạch (Follow up on planned

and approved activities)

Xem xét và phân tích sự tiến

triển (Reviews and analyze progress)

Các thay đổi khẩn cấp và các

biện pháp hiệu chỉnh (Urgent changes and corrective

measures)

Các thỏa thuận mức

dịch vụ (SLAs) và thỏa thuận cung cấp (SLAs

and Supplier

Agreements) Quản lý tài khoản người sử

dụng (Account Management of users)

Thiết lập hợp đồng và các SLAs

(Establish SLAs and contracts)

Thực hiện những dịch vụ trong

hợp đồng và SLAs (Execute services in SLAs and contracts)

Báo cáo, giải thích và định giá

các dịch vụ (Report, explain and bill services)

Công nghệ tiến hóa

phần mềm

(Software

Evolution

Engineering) Chuyển giao phần

mềm (Software

Transition) Người phát triển ,những

người sở hữu có liên quan và truyền thông (Developer and

owner involvement and

Communications)

Quản lý và giám sát quá trình

chuyển giao (Transition process surveillance and

management)

Giám sát quá trình đào tạo và

chuyển giao kiến thức (Training and knowledge transfer

surveillance)

Chuẩn bị chuyển giao

(Transition preparation)

Kiểm tra sự tiếp nhận và sự

tham gia của hệ thống

(Participation in system and acceptance tests)

Hỗ trợ hoạt động

(Operational Support) Theo dõi sản phẩm phần mềm

(Production software monitoring)

Hỗ trợ ngoài giờ (Support

outside normal hours)

Các quy tắc của doanh nghiệp

và sự hỗ trợ các chức năng (Business rules and functionality support)

Các yêu cầu/báo cáo/dịch vụ

đặc thù (Ad hoc requests/reports/services)

Sửa chữa và tiến hóa

phần mềm (Software

Evolution and

Correction) Thiết kế chi tiết (Detailed

design)

Xây dựng -Lập trình

(Construction - Programming)

Kiểm thử (đơn vị, hợp nhất, hồi

quy)

Lập tài liệu (Documentation)

Thẩm định và phê

chuẩn phần mềm (Software Verification and Validation) Rà soát (Reviews)

Kiểm thử tiếp nhận (Acceptance

Tests)

Chuyển sang sản phẩm (Move

to production)

Hỗ trợ kỹ nghệ tiến

hóa phần mềm

(Support to

Software Evolution

Engineering) Quản lý cấu hình phần

mềm Quản lý sự thay đổi (Change

management)

Cấu hình ranh giới (Baseline

configuration)

Điều khiển, theo dõi và bảo lưu

(Reservation, follow-up, and control)

Bảo đảm chất lượng

Tiến trình và sản phẩm

(Process and Product

Quality Assurance) Đánh giá mục tiêu (Objective

evaluation)

Xác định và lập tài liệu các

điểm không phù hợp (Identify and document non- conformances)

Liên lạc các điểm không phù

hợp (Communicate non- conformances)

Theo dõi những sửa chữa/điều

chỉnh (Follow up on

corrections/adjustments)

Đo lường và phân tích

quá trình bảo trì phần mềm (Measurement and Analysis of Maintenance) Xây dựng chương trình đo

lường (Define measurement program)

Thu thập và phân tích dữ liệu đo

lường (Collect and analyze measurement data)

Lưu giữ các phép đo bảo trì

(Repository of maintenance measures)

Liên kết sự phân tích các phép

đo (Communicate measurement analysis)

Phân tích nguyên nhân

và giải quyết vấn đề (Causal Analysis and Problem Resolution) Điều tra những khuyết tật và hư

hỏng (Investigate defects and defaults)

Xác định các nguyên nhân

(Identify causes)

Phân tích nguyên nhân

(Analyze causes)

Đề xuất giải pháp (Propose

solutions)

Làm mới, di trú và kết

thúc phần mềm (Software Rejuvenation, Migration, and Retirement) Xây dựng lại tài liệu về phần

mềm (Redocumentation of software)

Tái cấu trúc lại phần mềm

(Restructuring of software)

Thiết kế đối chiếu phần mềm

(Reverse engineering of software)

Tái kỹ nghệ phần mềm

(Reengineering of software)

Sự di trú phần mềm (Software

migration)

Sự kết thúc sử dụng phần mềm

(Software retirement)

10.5.5 Kiến trúc của SMmm

Mô hình SMMM cũng dựa trên khái niệm của các khía cạnh. Một khía cạnh(facet) là một tập hợp các hành động có liên quan tập trung vào một khu vực tổ chức hay nhu cầu hay là một thành phần đặc biệt trong tổ chức bảo trì phần mềm. Mỗi khía cạnh diễn tả một khả năng của một tổ chức bảo trì phần mềm. Bên trong mỗi khía cạnh, mức độ của các hành động được dựa trên các mức độ tương ứng của khả năng thuần thục. Hành động cơ bản nhất được đặt ở mức thấp nhất, trong khi các hành động tiên tiến hơn được đặt ở các mức cao hơn. Các hành động ở mức thấp phải hiện thực hóa cho các hành động ở mức cao hơn để dành được hiệu năng cao nhất . Có 6 khía cạnh cụ thể như sau:

Mức Tên mức Rủi ro Giải thích

0 Incomplete Cao nhất Không có khái niệm về các quy trình

1 Performed Rất cao Quy trình bảo trì đặc thù

2 Managed Cao Quy trình dựa trên yêu cầu cơ bản

3 Established Trung bình Quy trình bảo trì tiên tiến

4 Predictable Thấp Nói chung khó có thể đạt được ở thời điểm hiện tại

5 Optimizing Rất thấp Gặp thử thách về kỹ thuật để đạt tới

Định nghĩa của các mức khả năng và các thuộc tính chung của các quy trình tương ứng được định rõ trong mỗi mức thuần thục của mô hình SMmm và được miêu tả trong bảng sau:

Tên

mức Định nghĩa mức thuần thục Các thuộc tính chung của

quy trình

0 -

Không thực

hiện quy trình Quy trình không được thực hiện bởi tổ

chức, hoặc không có bằng chứng là tồn tại tiến trình . Mức 0 ngụ ý rằng các hoạt động không được tiến hành bởi

tổ chức. a) Không có bằng chứng về sụ

tồn tại tiến trình

b) Các nhà quản trị cấp cao không ý thức được tác động của việc không có tiến trình hoặc hoạt động này trong tổ chức

c) Quy trình hoặc hoạt động không đạt được các mục tiêu đề ra bởi mô hình

d) Không có kiến thức hoặc sự

hiểu biết về quy trình hoặc hoạt động

e) Có các thảo luận liên quan đến quy trình và hoạt động nhưng không có bằng chứng rằng chúng được thực hiện.

f) Có thể trước đây các hoạt động đã được thực hiện nhưng hiện tại thì không

1 - Thực

hiện quy trình Có thể nhận thấy ngay rằng các hoạt động

được thực thi một cách không chính thức. Mức 1 chỉ ra rằng một số thứ đã được

thực hiện hoặc hoạt động đã gần tới mục a) Tổ chức ý thức được sự cần

thiết của việc điều hành các quy trình và hoạt động

b) Một cá nhân điều hành các

đích của các hoạt động được đề cập trong

mô hình. Sự thực thi của các hành động dựa vào kiến thức và sự có mặt của một vài cá nhân chính. Các hoạt động là đặc biệt điển hình và không được lập tài liệu. Chúng cục bộ và không nhất thiết phải xuất hiện trong các nhóm bảo trì phần

mềm khác. Không có bằng chứng nào chỉ ra rằng các thuộc tính của các tiến trình được thực hiện một các có hệ thống hoặc các hoạt động có thể lặp lại. hoạt động và quy trình, các thủ

tục không được lập tài liệu (các nhân viên phải đợi người này

tới để học thêm về quy trình; khi mà người này không xuất hiện, các quy trình và hoạt động sẽ không diễn ra một cách trọn vẹn)

c) Một vài người bảo trì phần mềm thực hiện quy trình hoặc hành động này

d) Không thể ghi nhận một

cách chính xác đầu vào và đầu ra của quy trình hoặc hoạt

động

e) Không có thước đo cho các quy trình và hoạt động

f) Các đầu ra không được sử dụng, không dễ dàng để dùng, không được cập nhật thường xuyên và ảnh hưởng của chúng là không lớn

g) Không thể xác định người thực hiện các hoạt động hoặc các yêu cầu về trình độ/huấn luyện.

2 - Quản

lý tiến trình Mức 2 ngụ ý rằng các hoạt động được đề

xuất bởi mô hình được triển khai trong một số nhóm bảo trì phần mềm. Đặc trưng của mức này là các khía cạnh cục bộ và trực giác của các hoạt động hoặc

quy trình, điều khó làm hài hòa trong toàn bộ tổ chức bảo trì phần mềm. a) Quy trình được lập tài liệu

và được tuân thủ một cách cục bộ

b) Huấn luyện và hỗ trợ được cung cấp một cách cục bộ

c) Biết được các mục tiêu của các hoạt động và quy trình.

d) Tạo ra các đầu ra phục vụ

cho các mục tiêu của hoạt động và quy trình

e) Thực hiện các biện pháp đo lường định tính đối với một vài thuộc tính.

3 - Xác

lập tiến trình Quy trình và hoạt động được nắm bắt và

thực hiện theo các thủ tục được lập tài liệu và triển khai một cách có hệ thống. Mức 3 ngụ ý rằng các quy trình và hoạt động được xác định và kết nối với nhau; các nhân viên nhận được các huấn luyện thích hợp. Chúng ta chắc rằng các đặc

trưng định tính của quy trình và hoạt động là có thể dự đoán được. a) Các hoạt động hoặc quy

trình gợi ý bởi mô hình được thực hiện

b) Các nhóm bảo trì phần mềm sử dụng cùng một tập hành động

c) Các phép đo cơ bản được định nghĩa và chúng được tập hợp, thẩm định và báo cáo

d) Các nhân viên có kiến thức

để thực hiện các hành động

hoặc quy trình (xác định được vai trò và trách nhiệm của từng cá nhân)

e) Các tài nguyên cần thiết

được quản lý và sử dụng để đạt tới các mục tiêu đã định trước

f) Các kỹ thuật, khuôn mẫu, kho lưu trữ dữ liệu, cơ sở hạ

tầng là sẵn có và được sử dụng

để hỗ trợ cho quy trình

g) Nhân viên tuân thủ theo các hoạt động và quy trình

h) Các hoạt động chủ chốt của quy trình được điều khiển và

đo lường.

4 - Dự

đoán được tiến trình Các hoạt động được thực hiện một cách

nghiêm túc và quản lý một cách định lượng theo những mục đích đã được xác định bên trong các ranh giới đã thiết lập. Có một sự khác biệt quan trọng khi ta quan tâm đến mức 4, bằng những lời có

thể dự đoán trước về kết quả của một quy trình hay hoạt động. Khái niệm "quản lý định lượng" (quantitatively managed)

dùng để chỉ một điều khiển xác suất (hoặc các kỹ thuật tương tự) phù hợp được sử dụng để quản lý sự thực thi của tiến trình

và các hoạt động quan trọng nhất của nó. Tổ chức dự đoán sự thực hiện và kiểm soát tiến trình. a) Các bán thành phẩm của quá

trình được xem xét một cách chính thức

b) Sự phù hợp của quy trình được đánh giá trên cơ sở các thủ tục được lập tài liệu.

c) Các xem xét và kiểm soát được lưu trữ và luôn sẵn sàng. d) Những phần mở của các

xem xét và kiểm soát luôn được giám sát cho đến khi kết thúc

e) Các tài nguyên và cơ sở hạ

tầng được sử dụng bởi quy

trình được lên kết hoạch, tuyển chọn, ấn định, kiểm soát và quản lý.

f) Các quy trình được xem xét và chứng thực một cách dộc lập.

g) Các hoạt động chính của quy trình có các dữ liệu quá

khứ (historical data) và kết quả có thể đo được và được kiểm soát.

h) Hoạt động chính của quy trình có các mục tiêu được định trước và có thể đạt tới được.

i) Hoạt động chính có các phép đo định lượng được kiểm soát để đạt tới mục đích.

j) Các khác biệt được phân tích

để quyết định điều chỉnh hoặc

sửa chữa các nguyên nhân khác biệt.

5 - Tối

ưu tiến trình Quy trình hoặc hoạt động có một số lượng

các mục tiêu cải tiến và chúng được cải tiến liên tục. Mức 5 ngụ ý sự cải tiến tiếp tục. Các mục đích cải tiến định lượng

được xác lập và xem xét để thích nghi với các thay đổi trong mục tiêu của doanh nghiệp. Các mục tiêu này được dùng như

là tiêu chuẩn chính cho sự phát triển. Các tác động của sự phát triển được đo lường và đánh giá dựa vào số lượng các mục

tiêu phát triển. Mỗi tiến trình chính của bảo trì phần mềm có các mục tiêu phát triển a) Các cải tiến chính đối với

quy trình và hoạt động có thể được xem xét.

b) Những cải tiến về công nghệ

và quy trình được dự kiến và có các mục đích đo được.

c) Tổ chức nhận thức được và triển khai các hoạt động tốt nhất về kỹ nghệ.

d) Có các hoạt động đi tiên phong trong các hoạt động xác định những yếu kém của quy trình.

e) Mục đích chính của tổ chức là ngăn ngừa các khuyết tật

f) Các kỹ thuật và công nghệ tiên tiến được triển khai và sử dụng

g) Thực hiện các nghiên cứu về chi phí/lợi nhuận của các sáng kiến và cải tiến chính

h) Thực hiện các hoạt động tái sử dụng tài nguyên kiến thức con người.

i) Nguyên nhân của các sai sót và khuyết tật (trong tất cả các quy trình/hoạt động và công nghệ) được nghiên cứu và loại trừ.

Bạn đang đọc truyện trên: AzTruyen.Top