Xem mẫu

  1. 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
  2. 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
  3. 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
  4. ð 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 md 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
  5. Chi phí phát tri n khi s d ng ñ c t hình th c 9 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 ð ct Z 10 5
  6. 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 ð t máy xu ng ð i ð t máy xu ng Ví d 1 Nh c máy Âm m i quay s Th i gian ñ i k t B ms thúc S sai Thông báo Quay s quay s sai S ñúng K tn i Máy b n K t n i ñư c ð chuông Thuê bao ñư c g i nh c máy 12 ðàm tho i 6
  7. 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 S n xu t L y t kho P1 P2 C1 C2 G i vào kho Tiêu th G i vào kho G i vào kho 0 1 2 L y t kho L y t kho 14 7
  8. 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 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 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 16 8
  9. 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
  10. 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 t1 p2 p1 t3 p4 p3 20 10
  11. 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 22 t4 11
  12. M ng Petri Ví d t2 t2 khi t2 ñư c vư t qua 23 M ng Petri Ví d 24 12
  13. M ng Petri Ví d 1: mô t ho t ñ ng c a ñèn giao thông red yr rg yellow gy 25 green M ng Petri Ví d 1: mô t ho t ñ ng c a 2 ñèn giao thông red1 red2 yr1 yr2 rg1 yellow1 yellow2 rg2 gy1 gy2 26 green1 green2 13
  14. M ng Petri Ví d 1: mô t ho t ñ ng an toàn c a 2 ñèn giao thông red1 red2 safe yr1 yr2 rg1 yellow1 yellow2 rg2 gy1 gy2 27 green1 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 yellow1 rg2 yellow2 gy1 gy2 safe1 28 green1 green2 14
  15. 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 thanh niên có v có ch ng ly hôn 29 ch t 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
  16. M ng Petri Ví d 4: tình hu ng ngh n (dead-lock) P1 P2 P3 t1 t2 P4 P5 t3 t4 P7 P6 t5 t6 P8 P9 2 2 t7 t8 31 M ng Petri Ví d 4: gi i pháp ch ng ngh n P1 P2 P3 t1 t2 P4 P5 t3 t4 2 2 P7 P6 t5 t6 P8 P9 2 2 t7 t8 32 16
  17. 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 P1 P2 C1 C2 G i vào kho Tiêu th G i vào kho G i vào kho 0 1 2 L y t kho L y t kho 34 17
  18. 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 G i vào kho L y t kho 2 0 1 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
  19. ð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
  20. 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 : → Boolean false : → 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
nguon tai.lieu . vn