Tải bản đầy đủ (.pdf) (154 trang)

Công nghệ phần mềm docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.54 MB, 154 trang )




Mủc lủc

CHỈÅNG 1 5ÂẢI CỈÅNG VÃƯ CÄNG NGHÃÛ PHÁƯN MÃƯM
I. KHẠI QUẠT VÃƯ LËCH SỈÍ LÁÛP TRÇNH 5
I.1. Láûp trçnh tuún tênh 5
I.2. Láûp trçnh cọ cáúu trục 6
I.3. Láûp trçnh âënh hỉåïng âäúi tỉåüng (ÂHÂT) 6
I.4. Láûp trçnh trỉûc quan 7
I.5. Nhỉỵng tỉ tỉåíng cạch mảng trong láûp trçnh 7
II. CẠC PHỈÅNG DIÃÛN CA CÄNG NGHÃÛ PHÁƯN MÃƯM 8
II.1. Cäng nghãû pháưn mãưm l gç? 8
II.2. Nhỉỵng úu täú cháút lỉåüng bãn ngoi v bãn trong 8
II.3. Sn pháøm pháưn mãưm l gç ? 9
III. NHỈỴNG NÄÜI DUNG CÅ BN CA 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 2 18THIÃÚT KÃÚ PHÁƯN MÃƯM
I. NÃƯN TNG CA THIÃÚT KÃÚ PHÁƯN MÃƯM 18
II. PHỈÅNG PHẠP LÁÛP TRÇNH CÁÚU TRỤC 20
II.1. Khại niãûm vãư láûp trçnh cáúu trục 22
II.2. Nhỉỵng tỉåíng cå bn láûp trçnh cáúu trục 22
II.3. Cạc cáúu trục âiãưu khiãøn chøn 25
II.4. Mäüt säú vê dủ viãút chỉång trçnh theo så âäư khäúi 28
III. CÁÚU TRỤC TÄÚI THIÃØU 29
III.1. Cạc cáúu trục läưng nhau 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 loải âån thãø 33
IV.2.2. Täø chỉïc mäüt chỉång trçnh cọ cáúu trục âån thãø 33
V. PHẠ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ê dủ minh hoả 36
V.2.1. Vê dủ 1 36
V.2.2. Bi toạn 8 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. PHỦ LỦ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. Bi táûp 55
CHỈÅNG 3 57HÅÜP THỈÏC HỌA PHÁƯN MÃƯM
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 lûn Toạn hc 59
II.1.1. Cạc quy tàõc suy lûn Toạn hc 59
II.1.2. Khại niãûm vãư chỉïng minh tênh âụng âàõn ca 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 vng làûp while 63
II.1.7. Cạc quy tàõc khạc 64
II.2. Phỉång phạp ca C.A.R. Hoare 66
II.2.1. Phạt biãøu 66
II.2.2. Chỉïng minh tênh âụ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. XÁY DỈÛNG CHỈÅNG TRÇNH 72
III.1. Måí âáưu 72
III.2. Bi 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 tênh âụng âàõn ca chỉång trçnh (I) 76
III.3. In ra mäüt danh sạch 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. Hm 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 tênh âụng âàõn ca 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 tênh 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 4 90THỈÍ NGHIÃÛM CHỈÅNG TRÇNH
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 trong 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. 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 lûn 101
II.4.4. Cạ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. Måí âáưu 102
II.5.2. Ỉåïc lỉåüng âäü äøn âënh ca mäüt pháưn mãưm 104
CHỈÅNG 5 105ÂÀÛC T PHÁƯN MÃƯM
I. MÅÍ ÂÁƯU ÂÀÛC T PHÁƯN MÃƯM 105
I.1. Khại niãûm vãư âàûc t 105
I.1.1. Âàûc t l gç ? 105
I.1.2. Cạc phỉång phạp âàûc t 105
I.1.3. Cạc thê dủ minh ha 106
I.2. Âàûc t v láûp trçnh 107
II. ÂÀÛC T CÁÚU TRỤC DỈỴ LIÃÛU 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 t 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 tư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. Phẹp thãú cạc hảng 120
TS. PHAN HUY KHẠNH biãn soản iii
iv Cäng nghãû Pháưn mãưm
III.5. Cạc thüc tênh 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 trong âàûc t âải säú 123
III.6.1. L thuúttỉång âỉång 124
III.6.2. Khại niãûm vãư l thuút quy nảp 125
III.6.3. Chỉïng minh tỉû âäüng båíi viãút lải 126
III.6.4. Phán cáúp trong âàû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. Hm 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 t lm gç ? 149

TS. PHAN HUY KHẠNH biãn soản iv
Âải cỉång vãư cäng nghãû pháưn mãưm 5

CHỈÅNG 1
Âả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 tênh âiãûn tỉí (MTÂT)
l mäüt ngnh cn ráút måïi m. MTÂT âáư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
1
. Sút hån bäún tháûp k 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 ca ngỉåìi láûp trçnh.
Láûp trçnh l 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 3 ngỉåìi láûp trçnh chênh trong vng 6 thạng thç nàng sút mäùi ngỉåìi chè dao
âäüng trong khong tỉì 5 âãún 6 lãûnh mäùi ngy (?!).
Chênh vç cạc sn pháøm pháưn mãưm khi tung ra thë trỉåìng chỉa thỉûc sỉû hon
ho ngay 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 ra sau â khàõ
c phủc âỉåüc
nhỉỵng khiãúm khuút ca phiãn bn trỉåïc âọ.
V
V
ê
ê


d
d
u
u
û
û





1
1


:
:


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 tuú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 v dng cạc khoạ cå khê
âãø nả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ỉí
dủng. Mạy s dëch chỉång trçnh âọ sang ngän ngỉỵ mạy trỉåïc khi thỉûc hiãûn.
Våïi nhỉỵng ngän ngỉỵ láûp trçnh ban âáưu, chỉång trçnh viãút ra gäưm nhỉỵng dng
lãûnh cọ khuynh hỉåïng näúi nhau theo dy di, khọ hiãøu vãư màût logic. Ngỉåìi ta sỉí

1
ENIAC (Electronic Numerical Integrator and Computer) l chiãúc MTÂT âáưu tiãn ra âåì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 5
6 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 cạch tu tiãûn. Chỉång

trçnh l mäüt måï räúi ràõm khäng khạc gç mọn mç såüi (spaghetti) ca nỉåïc .
Cạc ngän ngỉỵ láûp trçnh tuún tênh khäng kiãøm soạt âỉåüc nhỉỵng sỉ thay âäøi
ca dỉỵ liãûu. Mi dỉỵ liãûu sỉí dủng trong chỉång trçnh âãưu cọ tênh ton củc v cọ thãø
bë thay âäøi vo báút cỉï lục no. Vo giai âoản ny, 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.
I.3.
Láûp trçnh cọ cáúu trục
Vo cúi nhỉỵng nàm 1960 v âáưu 1970, khuynh hỉåïng láûp trçnh cáúu trục
(structured programming) ra âåìi. Theo phỉång phạp ny, mäüt chỉång trçnh cọ cáúu
trục âỉåüc täø chỉïc theo cạc phẹp toạn m nọ phi thỉûc hiãûn. Chỉång trçnh bao gäưm
nhiãưu th tủc, hay hm, riãng r. 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 nhau
bàòng cạc tham biãún.
Láûp trçnh cáúu trục lm cho viãûc kiãøm soạt chỉång trçnh dãù dng hån, v do váûy,
gii quút bi toạn dãù dng hån. Tênh hiãûu qu ca láûp trçnh cáúu trục thãø hiãûn åí
kh nàng trỉìu tỉåüng hoạ. Trong mäüt chỉång trçnh cọ cáúu trụ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 nhỉ thãú no l khäng quan trng, chng
no cn â tin cáûy.
Màûc d k thût thiãút kãú v láûp trçnh cáúu trục âỉåüc sỉí dủng räüng ri nhỉng
váùn bäüc läü nhỉỵng khiãúm khuút. Khi âäü phỉïc tảp tàng lãn thç sỉû phủ thüc ca
chỉång trçnh vo kiãøu dỉỵ liãûu m nọ xỉí l cng tàng theo. Cáúu trục dỉỵ liãûu trong
mäüt chỉång trçnh cọ vai tr quan trng cng nhỉ cạc phẹp toạn thỉûc hiãûn trãn
chụng. Mäüt khi cọ sỉû thay âäøi trãn mäüt kiãøu dỉỵ liãûu thç mäüt th tủc n
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 tạc giỉỵa cạc thnh viãn láûp

trçnh. Mäüt chỉång trçnh cọ cáúu trục âỉåüc giao cho nhiãưu ngỉåìi thç khi cọ sỉû thay
âäøi vãư cáúu trục dỉỵ liãûu ca mäüt ngỉåìi s nh hỉåíng âãún cäng viãûc ca nhỉỵng ngỉåìi
khạc.
Láûp trçnh âënh hỉåïng âäúi tỉåüng (ÂHÂT)
Láûp trçnh ÂHÂT (oriented-object programming) âỉåüc xáy dỉûng trãn nãưn tng
ca láûp trçnh cáúu trục v trỉìu tỉåüng hoạ dỉỵ liãûu (data abstraction).
Chỉång trçnh ÂHÂT âỉåüc thiãút kãú xung quanh dỉỵ liãûu m nọ 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 7
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 hoạ trong mi ngän 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 cạch biãøu diãùn nhë phán trong mạy ca chụng
nhỉ thãú no.
Láûp trçnh ÂHÂT 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 trục
no âọ thç tỉång ỉïng, ta cọ 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
dng trong tênh toạn. Khäng thãø viãút säú phỉïc lãn tãûp nhỉ 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 nhau nhỉ cạch ca 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 ca láûp trçnh ÂHÂT l lm cho viãûc phạt triãøn pháưn mãưm nhanh
chọng hån våïi kh nàng dng lải cạc chỉång trçnh c. Mäüt låïp måïi âỉåüc xem nhỉ
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 trong nhỉỵng ngän ngỉỵ láû

p trçnh ÂHÂT âỉåüc nọi âãún l SMALLTALK, âỉåüc
phạt triãøn nàm 1980 tải Xerox Palo Alto Recearch Center (PARC). Hiãûn nay,
nhiãưu ngän ngỉỵ láûp trçnh thäng dủng cng âỉåüc trang bë thãm kh nàng ÂHÂT,
nhỉ l C++, Delphi, v.v
I.4.
I.5.
Láûp trçnh trỉûc quan
Láûp trçnh trỉûc quan (visual programming) âỉåüc phạt triãøn trãn nãưn tng ca
láûp trçnh ÂHÂT. Khi thiãút kãú chỉång trçnh, ngỉåìi láûp trçnh nhçn tháúy ngay kãút
qu qua tỉìng thao tạc v giao diãûn ngỉåìi dng (user interface) khi chỉång trçnh
âỉåüc thỉûc hiãûn. Ngỉåìi láûp trçnh cọ thãø dãù dng chènh sỉía vãư mu 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 trong giao diãûn.
Cạc ngän ngỉỵ láûp trçnh trỉûc quan thäng dủng hiãûn nay thỉåìng âỉåüc phạt triãøn
trong mäi trỉåìng Microsoft Windows, nhỉ Visual Basic, Visual C++, Visual
Foxpro, Java. v.v
Nhỉỵng tỉ tỉåíng cạch mảng trong láûp trçnh
Láûp trçnh l mäüt trong nhỉỵng lénh vỉûc khọ nháút ca toạn hc ỉïng dủng. Ngỉåìi
ta coi láûp trçnh l mäüt khoa hc nhàòm âãư xút nhỉỵng ngun l v phỉång phạp
âãø náng cao nàng sút lao âäüng ca láûp trçnh viãn. Nàng sút åí âáy âỉåüc hiãøu l
tênh âụng âàõn ca chỉång trçnh, tênh dãù âc, dãù sỉía, táûn dủ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 7
8 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ọn
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 truùc trón caùc õọỳi tổồỹng coù cỏỳu truùc vaỡ caùc móỷnh õóử nhũm khúng
õởnh tờnh õuùng õừn cuớa kóỳt quaớ.
Nhổợng tổ tổồớng caùch maỷng trong 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 õóứ laỡm chuớ õổồỹc sổỷ phổùc taỷp cuớa 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.
II.2.
Cọng nghóỷ phỏửn móửm laỡ 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ợ thuỏỷt, cọng cuỷ vaỡ thuớ tuỷc lión quan õóỳn caùc giai
õoaỷn xỏy dổỷng mọỹt saớn phỏứm phỏửn móửm. Caùc giai õoaỷn õoù laỡ : õỷc taớ (specifiction),
thióỳt kóỳ (design), lỏỷp trỗnh (programming), thổớ nghióỷm (testing), sổớa sai
(debugging), caỡi õỷt (setup) õóứ õem vaỡo ổùng duỷng (application), baớo trỗ
(maintenance) vaỡ lỏỷp họử sồ (documentation).
Muỷc õờch chờnh cuớa cọng nghóỷ phỏửn móửm laỡ õóứ saớn xuỏỳt ra nhổợng phỏửn móửm
coù chỏỳt lổồỹng. Chỏỳt lổồỹng phỏửn móửm khọng laỡ mọỹt khaùi nióỷ
m õồn giaớn, bao gọửm
nhióửu yóỳu tọỳ. Chúng haỷn chổồng trỗnh chaỷy nhanh, dóự sổớ duỷng, coù tờnh cỏỳu truùc,
dóự õoỹc dóự hióứu, v.v
Ngổồỡi ta thổồỡng õaùnh giaù theo hai kióứu chỏỳt lổồỹng : nhổợng yóỳu tọỳ chỏỳt lổồỹng
bón ngoaỡi vaỡ nhổợng yóỳu tọỳ chỏỳt lổồỹng bón trong.
Nhổợng yóỳu tọỳ chỏỳt lổồỹng bón ngoaỡi vaỡ bón trong
Nhổợng yóỳu tọỳ chỏỳt lổồỹng bón ngoaỡi ngổồỡi duỡng coù thóứ nhỏỷn bióỳt õổồỹc, nhổ tọỳc
õọỹ nhanh, chaỷy ọứn õởnh, tờnh dóự sổớ duỷng, dóự thờch nghi vồùi nhổợng thay õọứi (tờnh
mồớ rọỹng), tờnh cọng thaùi hoỹc (ergonomy, human factor), v.v
Nhổợng yóỳu tọỳ chỏỳt lổồỹng bón ngoaỡi cuớa mọỹt saớn phỏứm phỏửn móửm laỡ :
Tờnh õuùng õừn Khaớ nng thổỷc hióỷn chờnh xaùc cọng vióỷc õỷt ra.
Tờnh bóửn vổợng Coù thóứ hoaỷt õọỹng trong nhổợng õióửu kióỷn bỏỳt thổồỡng.

Tờnh coù thóứ mồớ rọỹng Khaớ nng 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 9
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 nhỉ bäü xỉí l,
bäü nhåï , dãù chuøn âäøi (khäng phủ thüc vo 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 trong l l tênh âån thãø, tênh dãù âc, dãù hiãøu m
chè nhỉỵng ngỉåìi lm Tin h
c 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 trong 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 l 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 nhỉ l 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ãø trong cüc säúng ca con 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 tênh : 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 tảo, ngỉåìi mạy, v.v
 Cạc chỉång trçnh phng chäúng virus, v.v
Dỉåïi âáy l bng tọm tàõt quạ trçnh tiãún họa ca sn 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 9
10 Cọng nghóỷ Phỏửn móửm
Thồỡi kyỡ thổù ba
1970 1990
Hóỷ thọỳng xổớ lyù phỏn bọứ (Distributed processing system)
Thọng minh (Intelligence)
Phỏửn cổùng giaù thaỡnh haỷ
Hióỷu quaớ tióu thuỷ
Thồỡi kyỡ 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 toaỡn cỏửu (Worldwide communication network)

Xổớ lyù song song (Paralell processing)

Sau õỏy laỡ mọỹt tranh vui vóử quaù trỗnh taỷo ra mọỹt saớn phỏứm phỏửn móửm õaợ khaù
quen thuọỹc õọỳi vồùi nhuợng ngổồỡi laỡm Tin hoỹc tổỡ hồn 20 nm nay (theo J.
CLAVIER, Diriger un projet informatique, Eùdition J. C. I. Inc, Canada 1993) :
4. Sau khi sổớa sai vồùi 5. Trióứn khai cho khaùch haỡng 6. ặồùc mồ cuớa ngổồỡi sổớ duỷng !
nhióửu saùng kióỳn caới tióỳn

1. Ngổồỡi õỷt haỡng 2. Thióỳt kóỳ cuớa chuớ trỗ õóử taỡi 3. Saớn phỏứm cuớa ngổồỡi lỏỷp trỗnh
Vờ duỷ : Cọng ty Cọng vión

Hỗnh 1.1. Quaù trỗnh taỷo ra mọỹt saớn phỏứm phỏửn móửm


Âải cỉång vãư cäng nghãû pháưn mãưm 11
III. Nhỉỵng näüi dung cå bn ca CNPM
III.1. Täøng quan vãư cäng nghãû pháưn mãưm
Cäng nghãû pháưn mãưm âàûc trỉng båíi táûp håüp cạc phỉång phạp âãø phạt triãøn mäüt
chỉång trçnh (pháưn mãưm nọi chung). Sỉû phạt triãøn mäüt chỉång trçnh, hay tiãún
trçnh pháưn mãưm (software process), khäng chè nàòm åí chäù láûp trçnh theo nghéa hẻp
m cn l viãûc triãøn khai cạc giai âoản dáùn âãún láûp trçnh. Táûp håüp cạc giai âoản
ny âỉåüc gi l chu k säúng (hay vng âåìi) ca pháưn mãưm (life cycle).
Våïi mäüt dỉû ạn Tin hc låïn, nhiãưu ngỉåìi láûp trçnh tham gia âỉåüc chia thnh
nhọm, mäùi nhọm phủ trạch gii quút mäüt pháưn ca dỉû ạn. Ngỉåìi phủ trạch dỉû ạn
cọ nhiãûm vủ phán bäø cäng viãûc cho tỉì
ng nhọm, âm bo mäúi liãn lảc giỉỵa cạc
nhọm, kiãøm tra tiãún trçnh phạt triãøn ca dỉû ạn, cháút lỉåüng ca sn pháøm pháưn
mãưm khi hon táút.
Tiãún trçnh phạt triãøn pháưn mãưm gäưm 3 giai âoản chênh l xạc âënh, phạt triãøn
v bo trç, khäng phủ thüc vo miãún ạp dủng, âäü lỉïn v âäü phỉïc tảp ca dỉû ạn

phạt triãøn, cng nhỉ mä hçnh âỉåüc lỉûa chn.
Giai âoản xạc âënh :
Giai âoản ny tr låìi cáu hi l cại gç ? (What?) v khi no (When?) vãư dỉỵ liãûu
(thäng tin) cáưn xỉí l, mủc âêch chỉïc nàng va ìmäi trỉåìng phạt triãøn. Gäưm 3 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 nhỉ thãú no ? (How?). Gäưm 3 bỉåïc :
- Thiãút kãú pháưn mãưm : Sỉí dủng cạc cäng củ âàûc t v láûp trçnh cáúu trục.
- Chn cäng củ hồûc cạc ngän ngỉỵ láûp trçnh âãø tiãún hnh viãút chỉång trçnh.
- Kiãøm thỉí (phạt hiãûn sai sọt, nháưm láùn ).
Giai âoản bo trç :
Giai âoản ny táûp trung vo cạc thay âäøi (Modify). Cọ 3 kiãøu thay âäøi :
- Sỉía âäøi : D pháưn mãưm cọ cháút lỉåüng täút, váùn täưn tải nhỉỵng khiãúm khuút tỉì
viãû
c sỉí dủng ca khạch hng (ngỉåìi sỉí dủng). Bo trç sỉía âäøi lm thay âäø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, nhỉ
CPU, OS, cạc thiãút bë ngoải vi.
TS. PHAN HUY KHẠNH biãn soản 11
12 Cọng nghóỷ Phỏửn móửm
- Nỏng cao : Khaùch haỡng tỗm ra nhổợng chổùc nng phuỷ cuớa phỏửn móửm. Baớo trỗ
hoaỡn thióỷn õóứ mồớ rọỹng phỏửn móửm ra ngoaỡi nhổợng chổùc nng vọỳn coù.
III.2. Chu kyỡ sọỳng cuớa phỏửn móửm
Coù nhióửu mọ hỗnh khaùc nhau õóứ thóứ hióỷn mọỹt chu kyỡ sọỳng (life cycle). Sau õỏy
laỡ mọỹt chu kyỡ sọỳng kióứu cọứ õióứn theo mọ hỗnh thaùc nổồùc (waterfall model) gọửm
caùc giai õoaỷn nhổ sau :
Tỗm hióứu vaỡ phỏn tờch caùc yóu cỏửu (RAD Requirements analysis and

definition)
Thióỳt kóỳ hóỷ thọỳng vaỡ phỏửn móửm (SSD System and software design)
Caỡi õỷt vaỡ kióứm thổớ tổỡng phỏửn (IUT Inplementtation and Unit testing)
Tờch hồỹp vaỡ kióứm thổớ hóỷ thọỳng (IST Integrgion and system testing)
Tỗm hióứu vaỡ phỏn tờch
caùc yóu cỏửu
Thióỳt kóỳ hóỷ thọỳng
vaỡ phỏửn móửm
Caỡi õỷt vaỡ kióứm thổớ
tổỡng phỏửn
Tờch hồỹp vaỡ kióứm thổớ
hóỷ thọỳng
Hỗnh 1.2. Mọ hỗnh thaùc nổồùc
Dỏựu rũng mọ hỗnh thaùc nổồùc trón õỏy coù ờch lồỹi trong vióỷc quaớn lyù
(management), lỏỷp kóỳ hoaỷch vaỡ lỏỷp baùo caùo tióỳn õọỹ phaùt trióứn phỏửn móửm nhổng
chố thờch hồỹp vồùi mọỹt lồùp hóỷ thọỳng phỏửn móử
m naỡo õoù maỡ thọi, khọng phuỡ hồỹp vồùi
caùc hoaỷt õọỹng õaợ chố ra trong mọ hỗnh.
Tióỳn trỗnh phỏửn móửm gọửm caùc hoaỷt õọỹng phổùc taỷp vaỡ bióỳn õọỹng maỡ khọng thóứ
bióứu dióựn trón mọỹt mọ hỗnh õồn giaớn. Nhổợng mọ hỗnh tọỳt vóử tióỳn trỗnh phỏửn móửm
vỏựn coỡn laỡ chổùng chuớ õóử nghión cổùu. Hióỷn nay, caùc mọ hỗnh tọứng quaùt khaùc nhau
hay tờnh thổỷc duỷng cuớa sổỷ phaùt trióứn phỏửn móửm, gừn boù chỷt cheợ vồùi nhau.
Mọ hỗnh thaùc nổồùc nguyón thuyớ (original) laỡ mọỹt trong nhổợng mọ hỗnh tọứng
quaùt mang tờnh thổỷc duỷng sỏu sừc.
Sau õỏy laỡ mọỹt sọỳ tióỳp cỏỷn :

Âải cỉång vãư cäng nghãû pháưn mãưm 13
1. Tiãúp cáûn thạc nỉåïc (the waterfall approach) : Bao gäưm cạc giai âoản âàûc t u
cáưu, thiãút kãú pháưn mãưm, ci âàût, kiãøm thỉí, v.v , sau mäùi giai âoản l sỉû kãút
thục (signed-off) v tiãúp tủc giai âoản tiãúp theo.

2. Láûp trçnh thàm d (exloratory programming) : Cho phẹp tàng nhanh quạ trçnh
âãø dáùn âãún tênh tha âạng ca hãû thäúng. Láûp trçnh thàm d thỉåìng âỉåüc ạp
dủng trong lénh vỉûc trê tû nhán tảo, khi NSD khäng thãø âënh hçnh âỉåüc cạc
âàûc t u cáưu. NSD quan tám âãún tênh tha âạng ca kãút qu hån l tênh
chênh xạc.
3. Bn máùu (prototyping) : Tỉång tỉû tiãúp cáûn láûp trçnh thàm d. Pha âáưu tiãn bao
gäưm phạt triãøn mäüt chỉång trçnh cho phẹp thỉí nghiãûm. Tuy nhiãn, mủc âêch
ca phạt triãøn l
thiãút láûp cạc u cáưu hãû thäúng. Sau âọ l sỉû ci âàût lải pháưn
mãưm âãø âỉa âãún hãû thäúng cháút lỉåüng - sn pháøm.
Kãút thục
Bàõt âáưu
Táûp håüp
u cáưu v
lm mën
Sn pháøm thiãút kãú
nhanh
Lm mën xáy dỉûng
bn máùu bn máùu
Âạnh giạ
ca khạch hng

ư
ba
ín m
á
ù
u
Hçnh 1.3. Tiãúp cáûn kiãøu bn máùu
4. Biãún âi hçnh thỉïc (formal transformation) : L sỉû biãún âäøi cạc âàûc t hçnh

thỉïc (formal specification) ca hãû thäúng pháưn mãưm âang xẹt âãø thnh mäüt
chỉång trçnh kh thi nhỉng bo ton âỉåüc tênh chênh xạc (correctness -
preserving transformations).
5. Làõp rạp hãû thäúng tỉì cạc thnh pháưn dng lải âỉåüc (system assembly from
reusable components). K thût ny cho phẹp xáy dỉûng hãû thäúng tỉì cạc thnh
pháưn â cọ. Tiãún trçnh phạt triãøn hãû thäúng l sỉû làõp rạp hån l sỉû
sạng tảo.
Hiãûn nay, cạc tiãúp cáûn 1, 2, 3 âỉåüc ỉïng dủng nhiãưu trong thỉûc tiãùn.
Trãn thỉûc tãú, cạc giai âoản phạt triãøn pháưn mãưm khäng phi råìi riãng m l gäúi
lãn nhau (overlap) v thäng tin âỉåüc cung cáúp láùn nhau.
Trong khi thiãút kãú, nhỉỵng váún âãư v cạc u cáưu gàõn bọ våïi nhau, trong khi láûp
trçnh, nhỉỵng váún âãư thiãút kãú âỉåüc tçm tháúy, v.v Lục ny, tiãún trçnh pháưn mãưm
khäng âån gin l mäüt mä hçnh tuún tênh m bao gäưm mäüt dy cạc tỉång tạc ca
cạc hoảt âäüng phạt triãøn.
TS. PHAN HUY KHẠNH biãn soản 13
14 Cọng nghóỷ Phỏửn móửm
Tuy nhión, mọỹt mọ hỗnh chổùa caùc voỡng lỷp seợ laỡm khoù khn cho vióỷc quaớn lyù vaỡ
baùo caùo. Coù nhióửu daỷng mọ hỗnh trong tióỳn trỗnh phỏửn móửm. Sau õỏy laỡ mọỹt sọỳ mọ
hỗnh :
1. Mọ hỗnh thaùc nổồùc caới tióỳn
Tỗm hióứu vaỡ phỏn tờch
caùc yóu cỏửu
Thióỳt kóỳ hóỷ thọỳng
vaỡ phỏửn móửm
Caỡi õỷt vaỡ kióứm thổớ
tổỡng phỏửn
Tờch hồỹp vaỡ kióứm thổớ
hóỷ thọỳng
Khai thaùc vaỡ
baớo trỗ

Hỗnh 1.4. Mọ hỗnh thaùc nổồùc caới tióỳn
1. Tỗm hióứu vaỡ phỏn tờch caùc yóu cỏửu: NSD hóỷ thọỳng vaỡ ngổồỡi phaùt trióứn hóỷ thọỳng
baỡn baỷc, trao õọứi (consultation) vồùi nhau õóứ thióỳt lỏỷp muỷc õờch, raỡng buọỹc vaỡ
caùc dởch vu cuớa hóỷ thọỳng phỏửn móửm, lộnh họỹi õổồỹc nhổợng õoỡi hoới cuớa baỡi toaùn.
2. Thióỳt kóỳ hóỷ thọỳng vaỡ phỏửn móửm : Tióỳn trỗnh thióỳt kóỳ hóỷ thọỳng phỏn chia caùc yóu
cỏửu thaỡnh caùc hóỷ thọỳ
ng phỏửn cổùng, phỏửn móửm vaỡ thióỳt lỏỷp mọỹt kióỳn truùc hóỷ
thọỳng toaỡn bọỹ (overall system architecture). Vióỷc thióỳt kóỳ phỏửn móửm bao gọửm
vióỷc thóứ hióỷn caùc chổùc nng hóỷ thọỳng phỏửn móửm (software system functions) õóứ
bióỳn õọứi thaỡnh caùc chổồng trỗnh khaớ thi.
3. Caỡi õỷt vaỡ kióứm thổớ tổỡng phỏửn : Trong giai õoaỷn naỡy, caùc õồn vở chổồng trỗnh
hay tỏỷp hồỹp caùc chổồng trỗnh õổồỹc kióứm thổớ lỏửn lổồỹt sao cho thoớa maợn caùc õỷc
taớ tổồng ổùng.
4. Tờch hồỹp vaỡ kióứm thổớ hóỷ thọỳng : Caùc õồn vở chổồng trỗnh õổồỹc tờch hồỹp vaỡ kióứm
thổớ nhổ laỡ mọỹt hóỷ thọỳng õỏửy õuớ õóứ õaớm baớo caùc yóu cỏửu õỷt ra ban õỏửu. Sau
giai õoaỷn naỡy, hóỷ
thọỳng phỏửn móửm õổồỹc giao cho khaùch haỡng.
5. Khai thaùc vaỡ baớo trỗ (operation and maintenance) : ỏy laỡ mọỹt pha daỡi nhỏỳt
cuớa chu kyỡ sọỳng. Hóỷ thọỳng õổồỹc caỡi õỷt vaỡ õổa vaỡo sổớ duỷng thổỷc tóỳ. Vióỷc baớo trỗ
bao gọửm vióỷc khừc phuỷc nhổợng sai soùt xaớy ra õaợ khọng xuỏỳt hióỷn trong caùc giao
õoaỷn trổồùc õoù cuớa chu kyỡ sọỳng. Vióỷc tọỳi ổu hoùa caùc dởch vuỷ cuớa hóỷ thọỳng õổồỹc
xem nhổ laỡ nhổợng yóu cỏửu mồùi õổồỹc phaùt hióỷn.

Âải cỉång vãư cäng nghãû pháưn mãưm 15
2. Mä hçnh xồõn äúc
Phạt triãøn trãn tênh ỉu viãût ca vng âåìi cäø âiãn v bn máùu, bäø sung nhng
úu täú cn thiãúu v thãm cạc úu täú måïi, phán têch ri ro.

Hçnh 1.5. Mä hçnh xồõn äúc
P

hán têch ri ro :
 Dỉûa trãn u cáưu ban âáưu
 Dỉûa trãn phn ỉïng ca
khạch hng
Quút âënh tiãúp tủc
hay khäng ?
Hỉåïng tåïi
hãû thäúng hon chènh
Bn máùu ban âáưu
Bn máùu táưng tiãúp theo
. . .
K
ãú hoảch :
 Táûp håüp u cáưu ban âáưu va
kãú hoảch dỉû ạn
 Kãú hoảch
dỉûa trãn kiãún
ca khạch hng
Â
ạnh giạ ca khạch hng :
Khàóng âënh kãút qu ca cäng nghãû

Ỉu âiãøm :
Cạc phiãn bn (hay sn pháøm) âỉåüc hon thiãûn dáưn theo chiãưu xoạy äúc tỉì trong
ra ngoi.
Nhỉåüc âiãøm :
 Khọ âạnh giạ chênh xạc, nháút l khi gàûp ri ro, khọ kiãøm soạt. Do âọ khọ
thuút phủc âỉåüc cạc khạch hng låïn
 Mä hçnh nuy cn måïi, chỉa âỉåüc kiãøm nghiãûm nhiãưu trong thỉûc tiãùn.
3. K thût thãú hãû 4 (4th Generation Technology)

Bao gäưm cạc cäng củ pháưn mãưm trãn cå såí tỉû âäüng s
n sinh m chỉång trçnh
gäúc theo nhu cáưu ca ngỉåìi phạt triãøn :
 Ngän ngỉỵ phi th tủc
2
(non procedural language) âãø truy cáûp cå såí dỉỵ liãûu.
 Bäü sinh bạo cạo.
 Bäü thao tạc dỉỵ liãûu.


2
l ngän ngỉỵ láûp trçnh khäng tn theo cạch gi th tủc hay gi chỉång trçnh con
thäng thỉåìng, khäng sỉí dủng cạc cáúu trục âiãưu khiãøn, tưn tỉû, m dỉûa trãn táûp
håüp cạc úu täúï v quan hãû âãø dáùn vãư kãút qu u cáưu. Vê dủ ngän ngỉỵ váún tin
SQL thüc loải ny.

TS. PHAN HUY KHẠNH biãn soản 15
16 Cọng nghóỷ Phỏửn móửm
Bọỹ tổồng taùc vaỡ thióỳt kóỳ maỡn hỗnh.
Bọỹ sinh chổồng trỗnh.
Baớng tờnh.
Cọng cuỷ õọử hoỹa.
Hỗnh 1.6. Kyợ thuỏỷt thóỳ hóỷ 4

ặu õióứm :
Thổồỡng õổồỹc sổớ duỷng õóứ xỏy dổỷng caùc hóỷ thọng tin vaỡ tổồng lai laỡ caùc ổùng duỷng
kyợ nghóỷ phaùt trióứn phỏửn móửm thồỡi gian thổỷc.
Tỏỷp hồỹp
y
óu cỏửu

Chióỳn lổồỹc
thióỳt kóỳ
Caỡi õỷt sổớ
du

n
g
4 GL
Kióứm th


Nhu cỏửu trung bỗnh
Caùc phổồng phaùp truyóửn thọỳng
Caùc PM sổớ duỷng kyợ thuỏỷt 4 GT
(lỏỳp chọự họứng)
1970 1980 1990 2000
Nhu
cỏửu
phỏửn
móửm
Hỗnh 1.7. Nhu cỏửu phỏửn móửm

aỷi cổồng vóử cọng nghóỷ phỏửn móửm 17
5. Tờch hồỹp caùc kyợ thuỏỷt
Nhũm tng cổồỡng tờnh tọỳi ổu trong phaùt trióứn phỏửn móửm, ngổồỡi ta coù xu hổồùng
tờch hồỹp caùc kyợ thuỏỷt cọứ õióứn, xoaùy troỡn ọỳc vaỡ 46T õaợ nóu.
Mọ hỗnh xoaùy troỡn ọỳc
4 GTPhỏn tờch yóu cỏửu
Laỡm baớn mỏự
u

Thióỳt kóỳ
4 GT
Baớn mỏựu voỡng thổù
n
Maợ hoù
a

Mọ hỗnh voỡng thổù n
4 GT


thọỳn
g
hoa

t õọ

n
g
Kióứm th


Baớo trỗ
Tỏỷp hồỹp, hióứu caùc yóu cỏửu ban õỏử
u
Hỗnh 1.8. Tờch hồỹp caùc kyợ thuỏỷt


TS. PHAN HUY KHAẽNH bión soaỷn 17


CHÆÅNG 2
Thiãút kãú pháön mãöm
I. Nãön taíng cuía thiãút kãú pháön mãöm
TS. PHAN HUY KHAÏNH biãn soaûn 18
Nóửn taớng cuớa thióỳt kóỳ phỏửn móửm
Phổồng phaùp lỏỷp trỗnh cỏỳu truùc 19
TS. PHAN HUY KHAẽNH bión soaỷn 19
20 Cọng nghóỷ Phỏửn móửm
II. Phổồng phaùp lỏỷp trỗnh cỏỳu truùc


Nóửn taớng cuớa thióỳt kóỳ phỏửn móửm
Phổồng phaùp lỏỷp trỗnh cỏỳu truùc 21
TS. PHAN HUY KHAẽNH bión soaỷn 21
22 Cọng nghóỷ Phỏửn móửm
II.1.
II.2.
Khaùi nióỷm vóử lỏỷp trỗnh cỏỳu truùc
Lỏỷp trỗnh cỏỳu truùc (Structured Programming) laỡ trổồỡng phaùi lỏỷp trỗnh xuỏỳt
hióỷn vaỡo nhổợng nm 70 vaỡ õổồỹc duy trỗ phaùt trióứn tổỡ õoù õóỳn nay. Lỏỷp trỗnh cỏỳu
truùc phaớn aùnh quan nióỷm : lỏỷp trỗnh laỡ cọng vióỷc saùng taỷo nhổng coù tờnh khoa hoỹc
vaỡ coù phổồng phaùp, khọng phaới laỡ ngỏựu hổùng caù nhỏn.
Tờnh logic vaỡ trong saùng cuớa chổồng trỗnh õaớm baớo õọỹ tin cỏỷy, dóự hióứu, dóự sổớa
vaỡ dóự thổỡa kóỳ chổồng trỗnh.
Nhổợng yù tổồớng cồ baớn lỏỷp trỗnh cỏỳu truùc
a) Chổồng trỗnh laỡ mọỹt hóỷ thọỳng phỏn cỏỳp tổỡ trón xuọỳng
Trong lỏỷp trỗnh cỏỳu truùc, chổồng trỗnh laỡ mọỹt hóỷ thọỳng phỏn cỏỳp tổỡ trón xuọỳng,
trong õoù caùc thaỡnh phỏửn tổồng taùc vồùi nhau tọỳi thióứu. Vỏỳn õóử cỏửn giaới quyóỳt bao
gọửm caùc vỏỳn õóử nhoớ hồn, mọựi vỏỳn õóử õoù laỷi bao gọửm caùc vỏỳn õóử nhoớ hồn nổợa, v.v
cho õóỳn mổùc cuọỳi cuỡng laỡ nhổợng cọng vióỷc õồn giaớn vaỡ dóự giaới quyóỳt hoỷc õaợ giaới

quyóỳt rọửi.

Hỗnh 2.1. Chổồng trỗnh laỡ mọỹt hóỷ thọỳng phỏn cỏỳp
vióỷc 1.1
vióỷc 1.2
vióỷc 3vióỷc 2vióỷc 1
vióỷc 1.2.3
. . .
vióỷc 1.2.2vióỷc 1.2.1
vỏỳn õóử

Nãưn tng ca thiãút kãú pháưn mãưm
Phỉång phạp láûp trçnh cáúu trục 23
Vê dủ 2 :
Phán têch bi toạn cäüng hai phán säú âãø âỉa vãư bi toạn tçm ỉåïc säú chung låïn
nháút.
Âãø cäüng hai phán säú, trỉåïc tiãn cáưn ỉåïc lỉåüc chụng, tiãúp âọ quy âäưng máùu säú âãø
láúy máùu säú chung. Cúi cng tiãún hnh cäüng hai tỉí säú ca hai phán säú â cọ chung
máùu säú. Viãûc ỉåïc lỉåüc phán säú âỉåüc âỉa vãư tçm ỉåïc säú chung låïn nháút ca tỉí säú v
máùu säú (sỉí dủng thût toạn Euclide).
Âãø quy âäưng máùu säú, cáưn tçm bäüi säú chung nh nháút. Viãûc tçm bäüi säú chung nh
nháút ca hai säú lải âỉåüc âỉa vãư tçm ỉåïc säú chung låïn nháút ca chụng :
BSCNN(b’, d’) = b’ * d’ / ỈSCLN(b’,d’).
Hçnh 2.2. Phán têch bi toạ
n cäüng hai phán säú
Nhỉ váûy, chỉång trçnh l mäüt hãû thäúng gäưm nhiãưu thnh pháưn phán cáúp, mäùi
thnh pháưn cọ nhiãûm vủ gii quút mäüt váún âãư så cáúp v cọ tênh âäüc láûp cao. Cạc
thnh pháưn nãn tỉång tạc våïi nhau täúi thiãøu. Giỉỵa hai thnh pháưn trong hãû thäúng
chè nãn cọ täúi âa mäüt âỉåìng tỉång tạc l âỉåìng trao âäøi thäng tin âãø dãù qun l v
dãù kiãøm soạt.

• Giỉỵa chỉång trçnh chênh v chỉång trçnh con cọ âỉåìng giao tiãúp l viãûc truưn
tham biãún. Khäng âỉåüc gi chỉång trçnh con theo kiãøu vỉåüt cáúp.

a

b
+
c

d

a”/M + b”/M
ỈSCLN(b’, d’)
BSCNN(b’, d’)
QÂMS(a’/b’, c’/d’)
ỈSCLN(a/b)
ỈSCLN(c/d)
ỈLPS(a/b)
ỈLPS(c/d)
A
B
C
TS. PHAN HUY KHẠNH biãn soản 23
24 Cäng nghãû Pháưn mãưm
Hçnh 2.3. A gi B, B gi C, nhỉng A khäng gi âỉåüc C
• Hản chãú dng biãún ton củc (global variables) trong chỉång trçnh con vç s tảo
thãm nhỉỵng âỉåìng giao tiãúp khọ qun l. Chàóng hản, mäüt chỉång trçnh con
no âọ lm thay âäøi mäüt biãún ton củc thç åí mäüt nåi khạc, trong mäüt chỉång
trçnh con khạc hồûc ngay trong chỉång trçnh chênh, cng s khọ nháûn biãút sỉû
thay âäøi ny.

b) Khäng sỉí dủng lãûnh nhy goto
Lãûnh goto (jump statement) dng âãø chuøn âiãưu khiãøn âãún mäüt âiãøm khạc
trong chỉång trçnh. Lãûnh goto lm khọ qun l v khọ kiãøm soạt chỉång trçnh nãn
khọ âc, khọ sỉía sai (räúi ràõm nhỉ mọn mç såüi Spaghetti ca ).
Cạc chỉång trçnh viãút trãn ngän ngỉỵ aassembly hồûc trãn cạc ngän ngỉỵ báûc cao
nhỉ Fortran, Algol, Cobol thỉåìng sỉí dủng lãûnh goto.
Vê dủ 3 :
Chỉång trçnh Algol sau âáy sỉí dủng lãûnh goto âãø âiãưu khiãøn vng làûp tênh täøng
cạc pháưn tỉí ca mng a gäưm N säú thỉûc :
S := 0; I := 0;
Start : S := S + a[I]; I := I + 1;
if I <= N then goto Start;

c) Chỉång trçnh cọ tênh cáúu trục
Chỉång trçnh chè sỉí dủng cạc cáúu trục âiãưu kiãûn chøn, dãù hiãøu, dãù thãø hiãûn
thût toạn. Cáúu trục ca chỉång trçnh phn ạnh âỉåüc cáúu trục ca váún âãư v cạch
gii quút váún âãư (lm nhỉ thãú no ?). Phỉång phạp hay âỉåüc sỉí dủng âãø thiãút kãú
chỉång trçnh l phán têch tỉì trãn xúng (Top-Down Analysis) v täøng håüp tỉì dỉåïi
lãn (Bottom up Synthesis).
Näüi dung phỉång phạp phán têch tỉì trãn xúng l nhçn nháûn xem xẹt täøng quạt
ton bäü váún âãư, xút phạt tỉì mủc tiãu (âènh) âi xúng cạc thnh pháưn trong hãû
thäúng, chia cạc thnh pháưn thnh cạc thnh pháưn nh hån theo mäüt cáúu trục phán
cáúp chàût ch.

üi dung phỉång phạp täøng håüp tỉì dỉåïi lãn l xút phạt tỉì cạc váún âãư củ thãø
v cạch gii quút củ thãø, sau âọ têch håüp chụng lải thnh váún âãư låïn hån v cạch
gii täøng quạt hån, hỉåïng tỉì dỉåïi lãn trãn âãø nháûn âỉåüc váún âãư cáưn phi gii quút
ban âáưu
Cạch thiãút kãú ny gáy khọ khàn vç khọ kiãøm soạt v dãù lảc hỉåïng, khọ âạp ỉïng
âáưy â cạc u cáưu ca váún âãư.


Nãưn tng ca thiãút kãú pháưn mãưm
Phỉång phạp láûp trçnh cáúu trục 25
II.3. Cạc cáúu trục âiãưu khiãøn chøn
Trong chỉång trçnh, chè nãn sỉí dủng 7 cáúu trục âiãưu khiãøn sau âáy våïi quy ỉåïc
S l mäüt lãûnh (Statement) v C l mäüt biãøu thỉïc âiãưu kiãûn (Condition) no âọ :
Stt Cáúu trục âiãưu khiãøn Lỉu âäư tỉång âỉång Mä t
1
Tưn tỉû
(Sequential)
begin
S1
. . .
Sn
end

Âỉåüc coi nhỉ l mäüt lãûnh
ghẹp (khäúi), thỉûc hiãûn
tưn tỉû cạc lãûnh S1, S2,
, Sn.
2 R nhạnh
(Branching)
a) R nhạnh thiãúu
if C then S


Nãúu C tho mn (True)
thç thỉûc hiãûn S.
Nãúu C khäng tho mn
(False) thç khäng lm gç

c.
3
b) R nhạnh â
if C then S1
else S2

Nãúu C âụng thç thỉûc hiãûn
lãûnh S1.
Nãúu C sai thç thỉûc hiãûn
S2.
4
Lỉûa chn
(Selection)
case
C1 : S1
C2 : S2
. . .
Cn : Sn
endcase
Nãúu C1 âụng thç thỉûc
hiãûn S1.
Nãúu khäng, nãúu C2 âụng
thç thỉûc hiãûn S2, v.v
Cúi cng, nãúu Cn âụng
thç thỉûc hiãûn Sn.
Nãúu khäng thç thäi.
5
Cáúu trục làûp
(Iteration)
Kiãøm tra âiãưu kiãûn

trỉåïc khi thỉûc hiãûn
vng làûp :
Khi C cn âụng thç cn
thỉûc hiãûn S.
Khi C sai thç dỉìng.
S1
. . .
Sn
C ?
True
False
S
True False
C
S2S1
S1
. . .
. . .
S2
Sn
True
False
True
False
. . .
True
False
C1 ?
C2 ?
Cn ?

C ?
True
False
S
TS. PHAN HUY KHẠNH biãn soản 25

×