[r]
Trang 1Các k ỹ thu ậ t ñặ c t ả
(4)
Nguy ễ n Thanh Bình
Khoa Công ngh ệ Thông tin
Tr ườ ng ðạ i h ọ c Bách khoa
ðạ i h ọ c ð à N ẵ ng
2
Trang 2ñị nh ngh ĩ a m ộ t h ệ th ố ng, mô- ñ un hay
m ộ t s ả n ph ẩ m c ầ n ph ả i làm cái gì
không mô t ả nó ph ả i làm nh ư th ế nào
mô t ả nh ữ ng tính ch ấ t c ủ a v ấ n ñề
ñặ t ra
không mô t ả nh ữ ng tính ch ấ t c ủ a gi ả i
pháp cho v ấ n ñề ñ ó
ðặ c t ả là ho ạ t ñộ ng ñượ c ti ế n hành trong
các giai ñ o ạ n khác nhau c ủ a ti ế n trình ph ầ n
m ề m:
ðặ c t ả yêu c ầ u (requirement specification)
• s ự th ố ng nh ấ t gi ữ a nh ữ ng ng ướ i s ử d ng t ươ ng
lai và nh ữ ng ng ườ i thi ế t k ế
ðặ c t ả ki ế n trúc h ệ th ố ng (system architect
specification)
• s ự th ố ng nh ấ t gi ữ a nh ữ ng ng ườ i thi ế t k ế và
nh ữ ng ng ườ i cài ñặ t
ðặ c t ả môñun (module specification)
• s ự th ố ng nh ấ t gi ữ a nh ữ ng ng ườ i l ậ p trình cài ñặ t
mô- ñ un và nh ữ ng ng ườ i l ậ p trình s ử d ng mô- ñ un
Trang 3T ạ i sao ph ả i ñặ c t ả ?
H ợ p ñồ ng
s ự th ố ng nh ấ t gi ữ a ng ườ i s ử d ụ ng và ngườ i
phát tri ể n s ả n ph ẩ m
H ợ p th ứ c hóa
s ả n ph ẩ m làm ra ph ả i th ự c hi ệ n chính xác
nh ữ ng gì mong mu ố n
Trao ñổ i
gi ữ a ng ườ i s ử d ụ ng và ngườ i phát tri ể n
gi ữ a nh ữ ng ng ườ i phát tri ể n
Tái s ử d ụ ng
6
ðặ c t ả phi hình th ứ c (informal)
ngôn ng ữ t ự nhiên t ự do
ngôn ng ữ t ự nhiên có c ấ u trúc
các kí hi ệ u ñồ h a
ðặ c t ả n ữ a hình th ứ c (semi-informal)
tr ộ n l ẫ n c ả ngôn ng ữ t ự nhiên, các kí hi ệ u toán h ọ c và
các kí hi ệ u ñồ h a
ðặ c t ả hình th ứ c (formal)
kí hi ệ u toán h ọ c
• ngôn ngữ ñặc tả
• ngôn ngữlập trình
Trang 4ðặ c t ả hình th ứ c
chính xác (toán h ọ c)
h ợ p th ứ c hóa hình th ứ c (công c ụ hóa)
công c ụ trao ñổ i: khó ñọ c, khó hi ể
khó s ử d ng
ðặ c t ả không hình th ứ c
d hi ể u, d ễ s ử d ng
m ề m d ẻ
thi ế u s ự chính xác
nh ậ p nh ằ ng
ứ ng d ụ ng trong các giai ñ o ạ n s ớ m c ủ a ti ế n
trình phát tri ể n
h ạ n ch ế l ỗ i trong phát tri ể n ph ầ n m ề m
ứ ng d ụ ng ch ủ y ế u trong phát tri ể n các h ệ
th ố ng “quan tr ọ ng” (critical systems)
h ệ th ố ng ñ i ề u khi ể n
h ệ th ố ng nhúng
h ệ th ố ng th ờ i gian th ự c
Trang 510
Máy tr ạ ng thái h ữ u h ạ n
M ạ ng Petri
ð i ề u ki ệ n tr ướ c và sau
Ki ể u tr ừ u t ượ ng
ðặ c t ả Z
Trang 6Ví d ụ 2: ñặ c t ả ki ể u tr ừ u t ượ ng Vector
các thao tác trên ki ể u ch ỉ ñượ c ñị nh ngh ĩ a
mà không ch ỉ ra ng ữ ngh ĩ a c ủ a nó
• t ứ c là ý ngh ĩ a c ủ a thao tác
s ử d ụ ng các tiên ñề ñể ñị nh ngh ĩ a ng ữ
ngh ĩ a c ủ a các thao tác
• dùng t ừ khóa axioms
ñị nh ngh ĩ a các ràng bu ộ c mà m ộ t thao tác
ñượ c ñị nh ngh ĩ a
• dùng t ừ khóa precondition
Ví d ụ 2: ñặ c t ả ki ể u tr ừ u t ượ ng Vector
precondition
ith(v, i) is-defined-ifonlyif
infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) &init(v,i) = true
axioms
infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) ⇒ith(change-ith(v, i, e), i) = e
infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) &infborder(v) ≤≤≤≤j ≤≤≤≤supborder(v) &i ≠≠≠≠j ⇒
ith(change-ith(v, i, e), j) = ith(v, j)
init(vect(i, j), k) = false
infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) ⇒init(change-ith(v, i, e), i) = true
infborder(v) ≤≤≤≤i ≤≤≤≤supborder(v) &i ≠≠≠≠j ⇒init(change-ith(v, i, e), j) = init(v, j)
infborder(vect(i, j)) = i
infborder(change-ith(v, i, e)) = infborder(v)
supborder(vect(i, j)) = j
supborder(change-ith(v, i, e)) = supborder(v)
Trang 7Bài t ậ p
ðặ c t ả ki ể u tr ừ u t ượ ng cây nh ị phân
ðặ c t ả ki ể u tr ừ u t ượ ng t ậ p h ợ p