1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Công nghệ phần mềm - Phan Huy Khánh

154 46 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 154
Dung lượng 2,37 MB

Nội dung

Bài giảng Công nghệ phần mềm cung cấp cho người học các kiến thức: Đại cương về công nghệ phần mềm, thiết kế phần mềm, hợp thức hóa phần mềm, thử nghiệm chương trình, đặc tả phần mềm. Mời các bạn cùng tham khảo nội dung chi tiết.

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 CuuDuongThanCong.com i https://fb.com/tailieudientucntt 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 CUA 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 tờnh õ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 Âaïnh giaï 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 Baìi toạn cåì tam ti 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 âụng âàõn ca 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 Haìm 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 õuùng õừn cuớa chổồng trỗnh 84 TS PHAN HUY KHAÏNH biãn soản CuuDuongThanCong.com ii https://fb.com/tailieudientucntt Mủc lủc IV.2 Cạc tiãn âãư gaï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 BAÌI TÁÛP 89 CHỈÅNG THặ NGHIM 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ãú caïc phẹp thỉí phạ hy (Defect Testing) 98 II.4.1 Cạc phỉång phạp dỉûa trãn chỉång trỗnh 98 II.4.2 Cạc phỉång phạp dỉûa trãn âàûc t 100 II.4.3 Kãút luáûn 101 II.4.4 Cạc tiãu chøn kãút thục thỉí nghiãûm 101 II.5 Caï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 t 105 I.1.3 Cạc thê dủ minh hoüa 106 I.2 ỷc taớ vaỡ lỏỷp trỗnh 107 II C TA CU TRUẽC Dặẻ LIU 109 II.1 Khạ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 Cạc thût toạn xỉí l vectå 111 II.3.1 Truy tỗm tuỏửn tổỷ mọỹt phỏửn tổớ cuớa 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 loaûi cạc phẹp toạn 119 III.3 Hảng v biãún 120 III.4 Phẹp thãú cạc hảng 120 TS PHAN HUY KHẠNH biãn soản CuuDuongThanCong.com iii https://fb.com/tailieudientucntt iv Cäng nghãû Pháưn mãưm III.5 Cạc thüc ca âàûc t 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 Khại niãûm vãư l thuút quy naûp 125 III.6.3 Chỉïng minh tỉû âäüng båíi viãút lả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 taû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 CuuDuongThanCong.com iv https://fb.com/tailieudientucntt Âả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 maù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ố xuỏỳt hiãûn cạch âáy hån bäún mỉåi nàm Sút hån bọỳn thỏỷp kyớ qua, lỏỷp trỗnh khọng ngổỡng õổồỹc caới 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 nhc, nàng sú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 âi hi ngổồỡi lỏỷp trỗnh chờnh voỡng thaùng thỗ nàng sút mäùi ngỉåìi chè dao âäüng khong tỉì õóỳn lóỷnh mọựi ngaỡy (?!) Chờnh vỗ caùc sn 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 MTT õỏửu tiãn, ngỉåìi ta sỉí dủng ngän ngỉỵ mạy (machine language) hay 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 vo mạy Theo â phạt triãøn ca cạ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ổợ 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 doỡng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt Âả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 cạch ca säú phỉïc Láûp trỗnh HT õổa vaỡo nhióửu thuỏỷt ngổợ vaỡ khaù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 khaớ 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ổợ 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 dủng cng âỉåüc trang bë thãm kh nàng ÂHÂT, laỡ 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ãù dng chènh sỉía vãư mu sàõc, kêch thỉåïc, hỗnh daùng vaỡ caùc xổớ lyù thờch hồỹp lón caù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 phạ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 duỷ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 Nàng sút åí âáy âỉåüc hiãøu l âụng âàõn cuớa 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt Cäng nghãû Pháưn mãưm Thỉûc cháút ca 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 tạc cọ 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 qu Nhỉỵng tỉ tỉåíng cạch mả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ãú no âãø lm ch âỉåüc sỉû phỉïc tảp ca hoaỷ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 l gỗ? Theo tổỡ õióứn Computer Dictionary cuớa 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 laỡ tỏỷp hồỹp caùc phổồng phaùp, mọ hỗnh, kyợ thût, cäng củ 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 âọ l : âàûc t (specifiction), thiãút kãú (design), lỏỷp trỗnh (programming), thổớ nghióỷm (testing), sổớa sai (debugging), ci âàût (setup) âãø âem vo ỉïng dủng (application), bo trỗ (maintenance) vaỡ lỏỷp họử sồ (documentation) Muỷ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 yóỳu tọỳ Chúng haỷn chổồng trỗnh chaỷy nhanh, dóự sổớ dủng, cọ 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt Âả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ỉí l, 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 v 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 l âån thãø, dãù âc, dãù hiãøu m chè nhỉỵng ngỉåìi lm Tin hoüc chuyãn nghiãûp måïi biãútû âæåüc Yãú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 ngoi II.3 Sn phỏứm phỏửn móửm laỡ gỗ ? Mỷc duỡ ngổồỡi ta khäng âënh nghéa nhỉng khại niãûm sn pháøm pháưn mãưm õổồỹc hióứu nhổ laỡ mọỹt hóỷ thọửng chổồng trỗnh thổỷc hiãûn mäüt nhiãûm vủ 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 haình : 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 ) Caùc ngổợ lỏỷp trỗnh (chổồng trỗnh dởch) : Turbo Pascal, Turbo C, C++ Hãû quaín 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 tảo, ngỉåìi mạy, v.v Caùc chổồng trỗnh phoỡng chọỳng virus, v.v Dổồùi õỏy laỡ baớng toùm từt quaù 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 âãø baìn (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) Maûng thäng tin ton cáưu (Worldwide communication network) Xỉí l song song (Paralell processing) Sau âáy l mäüt tranh vui vãư quaù trỗnh taỷo mọỹt saớn phỏứm phỏửn móửm õaợ 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ỉí dủng ! Hỗnh 1.1 Quaù trỗnh taỷo mọỹt saớn phỏứm pháön mãöm CuuDuongThanCong.com https://fb.com/tailieudientucntt 140 Cäng nghãû Pháön mãöm IV.5 Phẹp håüp thnh (cáúu tảo) ÅÍ mủc trỉåïc, ta â sổớ duỷng mọỹt caùch phi hỗnh thổùc pheùp hồỹp thaỡnh (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 caù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) = ∅ kẹo theo fog = { } (5.4) Biãøu thỉïc { } chè âënh haìm 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) V 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 } CuuDuongThanCong.com https://fb.com/tailieudientucntt 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) vaì (5.8) Vaì ta cng cọ : (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 khạc ta cọ : 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 CuuDuongThanCong.com 141 https://fb.com/tailieudientucntt 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) vaì d ∉ ran (n) Khi mäüt âëa chè tæû âæåüc choün, 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 tọm tàõt mäüt cạch phi hỗnh thổùc nhổợng chuyóứn õọứi khaùc naỡy Muỷc õờch õóứ hỗnh thổùc hoùa phổồng phaùp naỡy, ta õổa vaỡo mäüt biãún måïi s âënh nghéa trảng thại ca mäùi âëa chè cuía 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} Cuäúi cuìng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 mi âëa chè ca D) : f = {fr → nw, nw → fr, thay âäøi cm → ol} g = {fr → fr, nw → fr, cm → cm,khåíi âäüng lả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 l mäüt quạ trỗnh chuyóứn õọứi cuớa hóỷ thọỳng CHặèA Chổùng minh TS PHAN HUY KHẠNH biãn soản CuuDuongThanCong.com 143 https://fb.com/tailieudientucntt 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) v (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) vaỡ (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 nhoïm âënh lyï 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 âoï u v âỉåüc âënh nghéa åí (6.5) v RA, RN âỉåüc âënh nghéa åí (6.2) chỉïng minh (7.1) CuuDuongThanCong.com https://fb.com/tailieudientucntt 145 Âàûc t 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 kẹ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ẻ Xaớy 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 KHAÏNH biãn soản CuuDuongThanCong.com 145 https://fb.com/tailieudientucntt 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 V 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 moỹi 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) CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 âọ ta biãøu diãùn cạc hm s v t nhåì ba chùi bit sau : b ∈ D → {0, 1} âãø biãøu diãùn s c ∈ D → {0, 1} d → {0, 1}âãø biãøu diãùn t (9.2) Cúi cng, 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) 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 coï âàû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 lụ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) vaì (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 CuuDuongThanCong.com 147 https://fb.com/tailieudientucntt 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 phủc nhỉåüc âiãøm ny 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 taỷo giaù trở |D| - |A| (vỗ ràòng a v 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 vaì chè âëa chè v, quạ ti n, âang åí trảng thại cm, nghéa laì 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 nhạy (‘) state’ state mod5 (x, y) state’ x∈A y∈V w≠0 a’ = a n’ = n + {x → u} CuuDuongThanCong.com https://fb.com/tailieudientucntt 149 Âàûc taí 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 seợ 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 õaợ laỡm 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 phaới 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ổớ duỷng caùc õỷc taớ õóứ 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 CuuDuongThanCong.com 149 https://fb.com/tailieudientucntt 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 taớ chổùa caùc õióửu kióỷn trổồùc, chổồng trỗnh tỉång ỉïng s l mäüt hm Theo nghéa ca 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 nhạy), thỗ coù thóứ õổồỹc chuyóứn thaỡnh pheùp gaùn qua caù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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 thnh 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 KHẠNH biãn soản CuuDuongThanCong.com 151 https://fb.com/tailieudientucntt 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 õaợ vióỳt õổồỹc bồới caùc quy từc âm bo “song song” âỉa vo tỉì âàûc t Tổỡ caùc õoaỷn chổồng trỗnh (10.1), (10.2) vaỡ (10.3) ta nháûn âỉåüc cäng thỉïc âáúy â hån sau : CuuDuongThanCong.com https://fb.com/tailieudientucntt 153 Âàûc t Mäüt säú âãư thi I Âàûc taí (Specification) Cho ma tráûn vuäng 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 âoüc xuäi ngæåüc âoü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 hoüc laì : 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äú vaì chuyãøn âäøi phán sọỳ thaỡnh 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 Âụng S1 C1 Sai Âuïng Sai C2 S2 Sai S2 C2 Âuïng TS PHAN HUY KHẠNH biãn soản CuuDuongThanCong.com 153 https://fb.com/tailieudientucntt 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 laỡ caùc õồn thãø gi âãún cạc âån thãø S1, S2 v S3) Trỗnh baỡy mọỹt phổồng phaùp õóứ thổớ nghióỷm õồn thãø goüi CuuDuongThanCong.com https://fb.com/tailieudientucntt ... bæåïc : - Phán têch hãû thäúng - Láûp kãú hoảch dỉû ạn pháưn mãưm - Phán têch u cáưu thỉûc tiãùn Giai âoản phạt triãøn : Giai âoản ny tr låìi cáu hi lm thãú no ? (How?) Gäưm bỉåïc : - Thiãút... caùc kyợ thuỏỷt TS PHAN HUY KHẠNH biãn soản CuuDuongThanCong.com 17 https://fb.com/tailieudientucntt CHỈÅNG Thiãút kãú pháưn mãưm I Nãưn tng ca thiãút kãú pháưn mãưm TS PHAN HUY KHẠNH biãn soản... âäøi pháưn mãưm, khàõc phủc khiãúm khuút - Thêch nghi : Nhàòm lm pháưn mãưm thêch nghi våïi mäi trỉåìng pháưn cỉïng, CPU, OS, cạc thiãút bë vi TS PHAN HUY KHẠNH biãn soản CuuDuongThanCong.com

Ngày đăng: 11/01/2020, 19:24