Giáo trình Công nghệ phầm mềm

154 607 2
Giáo trình Công nghệ phầm mềm

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Giáo trình Công nghệ phầm mềm

Mủc lủc CHỈÅNG ÂẢI CỈÅNG VÃƯ CÄNG NGHÃÛ PHÁƯN MÃƯM I KHẠI QUẠT VÃƯ LậCH Sặ LP TRầNH I.1 Lỏỷp trỗnh tuyóỳn tờnh I.2 Lỏỷp trỗnh coù cỏỳu truùc I.3 Lỏỷp trỗnh õởnh hổồùng õọỳi tổồỹng (HT) I.4 Láûp trỗnh trổỷc quan I.5 Nhỉỵng tỉ tỉåíng cạch maỷng lỏỷp trỗnh II CẠC PHỈÅNG DIÃÛN CA CÄNG NGHÃÛ PHÁƯN MệM II.1 Cọng nghóỷ phỏửn móửm laỡ gỗ? II.2 Nhỉỵng úu täú cháút lỉåüng bãn ngoi v bãn II.3 Saín pháøm phỏửn móửm laỡ gỗ ? III NHặẻNG NĩI DUNG CÅ BAÍN CUÍA CNPM 11 III.1 Täøng quan vãö cäng nghãû pháön mãöm 11 III.2 Chu k säúng ca pháưn mãưm 12 CHỈÅNG THIÃÚT KÃÚ PHÁÖN MÃÖM 18 I NÃƯN TNG CA THIÃÚT KÃÚ PHÁÖN MÃÖM 18 II PHặNG PHAẽP LP TRầNH CU TRUẽC 20 II.1 Khaùi nióỷm vóử lỏỷp trỗnh cỏỳu truùc 22 II.2 Nhổợng yù tổồớng cồ baớn lỏỷp trỗnh cỏỳu truùc 22 II.3 Caïc cáúu trục âiãưu khiãøn chøn 25 II.4 Mäüt säú vê duû vióỳt chổồng trỗnh theo sồ õọử khọỳi 28 III CÁÚU TRUÏC TÄÚI THIÃØU 29 III.1 Cạc cáúu trục läưng 31 IV LÁÛP TRÇNH ÂÅN THÃØ 32 IV.1 Khại niãûm vãư âån thãø 32 IV.2 Mäúi liãn hãû giỉỵa cạc âån thãø 33 IV.2.1 Phán loaûi âån thãø 33 IV.2.2 Täø chæïc mọỹt chổồng trỗnh coù cỏỳu truùc õồn thóứ 33 V PHAẽT TRIỉN CHặNG TRầNH BềNG TINH CHÃÚ TỈÌNG BỈÅÏC 35 V.1 Näüi dung phỉång phạp 35 V.2 Vê duû minh hoaû 36 V.2.1 Vê duû 36 V.2.2 Bi toạn qn háûu 38 TS PHAN HUY KHẠNH biãn soản i ii Cäng nghóỷ Phỏửn móửm V.3 Sổớa õọứi chổồng trỗnh 42 VI PHUÛ LUÛC - ÂÅN VË TRONG TURBO PASCAL 50 VI.1 Giåïi thiãûu Unit 50 VI.2 Cáúu trục ca Unit 50 VI.3 Cạch sỉí dủng Unit 52 VI.4 Vê dủ vãư Unit 53 VI.5 Baìi táûp 55 CHỈÅNG HÅÜP THỈÏC HỌA PHÁƯN MÃƯM 57 I XẠC MINH V HÅÜP THỈÏC HỌA PHÁÖN MÃÖM 57 II CHỈÏNG MINH SỈÛ ÂỤNG ÂÀÕN CA CHỈÅNG TRÇNH 58 II.1 Suy luáûn Toaïn hoüc 59 II.1.1 Caïc quy tàõc suy luáûn Toaïn hoüc 59 II.1.2 Khại niãûm vãư chỉïng minh õuùng õừn cuớa chổồng trỗnh 60 II.1.3 Tiãn âãư v quy tàõc suy diãùn 61 II.1.4 Quy tàõc âiãöu kiãûn if B then P 62 II.1.5 Quy tàõc âiãöu kiãûn if B then P else Q 63 II.1.6 Quy tàõc voìng làûp while 63 II.1.7 Caïc quy tàõc khaïc 64 II.2 Phỉång phạp ca C.A.R Hoare 66 II.2.1 Phaït biãøu 66 II.2.2 Chỉïng minh âụng âàõn tỉìng pháưn ca Div 66 II.3 Chæïng minh dỉìng 69 II.3.1 Chỉïng minh dỉìng ca mäüt chỉång trỗnh 69 II.3.2 Chổùng minh dỉìng ca Div 70 II.3.3 Âạnh giạ mäüt chỉång trỗnh lỷp 71 III XY DặNG CHặNG TRầNH 72 III.1 Måí âáưu 72 III.2 Bi toạn cåì tam taìi 73 III.2.1 Låìi gii thỉï nháút 74 III.2.2 Låìi gii thỉï hai 75 III.2.3 Chổùng minh tờnh õuùng õừn cuớa chổồng trỗnh (I) 76 III.3 In mäüt danh theo thỉï tỉû ngỉåüc 80 III.3.1 TILDA1 81 IV CẠC TIÃN ÂÃƯ V QUY TÀÕC SUY DIÃÙN 82 IV.1 Âiãưu kiãûn trỉåïc úu nháút v âiãưu kiãûn sau mảnh nháút ca mäüt dy lãûnh 82 IV.1.1 Hm fppre 83 IV.1.2 Haìm fppost 83 IV.1.3 Sỉí dủng âiãưu kiãûn trỉåïc úu nháút v âiãưu kiãûn sau mảnh nháút âãø chỉïng minh âụng âàõn cuớa chổồng trỗnh 84 TS PHAN HUY KHẠNH biãn soản ii Mủc lủc IV.2 Cạc tiãn âãư gạn 86 IV.2.1 Âiãưu kiãûn trỉåïc úu nháút v âiãưu kiãûn sau mảnh nháút ca lãûnh gạn 86 IV.2.2 Quy tàõc toạn âiãưu kiãûn sau mảnh nháút ca mäüt phẹp gạn 87 V BI TÁÛP 89 CHỈÅNG THỈÍ NGHIÃÛM CHỈÅNG TRÇNH 90 I KHO SẠT PHÁƯN MÃƯM 90 II CẠC PHỈÅNG PHẠP THỈÍ NGHIÃÛM 92 II.1 Âënh nghéa v mủc âêch thỉí nghiãûm 92 II.2 Thỉí nghiãûm chu k säúng ca pháön mãöm 94 II.2.1 Thỉí nghiãûm âån thãø 94 II.2.2 Thỉí nghiãûm têch håüp 95 II.2.3 Thỉí nghiãûm hãû thäúng 96 II.2.4 Thỉí nghiãûm häöi quy 97 II.3 Dáùn dàõt cạc thỉí nghiãûm 97 II.4 Thiãút kãú cạc phẹp thỉí phạ hy (Defect Testing) 98 II.4.1 Caùc phổồng phaùp dổỷa trón chổồng trỗnh 98 II.4.2 Cạc phỉång phạp dỉûa trãn âàûc taí 100 II.4.3 Kãút luáûn 101 II.4.4 Caïc tiãu chøn kãút thục thỉí nghiãûm 101 II.5 Cạc phẹp thỉí nghiãûm thäúng kã 102 II.5.1 II.5.2 Måí âáưu 102 Ỉåïc lỉåüng âäü äøn âënh ca mäüt pháưn mãưm 104 CHỈÅNG ÂÀÛC T PHÁƯN MÃƯM 105 I MÅÍ ÂÁƯU ÂÀÛC T PHÁƯN MÃƯM 105 I.1 Khại niãûm vãư âàûc t 105 I.1.1 Âàûc taí laỡ gỗ ? 105 I.1.2 Cạc phỉång phạp âàûc taí 105 I.1.3 Cạc thê dủ minh 106 I.2 ỷc taớ vaỡ lỏỷp trỗnh 107 II ÂÀÛC TA CU TRUẽC Dặẻ LIU 109 II.1 Khaïi niãûm vãư Cáúu trục dỉỵ liãûu cå såí vectå 109 II.1.1 Dáùn nháûp 109 II.1.2 ỷc taớ hỗnh thổùc 110 II.2 Truy nháûp mäüt pháưn tỉí ca vectå 110 II.3 Caïc thuáût toaïn xỉí l vectå 111 II.3.1 Truy tỗm tuỏửn tổỷ mọỹt pháưn tỉí ca vectå (sequential search) 111 II.3.2 Tỗm kióỳm nhở phỏn (Binary search) 113 III ÂÀÛC T ÂẢI SÄÚ : MÄ HÇNH HỌA PHẠT TRIÃØN PHÁƯN MÃƯM 117 III.1 Måí âáưu 117 III.2 Phán loải cạc phẹp toạn 119 III.3 Hảng v biãún 120 III.4 Pheïp thãú cạc hảng 120 TS PHAN HUY KHAÏNH biãn soản iii iv Cäng nghãû Pháưn mãưm III.5 Cạc thüc cuía âàûc taí 122 III.5.1 Mọ hỗnh lỏỷp trỗnh (triãøn khai) 122 III.5.2 Mọ hỗnh õỷc bióỷt 123 III.5.3 Mä hỗnh õọửng dổ 123 III.6 Phẹp chỉïng minh âàûc t âải säú 123 III.6.1 Lyï thuyãúttæång âæång 124 III.6.2 Khaïi niãûm vãư l thuút quy nảp 125 III.6.3 Chỉïng minh tỉû âäüng båíi viãút laûi 126 III.6.4 Phán cáúp âàûc t âải säú 128 IV ÂÀÛC T HAY CẠCH CỦ THÃØ HỌA SỈÛ TRỈÌU TỈÅÜNG 129 IV.1 Âàûc t phẹp thay âäøi bäü nhåï 129 IV.2 Haìm 131 IV.3 Håüp thỉïc họa v phủc häöi 134 IV.4 Bàõt âáưu triãøn khai thỉûc tiãùn 137 IV.5 Phẹp håüp thnh (cáúu tảo) 140 IV.6 Triãøn khai thæï hai 141 IV.7 Triãøn khai thỉûc hiãûn láưn thæï ba 146 IV.8 ỷc taớ laỡm gỗ ? 149 TS PHAN HUY KHẠNH biãn soản iv Âải cỉång vãư cäng nghãû pháưn mãưm CHỈÅNG Âải cỉång vãư cäng nghãû pháưn mãưm I Khại quạt vãư lëch sổớ lỏỷp trỗnh Lỏỷp trỗnh (programming), hay lỏỷp chổồng trỗnh cho mạy âiãûn tỉí (MTÂT) l mäüt ngnh cn rỏỳt mồùi meớ MTT õỏửu tión lỏỷp trỗnh õổồỹc mồùi chè xút hiãûn cạch âáy hån bäún mỉåi nàm Suọỳt hồn bọỳn thỏỷp kyớ qua, lỏỷp trỗnh khọng ngổỡng âỉåüc ci tiãún v phạt triãøn, cng ngy cng hỉåïng vóử nhu cỏửu cuớa ngổồỡi lỏỷp trỗnh Lỏỷp trỗnh laỡ mäüt cäng viãûc nàûng nhoüc, nàng suáút tháúp so våïi cạc hoảt âäüng trê tû khạc Vê dủ nãúu mäüt sn pháøm pháưn mãưm khong 2000 − 3000 dng lãûnh õoỡi hoới ngổồỡi lỏỷp trỗnh chờnh voỡng thaùng thỗ nng suỏỳt mọựi ngổồỡi chố dao õọỹng khong tỉì âãún lãûnh mäùi ngy (?!) Chênh vỗ caùc saớn phỏứm phỏửn móửm tung thở trỉåìng chỉa thỉûc sỉû hon ho nãn ngỉåìi ta thỉåìng dng mẻo thỉång mải bàịng cạch gạn cho sn pháøm mäüt cại âi “phiãn bn” (version) âãø nọi ràịng phiãn bn sau â khàõc phủc âỉåüc nhỉỵng khiãúm khuút ca phiãn bn trỉåïc âọ Vê dủ : Hãû âiãưu hnh MS−DOS â cọ cạc phiãn bn 1.0, 3.3, 5.0, 6.0, 7.0 v.v Microsoft Windows â cọ cạc phiãn bn 1.0, 2.0, 3.0, 3.1, 3.11 Nay l Windows 95, 97, 98 v.v Turbo Psacal ca hng Borland Inc â cọ cạc phiãn bn 5.0, 6.0, 7.0, 8.0 v.v I.1 Lỏỷp trỗnh tuyóỳn tờnh Vồùi nhổợng MTÂT âáưu tiãn, ngỉåìi ta sỉí dủng ngän ngỉỵ mạy (machine language) hay ngän ngỉỵ báûc tháúp (low level) âãø lỏỷp trỗnh vaỡ duỡng caùc khoaù cồ khờ õóứ naỷp chổồng trỗnh vaỡo maùy Theo õaỡ phaùt trióứn cuớa caùc thiãút bë pháưn cỉïng, cạc ngän ngỉỵ báûc cao (high level) våïi cạc dng lãûnh tỉûa tiãúng Anh bàõt âáưu õổồỹc sổớ duỷng Maùy seợ dởch chổồng trỗnh õoù sang ngän ngỉỵ mạy trỉåïc thỉûc hiãûn Våïi nhỉỵng ngän ngổợ lỏỷp trỗnh ban õỏửu, chổồng trỗnh vióỳt gọửm nhỉỵng dng lãûnh cọ khuynh hỉåïng näúi theo dy di, khọ hiãøu vãư màût logic Ngỉåìi ta sỉí ENIAC (Electronic Numerical Integrator and Computer) l chiãúc MTÂT âáưu tiãn âåìi nàm 1945 tải trỉåìng Âải hc Täøng håüp Pensylvania, nỉåïc M TS PHAN HUY KHẠNH biãn soản Cäng nghãû Pháưn mãưm dủng cạc lãûnh nhy (goto) õóứ õióửu khióứn chổồng trỗnh mọỹt caùch tuyỡ tióỷn Chổồng trỗnh laỡ mọỹt mồù rọỳi rừm khọng khaùc gỗ moùn mỗ sồỹi (spaghetti) cuớa nổồùc Yẽ Caùc ngổợ lỏỷp trỗnh tuyóỳn tờnh khọng kióứm soaùt õổồỹc nhổợng sổ thay âäøi ca dỉỵ liãûu Mi dỉỵ liãûu sỉí dủng chổồng trỗnh õóửu coù tờnh toaỡn cuỷc vaỡ coù thãø bë thay âäøi vo báút cỉï lục no Vo giai õoaỷn naỡy, ngổồỡi ta xem vióỷc lỏỷp trỗnh nhổ mäüt hoảt âäüng nghãû thût nhúm mu sàõc ti nghãû cạ nhán hån l khoa hc, våïi thût ngỉỵ “the art of programming I.2 Lỏỷp trỗnh coù cỏỳu truùc Vaỡo cúi nhỉỵng nàm 1960 v âáưu 1970, khuynh hỉåïng láûp trỗnh cỏỳu truùc (structured programming) õồỡi Theo phổồng phaùp naỡy, mọỹt chổồng trỗnh coù cỏỳu truùc õổồỹc tọứ chổùc theo cạc phẹp toạn m phi thỉûc hiãûn Chỉång trỗnh bao gọửm nhióửu thuớ tuỷc, hay haỡm, rióng reợ Cạc th tủc hay hm ny âäüc láûp våïi nhau, cọ dỉỵ liãûu riãng, gii quút nhỉỵng váún âãư riãng, nhỉng cọ thãø trao âäøi qua lải våïi bàịng caùc tham bióỳn Lỏỷp trỗnh cỏỳu truùc laỡm cho vióỷc kióứm soaùt chổồng trỗnh dóự daỡng hồn, vaỡ vỏỷy, gii quút bi toạn dãù dng hån Tênh hiãûu qu cuớa lỏỷp trỗnh cỏỳu truùc thóứ hióỷn ồớ khaớ nng trổỡu tổồỹng hoaù Trong mọỹt chổồng trỗnh coù cỏỳu truùc, ngỉåìi ta chè quan tám vãư màût chỉïc nàng : mäüt th tủc hay hm no âọ cọ thỉûc hiãûn âỉåüc cäng viãûc â cho hay khäng ? Cn viãûc thỉûc hiãûn thãú no l khäng quan trng, chng no cn â tin cáûy Màûc d k thût thiãút kóỳ vaỡ lỏỷp trỗnh cỏỳu truùc õổồỹc sổớ duỷng rọỹng ri nhỉng váùn bäüc läü nhỉỵng khiãúm khuút Khi âäü phổùc taỷp tng lón thỗ sổỷ phuỷ thuọỹc cuớa chổồng trỗnh vaỡo kióứu dổợ lióỷu maỡ noù xổớ lyù cuợng tng theo Cỏỳu truùc dổợ lióỷu mọỹt chổồng trỗnh cọ vai tr quan trng cng cạc phẹp toạn thỉûc hiãûn trãn chụng Mäüt cọ sỉû thay âäøi trón mọỹt kióứu dổợ lióỷu thỗ mọỹt thuớ tuỷc naỡo âọ tạc âäüng lãn kiãøu dỉỵ liãûu ny cng phi thay âäøi theo Khiãúm khuút trãn cng nh hỉåíng âãún tờnh hồỹp taùc giổợa caùc thaỡnh vión lỏỷp trỗnh Mọỹt chổồng trỗnh coù cỏỳu truùc õổồỹc giao cho nhióửu ngổồỡi thỗ coù sổỷ thay õọứi vóử cỏỳu truùc dổợ liãûu ca mäüt ngỉåìi s nh hỉåíng âãún cäng viãûc cuớa nhổợng ngổồỡi khaùc I.3 Lỏỷp trỗnh õởnh hổồùng õọỳi tổồỹng (HT) Lỏỷp trỗnh HT (oriented-object programming) õổồỹc xỏy dổỷng trón nóửn taớng cuớa lỏỷp trỗnh cỏỳu truùc vaỡ trổỡu tổồỹng hoaù dổợ lióỷu (data abstraction) Chổồng trỗnh HT õổồỹc thiãút kãú xung quanh dỉỵ liãûu m thao tạc chỉï khäng bn thán cạc thao tạc Tênh ÂHÂT lm r mäúi quan hãû giỉỵa dỉỵ liãûu v thao tạc trãn dỉỵ liãûu Âải cỉång vãư cäng nghãû pháưn mãưm Trỉìu tỉåüng hoạ dỉỵ liãûu l lm cho viãûc sỉí dủng cạc cáúu trục dỉỵ liãûu tråí nãn âäüc láûp âäúi våïi viãûc ci âàût củ thãø Vê dủ säú dáúu cháúm âäüng (floating point number) â âỉåüc trổỡu tổồỹng hoaù moỹi ngổợ lỏỷp trỗnh NSD thao tạc trãn cạc säú dáúu cháúm âäüng m khäng quan tám âãún caïch biãøu diãùn nhë phán maïy cuớa chuùng nhổ thóỳ naỡo Lỏỷp trỗnh HT lión kóỳt cạc cáúu trục dỉỵ liãûu våïi cạc phẹp toạn Mäüt cỏỳu truùc naỡo õoù thỗ tổồng ổùng, ta coù nhổợng phẹp toạn no âọ Vê dủ : mäüt bn ghi vãư nhán sỉû cọ thãø âỉåüc âc, cáûp nháût sỉû thay âäøi v âỉåüc cáút giỉỵ, cn mäüt säú phỉïc thỗ õổồỹc duỡng tờnh toaùn Khọng thóứ vióỳt sọỳ phỉïc lãn tãûp mäüt bn ghi nhán sỉû, cng khäng thãø cäüng trỉì nhán chia hai bn ghi nhán sổỷ vồùi nhổ caùch cuớa sọỳ phổùc Lỏỷp trỗnh ÂHÂT âỉa vo nhiãưu thût ngỉỵ v khại niãûm måïi, chàóng hản khại niãûm låïp (class), khại niãûm kãú thỉìa (inheritence) ặu õióứm cuớa lỏỷp trỗnh HT laỡ laỡm cho viãûc phạt triãøn pháưn mãưm nhanh chọng hån våïi kh nng duỡng laỷi caùc chổồng trỗnh cuợ Mọỹt lồùp mồùi âỉåüc xem låïp suy diãùn, cọ thãø âỉåüc kãú thỉìa cáúu trục dỉỵ liãûu v cạc phỉång phạp ca låïp gäúc hồûc låïp cå såí Mäüt nhỉỵng ngän ngổợ lỏỷp trỗnh HT õổồỹc noùi õóỳn laỡ SMALLTALK, õổồỹc phạt triãøn nàm 1980 tải Xerox Palo Alto Recearch Center (PARC) Hióỷn nay, nhióửu ngổợ lỏỷp trỗnh thọng duỷng cng âỉåüc trang bë thãm kh nàng ÂHÂT, l C++, Delphi, v.v I.4 Lỏỷp trỗnh trổỷc quan Lỏỷp trỗnh trổỷc quan (visual programming) õổồỹc phaùt trióứn trón nóửn taớng cuớa lỏỷp trỗnh HT Khi thióỳt kóỳ chổồng trỗnh, ngổồỡi lỏỷp trỗnh nhỗn thỏỳy kóỳt quaớ qua tổỡng thao tạc v giao diãûn ngỉåìi dng (user interface) chổồng trỗnh õổồỹc thổỷc hióỷn Ngổồỡi lỏỷp trỗnh coù thóứ dóự daỡng chốnh sổớa vóử maỡu sừc, kờch thổồùc, hỗnh dạng v cạc xỉí l thêch håüp lãn cạc âäúi tỉåüng cọ màût giao diãûn Cạc ngän ngỉỵ láûp trỗnh trổỷc quan thọng duỷng hióỷn thổồỡng õổồỹc phaùt triãøn mäi trỉåìng Microsoft Windows, Visual Basic, Visual C++, Visual Foxpro, Java v.v I.5 Nhỉỵng tỉ tỉåíng caùch maỷng lỏỷp trỗnh Lỏỷp trỗnh laỡ mọỹt nhỉỵng lénh vỉûc khọ nháút ca toạn hc ỉïng dủng Ngổồỡi ta coi lỏỷp trỗnh laỡ mọỹt khoa hoỹc nhũm âãư xút nhỉỵng ngun l v phỉång phạp âãø náng cao nng suỏỳt lao õọỹng cuớa lỏỷp trỗnh vión Nng sút åí âáy âỉåüc hiãøu l âụng âàõn ca chổồng trỗnh, tờnh dóự õoỹc, dóự sổớa, tỏỷn duỷng hóỳt kh nàng ca thiãút bë m khäng phủ thüc vo thiãút bë TS PHAN HUY KHẠNH biãn soản Cọng nghóỷ Phỏửn móửm Thổỷc chỏỳt cuớa quaù trỗnh lỏỷp trỗnh laỡ ngổồỡi ta khọng lỏỷp trỗnh trón mọỹt ngổợ cuỷ thóứ maỡ lỏỷp trỗnh hổồùng tồùi noù Chổồng trỗnh phaới õổồỹc vióỳt dổồùi daỷng caùc thao taùc coù cáúu trục trãn cạc âäúi tỉåüng cọ cáúu trục v cạc mãûnh âãư nhàịm khàóng âënh âụng âàõn ca kóỳt quaớ Nhổợng tổ tổồớng caùch maỷng lỏỷp trỗnh thóứ hióỷn ồớ hai õióứm sau : Chổồng trỗnh vaỡ lỏỷp trỗnh vión trồớ thaỡnh õọỳi tổồỹng nghión cổùu cuớa lyù thuyóỳt lỏỷp trỗnh Laỡm thóỳ naỡo õóứ lm ch âỉåüc sỉû phỉïc tảp ca hoảt âäüng láûp trỗnh ? II Caùc phổồng dióỷn cuớa cọng nghóỷ phỏửn móửm II.1 Cọng nghóỷ phỏửn móửm laỡ gỗ? Theo tổỡ âiãøn Computer Dictionary ca Microsoft Press® (1994), Software Engineering : The design and development of sofware (computer program), from concept through execution and documentation Tỉì âiãøn Larousse (1996) âënh nghéa chi tiãút hån : Cäng nghãû pháưn mãưm l táûp hồỹp caùc phổồng phaùp, mọ hỗnh, kyợ thuỏỷt, cọng cuỷ v th tủc liãn quan âãún cạc giai âoản xáy dỉûng mäüt sn pháøm pháưn mãưm Cạc giai âoản âọ laỡ : õỷc taớ (specifiction), thióỳt kóỳ (design), lỏỷp trỗnh (programming), thỉí nghiãûm (testing), sỉía sai (debugging), ci âàût (setup) õóứ õem vaỡo ổùng duỷng (application), baớo trỗ (maintenance) vaỡ láûp häư så (documentation) Mủc âêch chênh ca cäng nghãû pháưn mãưm l âãø sn xút nhỉỵng pháưn mãưm cọ cháút lỉåüng Cháút lỉåüng pháưn mãưm khäng l mäüt khại niãûm âån gin, bao gäưm nhiãưu úu täú Chàóng haỷn chổồng trỗnh chaỷy nhanh, dóự sổớ duỷng, coù tờnh cáúu trục, dãù âc dãù hiãøu, v.v Ngỉåìi ta thỉåìng âạnh giạ theo hai kiãøu cháút lỉåüng : nhỉỵng úu täú cháút lỉåüng bãn ngoi v nhỉỵng úu täú cháút lỉåüng bãn II.2 Nhỉỵng úu täú cháút lỉåüng bãn ngoi v bãn Nhỉỵng úu täú cháút lỉåüng bãn ngoi ngỉåìi dng cọ thãø nháûn biãút âỉåüc, täúc âäü nhanh, chảy äøn âënh, dãù sỉí dủng, dãù thêch nghi våïi nhỉỵng thay âäøi (tênh måí räüng), cäng thại hc (ergonomy, human factor), v.v Nhỉỵng úu täú cháút lỉåüng bãn ngoi ca mäüt sn pháøm pháưn mãưm l : Tênh âụng âàõn Kh nàng thỉûc hiãûn chênh xạc cäng viãûc âàût Tênh bãưn vỉỵng Cọ thãø hoảt âäüng nhỉỵng âiãưu kiãûn báút thỉåìng Tênh cọ thãø måí räüng Kh nàng dãù sỉía âäøi âãø thêch nghi våïi nhỉỵng thay âäøi måïi Âải cỉång vãư cäng nghãû pháưn mãưm Tênh sỉí dủng lải Kh nàng sỉí dủng lải ton bäü hay mäüt pháưn ca hãû thäúng cho nhỉỵng ỉïng dủng måïi Tênh tỉång thêch Cọ thãø dãù dng kãút håüp våïi cạc sn pháøm pháưn mãưm khạc Cạc cháút lỉåüng khạc Hiãûu qu âäúi våïi ngưn ti ngun ca MTÂT bäü xỉí lyï, bäü nhåï , dãù chuyãøn âäøi (khäng phuû thuäüc vaỡo cỏỳu hỗnh phỏửn cổùng), dóự kióứm chổùng vaỡ an ton (âỉåüc bo vãû quưn truy nháûp), dãù sỉí dủng, v.v Nhỉỵng úu täú cháút lỉåüng bãn l laì âån thãø, dãù âoüc, dãù hiãøu maì chè nhỉỵng ngỉåìi lm Tin hc chun nghiãûp måïi biãútû âỉåüc úu täú cháút lỉåüng bãn ngoi l mủc âêch cúi cng nhỉng úu täú cháút lỉåüng bãn lải l máúu chäút âãø âảt âỉåüc nhỉỵng úu täú cháút lổồỹng bón ngoaỡi II.3 Saớn phỏứm phỏửn móửm laỡ gỗ ? Màûc d ngỉåìi ta khäng âënh nghéa nhỉng khại niãûm sn pháøm pháưn mãưm âỉåüc hiãøu l mäüt hóỷ thọửng chổồng trỗnh thổỷc hióỷn mọỹt nhióỷm vuỷ tổồng âäúi âäüc láûp nhàịm phủc vủ cho mäüt ỉïng dủng củ thãø cüc säúng ca ngỉåìi (v cọ thãø âỉåüc thỉång mải hoạ) Vê dủ cạc sn pháøm pháưn mãưm : Hãû âiãưu hnh : MS − DOS, OS/2, Unix, MAC OS Hãû âiãưu hnh mảng mạy : Unix, Novell Netware, Windows NT v cạc ỉïng dủng trãn mảng LAN, WAN, Internet/Intranet (cạc Browsers, cạc dëch vủ khai thạc Internet ) Cạc ngän ngỉỵ láûp trỗnh (chổồng trỗnh dởch) : Turbo Pascal, Turbo C, C++ Hãû qun trë cå såí dỉỵ liãûu : Microsoft Foxpro, Microsoft Access, Oracle, Paradox Microsoft Windows v cạc ỉïng dủng trãn Windows Cạc tr chåi (games) Cạc pháưn mãưm tråü giụp thiãút kãú (CAD, Designers ), tråü giụp ging dảy Cạc hãû chun gia, trê tû nhán taỷo, ngổồỡi maùy, v.v Caùc chổồng trỗnh phoỡng chọỳng virus, v.v Dỉåïi âáy l bng tọm tàõt quạ trỗnh tióỳn hoùa cuớa saớn phỏứm phỏửn móửm : Thồỡi k âáưu tiãn 1950 − 1960 Xỉí l theo lä (Batch processing) Pháưn mãưm âỉåüc viãút theo âån âàût hng Thåìi k thỉï hai 1960 − 1970 Âa ngỉåìi dng (Multiusers) Thåìi gian thỉûc (Real time) Cå såí dỉỵ liãûu (Database) Pháưn mãưm sn pháøm TS PHAN HUY KHẠNH biãn soản 10 Cäng nghãû Pháưn mãưm Thåìi k thỉï ba 1970 − 1990 Hãû thäúng xỉí l phán bäø (Distributed processing system) Thäng minh (Intelligence) Pháưn cỉïng giạ thnh Hiãûu qu tiãu thủ Thåìi k thỉï tỉ 1990 tråí âi Hãû thäúng âãø bn (Desktop − Personal − Notebook computers) Lỏỷp trỗnh hổồùng õọỳi tổồỹng (Object oriented programming) Lỏỷp trỗnh trổỷc quan (Visual programming) Hóỷ chuyón gia (Expert system) Mảng thäng tin ton cáưu (Worldwide communication network) Xỉí lyï song song (Paralell processing) Sau âáy laì mäüt tranh vui vóử quaù trỗnh taỷo mọỹt saớn phỏứm pháưn mãưm â khạ quen thüc âäúi våïi nhng ngỉåìi lm Tin hc tỉì hån 20 nàm (theo J CLAVIER, “Diriger un projet informatique”, Eïdition J C I Inc, Canada 1993) : Ngỉåìi âàût hng Vê dủ : Cọng ty Cọng vión Thióỳt kóỳ cuớa chuớ trỗ õóử taỡi Saớn phỏứm cuớa ngổồỡi lỏỷp trỗnh Sau sỉía sai våïi nhiãưu sạng kiãún ci tiãún Triãøn khai cho khạch hng Ỉåïc må ca ngổồỡi sổớ duỷng ! Hỗnh 1.1 Quaù trỗnh taỷo mäüt sn pháøm pháưn mãưm 140 Cäng nghãû Pháưn mãưm IV.5 Phẹp håüp thnh (cáúu tảo) ÅÍ mủc trỉåïc, ta õaợ sổớ duỷng mọỹt caùch phi hỗnh thổùc pheùp hồỹp thnh (composition opertion) ca p v q theo a, m v n Trong mủc ny, ta tiãúp tủc âënh nghéa phẹp håüp thnh mäüt cạch chàût ch hån Phẹp håüp thnh, k hiãûu l 0, tạc âäüng lãn hai toạn hảng l hai hm, chàóng f v g, thüc vãư cạc táûp håüp X → Y v Y → Z tỉång ỉïng, cho hm fog thüc vãư táûp X → Z Phẹp håüp thnh cọ thãø âỉåüc âënh nghéanhỉ sau : dom (fog) = { x ∈ dom (g) / g (x) ∈ dom (f) } (fog) (x) = f (g (x)) våïi x ∈ dom (fog) (5.1) Vê duû : { → 6, → }o { → 2, → 3, → } = { → 6, → } Tỉì âënh nghéa trãn cọ thãø suy ràịng nãúu cạc hm f v g âãưu ton pháưn (nọi cạch khạc, nãúu dom (g) = X v dom (f) = Y), thỗ haỡm fog cuợng laỡ toaỡn phỏửn Mọỹt cạch täøng quan hån, nãúu miãưn trë ca g nàịm mióửn xaùc õởnh.cuớa f thỗ hai haỡm g vaỡ fog cọ cng miãưn xạc âënh Ta cọ thãø dãù dng xáy dỉûng mäüt säú lût kiãøu âải säú âãø näúi liãưn phẹp håüp thnh våïi cạc phẹp häüi v hản chãú â xẹt åí mủc Sau âáy l mäüt säú luáût nhæ váûy : (f ∪ g) o h= (f o h) ∪ (g o h) f o (g ∪ h) = (fog) ∪ (f o h) (5.2) S ∩ rang (g) = ∅ keïo theo (f \ s) og = fog (5.3) dom (f) ∩ ran (g) = ∅ keïo theo fog = { } (5.4) Biãøu thỉïc { } chè âënh hm räùng f o (g \ S) = (fog) \ S (5.5) {x→y}o{x→u}={x→y} (5.6) Tỉì cạc lût trãn, ta cọ thãø âån gin họa phẹp thay âäøi biãún â âënh nghéa åí (4.2) sau : p=moa q = m o n (5.7) Vaì ta cọ thãø chỉïng minh dãù dng âënh l ph håüp (4.5) bàịng cạch sỉí dủng cạc cháút trãn Tháût váûy, ta cáưn chỉïng minh hai âàóng thỉïc sau âáy : m’ o n’ = (m o n) + { x → y } m’ o o’ = m o a Nghéa laì : (m + { u → y }) o (n + { x → u }) = (m o n) + { x → y } 141 Âàûc taí (m + { u → y }) o a = m o a våïi cạc gi thiãút : u ∉ ran (n) nghéa laì { u } ∩ ran (n) = ∅ (5.8) u ∉ ran (a) nghéa laì { u } ∩ ran (a) = ∅ (5.9) Ta cọ kãút qu phủ sau : (m \ { u }) o (n \ { x }) = (( m \ { u }) o n) \ { x } theo (5.5) = (m o n) \ { x } theo (5.3) v (5.8) Nhỉng : { x → y } o (n \ { x }} = { } theo (5.4), (2.2) v (5.8) V ta cng coï : (m \ { u }) o { x → u } = { } theo (5.4) vaì (2.2) {u→y}o{x→u}={x→y} theo (5.6) Nhỉ váûy theo (5.2) v (2.5) : (m + { u → y }) o (m + { x → u}) = (m o n) \ { x } ∪ { x → y } = (m o n) + { x → y } Màût khaïc ta coï : m \ { u } o a = m o a theo (5.3) { u → y } o a = { } theo (5.4) Nhæ váûy : (m + { u → y }) o a = m o a theo (2.4) vaì (5.3) IV.6 Triãøn khai thỉï hai Mủc ny s täúi ỉu cạch triãøn khai õỏửu tión õaợ trỗnh baỡy muỷc bũng cạch xáy dỉûng táûp håüp L cạc âëa chè tỉû ca D, táûp håüp m ta â chn ty mäüt pháưn tỉí u âàûc t phẹp toạn mod1 åí (4.3) tỉåíng thiãút kãú cạch triãøn khai thỉï hai ny nàịm åí chäø giỉỵ lải trảng thại ca mäùi âëa chè ca D m âëa chè ny cọ thãø thüc vãư mäüt (v chè mäüt m thäi) táûp håüp råìi sau : RN _ RN RA ∩ RN RN _ RA RA ∪ RN = L âoï RA = ran (a), RN = ran (n) TS PHAN HUY KHẠNH biãn soản 141 142 Cäng nghãû Pháưn mãưm Ty theo mäüt âëa chè d ca D thüc vãư mäüt bäún táûp håüp trãn, ta nọi trảng thại tỉång ỉïng s l : old (c) d ∈ ran (a) common (chung) d ∈ ran (a) vaì d ∈ ran (n) new (måïi) d ∈ ran (a) free (tæû do) d ∉ ran (a) v d ∉ ran (n) Khi mäüt âëa chè tỉû âỉåüc chn, mäüt thay âäøi xy ra, âëa chè âọ chuøn qua trảng thại måïi ; vãư âëa chè quạ ti bng n, nãúu âëa chè âọ khäng phán chia bãn bng n (nghéa l nãúu hm nl âån ạnh v âiãưu ny âỉåüc gi thiãút l ln âụng), âọ, âëa chè s tråí nãn tỉû nãúu âảng åí trảng thại måïi hồûc chuøn sang trảng thại c nãúu âang åí trảng thại chung Khi mäüt phẹp håüp thỉïc họa hay khåíi âäüng lải cạc âëa chè tỉû hay chung váùn c Cạc âëa chè måïi chuøn thnh tỉû mäüt sỉû khåíi âäüng lải v l trỉåìng håüp chung håüp thỉïc họa Cúi cng, cạc âëa chè c chuøn thnh tỉû håüp thỉïc họa v tråí thnh chung khåíi âäüng lải.Chụ ràịng cạc âëa chè c khäng liãn quan âãún sỉû thay âäøi Så âäư dổồùi õỏy toùm từt mọỹt caùch phi hỗnh thổùc nhổợng chuyóứn õọứi khaùc naỡy Muỷc õờch õóứ hỗnh thổùc họa phỉång phạp ny, ta âỉa vo mäüt biãún måïi s âënh nghéa trảng thại ca mäùi âëa chè ca D s ∈ D → {fr, nw, cm, ol} (6.1) Ta coï báút biãún sau âáy : RA - RN = adr (ol) RA ∩ RN = adr (cm) RN - RA = adr (nw) RA ∪ RN = adr (fr) (6.2) HầNH VEẻ Trong õoù : RA = ran (a) RN = ran (n) adr (z) = {x ∈ D / s (x) = Z} våïi Z ∈ {fr, nw, cm, ol} Cúi cng báút biãún thỉï ba chè r ràịng c hai hm n v a âãưu âån ạnh, nghéa l hai âëa chè ca A phán biãût s ln ln tỉång ỉïng våïi cạc âëa chè ca D phán biãût qua cạc hm ny Táûp håüp cạc hm tỉì A vo D váûy âỉåüc k hiãûu båíi A ⌡ D váûy 143 Âàûc t n∈A⌡D a∈A⌡D Báy giåì s l âënh nghéa ba hm chuøn tiãúp láưn lỉåüt l f, g v h sỉí dủng thay âäøi (cho cạc âëa chè ca D liãn quan), khåíi âäüng lải thay cho håüp thỉïc họa (cho moüi âëa chè cuía D) : f = {fr → nw, nw → fr, thay âäøi cm → ol} g = {fr → fr, nw → fr, cm → cm,khåíi âäüng laûi ol → cm} h = {fr → fr, nw → cm, cm → cm,håüp thỉïc họa ol → fr} Ta cọ âàûc t ca phẹp toạn måïi mod2, rst2, v vld2 xút hiãûn l cạc måí räüng tỉång ỉïng tỉì mủc : (a, n, m, s) mod2 (x, y) (a’, n’, m’, s’) (a, n, m) mod1 (x, y) (a’, n’, m’) (6.5) s’ = s + {u → f (s (u)), v → f (s) (v))} xem (4.3) âoï : L = { Z ∈ D |s (z) = fr } u∈L v = n (x) (a, n, m, s) rst2 (a’, n’, m’, s’) (6.6) s’ = gos xem (4.6) (a, n, m, s) vld2 (a’, n’, m’, s’) (6.7) (a, n, m) vld1 (a’, n’, m’) xem (4.7) s’ = hos Sau õỏy laỡ mọỹt quaù trỗnh chuyóứn õọứi cuớa hóỷ thäúng CHỈÌA Chỉïng minh TS PHAN HUY KHẠNH biãn soản 143 144 Cäng nghãû Pháưn mãưm Màûc d mủc trỉåïc ta â kiãøm chỉïng k lỉåỵng âàûc t hãû thäúng v nháûn âỉåüc kãút qu tha mn, nhỉng chỉa âm bo âỉåüc âụng âàõn ca âàûc t mi trỉåìng håüp Âãø âi âãún mäüt kãút qu täøng quạt, ta cáưn phi chỉïng minh khäng phi cho mäüt trỉåìng håüp âàûc biãût no âọ m phi cho cạc dỉỵ liãûu tỉåüng trỉng tha mn nhỉỵng gi thiãút no âọ, cạc phẹp toạn â âàûc t l ph håüp v cháúp nháûn âỉåüc Viãûc chỉïng minh ph håüp ca cạc phẹp toạn âàûc t åí (6.5), (6.6) v (6.7) so våïi cạc phẹp toạn âàûc t åí (4.3), (4.6) vaỡ (4.7) laỡ hióứn nhión vỗ rũng caùch lỏỷp caùc cọng thổùc thỗ caùc pheùp toaùn (4.3), (4.6) v (4.7) mäüt cạch tỉång ỉïng Trại lải, viãûc chỉïng minh cháúp nháûn âỉåüc phỉïc tảp hån Trỉåïc hãút ta cáưn chỉïng minh ba nhọm âënh l báút biãún sau âáy : ((6.1) v (6.5)) kẹo theo (6.1)’ (7.1) ((6.2) v (6.5)) kẹo theo (6.2)’ (7.2) ((6.3) v (6.5)) kẹo theo (6.3)’ (7.3) ((6.1) v (6.6)) kẹo theo (6.1)’ (7.4) ((6.2) v (6.6)) kẹo theo (6.2)’ (7.5) ((6.3) v (6.6)) kẹo theo (6.3)’ (7.6) ((6.1) v (6.7)) kẹo theo (6.1)’ (7.7) ((6.2) v (6.7)) kẹo theo (6.2)’ (7.8) ((6.3) v (6.7)) kẹo theo (6.3)’ (7.9) Âäúi våïi âënh l åí nhọm 1, ta cọ thãø dáùn âãún cạc gi thiãút cho cạc âiãưu kiãûn sau âáy : a∈A⌡D n∈A⌡D u ∉ RN (7.10) u ∉ RA v ∈ RN Trong âọ u v âỉåüc âënh nghéa åí (6.5) v RA, RN âỉåüc âënh nghéa åí (6.2) chỉïng minh (7.1) Âàûc t 145 Mäüt khọ khàn nh l hm chuøn tiãúp f âỉåüc âënh nghéa åí (6.4) l hm bäü pháûn Cáưn chỉïng minh ràịng s’ âỉåüc âënh nghéa âụng, nghéa l cạc biãøu thỉïc f (s (u)) v f (s (v)) (6.5) cọ nghéa, nọi cạch khạc ta coï : s (u) ∈ dom (f) s (v) dom (f) õióửu naỡy hióứn nhión vỗ rũng theo (7.10), ta coï : s (u) = fr s (v) = { nw, cm} v theo (6.4) ta cọ dom (f) = {fr, nw, cm} Âãø chỉïng minh (7.2) v (7.3) ta cáưn kãút qu sau âáy liãn quan âãún sỉû quạ ti ca mäüt hm âån ạnh thỉìa nháûn m khäng chỉïng minh : f ∈ X ⌡ Y keïo theo f’ ∈ X ⌡ Y x ∈ dom (f) ran (f’) = r’ y ∉ Y - ran (f) y ≠ f (x) Trong âoï : f’ = f + {x → y} r’ = (ran (f) - {f (x)}) ∪ {y} chæïng minh (7.2) : Theo (7.10), (7.11) vaỡ (6.5) ta coù RA = RA (vỗ rũng a’ = a theo (4.3)) RN’ = (RN {V}) ∪ {u} theo 7.11 u v theo 7.10 HầNH VEẻ Xy hai trỉåìng håüp : 1/ v ∈ RA, nghéa l s (v) = cm Khi âọ : RA’ - RN’ = (RA - RN) ∪ {v} RA’ ∩ RN’ = (RA ∩ RN) - {v} RN’ - RA’ = (RN - RA) ∪ {u} RA’ ∪ RN’ = (RA RN) - {u} HầNH VEẻ 2/ v RA, nghéa l s (v) = nw Khi âọ : RA’ - RN’ = RA - RN TS PHAN HUY KHẠNH biãn soản 145 146 Cäng nghãû Pháưn mãưm RA’ ∩ RN’ = RA ∩ RN RN’ - RA’ = ((RN - RA) - {v}) ∪ {v} RN’ ∪ RA’ = ((RN RA) - {u} {v} HầNH VEẻ Nhỉ váûy cạc chuøn tiãúp tỉì s (u) v s (v) nhæ sau fr → nw våïi u cm → ol våïi v trỉåìng håüp 1/ nw → fr våïi v trỉåìng håüp 2/ Cạc chuøn tiãúp ny tỉång ỉïng våïi cạc chuøn tiãúp â chè båíi hm g âënh nghéa åí (6.4) IV.7 Triãøn khai thỉûc hiãûn láưn thỉï ba Láưn ny, ta gi thiãút ràịng xy cạc sai sọt cáưn phi dỉû phng nhåì hãû thäúng håüp thỉïc họa v khåíi âäüng lải Gi sỉí cạc bng a, n, m v s âỉåüc ci âàût trãn cạc thiãút bë nhåï khạc sau : HầNH VEẻ Tổỡ caùch tọứ chổùc naỡy, ta muọỳn dổỷ phng cạc sai sọt tạc âäüng lãn bäü nhåï bàịng cạch khåíi âäüng lải tỉì âéa ÅÍ âáy, ta â ci âàût cạc bng s v s bäü nhåï våïi mủc âêch tàng hiãûu qu ca phẹp thay âäøi bäü nhåï l nhanh nháút cọ thãø Våïi mủc âêch trãn, viãûc khåíi âäüng lải lm thay âäøi bng s tỉì chênh (thỉûc tãú l s’ = gos theo (6.6)) khäng cn cọ tạc dủng nỉỵa vỗ rũng ta giaớ thióỳt rũng bọỹ nhoù trung tỏm l s s khäng cn nỉỵa Mäüt gii phạp l gáúp âäi bng s lãn âéa cho mäùi láưn håüp thỉïc họa Xáy dỉûng bng måïi t âỉåüc tỉång ỉïng våïi báút biãún nhæ sau : t ∈ D → {fr, cm} (8.1) Chụ ràịng ta khäng cáưn mi giaù trở caùc traỷng thaùi õởa chố õộa vỗ rũng t chè dng âãø sinh lải bng s khåíi âäüng lải, tỉì âọ ta cọ báút biãún bäø sung nhæ sau : {x ∈ D | t (x) = cm} = ran (a) (8.2) Ta cọ cạc âàûc t måïi sau : (a, n, m, s, t) mod3 (x, y) (a’, n’, m’, s’, t’) (a, n, m, s) mod2 (x, y) (a’, n’, m’, s’) (8.3) t’ = t xem (6.5) (a, n, m, s, t) rst3 (a’, n’, m’, s’, t’) (a, n, m) rst1 (a’, n’, m’)(8.4) s’ = t xem (4.6) 147 Âàûc taí t’ = t (8.5) (a, n, m, s, t) vld3 (a’, n’, m’, s’, t’) (a, n, m, s) vld2 (a’, n’, m’, s’) xem (6.7) t’ = s’ Dãù dng chỉïng minh ràịng c ba âàûc t trãn l ph håüp v cháúp nháûn âỉåüc Màût khạc ta tháúy ràịng phẹp khåíi âäüng lải sinh bäü nhåï tỉì âéa v chè tỉì âéa m thäi Triãøn khai láưn thỉï tỉ v láưn thỉï nàm Ta s m họa cạc giạ trë fr, nw, cm v ol hm âån ạnh k sau : k = {(0, 0) → fr, (0, 1) → ol, (1, 0) → cm, (9.1) (1, 1) → nw} Sau âoï ta biãøu diãùn cạc hm s v t nhåì ba chùi bit nhæ sau : b ∈ D → {0, 1} âãø biãøu diãùn s c ∈ D → {0, 1} d → {0, 1}âãø biãøu diãùn t (9.2) Cuäúi cuìng, thay âäøi cạc biãún tỉång ỉïng våïi cạc âiãưu kiãûn sau : s (x) = k (b (x), c (x)) t (x) = k (d (x), 0) våïi x ∈ D (9.3) Gi sỉí l phẹp b (âo ngỉåüc bêt) nhæ sau = 1,1 = (9.4) Ta tháúy cọ thãø m họa hm f â âënh nghéa åí (6.4) nhåì hai phẹp b v hm h cng â dënh nghéa åí (6.4) nhåì phẹp chẹp v âàût lãư tỉång ỉïng våïi hm : Z ∈ D → {0} (9.5) Ta cọ âàûc t måïi sau : (a, n, m, b, c, d) mod4 (x, y) (a’, n’, m’, b’, c’, d’) (a, n, m) vld1 (a’, n’,m’) b’ = b (9.8) c’ = z xem (4.7) d’ = b Báy giåì ta chè cáưn toùm từt laỷi nhổợng gỗ õaợ laỡm cho õóỳn luùc ny, nghéa l mäüt màût, chẹp lải cạc âàûc t (4.3), (4.6) v (4.7) vo bãn ca (9.6), (9.7) v (9.8), màût khạc, nhọm cạc báút biãún (4.1), (6.1), (6.2), (6.3), (8.1), (8.2) v (9.2) Âiãưu ny lm âỉåüc bàịng cạch khỉí cạc biãún tråí thnh dỉ thỉìa (chỉïa s v t) båíi cạc phẹp thay âäøi biãún (9.3) TS PHAN HUY KHẠNH biãn soản 147 148 Cäng nghãû Pháưn mãưm Khi chẹp, ta tháúy ràịng âàûc t (4.3) chỉïa âiãưu kiãûn trỉåïc L ≠ ∅ khäng dóự gỗ tờnh õổồỹc óứ khừc phuỷc nhổồỹc õióứm naỡy ta âỉa vo mäüt biãún måïi w l mäüt säú ngun w∈N (9.9) w chỉïa cạc pháưn tỉí ca táûp håüp L (cardinality) w = | RA ∪ RN | Ta thỉìa nháûn ngáưm ràịng cạc táûp håüp D v A âãưu l hỉỵu hản Khi håüp thỉïc họa v khåíi âäüng lải, bäü âãúm w âỉåüc khåíi tảo giạ trở |D| - |A| (vỗ rũng a vaỡ n õóửu âån ạnh) l mäüt hàịng säú dỉång ca hãû thäúng Khi cọ sỉû thay âäøi, bäü âãúm w tàng lãn v chè âëa chè v, quạ ti n, âang åí trảng thại cm, nghéa l nãúu b (v) = vaì nãúu c (v) = Våïi sỉû måí räüng måïi ny, báút biãún ca hãû thäúng lục ny s l : a∈A→D (6.3) n∈A→D (6.3) m∈D→V (4.1) b ∈ D → {0, 1} (9.2) c ∈ D → {0, 1} (9.2) d ∈ D → {0, 1} (9.2) d ∈ D → {0, 1} (9.2) w∈N (9.9) RA - RN = {x ∈ D / b (x) = vaì c (x) = 1} (6.2) RA ∩ RN = {x ∈ D / b (x) = vaì c (x) = 0} (6.2) RN - RA = {x ∈ D / b (x) = vaì c (x) = 1} (6.2) RA ∪ RA {x ∈ D / b (x) = vaì c (x) = 0} (6.2) RA = {x ∈ D / d (x) = 1}(9.2) W = | RA ∪ RN | (9.10) Trong âoï RA = ran (a) RN = ran (n) Sau âáy l cạc âàûc t âỉåüc tọm tàõt bàịng cạch thay thãú cạc danh di cạc biãún båíi hai biãún trảng thại state v trảng thại cọ dáúu nhaïy (‘) state’ state mod5 (x, y) state’ x∈A y∈V w≠0 a’ = a n’ = n + {x → u} Âàûc taí 149 m’ = m + {u → y} b’ = b + {u → b (u) v → b (v)} (9.12) c’ = c + {u → c (u), v → c (v)} d’ = d (b (v) = & c (v) = 0) ⇒ w’ = w - Trong âoï u ∈ {Z ∈ D | b (z) = & c (z) = 0} v = n (x) state rst5 state’ a’ = a n’ = a m’ = m b’ = d (9.13) c’ = z d’ = d w’ = | D | - | A | state vdl5 state’ a’ = n n’ = n m’ = m b’ = b (9.14) c’ = z d’ = b w’ = | D | - | A | Trong âoï Z D {0} Sau õỏy laỡ quaù trỗnh bióỳn õọứi cuỷ thóứ IV.8 ỷc taớ laỡm gỗ ? Sau âáy ta s tr låìi cáu hi vãư mủc âêch (cho ai, cho caùi gỗ) cuớa caùc cọng vióỷc maỡ ta â lm Vai tr âáưu tiãn ca mäüt âàûc t l cho phẹp måí cạc tranh lûn vãư âãư ti âàûc t âãư ti âàûc t âãø cáûp õóỳn Thổỷc tóỳ, khaùc vồùi mọỹt chổồng trỗnh, mọỹt õỷc khäng phi viãút âãø mạy cọ thãø hiãøu âỉåüc m âãø cho nhỉỵng NSD cọ thãø hiãøu v tin tỉåíng vo âụng âàõn ca näüi dung â âàûc t Tỉì âàûc t lục âáưu åí mủc cho âãún cạc âàûc t tiãúp theo åí cạc mủc 4, 6, v 8, ta â sỉí dủng cạc rng büc mäùi lục mäüt mang thỉc tiãùn Ta â khàóng âënh âỉåüc âụng âàõn ca âàûc t båíi cạc chỉïng minh âënh l ph håüp v cháúp nháûn âỉåüc : bo ton báút biãún Báy giåì váún âãư l sỉí dủng cạc âàûc t âãø láûp trỗnh Trong muỷc naỡy, ta seợ lỏỷp trỗnh cho caùc trỉåìng håüp âàûc t (9.12), (9.13) v (9.14), bàịng cạch sỉí dủng ngän TS PHAN HUY KHẠNH biãn soản 149 150 Cäng nghãû Pháưn mãưm ngỉỵ gi Pascal Ta âỉa vo cạc quy tàõc âãø tiãút láûp mäúi liãn hãû giổợa õỷc taớ vaỡ lỏỷp trỗnh Quy từc : Khi mäüt âàûc t chỉïa cạc âiãưu kiãûn trỉåïc, chỉång trỗnh tổồng ổùng seợ laỡ mọỹt haỡm Theo nghộa cuớa Pascal, mäùi giạ trë sai ca âiãưu kiãûn trỉåïc s tr vãư biãún trảng thại state mäüt giạ trë phán bióỷt Chổồng trỗnh tổồng ổùng vồùi õỷc taớ (9.12) laỡ nhæ sau : if not (x in A) then state := bad - x else if not (y in v) then state := bad - y else if w = then state := no more place else begin State := OK ; Modification {gi th tủc} end ; Quy tàõc : Khi mäüt âàûc t chỉïa cạc biãún phủ, ta cọ thãø måí mi th tủc chỉïa cạc biãún ny l cạc biãún củc bäü Th tủc ny bàõt âáưu båíi cạc lãûnh khåíi âäüng Th tủc Modification nhæ sau : procedure Modification ; var u, v : D begin u := ; {choün u laì âëa chè bẹ nháút ca L} while (b (u) ≠ 0) or (c (u) ≠ 0) u := u + ; (10.2) v := n (x) {tiãúp tuûc thán th tủc end ; Quy tàõc : Cạc âiãưu kiãûn sau khạc nãúu cọ dảng a’ = (trong âoï dáúu ba cháúm chè âënh mäüt biãøu thỉïc khåíi âäüng chỉïa cạc biãún cọ âạnh dáúu nhaùy), thỗ coù thóứ õổồỹc chuyóứn thaỡnh pheùp gaùn qua cạc quy tàõc bäø tråü sau : - Loải b cạc âiãưu kiãûn sau dảng âàóng thỉïc Vê dủ : d’ = d - Thay thãú dáúu = båíi dáúu gạn bàịng := - Thỉûc hiãûn phẹp täúi ỉu mäüt hm l quạ ti 151 Âàûc t - Loải b cạc dáúu nhạy ‘ - Thay thãú mäüt âiãưu kiãûn sau båíi cáúu trục âiãưu kiãûn if else : Cạc âiãưu kiãûn sau khäng bë loải b ca âàûc t (9.12) sau : if not (x in A) then state := bad - x else if not (y in V) then state := bad - y (10.1) else if w = then state := no-more-place else begin state := O.K ; Modication {goüi giaï trë th tủc} end ; Quy tàõc : Khi mäüt âàûc t chỉïa cạc biãún phủ, ta cọ thãø måí mäüt th tủc chỉïa cạc biãún ny l cạc biãún củc bäü Th tủc ny bàõt âáưu båíi cạc lãûnh khåíi âäüng Th tủc Modication sau : Procedure Modication ; var u, v : D begin u := ; {chn u l âëa chè bẹ nháútca L} æhile (b (u) ≠ 0) or (c (u) ≠ 0) u := u + ; (10.2) v := n (x) {tiãúp tủc thán th tủc end ; Quy tàõc : Cạc âiãưu kiãûn sau khạc nãúu âãưu cọ dảng a’ = (trong âọ dáúu cháúm chè dënh mäüt biãøu thỉïc khäng chỉïa cạc biãún coù õaùnh dỏỳu nhaùy), thỗ coù thóứ õổồỹc chuyóứn thaỡnh phẹp gạn qua cạc quy tàõc bäø tråü sau : - Loải b cạc âiãưu kiãûn sau dảng âàóng thỉïc Vê dủ : d’ = d - Thay thãú dáúu = båíi dáúu gạn bàịng := - thỉûc hiãûn phẹp täúi ỉu mäüt hm l quạ ti - Loải b cạc dáúu nhạy ‘ - Thay thãú mäüt âiãưukiãûn sau båíi cáúu trục âiãưu kiãûn if else : Cạc âiãưu kiãûn sau khäng loải b ca âàûc t (9.12) sau : n (x) := u ; m (u) := y ; (10.3) TS PHAN HUY KHAÏNH biãn soản 151 152 Cäng nghãû Pháưn mãưm b (u) := b (u) ; b (v) := b (v) ; c (u) := c (u) ; c (v) = c (v) ; if (b (v) = 1) and (c (v) = 0) then w := w - Quy tàõc : Mọỹt caùch hóỷ thọỳng caùc hóỷ chổồng trỗnh â viãút âỉåüc båíi cạc quy tàõc âm bo “song song” âỉa vo tỉì âàûc t Tỉì cạc âoản chổồng trỗnh (10.1), (10.2) vaỡ (10.3) ta nhỏỷn õổồỹc cọng thỉïc âáúy â hån sau : 153 Âàûc t Mäüt säú âãư thi I Âàûc t (Specification) Cho ma tráûn vng A cáúp n×n Viãút âàûc t thãø hiãûn : a) Mäùi pháưn tỉí trãn âỉåìng chẹo chênh l pháưn tỉí låïn nháút trãn cng hng âi qua pháưn tỉí âọ b) Mäùi pháưn tỉí trãn âỉåìng chẹo phủ l pháưn tỉí nh nháút trãn cng cäüt âi qua pháưn tỉí âọ Mäüt xáu (string) w âỉåüc gi l âäúi xỉïng (palindrome) nãúu w = wR hay âc xi ngỉåüc âc ngỉåüc âãưu (wR l xáu âo ngỉåüc ca w) Vê dủ cạc xáu omo, mannam, âãưu l âäúi xỉïng Viãút âàûc t thãø hiãûn cạc xáu âäúi xỉïng Âa thỉïc cáúp n âỉåüc viãút dỉåïi dảng Toạn hc l : Pn(x) = a0 + a1x1 + a2x2 + + anxn Viãút âàûc t thãø hiãûn phẹp cäüng, so sạnh hai âa thỉïc Pn(x) v Qm(x), nhán âa thỉïc våïi mäüt hàịng säú a × Pn(x) v nhán hai âa thỉïc Pn(x) × Qm(x) Cạc phán säú (hay säú hỉỵu t) âỉåüc biãøu diãùn båíi danh (n, d), våïi n l tỉí säú v d l máùu säú, l nhỉỵng säú ngun (d ≠ 0) Viãút âàûc t xáy dỉûng cạc hm xỉí l phán säú: rụt gn, trỉì, chia v so sạnh hai phán säú, cäüng, nhán hai phán säú v chuøn âäøi phán säú thnh säú thỉûc II Lỏỷp trỗnh cỏỳu truùc (Structured programming) Vióỳt lóỷnh bũng gi ngỉỵ (phng Pascal), chè sỉí dủng täúi âa ba cáúu trục tưn tỉû, âiãưu kiãûn if v làûp (while-repeat), theo cạc så âäư khäúi dỉåïi âáy : Âụng C1 S1 Sai Âuïng S1 C1 Sai Âuïng Sai C2 S2 Sai S2 C2 Âụng TS PHAN HUY KHẠNH biãn soản 153 154 Cäng nghãû Pháưn mãưm Sai S1 C1 Âụng Sai C1 S1 Âuïng Sai S2 S3 C2 Âuïng Sai S2 S3 C2 Âuïng Âuïng C1 S1 Sai Sai C1 S2 S1 Âuïng C2 Sai Âuïng C2 Âuïng Sai S3 S2 Viãút lãûnh bàịng gi ngỉỵ (phng Pascal), chè sỉí dủng täúi âa ba cáúu trục tưn tỉû, âiãưu kiãûn if v làûp (while repeat), theo så âäư khäúi dổồùi õỏy : III Thổớ nghióỷm chổồng trỗnh (Testing) Giaớ sổớ caùc chổồng trỗnh õaợ cho ồớ phỏửn trón õỏy l cạc âån thãø gi âãún cạc âån thãø S1, S2 vaỡ S3) Trỗnh baỡy mọỹt phổồng phaùp õóứ thỉí nghiãûm âån thãø gi

Ngày đăng: 08/10/2012, 14:41

Hình ảnh liên quan

Hình 1.1. Quá trình tạo ra một sản phẩm phần mềm - Giáo trình Công nghệ phầm mềm

Hình 1.1..

Quá trình tạo ra một sản phẩm phần mềm Xem tại trang 10 của tài liệu.
4. Sau khi sửa sai với 5. Triển khai cho khách hàng 6. Ước mơ của người sử dụng ! - Giáo trình Công nghệ phầm mềm

4..

Sau khi sửa sai với 5. Triển khai cho khách hàng 6. Ước mơ của người sử dụng ! Xem tại trang 10 của tài liệu.
Có nhiều mô hình khác nhau để thể hiện một chu kỳ sống (life cycle). Sau đây là một chu kỳ sống kiểu cổ điển theo mô hình thác nước (“waterfall” model) gồm  các giai đoạn như sau :  - Giáo trình Công nghệ phầm mềm

nhi.

ều mô hình khác nhau để thể hiện một chu kỳ sống (life cycle). Sau đây là một chu kỳ sống kiểu cổ điển theo mô hình thác nước (“waterfall” model) gồm các giai đoạn như sau : Xem tại trang 12 của tài liệu.
Hình 1.3. Tiếp cận kiểu bản mẫu - Giáo trình Công nghệ phầm mềm

Hình 1.3..

Tiếp cận kiểu bản mẫu Xem tại trang 13 của tài liệu.
Tuy nhiên, một mô hình chứa các vòng lặp sẽ làm khó khăn cho việc quản lý và báo cáo. Có nhiều dạng mô hình trong tiến trình phần mềm - Giáo trình Công nghệ phầm mềm

uy.

nhiên, một mô hình chứa các vòng lặp sẽ làm khó khăn cho việc quản lý và báo cáo. Có nhiều dạng mô hình trong tiến trình phần mềm Xem tại trang 14 của tài liệu.
Hình 1.5. Mô hình xoắn ốc - Giáo trình Công nghệ phầm mềm

Hình 1.5..

Mô hình xoắn ốc Xem tại trang 15 của tài liệu.
Bộ tương tác và thiết kế màn hình.  Bộ sinh chương trình.  - Giáo trình Công nghệ phầm mềm

t.

ương tác và thiết kế màn hình. Bộ sinh chương trình. Xem tại trang 16 của tài liệu.
Bảng tính.  Công cụ đồ họa.  - Giáo trình Công nghệ phầm mềm

Bảng t.

ính. Công cụ đồ họa. Xem tại trang 16 của tài liệu.
Mô hình xoáy tròn ốc4 GT - Giáo trình Công nghệ phầm mềm

h.

ình xoáy tròn ốc4 GT Xem tại trang 17 của tài liệu.
Hình 2.1. Chương trình là một hệ thống phân cấp - Giáo trình Công nghệ phầm mềm

Hình 2.1..

Chương trình là một hệ thống phân cấp Xem tại trang 22 của tài liệu.
Hình 2.2. Phân tích bài toán cộng hai phân số - Giáo trình Công nghệ phầm mềm

Hình 2.2..

Phân tích bài toán cộng hai phân số Xem tại trang 23 của tài liệu.
Hình 2.4. Chuyển về cấu trúc tuần tự và lặp while (SW) - Giáo trình Công nghệ phầm mềm

Hình 2.4..

Chuyển về cấu trúc tuần tự và lặp while (SW) Xem tại trang 30 của tài liệu.
Hình 2.5. Mối liên hệ giữa các đơn thể - Giáo trình Công nghệ phầm mềm

Hình 2.5..

Mối liên hệ giữa các đơn thể Xem tại trang 33 của tài liệu.
Hình 2.6. Cấu trúc cây thuần túy - Giáo trình Công nghệ phầm mềm

Hình 2.6..

Cấu trúc cây thuần túy Xem tại trang 34 của tài liệu.
Hình 2.8. Bàn cờ vua cho bài toán tám quân hậu - Giáo trình Công nghệ phầm mềm

Hình 2.8..

Bàn cờ vua cho bài toán tám quân hậu Xem tại trang 40 của tài liệu.
Hình 2.9. Các vị trí khác nhau của quân mã - Giáo trình Công nghệ phầm mềm

Hình 2.9..

Các vị trí khác nhau của quân mã Xem tại trang 46 của tài liệu.
Hình 3.1. Kỹ thuật tĩnh và kỹ thuật động của quá trình V&V - Giáo trình Công nghệ phầm mềm

Hình 3.1..

Kỹ thuật tĩnh và kỹ thuật động của quá trình V&V Xem tại trang 57 của tài liệu.
Suy luận Toán học là một hình thức tư duy mà từ một hay nhiều mệnh đề logic đã có (phán đoán) rút ra được một mệnh đề logic mới - Giáo trình Công nghệ phầm mềm

uy.

luận Toán học là một hình thức tư duy mà từ một hay nhiều mệnh đề logic đã có (phán đoán) rút ra được một mệnh đề logic mới Xem tại trang 59 của tài liệu.
Trong bảng trên, dấu ∴ được đọc là vậy thì. Mỗi luật (cơ sở của phép suy luận), chẳng hạn luật tách rời (Modus Ponens), có thể viết dưới dạng hằng đúng :  - Giáo trình Công nghệ phầm mềm

rong.

bảng trên, dấu ∴ được đọc là vậy thì. Mỗi luật (cơ sở của phép suy luận), chẳng hạn luật tách rời (Modus Ponens), có thể viết dưới dạng hằng đúng : Xem tại trang 60 của tài liệu.
III.2.1. Lời giải thứ nhất - Giáo trình Công nghệ phầm mềm

2.1..

Lời giải thứ nhất Xem tại trang 74 của tài liệu.
Ta sẽ sử dụng một vòng lặp while với bất biến như hình dưới đây và điềukiện kiểm tra dừng là “vùng X rỗng” - Giáo trình Công nghệ phầm mềm

a.

sẽ sử dụng một vòng lặp while với bất biến như hình dưới đây và điềukiện kiểm tra dừng là “vùng X rỗng” Xem tại trang 74 của tài liệu.
Từ đó đưa đến chương trình (tạm thời chấp nhận việc chứng minh không hình thức) :  - Giáo trình Công nghệ phầm mềm

a.

đến chương trình (tạm thời chấp nhận việc chứng minh không hình thức) : Xem tại trang 75 của tài liệu.
Hình 4.3. Các đơn thể vắng mặt được thay bởi các trình stubs - Giáo trình Công nghệ phầm mềm

Hình 4.3..

Các đơn thể vắng mặt được thay bởi các trình stubs Xem tại trang 94 của tài liệu.
Hình 4.6. Thử nghiệm từ dưới lên - Giáo trình Công nghệ phầm mềm

Hình 4.6..

Thử nghiệm từ dưới lên Xem tại trang 96 của tài liệu.
Hình 4.5. Phương pháp thử nghiệm từ trên xuống - Giáo trình Công nghệ phầm mềm

Hình 4.5..

Phương pháp thử nghiệm từ trên xuống Xem tại trang 96 của tài liệu.
Cho chồn gn đĩa n=64 xếp thành hình tháp ở cộ tA (lớn nhất dưới cùng và nhỏ dần lên trên) - Giáo trình Công nghệ phầm mềm

ho.

chồn gn đĩa n=64 xếp thành hình tháp ở cộ tA (lớn nhất dưới cùng và nhỏ dần lên trên) Xem tại trang 107 của tài liệu.
Hình 5.3. Vectơ được sắp xếp thứ tự - Giáo trình Công nghệ phầm mềm

Hình 5.3..

Vectơ được sắp xếp thứ tự Xem tại trang 112 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan