Bài giảng Công nghệ phần mềm - Chương 4: Các kỹ thuật đặc tả - Nguyễn Thanh Bình

Cá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  
Nꢄi dung  
ꢀ
ꢀ
ꢀ
ꢀ
Khái niꢅm ñꢂc tꢃ  
Tꢆi sao phꢃi ñꢂc tꢃ ?  
Phân loꢆi các kꢀ thuꢁt ñꢂc tꢃ  
Các kꢀ thuꢁt ñꢂc tꢃ  
2
1
Khái niꢅm ñꢂc tꢃ  
ꢀ
ðꢂc tꢃ (specification)  
ꢁ
ñꢇ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 ñꢐꢍñó  
3
Khái niꢅm ñꢂc tꢃ  
ꢀ
ðꢂ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  
4
2
Tꢆ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  
5
Phân loꢆi các kꢀ thuꢁt ñꢂc tꢃ  
ꢀ
ðꢂ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  
6
3
ðꢂc tꢃ hình thꢙc hay không  
hình thꢙc ?  
ꢀ
ðꢂ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ꢘu  
khó sꢔ dꢕng  
ꢀ
ðꢂc tꢃ không hình thꢙc  
ꢂ
ꢂ
ꢃ
ꢃ
dꢝ hiꢘu, dꢝ sꢔ dꢕng  
mꢐm dꢞo  
thiꢋu sꢒ chính xác  
nhꢁp nhꢟng  
7
ꢠng dꢕng ñꢂc tꢃ hình thꢙc  
ꢀ
ꢙ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  
8
4
Chi phí phát triꢘn khi sꢔ  
dꢕng ñꢂc tꢃ hình thꢙc  
Các kꢀ thuꢁt ñꢂc tꢃ  
ꢀ
Trình bày mꢄt sꢈ kꢀ thuꢁt  
ꢁ
ꢁ
ꢁ
ꢁ
ꢁ
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  
10  
5
Máy trꢆng thái hꢌu hꢆn  
(state machine)  
ꢀ
ꢀ
ꢀ
mô tꢃ các luꢗng ñiꢐu khiꢘn  
biꢘu diꢝn dꢆng ñꢗ thꢇ  
bao gꢗm  
ꢁ
tꢁp hꢑp các trꢆng thái S (các nút cꢏa ñꢗ thꢇ)  
ꢁ
tꢁp hꢑp các dꢌ liꢅu vào I (các nhãn cꢏa các  
cung)  
ꢁ
tꢁp hꢑp các chuyꢘn tiꢋp T : S x I → S (các  
cung cóꢍhưꢓng cꢏa ñꢗ thꢇ)  
• khi có mꢄt dꢌ liꢅu vào, mꢄt trꢆng thái chuyꢘn sang  
mꢄt trꢆng thái khác  
11  
Máy trꢆng thái hꢌu hꢆn  
ðꢑi  
ðꢂt máy xuꢈng  
ðꢂt máy xuꢈng  
ꢀ
Ví dꢕ 1  
Nhꢎc máy  
Âm mꢖi quay  
sꢈ  
Bꢎm sꢈ  
Thꢖi gian ñꢑi kꢋt  
thúc  
Sꢈ sai  
Thông báo  
quay sꢈ sai  
Quay sꢈ  
Sꢈꢍñúng  
Kꢋt nꢈi  
Kꢋt nꢈi ñưꢑc  
Máy bꢁn  
ðꢚ chuông  
Thuê bao ñưꢑc gꢛi nhꢎc máy  
12  
ðàm thoꢆi  
6
Máy trꢆng thái hꢌu hꢆn  
ꢀ
Ví dꢕ 2  
ꢁ
Hꢅ thꢈng cꢊn mô tꢃ bao gꢗm mꢄt nhà sꢃn xuꢎt, mꢄt  
nhà tiêu thꢕ và mꢄt kho hàng chꢣ chꢙa ñưꢑc nhiꢐu  
nhꢎt 2 sꢃn phꢉm  
ꢁ
Nhà sꢃn xuꢎt có 2 trꢆng thái  
• P1: không sꢃn xuꢎt  
• P2:ꢍñangꢍsꢃn xuꢎt  
ꢁ
ꢁ
Nhà tiêu thꢕ có 2 trꢆng thái  
• C1: có sꢃn phꢉm ñꢘ tiêu thꢕ  
• C2: không có sꢃn phꢉm ñꢘ tiêu thꢕ  
Nhà kho có 3 trꢆng thái  
• chꢙa 0 sꢃn phꢉm  
• chꢙa 1 sꢃn phꢉm  
• chꢙa 2 sꢃn phꢉm  
13  
Máy trꢆng thái hꢌu hꢆn  
ꢀ
Giꢃi pháp 1: mô tꢃ tách rꢖi các thành phꢊn  
Lꢎy tꢢ kho  
Sꢃn xuꢎt  
P2  
C2  
P1  
C1  
Gꢔi vào kho  
Tiêu thꢕ  
Gꢔi vào kho  
Gꢔi vào kho  
1
2
0
Lꢎy tꢢ kho  
Lꢎy tꢢ kho  
14  
7
Máy trꢆng thái hꢌu hꢆn  
ꢀ
Giꢃi pháp 1  
ꢁ
không mô tꢃꢍñưꢑc sꢒ hoꢆt ñꢄng hꢅ  
thꢈng  
ꢁ
cꢊn mô tꢃ sꢒ hoꢆt ñꢄng kꢋt hꢑp các  
thành phꢊn cꢏa hꢅ thꢈng  
15  
Máy trꢆng thái hꢌu hꢆn  
ꢀ
Giꢃi pháp 2: mô tꢃ kꢋt hꢑp các thành phꢊn  
<1, P1, C1>  
<0, P1, C1>  
<2, P1, C1>  
Gꢔi vào kho  
Gꢔi vào kho  
Sꢃn xuꢎt  
Sꢃn xuꢎt  
Sꢃn xuꢎt  
Lꢎy tꢢ kho  
Lꢎy tꢢ kho  
Tiêu thꢕ  
Tiêu thꢕ  
Tiêu thꢕ  
<1, P2, C1>  
<1, P1, C2>  
<2, P2, C1>  
<2, P1, C2>  
<0, P2, C1>  
<0, P1, C2>  
Lꢎy tꢢ kho  
Lꢎy tꢢ kho  
Tiêu thꢕ  
Tiêu thꢕ  
Tiêu thꢕ  
Sꢃn xuꢎt  
Sꢃn xuꢎt  
Sꢃn xuꢎt  
Gꢔi vào kho  
Gꢔi vào kho  
<1, P2, C2>  
<2, P2, C2>  
<0, P2, C2>  
16  
8
Máy trꢆng thái hꢌu hꢆn  
ꢀ
Giꢃi pháp 2  
ꢂ
mô tꢃꢍñưꢑc hoꢆt ñꢄng cꢏa hꢅ thꢈng  
ꢃ
ꢃ
ꢃ
sꢈ trꢆng thái lꢓn  
biꢘu diꢝn hꢅ thꢈng phꢙc tꢆp  
hꢆn chꢋ khiꢍñꢂc tꢃ nhꢌng hꢅ thꢈng không  
ñꢗng bꢄ  
o
các thành phꢊn cꢏa hꢅ thꢈng hoꢆt ñꢄng song  
song hoꢂc cꢆnh tranh  
17  
Mꢆng Petri  
(Petri nets)  
ꢀ
ꢀ
thích hꢑp ñꢘ mô tꢃ các hꢅ thꢈng không  
ñꢗng bꢄ vꢓi nhꢌng hoꢆt ñꢄng ñꢗng thꢖi  
mô tꢃ luꢗng ñiꢐu khiꢘn cꢏa hꢅ thꢈng  
ꢀ
ꢀ
ñꢐ xuꢎt tꢢꢍnămꢍ1962 bꢤi Carl Adam  
Có hai loꢆi  
ꢁ
mꢆng Petri (cꢚꢍñiꢘn)  
mꢆng Petri mꢤ rꢄng  
ꢁ
18  
9
Mꢆng Petri  
ꢀ
Gꢗm các phꢊn tꢔ  
ꢁ
ꢁ
ꢁ
mꢄt tꢁp hꢑp hꢌu hꢆn các nút (ꢄ)  
mꢄt tꢁp hꢑp hꢌu hꢆn các chuyꢀn tiꢁp (ꢅ)  
mꢄt tꢁp hꢑp hꢌu hꢆn các cung (→)  
• các cung nꢈi các nút vꢓi các chuyꢘn tiꢋp hoꢂc  
ngưꢑc lꢆi  
ꢁ
mꢡi nút có thꢘ chꢙa mꢄt hoꢂc nhiꢐu thꢂ (ꢁ)  
19  
Mꢆng Petri  
ꢀ
Ví dꢕ  
t2  
t3  
p2  
p3  
t1  
p1  
p4  
20  
10  
Mꢆng Petri  
ꢀ
ꢀ
Mꢆng Petri ñưꢑc ñꢇnh nghĩa bꢤi sꢒꢍñánh dꢎu các nút  
cꢏa nó  
Viꢅc ñánh dꢎu các nút ñưꢑc tiꢋn hành theo nguyên tꢥc  
sau:  
ꢁ
mꢡi chuyꢘn tiꢋp có các nút vào và các nút ra  
ꢁ
nꢋu tꢎt cꢃ các nút vào cꢏa mꢄt chuyꢘn tiꢋp có ít nhꢎt  
mꢄt thꢞ, thì chuyꢘn tiꢋp này là có thꢘ vưꢃt quaꢍñưꢑc,  
ꢁ
ꢁ
nꢋu chuyꢘn tiꢋp này ñưꢑc thꢒc hiꢅn thì tꢎt cꢃ các nút  
vào cꢏa chuyꢘn tiꢋp sꢦ bꢇ lꢎy ñi mꢄt thꢞ, và mꢄt thꢞ  
sꢦꢍñưꢑc thêm vào tꢎt cꢃ các nút ra cꢏa chuyꢘn tiꢋp  
nꢋu nhiꢐu chuyꢘn tiꢋp là có thꢘꢍvưꢑt qua thì chꢛn  
chuyꢘn tiꢋp nào cũng ñưꢑc  
21  
Mꢆng Petri  
ꢀ
Ví dꢕ  
t1  
t2  
t1 không thꢊꢂvưꢋt qua ñưꢋc  
t2 có thꢊꢂvưꢋt qua ñưꢋc  
t3  
hoꢌc t3ꢂñưꢋc vưꢋt qua  
hoꢌc t4ꢂñưꢋc vưꢋt qua  
t4  
22  
11  
Mꢆng Petri  
ꢀ
Ví dꢕ  
t2  
t2  
khi t2ꢂñưꢋc vưꢋt qua  
23  
Mꢆng Petri  
Ví dꢕ  
24  
12  
Mꢆng Petri  
ꢀ
Ví dꢕ 1: mô tꢃ hoꢆt ñꢄng cꢏa ñèn giao thông  
red  
yr  
yellow  
green  
rg  
gy  
25  
Mꢆng Petri  
ꢀ
Ví dꢕ 1: mô tꢃ hoꢆt ñꢄng cꢏa 2ꢍñèn giao thông  
red2  
red1  
yr1  
yr2  
rg2  
yellow1  
green1  
yellow2  
rg1  
gy2  
gy1  
26  
green2  
13  
Mꢆng Petri  
ꢀ
Ví dꢕ 1: mô tꢃ hoꢆt ñꢄng an toàn cꢏa 2ꢍñèn giao thông  
red2  
red1  
safe  
yr1  
yr2  
rg1  
yellow2  
rg2  
yellow1  
green1  
gy1  
gy2  
27  
green2  
Mꢆng Petri  
ꢀ
Ví dꢕ 1: mô tꢃ hoꢆt ñꢄng an toàn và hꢑp lý cꢏa 2ꢍñèn  
giao thông  
red1  
red2  
safe2  
yr1  
yr2  
rg1  
rg2  
yellow1  
green1  
yellow2  
gy2  
gy1  
safe1  
28  
green2  
14  
Mꢆng Petri  
ꢀ
Ví dꢕ 2: mô tꢃ chu kỳ sꢈng cꢏa mꢄt ngưꢖi  
trꢀ con  
dꢃy thì  
cưꢄi  
có vꢁ có chꢂng  
chꢅt  
thanh niên  
ly hôn  
29  
chꢅt  
Mꢆng Petri  
ꢀ
Ví dꢕ 3: viꢋt thư vàꢍñꢛc thư  
begin  
receive_mail  
mail_box  
rest  
rest  
type_mail  
read_mail  
send_mail  
ready  
Mô tꢍꢂtrưꢃng hꢋp 1ꢂngưꢃi viꢎt vàꢂ2ꢂngưꢃi ñꢅc ?  
Mô tꢍꢂtrưꢃng hꢋp hꢏp thư nhꢐn chꢑ chꢒa nhiꢉu nhꢇt 3ꢂthưꢂ?  
30  
15  
Mꢆng Petri  
ꢀ
Ví dꢕ 4: tình huꢈng nghꢦn (dead-lock)  
P1  
P2  
P3  
t1  
t2  
P4  
P6  
P5  
P7  
t3  
t4  
t5  
t7  
t6  
t8  
P8  
P9  
2
2
31  
Mꢆng Petri  
ꢀ
Ví dꢕ 4: giꢃi pháp chꢈng nghꢦn  
P1  
P2  
P3  
t1  
t2  
P4  
P6  
P5  
P7  
t3  
t4  
2
2
t5  
t7  
t6  
t8  
P8  
P9  
2
2
32  
16  
Mꢆng Petri  
ꢀ
Ví dꢕ 5  
ꢁ
Hꢅ thꢈng cꢊn mô tꢃ bao gꢗm mꢄt nhà sꢃn xuꢎt, mꢄt  
nhà tiêu thꢕ và mꢄt kho hàng chꢣ chꢙa ñưꢑc nhiꢐu  
nhꢎt 2 sꢃn phꢉm  
ꢁ
Nhà sꢃn xuꢎt có 2 trꢆng thái  
• P1: không sꢃn xuꢎt  
• P2:ꢍñangꢍsꢃn xuꢎt  
ꢁ
ꢁ
Nhà tiêu thꢕ có 2 trꢆng thái  
• C1: có sꢃn phꢉm ñꢘ tiêu thꢕ  
• C2: không có sꢃn phꢉm ñꢘ tiêu thꢕ  
Nhà kho có 3 trꢆng thái  
• chꢙa 0 sꢃn phꢉm  
• chꢙa 1 sꢃn phꢉm  
• chꢙa 2 sꢃn phꢉm  
33  
Mꢆng Petri  
ꢀ
Ví dꢕ 5: mô tꢃ tách rꢖi mꢡi thành phꢊn  
Sꢃn xuꢎt  
Lꢎy tꢢ kho  
C1  
C2  
P1  
P2  
Tiêu thꢕ  
Gꢔi vào kho  
Gꢔi vào kho  
Gꢔi vào kho  
1
2
0
Lꢎy tꢢ kho  
Lꢎy tꢢ kho  
34  
17  
Mꢆng Petri  
ꢀ
Ví dꢕ 5: mô tꢃ kꢋt hꢑp các thành phꢊn  
Sꢃn xuꢎt  
P1  
Gꢔi vào kho  
P2  
1
Gꢔi vào kho  
Lꢎy tꢢ kho  
2
0
Lꢎy tꢢ kho  
C1  
C2  
Tiêu thꢕ  
35  
ðiꢐu kiꢅn trưꢓc và sau  
(pre/post condition)  
ꢀ
ꢀ
ñưꢑc dùng ñꢘꢍñꢂc tꢃ các hàm hoꢂc mô-ñun  
ñꢂc tꢃ các tính chꢎt cꢏa dꢌ liꢅu trưꢓc và sau khi thꢒc  
hiꢅn hàm  
ꢁ
pre-condiition: ñꢂc tꢃ các ràng buꢄc trên các tham  
sꢈ trưꢓc khi hàm ñưꢑc thꢒc thi  
ꢁ
post-condition: ñꢂc tꢃ các ràng buꢄc trên các tham  
sꢈ sau khi hàm ñưꢑc thꢒc thi  
ꢀ
có thꢘ sꢔ dꢕng ngôn ngꢌ phi hình thꢙc, hình thꢙc  
hoꢂc ngôn ngꢌ lꢁp trình ñꢘꢍñꢂc tꢃ các ñiꢐu kiꢅn  
36  
18  
ðiꢐu kiꢅn trưꢓc và sau  
ꢀ
Ví dꢕ: ñꢂc tꢃ hàm tìm kiꢋm  
function search ( a : danh sách phꢊn tꢔ kiꢘu K,  
size : sꢈ phân tꢔ cꢏa dánh sách,  
e : phꢊn tꢔ kiꢘu K,  
result : Boolean )  
pre  
i, 1 ≤ i ≤ n, a[i] ≤ a[i+1]  
post  
result = ( i, 1 ≤ i ≤ n, a[i] = e)  
37  
ðiꢐu kiꢅn trưꢓc và sau  
ꢀ
Bài tꢁp:ꢍñꢂc tꢃ các hàm  
1. Sꢥp xꢋp mꢄt danh sách các sꢈꢍnguyên  
2. ðꢃo ngưꢑc các phꢊn tꢔ cꢏa mꢄt danh  
sách  
3. ðꢋm sꢈ phꢊn tꢔ có giá trꢇ e trong mꢄt danh  
sách các sꢈ nguyên  
38  
19  
Kiꢘu trꢢu tưꢑng  
(abstract types)  
ꢀ
Mô tꢃ dꢌ liꢅu và các thao tác trên dꢌ liꢅu ñó ꢤ mꢄt  
mꢙc trꢢu tưꢑng ñꢄc lꢁp vꢓi cách cài ñꢂt dꢌ liꢅu bꢤi  
ngôn ngꢌ lꢁp trình  
ꢀ
ðꢂc tꢃ mꢄt kiꢘu trꢢu tưꢑng gꢗm:  
ꢁ
ꢁ
ꢁ
tên cꢏa kiꢘu trꢢu tưꢑng  
• dùng tꢢ khóa sort  
khai báo các kiꢘu trꢢu tưꢑng ñã tꢗn tꢆi ñưꢑc sꢔ dꢕng  
• dùng tꢢ khóa imports  
các thao tác trên trên kiꢘu trꢢu tưꢑng  
• dùng tꢢ khóa operations  
39  
Kiꢘu trꢢu tưꢑng  
ꢀ
Ví dꢕ 1: ñꢂc tꢃ kiꢘu trꢢu tưꢑng Boolean  
sort Boolean  
operations  
true  
false  
¬ _  
: → Boolean  
: → Boolean  
: Boolean → Boolean  
: Boolean x Boolean → Boolean  
: Boolean x Boolean → Boolean  
_
_
_
_
mꢏt thao tác không có tham sꢔ là mꢏt hꢕng sꢔ  
mꢏt giá trꢖ cꢈa kiꢊu trꢗu tưꢋng ñꢖnh nghĩa ñưꢋc biꢊu diꢀn bꢘi kí tꢙ “_”  
40  
20  
Tải về để xem bản đầy đủ
pdf 23 trang baolam 27420 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm - Chương 4: Các kỹ thuật đặc tả - Nguyễn Thanh Bình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_cong_nghe_phan_mem_chuong_3_cac_ky_thuat_dac_ta_ng.pdf