Giáo trình Kỹ nghệ phần mềm Giáo trình Kỹ nghệ phần mềm 78 CHƯƠNG 3 NỀN TẢNG THIẾT KẾ PHẦN MỀM Mục đích Sau khi học xong chương này, sinh viên sẽ có các kiến thức và kỹ năng sau đây Hiểu được vai trò.
Giáo trình K ngh ph n m m CH NG N N T NG THI T K PH N M M M c đích Sau h c xong ch ng này, sinh viên s có ki n th c k n ng sau đây: - Hi u đ c vai trò quan tr ng c a công đo n thi t k KNPM - Hi u rõ v n đ lý lu n c b n làm n n t ng cho trình thi t k Bi t v n d ng ki n th c v mơ đun hóa, tr u t ng hóa, ký pháp l u đ thi t k ph n m m Tóm l c n i dung Cơng đo n thi t k có vai trò đ c bi t quan tr ng KNPM Ch ng trình bày - v n đ lý lu n c b n v thi t k ph n m m Tr c h t trình bày vai trị c a thi t k theo quan m c a Roger Pressman tiêu chu n thi t k Sau trình bày chi n l c ph ng pháp thi t k ch y u (thi t k h ng ch c n ng, thi t k h ng đ i t ng, thi t k h ng th i gian th c) ph ng pháp thi t k c a tr ng phái h ng ch c n ng thi t k t xu ng Top Down Design thi t k t d i lên Bottom Up Design Chúng tơi c ng trình bày v n đ lý lu n c b n thi t k ph n m m nh tr u t ng hóa, che d u thơng tin, đ c l p ch c n ng, tính k t dính, s ghép n i Cu i v ngôn ng thi t k PDL (Program Design Language) K t c u ch ng 3.1 Vai trò c a thi t k ph n m m 3.2 Chi n l c thi t k ph n m m 3.3 Các ph ng pháp thi t k ph n m m 3.4 C s lý lu n thi t k ph n m m 3.5 Thi t k mô đun hi u qu 3.6 Thi t k d li u 3.7 Ký pháp thi t k b ng l u đ 3.8 K thu t l p trình 3.9 Ngôn ng thi t k 3.10 Tài li u thi t k 3.1 VAI TRÒ C A THI T K PH N M M Thi t k b c đ u tiên giai đo n phát tri n cho b t k s n ph m hay h th ng công ngh Theo R Pressman thi t k có th đ c đ nh ngh a là: " ti n trình áp 78 Giáo trình K ngh ph n m m d ng nhi u k thu t nguyên lý v i m c đích xác đ nh m t thi t b , m t ti n trình hay m t h th ng đ chi ti t đ cho phép th c hi n v m t v t lý."[7] M c tiêu c a qui trình thi t k t o m t mơ hình hay s bi u di n c a m t th c th s đ c xây d ng Ti n trình phát tri n mơ hình k t qu c a t h p tr c giác s đánh giá d a kinh nghi m vi c xây d ng th c th t ng t Thi t k ph n m m máy tính, gi ng nh cách ti p c n thi t k công ngh l nh v c khác, liên t c thay đ i xu t hi n ph ng pháp m i, qui trình phân tích t t h n hi u bi t r ng l n Không gi ng nh qui trình thi t k ngành c khí hay ngành n t , thi t k ph n m m hình thành giai đo n t ng đ i s m s ti n hóa c a Chúng ta có ý t ng v thi t k ph n m m h n ba th p k Do đó, ph ng pháp lu n thi t k ph n m m th ng thi u s m m d o, mang nhi u b n ch t đ nh tính thơng th ng g n bó v i nhi u b môn thi t k k ngh c n T m quan tr ng c a qui trình thi t k ph n m m có th đ c phát bi u b ng m t t ch t l ng ph n m m Qui trình thi t k cung c p cho cách bi u di n ph n m m có th đ c xác nh n v ch t l ng Thi t k cách nh t mà có th d ch m t cách xác nh t yêu c u c a khách hàng thành s n ph m ph n m m cu i N u khơng có thi t k , có nguy c t o d ng nên m t h th ng không n đ nh, m t h th ng s th t b i ch có m t thay đ i nh s y ra; m t h th ng không th ki m th đ c; m t h th ng không th xác nh n đ c ch t l ng ch ng ch a đ n cu i ti n trình ki m th th i gian cịn r t ng n r t nhi u ti n ph i chi Tóm l i, thi t k ph n m m m t ti n trình qua u c u c a ng i s d ng đ c d ch thành m t s n ph m ph n m m ng d ng Trong tồn b ti n trình thi t k , ch t l ng c a thi t k ti n hóa đ c kh ng đ nh b ng m t lo t cu c h p xét t k thu t th c đánh giá ch t l ng c a m t bi u di n thi t k , ph i thi t l p tiêu chu n cho thi t k Th nh t, thi t k theo mô đun, t c ph n m m s đ c phân ho ch m t cách logic thành thành ph n th c hi n nh ng ch c n ng xác đ nh Th hai, thi t k nên bi u di n phân bi t tách bi t gi a d li u th t c Th ba, thi t k nên h ng t i giao di n làm rút g n đ ph c t p c a vi c n i ghép gi a mơ đun v i mơi tr ng bên ngồi Th t , thi t k nên dùng ph ng pháp l p l i đ li u phân tích yêu c u ph n m m c u n b i thơng tin có tài 79 Giáo trình K ngh ph n m m Các đ c tr ng c a m t h s thi t k có ch t l ng khơng th có đ c nh s may m n Ti n trình thi t k k ngh ph n m m ph i đ c th c hi n thông qua vi c áp d ng nguyên lý thi t k c b n, ph ng pháp lu n h th ng vi c xét t th u đáo qui trình Nh v y, thi t k ph n m m m t ti n trình qua u c u c a ng i s d ng đ c d ch thành m t s n ph m ph n m m ng d ng ây cơng đo n có vai trò đ c bi t quan tr ng k ngh ph n m m 3.2 CHI N L C THI T K PH N M M Có nhi u chi n l c thi t k ph n m m theo ph ng pháp ti p c n khác Hai chi n l c thi t k đ c s d ng r ng rãi mang l i hi u qu tích c c thi t k h ng ch c n ng thi t k h ng đ i t ng 3.2.1 Thi t k h ng ch c n ng Thi t k h ng ch c n ng m t cách ti p c n thi t k ph n m m b n thi t k đ c phân gi i thành m t b mô-đun tác đ ng l n nhau, m i mô-đun có m t ch c n ng đ c xác đ nh rõ ràng ây m t ph ng pháp thi t k c n ng i ta dùng bi u đ dòng d li u mô t vi c x lý d li u logic, l c đ c u trúc đ ch c u trúc c a ph n m m m i quan h gi a thành ph n Thi t k h ng ch c n ng g n v i chi ti t c a m t thu t toán c a ch c n ng nh ng thông tin tr ng thái c a h th ng không b che d u i u có th gây v n đ m t ch c n ng thay đ i tr ng thái theo cách mà ch c n ng khác khơng ng t i h th ng s g p tr c tr c Do cách ti p c n h ng ch c n ng s có hi u qu mà kh i l ng thông tin tr ng thái riêng bi t c a thành ph n h th ng nh thơng tin dùng chung cho tồn b kh i c a h th ng rõ nét nh t 3.2.2 Thi t k h ng đ i t ng Trong cách ti p c n này, h th ng đ c nhìn nh n nh m t b đ i t ng phân tán, m i đ i t ng có nh ng thơng tin tr ng thái riêng c a Thi t k h ng đ i t ng d a vi c che d u thông tin d li u dùng chung b lo i b Các đ i t ng liên l c v i b ng cách trao đ i thông báo Các đ i t ng th c th đ c l p, s n sàng thay đ i mà không nh h ng t i đ i t ng khác Các đ i t đ ng tu n t ho c song song u m c a cách ti p c n h ng đ i t ng: ng có th phân tán hành 80 Giáo trình K ngh ph n m m + D b o trì đ i t ng đ c l p + Có th dùng l i m t s thành ph n c a đ i t ng đ c thi t k tr + Thi t k d hi u: nhìn rõ đ c m i quan h gi a th c th c Nh c m c a cách ti p c n h ng đ i t ng: Cách nhìn t nhiên nhi u h th ng cách nhìn theo ch c n ng nên vi c thích nghi v i cách nhìn đ i t ng đơi g p khó kh n Làm đ tìm đ i t ng thích h p m t h th ng c ng m t v n đ c n gi i quy t thi t k 3.2.3 Thi t k l y c u trúc d li u làm trung tâm Trong cách ti p c n này, k s ph n m m c n mô t đ u vào đ u c u trúc d li u sau phát tri n c u trúc u n c a ch ng trình d a s đ c u trúc d li u 3.2.4 Thi t k h ng thành ph n Trong cách ti p c n m i thành ph n c a ph n m m m t đ n v đ c l p, có giao di n có th đ c tri n khai m t cách đ c l p Chi n l c thi t k h ng thành ph n d a v n đ liên quan đ n vi c cung c p, phát tri n, tích h p thành ph n nh v y đ c i thi n, tái s d ng M t ph n m m tái s d ng nh ng thành ph n khác hay s d ng ph n m m đ c xây d ng s n ph i đáp ng yêu c u b o m t t ng t nh ph n m m m i 3.2.5 Các ph ng pháp khác Ngoài h ng thi t k nhi u h ng thi t k khác c ng đ c áp d ng hi n mang l i nh ng hi u qu nh t đ nh G n xu t hi n m t ki n trúc ph n m m m i đ c k v ng chìa khóa gi i quy t v n đ "đ n gi n hóa" ph n m m SOA (Service-Oriented Architecture) - ki n trúc h ng d ch v SOA t p h p d ch v k t n i “m m d o” v i nhau, có giao ti p đ c đ nh ngh a rõ ràng đ c l p v i n n t ng h th ng, có th tái s d ng SOA c p đ cao h n c a phát tri n ng d ng, tr ng đ n quy trình nghi p v dùng giao ti p chu n đ giúp che s ph c t p k thu t bên d i Nói cách khác, SOA là: + M t ki u ki n trúc ph n m m g m nhi u thành ph n đ c l p đ c th hi n thành nh ng d ch v (service), m i d ch v th c hi n m t quy trình nghi p v c a doanh nghi p + Các thành ph n đ c n i k t qua c ng giao ti p, có tính k th a thành ph n t n t i, s t ng tác gi a chúng không c n quan tâm đ n vi c chúng đ c phát tri n n n t ng công ngh i u n h th ng có th m r ng tích h p m t 81 Giáo trình K ngh ph n m m cách d dàng SOA giúp tái s d ng ph n m m, linh ho t m r ng, k t n i tích h p Nh v y m i chi n l c thi t k ph n m m đ u d a cách nhìn nh n tr c quan m t b ký pháp nh t đ bi u di n trình Tuy nhiên c n nh r ng khơng có m t cách ti p c n t t nh t cho m i d án ph n m m Ng i k s ph n m m ph i bi t l a ch n cách ti p c n thích h p nh t cho m i d án m i giai đo n thi t k 3.3 CÁC PH NG PHÁP THI T K 3.3.1 Ph ng pháp thi t k t xu ng (Top Down Design) Theo ph ng pháp này, tr c h t ng i ta xác đ nh mô đun t ng quát nh t mà toán yêu c u gi i quy t Sau ti n hành phân rã mơ đun thành ni m v c th h n, t c chuy n d n t mơdule đ n môdun t xu ng d i, v y ph ng pháp có tên g i thi t k "t xu ng" minh ho cho ph ng pháp này, xét toán thi t k h th ng qu n lý m t trung tâm th ng m i + Phác th o 1: Qu n lý Trung tâm th ng m i Qu n lý nhân l c Qu n lý kinh doanh Qu n lý kho hàng ây phác th o n n c a toán Chúng ta ti p t c phân rã mô đun thành ph n nh sau: + Phác th o 2: 82 Giáo trình K ngh ph n m m Qu n lý nhân l c L p k ho ch ngu n nhân l c Qu n lý h s Qu n lý l ng + Phác th o 3: Qu n lý kinh doanh D báo nhu c u hàng hóa Tính tốn doanh s Tính tốn l i nhu n + Phác th o 4: Qu n lý kho hàng Qu n lý hàng nh p kho Qu n lý hàng xu t kho Qu n lý hàng l u kho 83 Giáo trình K ngh ph n m m + Phác th o 5: Tích h p h th ng Qu n lý Trung tâm th ng m i Qu n lý nhân l c Qu n lý kinh doanh Qu n lý kho hàng L p k ho ch ngu n nhân l c D báo nhu c u hàng hóa Qu n lý hàng nh p kho Qu n lý h s Tính tốn doanh s Qu n lý hàng xu t kho Qu n lý l Tính tốn l i nhu n Qu n lý hàng l u kho ng Hình 3.1 Mơ hình thi t k t đ nh xu ng 3.3.2 Ph Ýt ng pháp thi t k t d ng c a ph i lên (Bottom Up Design) ng pháp thi t k ng c l i v i ph ng pháp Top down design Tr c h t ng i ta ti n hành gi i quy t v n đ c th , sau c s đánh giá m c đ t ng t v ch c n ng c a v n đ vi c gi i quy t toán ng i ta g p chúng l i thành t ng nhóm ch c n ng t d i lên cho đ n mơ đun Sau s thi t k thêm m t s ch ng trình làm phong phú h n, đ y đ h n ch c n ng c a phân h cu i tích h p mơđun thành m t h th ng th ng nh t, hoàn ch nh minh ho cho t t xét toán sau đây: ng c a ph ng pháp thi t k bottom up design xem 84 Giáo trình K ngh ph n m m Trong m t doanh nghi p, vi c ng d ng tin h c qu n lý đ c tri n khai b ph n khác t ng th i m khác K t qu ng i ta thi t k đ a vào s d ng m t s ch ng trình qu n lý phịng ban (Phịng tài v , Phịng t ch c hành chính, Phịng cung ng nguyên v t li u ) Danh sách ch ng trình ng d ng nh sau: Prog 1: L p k ho ch s d ng nhân l c Prog 2: L p k ho Prog 3: L p k ho Prog 4: Qu n lý h Prog 5: Qu n lý l ch tài ch s n xu t s cán b , công nhân viên ng Prog 6: L p k ho ch cung ng nguyên v t li u Các ch ng trình đ c ng d ng có k t qu s n xu t kinh doanh đ c th c t ki m nghi m Bây gi c s ch ng trình c th Lãnh đ o nhà máy có nhu c u thi t k m t h ch ng trình th ng nh t ph c v t t h n cho vi c qu n lý doanh nghi p Trong tr ng h p v n d ng ph ng pháp thi t k t d i lên theo phác th o sau đây: • Phác th o th nh t: G p môđun 1, thành phân h qu n lý nhân l c Phác th o th hai: G p môđun 2, thành ch c n ng qu n lý tài • Phác th o th ba: G p môđun 3, thành ch c n ng qu n lý s n xu t • Trên c s ch c n ng c a phân h qu n lý đây, có th ti n hành thi t k thêm m t s ch ng trình khác làm phong phú thêm v n đ mà h th ng qu n lý: + Prog 7: Qu n lý ngu n v n + Prog 8: Qu n lý đào t o nhân l c + Prog 9: L p k ho ch tác nghi p Các ch ng trình đ c thi t k b sung ph i đ m b o đ c yêu c u phù h p v m t ch c n ng v i ch ng trình đ c thi t k cài đ t tr c đây, đ ng th i ph i có s t ng thích v i ch ng trình đ c ki m nghi m th c ti n Trong ví d có th thi t k thêm nhi u ch ng trình m i phân h làm cho kh n ng c a phân h ngày đa d ng, gi i quy t đ c ngày hi u qu v n đ mà th c t qu n lý c a doanh nghi p đ t Cu i ti n hành tích h p thành m t h th ng th ng nh t qu n lý doanh nghi p d i d ng mơ hình sau đây: 85 Giáo trình K ngh ph n m m Qu n lý doanh nghi p Qu n lý s n xu t Qu n lý tài L p k ho ch s n xu t L p k ho ch tài L p k ho ch cung ng nguyên v t Qu n lý ngu n v n L p k ho ch tác nghi p Qu n lý l ng Hình 3.2 Mơ hình thi t k t d 3.4 C S Qu n lý nhân l c L p k ho ch s d ng nhân l c Qu n lý h s cán b , CNV Qu n lý đào t o s d ng nhân l c i lên LÝ LU N THI T K PH N M M Dù cho có nhi u cách ti p c n thi t k khác nh ng m i chi n l c ph ng pháp thi t k đ u ph i d a m t s v n đ lý lu n sau đây: 3.4.1 Tr u t ng Tr u t ng m t trình t t nhiên c a ng i tìm cách nh n th c m t v n đ Có th xem tr u t ng s hình thành khái ni m v s v t hay hi n t ng b ng cách t p trung vào đ c tr ng c n thi t nh t lo i b chi ti t c th không c n thi t Khi thi t k ph n m m, đ i t ng tốn nghiên c u có r t nhi u thu c tính khác Chúng ta khơng th ánh x tồn b vào thi t k mà ch mang vào thu c tính c n thi t đ c tr ng nh t mà thơi K t qu c a q trình tr u t ng hóa mơ hình nh mơ hình d li u, mơ hình lu ng u n, mơ hình giao di n 86 Giáo trình K ngh ph n m m Ch ng h n thi t k phàn m m qu n lý sinh viên có th tr u t ng hóa khái ni m sinh viên th c t thành mơ hình sinh viên v i thu c tính nh h tên, ngày tháng n m sinh, l p, khoa, m thi…vv mà b qua thu c tính nh chi u cao, cân n ng Nhà khoa h c R Pressman [7] nêu m t đ nh ngh a: khái ni m tâm lý v tr u t ng cho phép ng i ta t p trung vào v n đ m c t ng qt khơng xét t i chi ti t m c th p không liên can; vi c dùng tr u t ng hóa c ng cho phép ng i ta làm vi c v i khái ni m thu t ng quen thu c môi tr ng v n đ mà không ph i bi n đ i chúng thành m t c u trúc không quen thu c M i b c ti n trình k ngh ph n m m đ u s làm m n cho m t m c tr u t ng c a gi i pháp ph n m m Trong k ngh h th ng, ph n m m đ c dùng nh m t ph n t c a h th ng d a máy tính Trong phân tích yêu c u ph n m m, gi i pháp ph n m m đ c phát bi u d i d ng "đó quen thu c môi tr ng v n đ " [7] Khi chuy n t thi t k s b sang thi t k chi ti t m c đ tr u t ng đ c rút l i Cu i cung, ta t i m c tr u t ng th p nh t sinh ch ng trình g c Khi chuy n qua m c tr u t ng khác nhau, làm vi c đ t o tr u t ng th t c d li u Tr u t ng d li u m t t p h p d li u có tên mơ t cho m t s v t d li u Thí d v tr u t ng d li u "séc toán" i t ng d li u th c ch t m t t p h p nhi u m u thông tin khác (nh tên ng i toán, s ti n toán, ti n thu , v.v ) Nh v y có th tham kh o t i m i d li u b ng cách nói tên c a tr u t ng d li u 3.4.2 Làm m n Làm m n t ng b xu t Ki n trúc c a m chi ti t th t c M t c v ch c n ng (tr u t ng l p trình Trong m i b c m t chi n l c thi t k t xu ng Niklaus Wirth đ t ch ng trình đ c phát tri n b ng m c làm m n liên ti p p b c đ c xây d ng nên b ng cách phân tích m t phát bi u v mơ ng th t c) theo ki u t ng b c cho t i đ t t i phát bi u ngôn c (làm m n), m t hay nhi u câu l nh c a ch ng trình s đ c phân rã thành nh ng câu l nh chi ti t h n Vi c phân rã hay làm m n lên ti p đ c t k t thúc t t c l nh đ c di n đ t d i d ng b t k ngơn ng l p trình hay ngơn ng máy tính n n t ng Khi nhi m v đ c làm m n d li u c ng ph i 87 Giáo trình K ngh ph n m m C u trúc tu n t C u trúc phân nhánh C u trúc l p Hình 3.18 Các ki u c u trúc c b n C u trúc tu n t đ c bi u di n nh hai hình ch nh t đ c n i v i b i m t đ ng m i tên u n C u trúc phân nhánh if - then - else, đ c mô t nh m t hình thoi ki m tra u ki n logic N u u kiên chuy n đ n x lý ph n then, n u sai gây x lý ph n else C u trúc l p đ c bi u di n b ng cách dùng hai d ng khác D ng Do - while ki m tra m t u ki n th c hi n nhi m v chu trình m t cách l p l i ch ng mà u ki n D ng Repeat-until th c hi n nhi m v chu trình tr c r i m i ki m tra u ki n l p l i nhi m v cho đ n u ki n x y K t c u n ch n Case of đ c v hình d i s m r ng c a if - then else M t tham bi n đ c ki m tra b ng quy t đ nh liên ti p cho đ n u ki n x y đ ng x lý theo ph n case s đ c th c hi n 109 Giáo trình K ngh ph n m m X lý Case of X lý X lý X lý … X….lý n X lý sau Case Hình 3.19 C u trúc phân nhánh ph c t p Case Of Các c u trúc có th l ng n bên Vòng l p l ng m t nh ng c u trúc c b n nh t m i ngơn ng l p trình Trong tr ng h p có hai vịng l p l ng vào v i m i tham s c a chu trình ngồi chu trình s ph i quét h t t t c tham s c a Sau tham s c a chu trình ngồi t ng lên, chu trình l i qt l i t đ u tham s c a C ch ho t đ ng gi ng nh s d ng câu truy v n l ng vào nhau: câu truy v n câu truy v n Câu truy v n l y k t qu t m t b ng v i m i dòng k t qu câu truy v n quét t ng dòng b ng l i đ l y dòng t ng ng Trong c u trúc có chu trình l ng vào Chu trình có tham s ki m tra theo k Chu trình l i n m chu trình có tham s ki m tra theo J Cu i chu trình J l i n m tr n chu trình có tham s i 3.8 K THU T L P TRÌNH 3.8.1 L p trình th t c L p trình th t c (Procedural programming) m t ph bao g m hai khái ni m [5]: ng pháp l p trình thơng d ng 110 Giáo trình K ngh ph n m m - S d ng th t c: Chia ch ng trình l n thành đo n ch ng trình (th t c) th c hi n công vi c c th Các th t c có th đ c g i nhi u l n, g i l n g i (đ qui) Nó góp ph n gi m đ ph c t p tang tính hi u đ c c a ch ng trình - L p trình có c u trúc (Structured programming): S d ng câu l nh có c u trúc ho c t o c u trúc ph c t p t c u trúc đ n gi n h n Hai khái ni m l p trình th t c l p trình có c u trúc làm cho vi c l p trình d hi u, có th tái s d ng Nó góp ph n lo i b vi c l p trình s d ng GO TO th ng gây nhi u l i 3.8.2 L p trình h ng đ i t ng L p trình h ng đ i t ng OOP (Object- oriented programming) xu t hi n vào th p niên 70 c a th k 20 nhanh chóng tr nên m t ph ng pháp l p trình ch đ o vi c phát tri n ph n m m chun nghi p có qui mơ l n L p trình h ng đ i t d a đ c tr ng c b n đóng gói /che d u thơng tin, k th a, đa hình ng óng gói/ che d u thông tin (Encapsulation/information hiding) đ c tr ng c b n nh t c a l p trình h ng đ i t ng Nó liên quan đ n hai công vi c liên quan m t thi t v i là: (i) vi c g n k t d li u ph ng pháp x lý đ c tr ng v i d li u thành m t th th ng nh t g i l p đ i t ng (ii) vi c che d u cài đ t c u trúc d li u c th c a đ i t ng, đ i t ng cung c p d ch v thông qua giao di n xác đ nh Vi c đóng gói/ che d u thơng tin s cho phép thao tác v i đ i t ng mà không c n bi t cách th c cài đ t c th c a nó, tác tách đ c ph n b t bi n (giao di n) kh i ph n kh bi n (cách cài đ t c th ) c a l p đ i t ng Do d dàng s d ng l i đ i t ng, vi c nâng c p b o trì c ng d dàng h n K th a (Inheritance) c ch đ c bi t c a OOP cho phép xây d ng m t l p đ i t m i k th a (s d ng l i) l p đ i t ng có ng a hình (Polymorphism) c ch cho phép nhìn nh n m t đ i t ng theo góc nhìn khác đ ng th i cho phép đ i t ng khác gi i nghiac m t thông p (l i g i ph ng th c) theo cách th c khác Cùng v i tính k th a, tính đa hình t o nên s m m d o đ c bi t OOP ây c ng c ch n n t ng cho vi c th c hi n thi t k m 3.8.3 L p trình lơgic 111 Giáo trình K ngh ph n m m L p trình logic (Logic programming) k thu t l p trình d a vi c mô t tri th c mang tính logic v tốn m c tiêu c n gi i quy t ch không ph i b c c th đ gi i toán Tri th c bao g m qui t c v mi n toán d li u có H th ng s tìm cách ki m tra xem t vi c d ki n qui t c có cách đ đ t t i m c tiêu hay không Ngôn ng tiêu bi u PROLOG mi n ng d ng c a l p trình logic h chuyên gia toán ch ng minh đ nh lý 3.9 NGÔN NG THI T K CH Ngơn ng thi t k ch NG TRÌNH ng trình PDL (Program Design Language), đ c g i ti ng Anh có c u trúc hay gi l nh, "ngơn ng đ n gi n ch dùng t v ng c a m t ngôn ng (nh ti ng Anh) cú pháp t ng th c a ngôn ng khác (nh ngôn ng l p trình có c u trúc)" Trong ch ng PDL đ c dùng nh m t tham kh o t ng quát cho ngôn ng thi t k Tuy nhiên c n ý r ng PDL cịn đ c dùng đ mơ t m t ngôn ng thi t k riêng Caine, Farber Gordon phát tri n [7] M i thống nhìn PDL có nhi u nét gi ng t a nh PASCAL hay Ada Tuy nhiên s khác bi t gi a PDL ngơn ng l p trình c p cao n m vi c dùng v n b n d n (t c ti ng Anh) đ c nhúng tr c ti p bên câu l nh PDL V i vi c dùng t h p v n b n d n đ c nhúng tr c ti p c u trúc cú pháp PDL nên PDL không th d ch đ c thành m t ch ng trình ngơn ng máy Tuy nhiên, "b x lý" PDL hi n có d ch PDL thành bi u di n đ ho t c l u đ c a thi t k , t o b n đ l ng nhau, ch s thao tác thi t k , b ng tham kh o chéo nhi u thông tin khác M t ngôn ng thi t k ch ng trình có th m t s chuy n đ i đ n gi n c a m t ngơn ng l p trình c p cao nh PASCAL hay có th m t s n ph m riêng cho thi t k th t c B t k đ n ngu n g c, m t ngôn ng thi t k ch ng trình ph i có đ c tr ng sau đây: + M t cú pháp c đ nh g m t khóa cung c p cho m i k t c u có c u trúc, khai báo d li u đ c tính mơ đun + M t cú pháp t c a ngơn ng t nhiên đ mơ t tính n ng th t c + Các ti n nghi khai báo d li u nên ch a c c u trúc d li u đ n gi n (vô h m ng) ph c t p (danh sách liên k t hay c u trúc d li u cây) + nh ngh a ch ng trình k thu t g i h tr cho nhi u m t mô t t ng, ng tác 112 Giáo trình K ngh ph n m m Ngày nay, m t ngơn ng l p trình c p cao th ng đ c dùng làm c s cho PDL Ch ng h n, Ada - PDL đ c dùng r ng rãi c ng đ ng Ada nh công c đ nh ngh a thi t k Các k t c u đ nh d ng ngôn ng Ada đ c "tr n l n" v i l i gi i thích ti ng Anh đ t o nên ngôn ng thi t k Cú pháp PDL c b n nên bao g m: + nh ngh a ch ng trình + Mơ t giao di n + Khai báo d li u + K thu t c u trúc kh i + K t c u u ki n +K tc ul p + K t c u vào/ra nh d ng ng ngh a c a thí d PDL đ c trình bày đo n d i PDL ch a m t c u trúc đ cho ng i thi t k có th bi u di n c c u trúc d li u c c b toàn c c: TYPE IS < qualifier - 1> < qualifier - 2> v i: bi n đ c ch a m t mô đun hay đ c khai báo cho vi c dùng tồn c c mơ đun: ch c u trúc d li u riêng ch a t khóa nh SCALAR, ARRAY, LIST, STRING, STRUCTURE; ch cách s d ng tên bi n hoành c nh c a mơ đun hay ch ng trình PDL c ng cho phép đ c t ki u d li u tr u t ng chuyên cho v n đ Ch ng h n, TYPE table_1 IS INSTANCE OF symboltable s có ích thi t k th t c c a mơ đun cho trình biên d ch Ki u d li u tr u t ng symboltable s đ c đ nh ngh a d i d ng ki u d li u khác m t v trí khác thi t k Chúng ta có th dùng PDL đ đ nh ngh a drawing ph i có s n tồn c c cho nhi u mô đun Drawing bao g m ki u d li u khác m t c p b c đ c bi t đ c đ c tr ng nh m t c u trúc đa t p TYPE drawing IS STRUCTURE DEFINED number IS STRING LENGTH (12) geometry DEFINED lines: (x,y) start; (x,y) end; line, type; circle: (x,y) center, radius, arc, angle; 113 Giáo trình K ngh ph n m m point: (x,y); curve: (x[i], y [i] for i >2; notes IS STRING LENGTH (256); BOM DEFINED part, sequence IS LIST; part.no: STRING format aa - nnnnnn; pointer IS PTR; END drawing TYPE; i u quan tr ng c n l u ý r ng mô t v drawing không ph i mơ t ngơn ng l p trình Ng i thi t k nên tuân theo cú pháp t ng th c a PDL, nh ng có th đ nh ngh a ph n thành t c a drawing theo b t k cách thích h p (và khơng hình th c) Hi n nhiên, vi c d ch PDL sang ch ng trình g c ngơn ng l p trình ph i tuân theo m t cú pháp xác Các ph n t th t c c a PDL có c u trúc kh i T c gi l nh có th đ kh i đ c th c hi n nh m t th c th riêng c đ nh ngh a M t kh i đ c gi i h n theo cách sau: BEGIN ; END v i có th đ c dùng (nh ng khơng nh t thi t) đ đ a m t m t cho vi c tham kh o v sau t i m t kh i m t t h p c a t t c k t c u PDL khác Ch ng h n: BEGIN get end-points from display list; scale physical end - points to screen coordinates; DRAW a line using screen coordinates; END Kh i dùng câu gi l nh mơ t cho x lý thích h p Vi c dùng m t t khóa riêng, DRAW, minh ho cho th c làm đ c thù hóa PDL đ phát bi u m t ng d ng c th K t c u u ki n PDL l y d ng c n if-then-else; IF 114 Giáo trình K ngh ph n m m THEN ; ELSE ; ENDIF v i ch quy t đ nh logic c n ph i ti n hành đ g i ho c ph n x lý then ho c ph n x lý else Ch ng h n đo n PDL sau mô t m t dãy quy t đ nh cho h th ng tính l ng; IF year.to.date.FICA maximum THEN set FICA deduction = maximum - year.to.date.FICA; ELSE skip ENDIF END ELSE set FICA deduction = ENDIF Hai IF l ng đ c bi u di n đo n PDL Ph n then c a IF bên ch a m t kh i có t h p IF bên v i câu gi l nh ELSE skip ch r ng ph n else b b qua ENDIF đ c dùng đ ch s k t thúc rõ ràng c a k t c u đ c bi t có ích bi u di n cho IF l ng END sau ENDIF đ u tiên k t thúc cho kh i x lý thông tin FICA K t c u n ch n (hay select - case) th c t m t t p IF l ng suy bi n ra, đ c bi u th nh sau: CASE OF : WHEN SELECT ; WHEN < case-condition-2> SELECT ; WHEN SELECT ; DEFAULT: ; ENDCASE Nói chung, k t c u ki m tra m t tham bi n đ c bi t, case variable, theo m t t p u ki n Khi tho đ c cho m t u ki n m t kh i hay câu gi l nh s đ c g i 115 Giáo trình K ngh ph n m m t i Xem nh m t thí d v k t c u CASE PDL, xét m t đo n cho x lý vào/ra h th ng: CASE OF communication - status - bits (cbs): WHEN csb = clear - to - send SELECT BEGIN select channel path; initiate message transmission; WHEN csb = clear - to - receive SELECT initiate buffer managenment; WHEN csb = busy SELECT set queuing bit; DEFAULT: process csb content error; ENDCASE K t c u l p PDL bao g m chu trình tr c ki m tra sau ki m tra c ng nh chu trình đánh ch s : DO WHILE ; ENDDO REPEAT UNTIL ; ENDREP DO FOR = ; ENDFOR Bên c nh k t c u chu trình chu n, PDL h tr cho hai t khóa NEXT EXIT, làm cho ng i thi t k xác đ nh l i có ràng bu c kh i chu trình Có nh ng tình hu ng m t l i kh i chu trình l ng c n thi t Các k t c u PDL EXIT NEXT cung c p m t s vi ph m có ràng bu c v i k t c u có c u trúc thu n tuý Trong tr ng h p này, EXIT gây vi c r nhánh sang câu l nh sau k t c u l p ch a NEXT gây vi c x lý ti p t c vòng l p b ng t quãng nh ng cho ch y l i vi c l p chu trình ti p theo B ng cách g n nhãn cho chu trình ngồi EXIT NEXT chúng có th đ c dùng đ thoát kh i vi c l ng nh đ c câu l nh ELSE NEXT loop-y gây vi c r nhánh sang chu trình ngồi có mang nhãn poop -y loop-y: DO WHILE condition y DO WHILE condition z 116 Giáo trình K ngh ph n m m IF condition g THEN execute process x; ELSE EXIT ENDIF IF condition t THEN execute process b; ELSE NEXT loop-y ENDIF ENDDO IF condition r THEN NEXT ELSE execute process c; ENDIF execute process d ENDDO Xem nh m t thí d v k t c u l p PDL xem xét chu trình phân tích ki m tra tính h i t c a hai giá tr đ c tính: epsilon: = 1.0; no-of-tries: = 0; DO WHILE (epsilon > 0.001 AND no - of - tries < 100) calculate value - 1: = f(x,y,z); calculate value - 2: = g(x,y,z); epsilon: = ABSVAL (value - - value - 2); increment no - of - tries by 1; ENDDO C n ph i ý r ng u ki n l p ph i đ trình đ c đ m b o B đ m no - of - tries đ c đ nh ngh a cho l i thoát kh i chu c thi t l p cho m c đích Các ch ng trình giao di n t ng ng đ c u PDL sau: PROCEDURE c xác đ nh b ng cách dùng k t INTERFACE ; 117 Giáo trình K ngh ph n m m END v i c a m t ch ng trình mơ t cho đ c tr ng tham kh o c a (nh mơ đun INTERNAL hay EXTERNAL) thu c tính ph thu c (ngơn ng l p trình) cài đ t khác (n u có) INTERFACE đ c dùng đ xác đ nh m t danh sách đ i mô đun có ch a tên g i cho m i thông tin vào c t vào/ra r t hay thay đ i ngôn ng thi t k Các d ng n hình bao g m: READ/WRIRE TO hay ASK ANSWER v i ch thi t b vào/ra v t lý (nh hình, đ a, máy in, b ng t ) ch a bi n đ c truy n ASK-ANSWER đ c dùng cho thi t k t ng tác v i ng i m t đ nh d ng h i - tr l i thích h p Ch ng h n: ASK "select processing option" ANSWER "cost", "schedule"; c t I/O th ng đ c m r ng đ bao g m đ c tr ng nh âm thành hay h ng c a s , giao di n đ n kéo xu ng C n ph i ý r ng PDL có th đ c m r ng đ bao hàm t khóa cho x lý đa nhi m ho c t ng tranh, x lý ng t, đ ng b gi a ti n trình nhi u tính n ng khác n a 3.10 TÀI LI U THI T K Công đo n cu i c a qui trình thi t k so n th o Tài li u thi t k M i m c tài li u thi t k đ u bao g m m t s n i dung đ c p t i khía c nh khác c a vi c bi u di n thi t k M c I c a tài li u thi t k có tên Ph m vi trình v n đ chung t ng quát nh m c tiêu c a ph n m m, ch c n ng c a ph n m m, gi i h n ràng bu c M c II trình bày tài li u tham kh o, tài li u h tr M c III, mô t thi t k , đ c hoàn t t nh m t ph n c a thi t k s b C n l u ý r ng thi t k h ng thông tin - t c là, lu ng ho c c u trúc c a d li u s kh ng ch ki n trúc c a ph n m m Trong m c này, bi u đ dòng d li u hay bi u di n d li u khác đ c 118 Giáo trình K ngh ph n m m phát tri n phân tích yêu c u đ c làm m n đ c dùng đ u n c u trúc ph n m m Các m c IV V trình bày n i dung thi t k s b chuy n thành thi t k chi ti t Các mô đun- ph n t đ nh đ a ch tách bi t đ c c a ph n m m nh ch ng trình con, hàm hay th t c- kh i đ u đ c mô t b ng l i thu t x lý ti ng Anh L i thu t x lý gi i thích ch c n ng th t c c a m t mô đun Sau này, m t công c thi t k th t c s đ c dùng đ d ch l i thu t thành m t mơ t có c u trúc I Ph m vi A M c tiêu h th ng B Ph n c ng, ph n m m giao di n ng i C Các ch c n ng ph n m m D C s d li u đ c xác đ nh bên E Các ràng bu c, gi i h n thi t k II Tài li u tham kh o A Tài li u v ph n m m hi n có B Tài li u h th ng C Tài li u ng i cung c p (ph n c ng ph n m m) D Tham kh o k thu t III Mô t thi t k A Mô t d li u T ng quan v lu ng d li u T ng quan v c u trúc d li u B C u trúc ch ng trình suy d n C Giao di n bên c u trúc IV Mô đun; cho m i mô đun: A L i thu t x lý B Mô t giao di n C Mô t ngôn ng thi t k (hay nh ng mô t khác) D Các mô đun dùng E T ch c d li u F Bình lu n V C u trúc t p d li u toàn c c A C u trúc t p ngồi 119 Giáo trình K ngh ph n m m C u trúc logic Mô t b n ghi logic Ph ng pháp thâm nh p B D li u toàn c c C Tham kh o chép t p d li u VI Tham kh o chéo yêu c u VII i u kho n ki m th A H ng d n ki m th B Chi n l c tích h p C Xem xét đ c bi t VIII óng gói A Các u kho n cho ch ng trình ch ng ch t đ c bi t B Xem xét chuy n đ i IX L u ý đ c bi t X Ph n ph l c 120 Giáo trình K ngh ph n m m T KHĨA CH NG C p b c u n Che d u thông tin Chi n l c thi t k Ki n trúc ph n m m Ki u mô đun Ký pháp l u đ K thu t l p trình Làm m n L p trình th t c 10 L p trình logic 11 L p trình h ng đ i t ng 12 N n t ng thi t k 13 Ngôn ng thi t k ch ng trình PDL 14 Ph ng pháp Top Down Design 15 Ph ng pháp Bottom Up Design 16 S ghép n i 17 Tiêu chu n thi t k 18 Thi t k h ng ch c n ng 19 Thi t k h ng đ i t ng 20 Thi t k h 21 Thi t k h ng thành ph n ng d ch v 22 Ti n trình thi t k 23 Tính mơ đun 24 Ti n trình mơ đun hóa 25 Tính k t dính 26 Tr u t ng 121 Giáo trình K ngh ph n m m CÂU H I CH NG Hãy trình bày vai trị quan tr ng c a qui trình thi t k ph n m m? Trình bày tiêu chu n thi t k ph n m m? Trình bày chi n l c thi t k ph n m m? Trình bày n i dung ph ng pháp Top Down Design Cho ví d minh h a? Trình bày n i dung ph ng pháp Bottom Up Design Cho ví d minh h a? Khái ni m tr u t ng hóa thi t k ph n m m gì? Trình bày khái ni m làm m n thi t k ph n m m? Tinh mô đun c a ch ng trình gì? M i liên h gi a s l ng mơ đun chi phí thi t k ? Trình bày khái ni m ki n trúc ph n m m Mơ hình chuy n t “v n đ “ sang “gi i pháp ph n m m”? 10 Mơ hình ki n trúc ki u kho d li u gì? 11 Trình bày mơ hình ki n trúc Client/Server? 12 Trình bày mơ hình ki n trúc Call- Return? 13 Trình bày mơ hình u n ng t? 14 Khái ni m c p b c u n Chi u r ng đ sâu c a ch ng trình gì? 15 Vai trị c a c u trúc d li u thi t k ph n m m? 16 Tính k t dính thi t k ph n m m Trình bày m c đ k t dính theo quan m c a Page Jones? 17 S ghép n i thi t k ph n m m Trình bày lo i ghép n i theo quan m c a Page Jones? 18 Trình bày mơ hình đ c tr ng c a khái ni m ghép n i th p? 19 Trình bày mơ hình đ c tr ng c a khái ni m ghép n i trung bình? 20 Trình bày mơ hình đ c tr ng c a khái ni m ghép n i cao? 21 Trình bày yêu c u thi t k d li u? 22 Trình bày n i dung tài li u thi t k ph n m m? 122 Giáo trình K ngh ph n m m TÀI LI U THAM KH O CH NG Bài gi ng Công ngh Ph n m m – B môn Công ngh Ph n m m, Vi n Công ngh Thông tin Truy n thông, i h c Bách Khoa Hà N i, 2012 Ian Sommerville, Software engineering, 6th Edition, Addison-Wasley, 2001 Giáo trình cơng ngh ph n m m, https://www.scribd.com Ngô Trung Vi t, Nguy n Kim Ánh, Nh p môn công ngh ph n m m, NXB Khoa h c k thu t, 2003 Nguy n V n V , Nguy n Vi t Hà, Giáo trình K ngh ph n m m, NXB ih c Qu c gia Hà N i, 2008 Th vi n H c li u m Vi t Nam (VOER), http://voer.edu.vn Roger S Pressman, Software Engineering, a Practitioner’s Approach th Edition, McGraw Hill, 2001 123 ... Ch Ch ng trình 1.1 ng trình Ch ng trình 1.2 ng trình Ch ng trình Ch ng trình 2.1 Ch ng trình 2.2 Ch ng trình Ch ng trình 3. 1 Ch ng trình 3. 2 Hình 3. 9 Mơ hình u n g i- tr l i 94 Giáo trình K ngh... c phân chia thành mô đun b c 2, b c vv… theo c u trúc hình P P1 P11 P12 P3 P2 P 13 P21 P22 P 23 P31 P32 P 33 Hình 3. 3 Ti n trình mơ đun hố Trong hình v mơ đun P đ c phân chia thành ba mô đun P1,... chu trình l ng vào Chu trình có tham s ki m tra theo k Chu trình l i n m chu trình có tham s ki m tra theo J Cu i chu trình J l i n m tr n chu trình có tham s i 3. 8 K THU T L P TRÌNH 3. 8.1 L p trình