Tải bản đầy đủ (.pdf) (22 trang)

Các phương pháp đánh giá độ tin cậy của hệ thống tính toán qua cấu trúc hệ thống

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 (921.12 KB, 22 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ

LÊ THỊ HẢI YẾN

CÁC PHƢƠNG PHÁP ĐÁNH GIÁ ĐỘ TIN CẬY
CỦA HỆ THỐNG TÍNH TOÁN QUA
CẤU TRÚC HỆ THỐNG

Ngành: Công nghệ thông tin
Chuyên ngành: Công nghệ phần mềm
Mã số: 60.48.10

TÓM TẮT LUẬN VĂN THẠC SĨ CÔNG NGHỆ PHẦN MỀM

Hà Nội - 2012


MỤC LỤC
CHƢƠNG 1: CƠ SỞ LÝ THUYẾT ................................................ 4
1.1
Khái niệm cơ bản về độ tin cậy ....................................... 4
1.1.1
Tổng quan ................................................................ 4
1.1.2
Định nghĩa về độ tin cậy .......................................... 4
1.1.3
Dạng chung của xác suất an toàn............................. 4
1.2
Chỉ số độ tin cậy của hệ thống ......................................... 4
1.2.1


Phần tử không phục hồi ........................................... 4
1.2.2
Phần tử phục hồi ...................................................... 5
1.3
Phƣơng pháp tính độ tin cậy của hệ thống qua cấu trúc hệ
thống ..........................................................................................5
1.3.1
Sơ đồ khối độ tin cậy của các phần tử nối tiếp ........ 5
1.3.2
Sơ đồ khối độ tin cậy của các phần tử song song .... 6
1.4
Các biện pháp để nâng cao độ tin cậy của hệ thống ........ 6
1.5
Kết luận ........................................................................... 6
CHƢƠNG 2. PHƢƠNG PHÁP ĐÁNH GIÁ ĐỘ TIN CẬY CỦA
HỆ THỐNG QUA CẤU TRÚC HỆ THỐNG ................................. 8
2.1
BÀI TOÁN TÌM ĐƢỜNG ĐI TRONG ĐỒ THỊ HỆ
THỐNG ....................................................................................... 8
2.1.1
Thuật toán chuyển đổi sơ đồ cấu trúc logic thành sơ
đồ khối ..................................................................................8
2.1.2
Phân loại các đỉnh và các cạnh của đồ thị liên kết... 8
2.1.3
Thuật toán chuyển đổi sơ đồ cấu trúc logic sang đồ
thị liên kết ................................................................................ 9
2.1.4
Thuật toán tìm tất cả các đƣờng đi trong ma trận
liên kết ................................................................................9

2.1.5
Thuật toán tìm tất cả đƣờng đi của ma trận liên kết
trong lý thuyết đồ thị. ............................................................ 10
2.1.6
Kết luận ................................................................. 10
2.2
BÀI TOÁN TỐI THIỂU CÁC TOÁN TỬ LOGIC....... 10
2.2.1
Định nghĩa và các phép toán trong đại số Boole ... 11

2


2.2.2
Các phƣơng pháp cơ bản để tối thiểu hoá các toán tử
logic
11
2.3
BÀI TOÁN XÁC ĐỊNH TRỰC GIAO HOÁ CÁC
TOÁN TỬ LOGIC .................................................................... 11
2.3.1
Các phƣơng pháp giảm thiểu các hàm đại số logic
đối với các hình thức trực giao và trực giao không lặp. ........ 11
2.3.2
Các quy tắc chuyển đổi hàm logic sang dạng xác
suất trong dạng chuẩn tắc tuyển ............................................ 12
2.3.3
Kết luận ................................................................. 12
CHƢƠNG 3. THIẾT LẬP VÀ XÂY DỰNG CHƢƠNG TRÌNH
TÍNH ĐỘ TIN CẬY CỦA HỆ THỐNG MẠNG MÁY TÍNH ... 13

3.1
Thiết lập bài toán ........................................................... 13
3.1.1
Viết chƣơng trình để tìm các đƣờng đi trong ma trận
liên kết 13
3.1.2
Xây dựng chƣơng trình trực giao hoá hàm đại số
logic
14
3.2
Các ví dụ sử dụng các hàm đã xây dựng ....................... 16
3.3
Phát triển các chức năng và các yêu cầu cần thiết bổ sung
cho việc tính toán....................................................................... 17
3.4
Kết luận ......................................................................... 17
CHƢƠNG 4. ĐỘ TIN CẬY VÀ KHẢ NĂNG HỆ THỐNG
HOẠT ĐỘNG AN TOÀN QUA VÍ DỤ CỤ THỂ ........................ 18
4.1
Đặc tả hệ thống .............................................................. 18
4.2
Nghiên cứu các thuật toán và phát triển các hàm .......... 19
4.3
Kết quả thu đƣợc từ chƣơng trình tính toán độ tin cậy của
hệ thống ..................................................................................... 19
4.4
Kết luận ......................................................................... 21
KẾT KUẬN ................................................................................... 22
1. Kết luận ............................................................................. 22
2. Hƣớng phát triển ................................................................ 22


3


CHƢƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Khái niệm cơ bản về độ tin cậy
1.1.1 Tổng quan
“Hệ thống là một tập hợp gồm nhiều phần tử tương tác, có
các mối quan hệ ràng buộc lẫn nhau và cùng hoạt động hướng tới
một mục tiêu chung thông qua chấp thuận các đầu vào, biến đổi có
tổ chức để tạo kết quả đầu ra”.
Hay “Hệ thống là một tập hợp gồm nhiều phần tử có các mối
quan hệ ràng buộc tương tác lẫn nhau để thực hiện một mục đích
chung”[6].
1.1.2 Định nghĩa về độ tin cậy
Độ tin cậy P(t) của phần tử hoặc của hệ thống là xác suất để
trong suốt khoảng thời gian khảo sát t phần tử đó hoặc hệ thống đó
vận hành an toàn.
P(t) = P{ ≥ t}
(1.1)
Trong đó:
 là thời gian liên tục vận hành an toàn của phần tử.
1.1.3 Dạng chung của xác suất an toàn
Kiến thức cơ bản cần thiết để phân tích độ tin cậy của hệ
thống nói chung là:
- Kiến thức về lý thuyết xác suất và quá trình ngẫu nhiên;
- Kiến thức về các thành phần, thông số kỹ thuật của hệ thống.
Độ tin cậy của hệ thống còn đƣợc gọi theo cách khác là xác
suất an toàn.
P(t) = P{ ≥ t}

Xác suất không an toàn (Q(t)) hay còn gọi là xác suất hỏng
của hệ thống [1] sẽ là:
Q(t) = 1-P(t)
1.2 Chỉ số độ tin cậy của hệ thống
Các hệ thống, thiết bị kỹ thuật (các phần tử) tồn tại trong thực
tiễn thƣờng tồn tại dƣới 2 dạng là phục hồi đƣợc và không phục hồi
đƣợc.
1.2.1 Phần tử không phục hồi
Phần tử không phục hồi[2] là phần tử khi đƣợc đƣa vào sử
dụng, nếu bị hƣ hỏng thì sẽ loại bỏ ngay mà không tiến hành sửa
4


chữa do không thể hoặc việc sửa chữa không mang lại hiệu quả, ví
dụ nhƣ: linh kiện điện trở, tụ điện, IC … ta chỉ quan tâm đến sự
kiện xảy ra sự cố đầu tiên.
Trong phần này sẽ nói đến những thông số cơ bản của phần tử
không phục hồi và cách tính các thông số đó dựa vào lý thuyết xác
suất và thống kê.
1.2.2 Phần tử phục hồi
Phần tử phục hồi [2] là phần tử khi đƣa vào sử dụng đến khi
xảy ra sự cố có thể đƣợc đem đi sửa chữa phục hồi.
Trong phần này sẽ nói đến những thông số cơ bản của phần tử
không phục hồi và cách tính các thông số đó dựa vào lý thuyết xác
suất và thống kê.
1.3 Phƣơng pháp tính độ tin cậy của hệ thống qua cấu trúc hệ
thống
Cấu trúc của một hệ thống dù phức tạp đến đâu thì cũng chỉ
quy về 2 dạng là cấu trúc nối tiếp hoặc cấu trúc song song [4]
(Phƣơng pháp tính độ tin cậy của hệ thống không có dự phòng và

có dự phòng của hệ thống [2]).
Phƣơng pháp này xây dựng mối quan hệ trực tiếp giữa độ tin
cậy của hệ thống với độ tin cậy của các phần tử đã biết. Sơ đồ khối
độ tin cậy (Reliability Block Diagrams - RBD) của hệ thống đƣợc
xây dựng trên cơ sở phân tích ảnh hƣởng của hỏng hóc phần tử đến
hỏng hóc của hệ thống.
1.3.1 Sơ đồ khối độ tin cậy của các phần tử nối tiếp
Cấu trúc đơn giản hơn cả là cấu trúc không có dự phòng của
một hệ thống đƣợc tạo nên bởi n phần tử, mỗi trở ngại của một
phần tử riêng biệt đều dẫn đến trở ngại của cả hệ thống.
𝑛

𝑃𝐻 𝑡 = 𝑃1 𝑡 . 𝑃2 𝑡 … 𝑃𝑖 𝑡 … 𝑃𝑛 𝑡 =

𝑃𝑖 𝑡

(1.24)

𝑖=1

Thời gian hoạt động an toàn trung bình của hệ thống là:
1
𝑇𝐻 =
(1.27)
Λ
Xác suất trạng thái hỏng của hệ thống:
5


𝑄𝐻 𝑡 = 1 − 𝑃𝐻 𝑡 = 1 − 𝑃1 . 𝑃2 … 𝑃𝑛

(1.32)
1.3.2 Sơ đồ khối độ tin cậy của các phần tử song song
Trong sơ đồ các phần tử song song [8] (hệ thống có dự
phòng), sự cố của 1 phần tử nào đó không nhất định là sẽ dẫn đến
sự cố cho toàn hệ thống, ở sơ đồ này hệ thống sẽ gặp sự cố khi tất
cả các phần tử gặp sự cố.
𝑛

𝑄𝐻 𝑡 = 𝑄1 𝑡 . 𝑄2 𝑡 … 𝑄𝑛 𝑡 =

𝑄𝑖 𝑡

(1.33)

𝑖=1

Độ tin cậy của hệ thống:
𝑛

1 − 𝑒 −𝜆 𝑖 .𝑡

𝑃𝐻 𝑡 = 1 − 𝑄𝐻 𝑡 = 1 −
𝑖=1

= 1 − 1 − 𝑃1 1 − 𝑃2 … 1 − 𝑃𝑛
(1.35)
Thời gian hoạt động an toàn trung bình của hệ thống là:
1
𝑇𝐻 =
1.38

Λ
 Xác suất làm việc không có sự cố của hệ thống song song luôn
cao hơn xác suất làm việc không có sự cố của hệ thống nối
tiếp.
1.4 Các biện pháp để nâng cao độ tin cậy của hệ thống
Nêu một số biện pháp để nâng cao độ tin cậy của hệ thống từ đó
đƣa ra những chiến lƣợc bảo dƣỡng thích hợp.
1.5 Kết luận
Xác suất vận hành an toàn của phần tử giảm dần theo thời
gian.
Xác suất vận hành an toàn của hệ thống song song luôn cao
hơn xác suất vận hành an toàn của hệ thống nối tiếp.
Độ tin cậy của một hệ thống có một ý nghĩa hết sức quan
trọng đối với các hệ thống lớn nhƣ máy bay, phi thuyền, tên lửa,
dây chuyền sản xuất công nghiệp, …
Để đảm bảo độ tin cậy của toàn hệ thống trƣớc hết cần thiết
kế đảm bảo độ tin cậy riêng cho các thành phần trong hệ thống

6


Độ tin cậy của sản phẩm phải đƣợc thể hiện bằng khả năng
sản phẩm hoạt động hoàn hảo trong thời gian xác định cụ thể.
Các công thức phân phối xác suất đƣợc sử dụng để tính toán,
đánh giá độ tin cậy của từng phần tử cũng nhƣ của cả hệ thống.
Việc tính toán chính xác độ tin cậy của hệ thống đặc biệt quan
trọng bởi trong công tác bảo trì độ tin cậy của thiết bị càng thấp thì
nhu cầu bảo trì càng cao.

7



CHƢƠNG 2. PHƢƠNG PHÁP ĐÁNH GIÁ ĐỘ TIN CẬY
CỦA HỆ THỐNG QUA CẤU TRÚC HỆ THỐNG
Sử dụng đồ thị và các ma trận liên kết để tính toán độ tin cậy
của hệ thống, chẳng hạn nhƣ xác suất để hệ thống làm việc an toàn
trong thời gian t là P(t); xác suất hệ thống gặp sự cố Q(t); hàm mật
độ phân phối xác suất q(t), ...
Phần mềm tính toán các chỉ số tin cậy cho hệ thống có cấu trúc
phức tạp gồm nhiều giai đoạn [10] nhƣng đều có chung bốn bƣớc
cơ bản sau:
Giai đoạn đầu: Xây dựng sơ đồ cấu trúc logic;
Giai đoạn 2: Tìm tất cả các đƣờng đi thành công của hệ thống.
Giai đoạn 3: Tất cả các đƣờng đi thành công của hệ thống sẽ đƣợc
ghi lại dƣới dạng các toán tử logic cơ bản, tối thiểu hoá các toán tử
logic đó.
Giai đoạn 4: Trực giao hoá các toán tử logic, chuyển đổi mô hình
logic sang đại số và tính toán xác suất hệ thống hoạt động an toàn,
thời gian trung bình giữa các lần hỏng hóc và các chỉ số khác của
độ tin cậy.
2.1 BÀI TOÁN TÌM ĐƢỜNG ĐI TRONG ĐỒ THỊ HỆ
THỐNG
2.1.1 Thuật toán chuyển đổi sơ đồ cấu trúc logic thành sơ đồ
khối
Sơ đồ cấu trúc logic là biểu diễn cấu trúc logic của hệ thống
bằng sơ đồ theo các quy ước về cách mã hoá và biểu diễn mối
quan hệ giữa các thành phần dưới dạng các ký hiệu. Việc xây
dựng thành công sơ đồ cấu trúc logic của hệ thống cho ta một hình
ảnh trực quan về cấu trúc hệ thống và sẽ là điều kiện tiên đề để có
thể phân tích và đánh giá độ tin cậy của hệ thống.

2.1.2 Phân loại các đỉnh và các cạnh của đồ thị liên kết
Việc phân loại các đỉnh, các cạnh sẽ giúp ta xây dựng sơ đồ
cấu trúc logic một cách chính xác.

8


2.1.3 Thuật toán chuyển đổi sơ đồ cấu trúc logic sang đồ thị
liên kết
Trƣờng hợp sơ đồ cấu trúc logic vô hƣớng thì việc biến đổi là
đơn giản nhƣng nếu sơ đồ cấu trúc logic có hƣớng thì việc quan
trọng là phải xác định hƣớng của các cung và xây dựng làm sao
cho hệ thống đạt hiệu quả.
2.1.4 Thuật toán tìm tất cả các đƣờng đi trong ma trận liên
kết
Thuật toán để tìm tất cả các đƣờng đi trong ma trận kề dựa trên
thao tác nhân ma trận liên kết một cột tƣơng ứng của ma trận đó
đƣợc thể hiện nhƣ sau:
Bk = A B* k- 1(*)
Trong đó:
- Bk cột mà trận kết quả của phép nhân (*).
- B* k- 1 là kết quả của phép chuyển đổi B k- 1 ;
Vậy bài toán đặt ra ở đây là cho ma trận A và ma trận cột B1
hãy tìm tất cả các đƣờng đi có thể có từ nguồn (điểm phát) tới đích
(điểm nhận).
+) Bƣớc 1: Kiểm tra ma trận cột B1 có chứa cung bắt đầu từ đỉnh
nguồn hay không. Nếu cung tồn tại thì ghi nhận đƣờng đi đó và
thay thế cung đó bởi giá trị 0. Cho ta kết quả là B*1 ;
+) Bƣớc 2: Xét với k=2.
+) Bƣớc 3: Thực hiện phép tính (*) để tìm các giá trị Bk tƣơng ứng.

+) Bƣớc 4: Kiểm tra Bk bắt đầu từ nguồn, nếu đƣờng đi tồn tại thì
ghi nhớ và thay thế đƣờng đi đó bởi giá trị 0. Nếu đƣờng đi xuất
hiện trong Bk là đƣờng đi đầy đủ thì thay thế Bk =0. Kết quả là B*k.
+) Bƣớc 5: Kiểm tra B*k . Nếu B*k =0 thì thực hiện tiếp bƣớc 7.
Nếu B*k ≠0 thì thực hiện tiếp bƣớc 6.
+) Bƣớc 6: Kiểm tra điều kiện k ≤ n-1. Nếu thoả mãn điều kiện k <
n-1 thì tăng k lên 1 và thực hiện tiếp bƣớc 3. Nếu điều kiện k = n1thì thực hiện tiếp bƣớc 7.
+) Bƣớc 7: Kiểm tra lại danh sách đƣờng đi và kết quả nhận đƣợc
là danh sách các đƣờng đi có thể có từ đỉnh đầu đến đỉnh cuối.
9


2.1.5 Thuật toán tìm tất cả đƣờng đi của ma trận liên
kết trong lý thuyết đồ thị.
Tƣ tƣởng của tìm kiếm theo chiều sâu là: Từ đỉnh nguồn
(đỉnh đầu) của đồ thị ta di chuyển đến một đỉnh khác (một
đỉnh bất kỳ mà có thể đi từ đỉnh đầu). Từ đỉnh này ta tiếp tục
đi đến khác đỉnh khác. Nếu không thể đi tiếp đƣợc nữa thì
quay lại đỉnh trƣớc đó và đi đến đỉnh khác. Cứ nhƣ vậy cho
đến khi đến đỉnh cuối của đồ thị.
2.1.6 Kết luận
Dựa vào những kết quả các thuật toán đã trình bày, ta có thể
rút ra một vài kết luận nhƣ sau:
- Thuật toán chuyển đổi từ sơ đồ cấu trúc logic sang đồ
thị liên kết nếu thực hiện bằng tay sẽ đơn giản hơn là lập
trình, vì việc lập trình chuyển đổi là tƣơng đối phức tạp. Đầu
tiên phải nói đến là số lƣợng lớn các thành phần trong sơ đồ
cấu trúc logic và sự phức tạp trong việc xây dựng các ký
pháp đồ hoạ. Vậy việc chuyển đổi từ sơ đồ cấu trúc logic
sang đồ thị liên kết bằng tay là đơn giản tuy nhiên lại mất rất

nhiều thời gian.
- Từ thuật toán tìm đƣờng đi đã biết trong lý thuyết đồ
thị ta có thể phát triển thành thuật toán tìm tất cả các đƣờng
đi trong đồ thị bằng cách chuyển đồ thị đó thành ma trận
tƣơng ứng, phần tử trong ma trân δij =1 nếu tồn tại đƣờng đi
giữa i và j, δij =0 nếu không tồn tại đƣờng đi giữa i và j.
2.2 BÀI TOÁN TỐI THIỂU CÁC TOÁN TỬ LOGIC
Việc tối thiểu hoá các toán tử logic thƣờng dựa trên các
hằng đẳng thức Boole hay còn đƣợc gọi là các luật trong đại số
Boole. Vậy đại số Boole là gì và các phép toán, các luật liên quan
đến đại số Boole mà ta sẽ sử dụng để tối thiểu hoá các toán tử logic
là gì? Trong mục này chúng ta sẽ đi giải quyết vấn đề đó.

10


2.2.1 Định nghĩa và các phép toán trong đại số Boole
Một đại số Boole là một cấu trúc đại số gồm một tập hợp S
chứa ít nhất là 2 phần tử, đƣợc ký hiệu là 0 và 1, cùng với hai phép
toán 2 ngôi “+” (tuyển - ˅) và “.” (hội - ˅) và một phép toán 1
ngôi “¯” (phủ định) .
2.2.2 Các phƣơng pháp cơ bản để tối thiểu hoá các toán tử
logic
- Phƣơng pháp biến đổi đại số;
- Phƣơng pháp bảng Karnaugh;
- Phƣơng pháp Quine – Mc.Cluskey.
2.3 BÀI TOÁN XÁC ĐỊNH TRỰC GIAO HOÁ CÁC TOÁN
TỬ LOGIC
Phƣơng pháp trực giao chính là phƣơng pháp biến đổi logic
sao cho kết quả của các toán tử đều bằng 0.

2.3.1 Các phƣơng pháp giảm thiểu các hàm đại số logic đối
với các hình thức trực giao và trực giao không lặp.
a) Thuật toán cắt giảm
Thuật toán này dựa trên việc triển khai các hàm logic cho ta
kết quả là các hàm logic đã trực giao, trực giao không lặp và
trƣờng hợp đặc biệt đó là dạng chuẩn tắc tuyển trực giao.
b) Thuật toán trực giao hoá theo công thức của Poresky
Thuật toán trực giao hoá theo công thức của Poresky [10] gồm các
bƣớc sau:
1. Hàm logic đƣợc viết dƣới dạng chuẩn tắc tuyển nhƣ sau:
f(xn) = K1 ˅ K2 ˅ …˅ Kj ˅ ….˅ KR
Trong đó: Kj là mệnh đề sơ cấp có số thứ tự là j.
2.

3.

Tất cả các biến trong hàm logic khi đƣợc viết dƣới dạng chuẩn
tắc tuyển thì phải đƣợc sắp xếp theo thứ tự tăng dần, bắt đầu
với bậc thấp nhất của biến.
Dạng chuẩn tắc tuyển đƣợc viết dƣới dạng công thức Poresky
nhƣ sau:
f(xn) = K1 ˅ K2 ˅ …˅ Kj ˅ ….˅ KR =
𝐾1 ˅𝐾1 𝐾2 ˅𝐾1 𝐾2 𝐾3 ˅… ˅𝐾1 … 𝐾𝑅−1 𝐾𝑅

11


4.

Khai triển công thức ta đƣợc dạng trực giao không lặp của

hàm ban đầu.
c) Thuật toán cắt giảm hàm đại số logic bằng cách đưa về dạng
chuẩn tắc tuyển
Thuật toán gồm các bƣớc sau đây:
1. Đây là một hàm của dạng chuẩn tắc tuyển.
2. Tìm các phép hội sơ cấp xuất hiện trong dạng chuẩn tắc tuyển.
3. Tìm tất cả các tập hợp đƣợc bao phủ bởi mỗi phép hội sơ cấp
4. Khai triển tất cả các tập hợp, ta sẽ đƣợc hàm ban đầu trong
dạng chuẩn tắc tuyển hoàn toàn.
2.3.2 Các quy tắc chuyển đổi hàm logic sang dạng xác suất
trong dạng chuẩn tắc tuyển
Quá trình chuyển đổi về hàm xác suất đƣợc thực hiện theo quy
tắc sau:
1. Sử dụng công thức De Morgan để đƣa về dạng chuẩn tắc hội,
không chứa phép cộng logic nào.
2. Các ký hiệu phép cộng và nhân logic đƣợc thay thế bởi dấu
các phép cộng và phép nhân đại số.
3. Các ký hiệu xi và 𝑥𝑖 đƣợc thay thế bằng các xác suất Pi và Qi
tƣơng ứng.
4. 𝑃(𝑓=1) đƣợc thay thế bởi 1-𝑃(𝑓=1)
2.3.3 Kết luận
- Thuật toán cắt giảm thích hợp để tính bằng tay vì khi khai
triển hàm thì sẽ làm giảm các kết quả trung gian.
- Việc sử dụng thuật toán cắt giảm để đƣa về dạng chuẩn tắc
tuyển có thể nhìn sẽ dài dòng hơn nhƣng nó lại dễ dàng hơn
khi lập trình trên máy tính.
- Thuật toán trực giao hoá theo công thức Poresky không đơn
giản khi giải bằng tay vì số lƣợng các biến khi khai triển khá
dài.


12


CHƢƠNG 3. THIẾT LẬP VÀ XÂY DỰNG CHƢƠNG TRÌNH
TÍNH ĐỘ TIN CẬY CỦA HỆ THỐNG MẠNG MÁY TÍNH
Sau khi đã hiểu rõ về cách thức cũng nhƣ phƣơng pháp để tính
toán độ tin cậy của hệ thống thì ta sẽ phải cụ thể hoá các phƣơng
pháp đó bằng một ngôn ngữ lập trình cụ thể.
3.1 Thiết lập bài toán
3.1.1 Viết chƣơng trình để tìm các đƣờng đi trong ma trận
liên kết
3.1.1.1 Các yêu cầu đối với chƣơng trình và xây dựng chƣơng
trình
Chƣơng trình đƣợc thiết kế với mục đích là tìm tất cả các
đƣờng đi giữa hai nút trong ma trận liên kết, mà ma trận liên kết
này đƣợc xây dựng từ đồ thị liên kết.
Tham số đầu vào của chƣơng trình là ma trận liên kết đƣợc
xây dựng từ đồ thị liên kết.
Chƣơng trình phải hoạt động sao cho tìm đƣợc các đƣờng đi
của ma trận liên kết.
Tham số đầu ra của chƣơng trình là tất cả các đƣờng đi đƣợc
viết dƣới dạng các phép hội sơ cấp.
Để có thể chạy đƣợc ứng dụng này thì máy tính của bạn phải
có bộ nhớ tối thiểu là 32MB.
3.1.1.2 Lựa chọn thuật toán để viết chƣơng trình tìm tất cả các
đƣờng đi giữa hai nút trong ma trận liên kết
Trong chƣơng 2 chúng ta có nói đến thuật toán tìm tất cả các
đƣờng đi giữa hai nút. Thuật toán ở phần 2.1.4 nói về việc tìm tất
cả đƣờng đi giữa hai nút trong ma trận liên kết, còn thuật toán ở
phần 2.1.5 nói về việc tìm tất cả các đƣờng đi giữa hai nút của ma

trận liên kết trong lý thuyết đồ thị. Hai thuật toán đó đều có những
ƣu và nhƣợc điểm riêng. Ta sẽ sử dụng thuật toán 2.1.5 để xây
dựng chƣơng trình tìm tất cả các đƣờng đi giữa hai nút trong ma
trận kết nối.

13


3.1.1.3 Phát triển hàm tìm kiếm tất cả các đƣờng đi giữa hai
nút trong ma trận liên kết
Vì các đƣờng đi mà chúng ta tìm kiếm phải là khác nhau
và không lặp, nhƣ thế có nghĩa là chúng có thể khác nhau về độ
dài, số đỉnh của mỗi đƣờng đi mà cũng có thể không nhƣng thứ tự
trong các đƣờng đi phải khác nhau hoàn toàn.
Để thực hiện đƣợc điều này ta phải xác định loại của tất cả các
đƣờng đi nhƣ:
unsigned int K [maxN [maxK]
unsigned int i_line,
unsigned int Leng [maxN]

Tất cả các đƣờng đi đƣợc lƣu trong ma trận hai chiều K, với
i_line dòng, chiều dài mỗi đƣờng đi đƣợc lƣu trong ma trận Leng.
Các biến maxN (số lƣợng tối đa các đƣờng đi), maxK (kích cỡ
tối đa của ma trận) phải đƣợc khai báo hạn chế để tiết kiệm tài
nguyên bộ nhớ khi chạy chƣơng trình.
Hàm tìm kiếm tất cả các đƣờng đi giữa hai nút trong ma trận liên
kết đƣợc viết bởi ngôn ngữ C++, chi tiết thể hiện trong phụ lục 1,
/* function Find: Tim kiem vet can theo nguyen
tac de quy tat ca cac duong di tu dinh Dau
(I_ISTOK) den dinh cuoi I_STOK)

*/
void Find(
unsigned int A[maxK][maxK],
unsigned int P[maxK
unsigned int
L,
unsigned int
N,
unsigned int
i_istok,
unsigned int
i_stok,
unsigned int
i_end,
unsigned int K[maxN][maxK],
unsigned int Leng[maxN],
unsigned int &i_line );

3.1.2 Xây dựng chƣơng trình trực giao hoá hàm đại số logic
3.1.2.1 Các yêu cầu đối với chƣơng trình và xác định các vấn đề
14


Tham số đầu vào của chƣơng trình là hàm đại số logic đƣợc
thiết lập từ tập các biến mà mô tả đặc điểm chức năng của một
trạng thái hoạt động tốt trong một hệ thống phức tạp.
Tham số đầu ra của chƣơng trình là hàm đại số logic đã đƣợc
giảm thiểu, viết dƣới dạng trực giao hoặc trực giao không lặp.
3.1.2.2 Phân tích và lựa chọn thuật toán trực giao hoá
Ta thấy thuật toán trực giao hoá theo công thức Poresky là

phù hợp để viết chƣơng trình hơn cả. Công thức Poresky đƣợc sử
dụng trong thuật toán là:
K1 ˅ K2 ˅ …˅ Kj ˅ ….˅ Kn =
𝐾1 ˅𝐾1 𝐾2 ˅𝐾1 𝐾2 𝐾3 ˅… ˅𝐾1 … 𝐾𝑛−1 𝐾𝑛
Công thức có thể viết dƣới dạng khác nhƣ sau:
K1 ˅ K2 ˅ …˅ Kj ˅ ….˅ Kn = 𝐾1 ˅
𝐾1 𝐾2 ˅
𝐾1 𝐾2 𝐾3 ˅
…˅
𝐾1 … 𝐾𝑛−1 𝐾𝑛 =
𝐾1 ˅(𝐾1 ˅𝐾2 (𝐾2 ˅𝐾3 ( 𝐾3 … 𝐾𝑛 −1 ˅𝐾𝑛 … )
Ki có thể là một biến nhƣng cũng có thể là một tập các biến:
Ki = x1 x2 ...xm
khi đó 𝐾𝑖 sẽ đƣợc tính nhƣ sau:
𝐾𝑖 = 𝑥1 v x1 𝑥2 v x1 x2 𝑥3 v . . . v x1 x2 x3 . . . 𝑥𝑚 .
3.1.2.3 Thiết kế các hàm chức năng cho thuật toán trực giao
hoá
/* Function Ortogonal: Truc giao hoa tat ca cac
thanh phan cua K1, ket qua luu trong ma tran
AB, ma van giu duoc dang CTT truc giao.*/
void ortogonal(
unsigned int K1[maxN][maxK],
//input
unsigned int i_line,
unsigned int LengK1[maxN],
unsigned int AB[maxN][maxK],
//output
unsigned int &i_line_AB,
unsigned int Leng_AB[maxN] );


15


3.2 Các ví dụ sử dụng các hàm đã xây dựng
Ví dụ 1:
4
5

0

1
6

2

3

7

8

a
5

4

0

6


1

7

8

2

b
Hình 3.4a: Sơ đồ cấu trúc logic; 3.4b: Đồ thị liên kết tương ứng
Ví dụ 2: Xét hệ thống máy chủ có cấu trúc nhƣ hình 3.5:
- 0: Là máy chủ (server);
- 1,2,3: Là các máy chủ thứ cấp mà kết nối trực tiếp với
server;
- 4,5: Các đƣờng truyền;
- 6,7,8: Các Bus;
- 9,10, ... ,14: Các trạm trung chuyển;
- 15,16,17: Các máy trạm (client) là ngƣời sử dụng cuối.
1

9

6

15
12

4

0


2

13

7

16

10
5
14
3

8

11

Hình 3.5 Đồ thị liên kết hệ thống
16

17

3


3.3 Phát triển các chức năng và các yêu cầu cần thiết bổ sung
cho việc tính toán
Để giải quyết một số phép toán cộng và nhân ta sử dụng một
số quy tắc trong toán logic sau:

- x.x = x hay x˅x = x;
- x+x = x hay x˅x = x;
- 𝑥. 𝑥 = 0, hay 𝑥˅𝑥 = 0;
- Nếu xi * K(xi) = K(xi) thì 𝑥𝑖 * K(xi) = 0, trong đó K(xi) là một
phép tuyển mà có liên quan đến biến logic xi .
3.4 Kết luận
Chƣơng này nói đến các yêu cầu để thiết lập, hƣớng giải quyết
và xây dựng các hàm chức năng của bài toán –xây dựng hệ thống
tính toán độ tin cậy và khả năng sống sót (khả năng hoạt động an
toàn) của hệ thống. Với những gì đã xây dựng đƣợc ở trên thì
chúng ta có thể tính toán độ tin cậy và khả năng sống sót của bất cứ
hệ thống nào. Tuy nhiên ngay từ bƣớc đầu việc chuyển đổi từ sơ đồ
cầu trúc logic sang ma trận liên kết nếu không đƣợc thực hiện
chính xác thì kết quả thu đƣợc sẽ không chính xác. Hƣớng phát
triển của chƣơng trình là xây dựng một giao diện đồ họa để nâng
cao khả năng tƣơng tác giữa ngƣời và hệ thống làm việc.
Chƣơng trình đã xây dựng đáp ứng đƣợc cơ bản các yêu cầu
của bài toán, nhƣng trong quá trình phát triển chƣơng trình vẫn còn
nhƣợc điểm chƣa khắc phục đƣợc đó là việc sử dụng ma trận lƣu
trữ tất cả các đƣờng đi tìm đƣợc giữa hai nút trong đồ thị làm cho
ma trận liên kết đầu vào cũng phải đƣợc giới hạn về kích thƣớc nếu
không chƣơng trình không thể hoạt động chính xác đƣợc và cũng
là để tiết kiệm tài nguyên bộ nhớ chƣơng trình (nếu kích thƣớc của
ma trận liên kết lớn khoảng 23x23 thì chƣơng trình chạy khá lâu
và kết quả xuất ra file out quá lớn - cỡ hàng Gb).

17


CHƢƠNG 4. ĐỘ TIN CẬY VÀ KHẢ NĂNG HỆ THỐNG

HOẠT ĐỘNG AN TOÀN QUA VÍ DỤ CỤ THỂ
4.1 Đặc tả hệ thống
Trong chƣơng này tôi sẽ sử dụng chƣơng trình tính toán đã
mô tả trong chƣơng III để tính toán độ tin cậy cũng nhƣ khả năng
vận hành an toàn của hệ thống máy chủ đƣợc mô tả nhƣ hình 4.1
dƣới đây:
1

9

6

15
12

4

0

2

13

7

16

10
5


14
3

8

11

17

Hình 4.1 Sơ đồ cấu trúc logic của hệ thống
Trong đó:
- 0: Là máy chủ (server);
- 1,2,3: Là các máy chủ thứ cấp mà kết nối trực tiếp với server;
- 4,5: Các đƣờng truyền;
- 6,7,8: Các Bus;
- 9,10, ... ,14: Các trạm trung chuyển;
- 15,16,17: Các máy trạm (client) là ngƣời sử dụng cuối.
Yêu cầu đặt ra của bài toán là:
Tính P(t) và THD, biết cƣờng độ hỏng hóc của các phần tử
trong hệ thống máy chủ trên nhƣ sau:
- i = 0.0001 (1/năm) với i = (1, 2, 3,15,16,17);
- i = 0.00001 (1/năm) với i = (4,5,6,7,8);
- i = 0.0001 (1/năm) với i = (9, ..., 14);
Giả sử để ngƣời sử dụng ở nút 15 có thể nhận đƣợc dữ liệu thì
sẽ có 2 trƣờng hợp sau xảy ra:
18


-


Trƣờng hợp 1: Nút 15 nhận đƣợc tín hiệu từ cả ba máy chủ
thứ cấp 1, 2 và 3 tức là nhận đƣợc tín hiệu từ máy chủ số 0,
khi đó hiệu suất tổng sẽ có dạng: F= f1,15*f2,15*f3,15
(1)
- Trƣờng hợp 2: Nút 15 nhận đƣợc tín hiệu từ một trong ba máy
chủ thứ cấp số 1, số 2 và số 3, khi đó hiệu suất tổng sẽ có dạng
sau:
F= f1,15 ˅f2,15˅f3,15
(2)
4.2 Nghiên cứu các thuật toán và phát triển các hàm
Trường hợp 1: Sử dụng tính chất kết hợp trong đại số Boole:
F= f1,15*f2,15*f3,15 = (f1,15*f2,15 )*f3,15 = f12,15*f3,15
Sau đó sử dụng thuật toán trực giao hoá để chuyển đổi mô
hình logic sang đại số và tính các giá trị xác suất P(t) và THD.
Trường hợp 2: Sử dụng tính chất kết hợp trong đại số Boole:
F= f1,15 ˅f2,15˅f3,15= (f1,15 ˅f2,15)˅f3,15 = f12,15˅f3,15
Sau đó sử dụng thuật toán trực giao hoá để chuyển đổi mô
hình logic sang đại số và tính các giá trị xác suất P(t) và THD.
4.3 Kết quả thu đƣợc từ chƣơng trình tính toán độ tin cậy của
hệ thống
Trường hợp 1:
F= f1,15*f2,15*f3,15
Sử dụng các hàm chức năng đã xây dựng ở chƣơng III và
chƣơng trình chính đƣợc mô tả chi tiết trong phụ lục 2, ta thu đƣợc
kết quả sau khi trực giao hoá nhƣ sau:
F(0=>15)= x1*x2*x3*x6*x7*x8*x15*(x9+x10*x'9)

Hình 4.5 Sự phụ thuộc của P(t) vào thời gian t
19



Trường hợp 2:

F= f1,15 ˅f2,15˅f3,15

Hình 4.7 Sự phụ thuộc của P(t) vào thời gian t
+) Trong trƣờng hợp thứ 2 này ta sẽ xét thêm một trƣờng hợp
nữa đó là hệ thống đang hoạt động bình thƣờng đến giờ thứ 3000
thì nút 15 không nhận đƣợc tín hiệu phản hồi từ máy chủ số 3 mà
chỉ nhận đƣợc tín hiệu phát từ máy chủ số 1 hoặc máy chủ số 2.

Hình 4.10 Sự phụ thuộc của P(t) vào thời gian t
20


+) Để hiểu rõ hơn về khả năng tồn tại của hệ thống ta xét tiếp một
trƣờng hợp: Hệ thống đang hoạt động bình thƣờng thì không nhận
đƣợc tín hiệu phản hồi của máy chủ số 3 vào giờ thứ 3000 và máy
chủ số 1 vào giờ thứ 3500, chỉ nhận đƣợc tín hiệu từ máy chủ số 2.

Hình 4.13 Sự phụ thuộc P(t) vào thời gian t
4.4 Kết luận
Với việc phát triển thành công chƣơng trình tính toán độ tin
cậy ta đã nghiên cứu đƣợc độ tin cậy cũng nhƣ khả năng sống sót
của hệ thống, thông qua kết quả của chƣơng trình có thể thấy kết
quả hoàn toàn phù hợp với sự mong đợi của chúng ta, điều này có
nghĩa rằng chƣơng trình ta đang phát triển đã làm việc một cách
chính xác và đó sẽ là cơ sở cho việc phát triển phần mềm tính toán
độ tin cậy của các hệ thống phức tạp hơn.
Qua ví dụ cụ thể ở trên càng chứng minh một điều là các

thành phần của hệ thống đóng vai trò vô cùng quan trọng, độ tin
cậy cũng nhƣ khả năng sống sót của hệ thống phụ thuộc vào chúng.
Việc loại bỏ bớt các thành phần của hệ thống sẽ làm cho hệ thống
hoạt động kém an toàn hơn.

21


KẾT KUẬN
1. Kết luận
Luận văn này đã đƣa ra và phân tích đƣợc các lý thuyết liên
quan đến độ tin cậy của hệ thống và xây dựng thành công phần
mềm ứng dụng giải quyết bài toán tính các chỉ số liên quan đến độ
tin cậy của hệ thống, bao gồm việc xây dựng bài toán, chỉ ra các
giai đoạn giải quyết bài toán, các thuật toán đã đƣợc phát triển
trong quá trình tìm đƣờng đi trong đồ thị, tối thiểu hoá các toán tử
logic, phƣơng pháp trực giao hoá và các quy tắc để chuyển đổi về
hàm xác suất để tính toán các giá trị cần tìm.
Chƣơng trình đƣợc viết bằng ngôn ngữ lập trình C++ là ngôn
ngữ khá phá biến hiện nay, đã giải quyết đƣợc yêu cầu đặt ra của
bài toán, với tập hợp các tham số đầu vào sẽ cho các kết quả, các
kết quả đƣợc phân tích và thấy rằng chúng phù hợp với những gì
chúng ta mong đợi, điều này chứng tỏ chƣơng trình hoạt động đúng
đắn.
Chƣơng trình tính toán độ tin cậy này là cơ sở để phát triển
cho các phần mềm tính toán độ tin cậy của hệ thống phần cứng
trong tƣơng lai.
2. Hƣớng phát triển
Để phần mềm giải quyết bài toán tính toán độ tin cậy của hệ
thống có thể đáp ứng yêu cầu với các hệ thống ngày càng phức tạp

hơn thì cần có sự đầu tƣ nghiên cứu sâu hơn.Việc nhập dữ liệu đầu
vào là ma trận liên kết mất rất nhiều thời gian và có thể gây nhầm
lẫn vì vậy có thể phát triển phần mềm theo hƣớng giao diện đồ hoạ
để tăng hiệu quả tƣơng tác giữa ngƣời và hệ thống làm việc. Hoặc
cách khác là nghiên cứu khả năng lƣu trữ các file input và output
trong cơ sở dữ liệu SQL, Oracle hoặc các cơ sở dữ liệu khác vì hệ
thống càng lớn thì dữ liệu sẽ càng lớn.

22



×