Tröôøng Ñaïi Hoïc Baùch Khoa Tp.

Hoà Chí Minh Khoa Coâng Ngheä Thoâng Tin

COÂNG NGHEÄ PHAÀN MEÀM

Moân hoïc

- Trang 1 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm

GIÔÙI THIEÄU MOÂN HOÏC

Ñaëc ñieåm
Maõ soá: 501095 Soá tín chæ: 2 Phaân phoái giôø: 2(2.1.4) Moân hoïc tröôùc: Toaùn Tin Hoïc (501302)

Toùm taét noäi dung
Caùc khaùi nieäm cô baûn cuûa Coâng Ngheä Phaàn Meàm: caùc moâ hình phaùt trieån phaàn meàm, phaân tích yeâu caàu, thieát keá, kieåm tra… 2 tröôøng phaùi chính: coù caáu truùc (coå ñieån) & höôùng ñoái töôïng Chuaån UML vaø vieäc aùp duïng noù trong phöông phaùp höôùng ñoái töôïng Thöïc haønh taïi phoøng Lab: laøm quen vôùi coâng cuï Rational Rose
- Trang 2 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm

GIÔÙI THIEÄU MOÂN HOÏC (t.t)
Taøi lieäu tham khaûo
[1] Software Engineering - A practitioner’s approach, R.S. Pressman, McGraw-Hill, 1997 [2] OMG Unified Modeling Language Specification, version 1.3, Object Management Group (www.omg.org), 1999 [3]UML Toolkit, Hans-Erik Eriksson & Magnus Penker, 1998 [4] Object-Oriented Software Engineering, A Use-Case Driven Approach, I. Jacobson, ACM Press/Addison-Wesley, 1992 [5] Object-Oriented Analysis and Design with Applications, G. Booch, The Benjamin Cummings Publishing Company, 1994
- Trang 3 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm

GIÔÙI THIEÄU MOÂN HOÏC (t.t)
Hình thöùc ñaùnh giaù
Thi giöõa kyø: traéc nghieäm khoâng söû duïng taøi lieäu, chieám 20 % keát quaû cuoái cuøng Thi cuoái kyø: traéc nghieäm khoâng söû duïng taøi lieäu, chieám 80 % keát quaû cuoái cuøng

- Trang 4 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm

ÑEÀ CÖÔNG
Chöông 1: Giôùi thieäu veà Coâng Ngheä Phaàn Meàm Chöông 2: Phaân tích yeâu caàu theo phöông phaùp coå ñieån Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån Chöông 7: Thieát keá höôùng ñoái töôïng Chöông 8: Hieän thöïc vaø trieån khai heä thoáng Chöông 9: Kyõ thuaät kieåm tra phaàn meàm Chöông 10: Chieán thuaät kieåm tra phaàn meàm
- Trang 5 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm

Trang 6 Khoa Coâng Ngheä Thoâng Tin .Tröôøng Ñaïi Hoïc Baùch Khoa Tp.Moân Coâng Ngheä Phaàn Meàm . Hoà Chí Minh Khoa Coâng Ngheä Thoâng Tin GIÔÙI THIEÄU VEÀ COÂNG NGHEÄ PHAÀN MEÀM ✦ Moät soá khaùi nieäm ✦ Caùc moâ hình phaùt trieån phaàn meàm Chöông 1 .Chöông 1: Giôùi thieäu veà CNPM .

Khuûng hoaûng phaàn meàm 1. Moâ hình tuaàn töï tuyeán tính 1.2.2.NOÄI DUNG 1. Moâ hình prototype 1. Moâ hình RAD 1. Ñònh nghóa 1.2.4.Chöông 1: Giôùi thieäu veà CNPM .2.1.1. Moâ hình taêng daàn 1.Trang 7 Khoa Coâng Ngheä Thoâng Tin . Caùc moâ hình phaùt trieån phaàn meàm .1.2. Moät soá khaùi nieäm 1. phöông phaùp (method).1.2.1. Chu trình (process). Moâ hình CMM 1. coâng cuï (tool) 1.1.2. Moâ hình xoaén oác 1.5.4.Moân Coâng Ngheä Phaàn Meàm .3.3.3.2. Moät caùch nhìn toång quan veà coâng ngheä phaàn meàm 1.1.1.

Chöông 1: Giôùi thieäu veà CNPM .KHUÛNG HOAÛNG PHAÀN MEÀM Phaàn meàm ñöôïc vieát ngay töø khi xuaát hieän caùc heä maùy tính vaø ngoân ngöõ laäïp trình ñaàu tieân Treân thöïc teá saûn xuaát phaàn meàm khoâng ñaùp öùng kòp yeâu caàu cuûa ngöôøi söû duïng .Trang 8 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .

kieåm tra vaø baûo trì: ñeå laïi 15 % loãi.Moân Coâng Ngheä Phaàn Meàm .Trang 9 Khoa Coâng Ngheä Thoâng Tin . coù 18 % phaùt hieän ñöôïc Quaù trình thieát keá (25 % coâng söùc): ñeå laïi 30 % loãi.Chöông 1: Giôùi thieäu veà CNPM . coù 10 % phaùt hieän ñöôïc Quaù trình maõ hoaù.t) Caùc döõ lieäu quan saùt ñöôïc Cöù 6 ñeà aùn trieån khai thì coù 2 bò huyû boû Trung bình thôøi gian thöïc hieän thöïc teá bò keùo daøi 50 % (caù bieät 200300%) Caùc ñeà aùn lôùn deã thaát baïi 3/4 caùc heä thoáng lôùn coù loãi khi thöïc thi Quaù trình phaân tích yeâu caàu (5 % coâng söùc): ñeå laïi 55 % loãi.KHUÛNG HOAÛNG PHAÀN MEÀM (t. coù 72 % phaùt hieän ñöôïc .

chöa ñöôïc xem nhö moät ngaønh khoa hoïc Quaù trình phaùt trieån phaàn meàm chöa ñöôïc thoáng nhaát Phaûi vieát laïi s/w moãi khi coù söï thay ñoåi veà ngoân ngöõ. h/w hoaëc o/s Chöa ñaït ñöôïc 1 chuaån cho vieäc ño löôøng hieäu suaát vaø saûn phaåm Ñoä phöùc taïp cuûa phaàn meàm quaù cao ñoái vôùi 1 “kieán truùc sö” Kyõ thuaät ñaëc taû ñeå laïi söï nhaäp nhaèng trong caùc yeâu caàu phaàn meàm Laøm vieäc nhoùm khoâng ñuùng kyû luaät gaây ra caùc loãi .Trang 10 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .KHUÛNG HOAÛNG PHAÀN MEÀM (t.t) Nguyeân nhaân Phaùt trieån phaàn meàm gioáng nhö moät ngheä thuaät.Chöông 1: Giôùi thieäu veà CNPM .

Moân Coâng Ngheä Phaàn Meàm .Chöông 1: Giôùi thieäu veà CNPM .Trang 11 Khoa Coâng Ngheä Thoâng Tin .KHUÛNG HOAÛNG PHAÀN MEÀM (t.t) Höôùng tôùi coâng ngheä saûn xuaát phaàn meàm chuyeân nghieäp science production professional engineering commercialization craft .

Chöông 1: Giôùi thieäu veà CNPM .ÑÒNH NGHÓA Ñònh nghóa coå ñieån (cuûa Fritz Bauer) Coâng Ngheä Phaàn Meàm laø söï thieát laäp vaø söû duïng caùc nguyeân taéc khoa hoïc nhaèm muïc ñích taïo ra caùc phaàn meàm moät caùch kinh teá maø caùc phaàn meàm ñoù hoaït ñoäng hieäu quaû vaø tin caäy treân caùc maùy tính. .Moân Coâng Ngheä Phaàn Meàm .Trang 12 Khoa Coâng Ngheä Thoâng Tin .

tính ñuùng thôøi gian vaø chaát löôïng .t) Ñònh nghóa khaùc: Coâng Ngheä Phaàn Meàm Laø caùc quy trình ñuùng kyû luaät vaø coù ñònh löôïng ñöôïc aùp duïng cho söï phaùt trieån.ÑÒNH NGHÓA (t.Trang 13 Khoa Coâng Ngheä Thoâng Tin . thöïc thi vaø baûo trì caùc heä thoáng thieân veà phaàn meàm Taäp trung vaøo quy trình.Chöông 1: Giôùi thieäu veà CNPM .Moân Coâng Ngheä Phaàn Meàm . saûn phaåm. söï ño löôøng.

.Trang 14 Khoa Coâng Ngheä Thoâng Tin .Chöông 1: Giôùi thieäu veà CNPM .Moân Coâng Ngheä Phaàn Meàm .CHU TRÌNH Chu trình (process) ñònh nghóa moät boä khung caùc tieâu chuaån phaûi ñöôïc thieát laäp ñeå trieån khai coâng ngheä phaàn meàm.

Chöông 1: Giôùi thieäu veà CNPM .Moân Coâng Ngheä Phaàn Meàm ..Trang 15 Khoa Coâng Ngheä Thoâng Tin .. .PHÖÔNG PHAÙP Phöông phaùp (method) chæ ra caùch thöïc hieän nhöõng coâng vieäc cuï theå (“how to”): phaân tích yeâu caàu thieát keá xaây döïng chöông trình kieåm tra söûa loãi .

COÂNG CUÏ Coâng cuï (tool) cung caáp caùc hoã trôï töï ñoäng hay baùn töï ñoäng ñoái vôùi chu trình vaø phöông phaùp Caùc coâng cuï ñöôïc tích hôïp taïo thaønh CASE (Computer Aided Software Engineering) .Trang 16 Khoa Coâng Ngheä Thoâng Tin .Chöông 1: Giôùi thieäu veà CNPM .Moân Coâng Ngheä Phaàn Meàm .

thay ñoåi moâi tröôøng thöïc thi (adaptation). Phaân tích yeâu caàu (requirement analysis).Chöông 1: Giôùi thieäu veà CNPM . taêng cöôøng (enhancement) . Giai ñoaïn phaùt trieån: Thieát keá phaàn meàm (software design). Hoaïch ñònh ñeà taøi (software project management).Trang 17 Khoa Coâng Ngheä Thoâng Tin . kieåm tra phaàn meàm (software testing) Giai ñoaïn baûo trì: Söûa loãi (correction).MOÄT CAÙCH NHÌN TOÅNG QUAN VEÀ CNPM Goàm 3 giai ñoaïn lôùn Giai ñoaïn ñònh nghóa: Phaân tích heä thoáng (system engineering).Moân Coâng Ngheä Phaàn Meàm . sinh maõ (code generation).

MOÂ HÌNH CMM Optimized (Level 5) Risk Defined (Level 3) Repeatable (Level 2) Initial (Level 1) Competitiveness Managed (Level 4) .Moân Coâng Ngheä Phaàn Meàm .Chöông 1: Giôùi thieäu veà CNPM .Trang 18 Khoa Coâng Ngheä Thoâng Tin .

CAÙC MOÂ HÌNH PHAÙT TRIEÅN PHAÀN MEÀM Moâ hình tuaàn töï tuyeán tính: coå ñieån Moâ hình prototyping: prototype Moâ hình xoaén oác: ñaùnh giaù ruûi ro Moâ hình taêng daàn: caùc böôùc laëp Moâ hình RAD: thôøi gian phaùt trieån ngaén .Chöông 1: Giôùi thieäu veà CNPM .Moân Coâng Ngheä Phaàn Meàm .Trang 19 Khoa Coâng Ngheä Thoâng Tin .

kieåm tra… .Chöông 1: Giôùi thieäu veà CNPM .MOÂ HÌNH TUAÀN TÖÏ TUYEÁN TÍNH System Engineering Requirement Analysis Software Design Coding Test Maintenance Moâ hình phaùt trieån phaàn meàm ñaàu tieân Caùc coâng vieäc tieáp noái nhau moät caùch tuaàn töï Ñaët neàn moùng cho caùc phöông phaùp phaân tích.Trang 20 Khoa Coâng Ngheä Thoâng Tin . thieát keá.Moân Coâng Ngheä Phaàn Meàm .

t) Boäc loä moät soá khuyeát ñieåm Baûn chaát cuûa phaùt trieån phaàn meàm laø quaù trình laëp ñi laëp laïi chöù khoâng phaûi tuaàn töï Baét buoäc khaùch haøng ñaëc taû taát caû yeâu caàu moät caùch chính xaùc vaø ñaày ñuû ngay töø ban ñaàu Khaùch haøng thöôøng phaûi chôø ñôïi raát laâu ñeå thaáy ñöôïc phieân baûn ñaàu tieân cuûa saûn phaåm Toàn taïi “delay” trong nhoùm laøm vieäc .Trang 21 Khoa Coâng Ngheä Thoâng Tin .MOÂ HÌNH TUAÀN TÖÏ TUYEÁN TÍNH (t.Moân Coâng Ngheä Phaàn Meàm .Chöông 1: Giôùi thieäu veà CNPM .

Trang 22 Khoa Coâng Ngheä Thoâng Tin .MOÂ HÌNH PROTOTYPING Xaây döïng prototype Thaûo luaän vôùi khaùch haøng Ñaùnh giaù cuûa khaùch haøng Prototype nhö laø moät cô cheá ñeå nhaän dieän chính xaùc yeâu caàu cuûa khaùch haøng Prototype coù theå bò “throw-away” Moät soá khuyeát ñieåm Khaùch haøng hoái thuùc nhaø phaùt trieån hoaøn thaønh saûn phaåm moät khi thaáy ñöôïc caùc prototype ñaàu tieân Caùc prototype thöôøng khoâng hoaït ñoäng hieäu quaû .Chöông 1: Giôùi thieäu veà CNPM .Moân Coâng Ngheä Phaàn Meàm .

MOÂ HÌNH XOAÉN OÁC R Ñònh nghóa quy trình Hoaïch ñònh ñeà taøi R Ñaùnh giaù ruûi ro Phaùt trieån saûn phaåm ôû laàn laëp tieáp theo R Ñöôïc thöïc hieän theo moät chuoãi laëp kieåu xoaén oác.Moân Coâng Ngheä Phaàn Meàm . moãi laàn laëp caûi thieän saûn phaåm Coù phöông phaùp ñaùnh giaù ruûi ro Coù theå aùp duïng prototype Moãi laàn laëp ñöôïc caûi thieän cho thích nghi vôùi baûn chaát cuûa ñeà aùn .Chöông 1: Giôùi thieäu veà CNPM .Trang 23 Khoa Coâng Ngheä Thoâng Tin .

Trang 24 Khoa Coâng Ngheä Thoâng Tin .MOÂ HÌNH TAÊNG DAÀN Phaân tích yeâu caàu Thieát keá kieán truùc 1 2 3 Phaùt trieån module Tích hôïp 4 Kieåm tra heä thoáng .Moân Coâng Ngheä Phaàn Meàm .Chöông 1: Giôùi thieäu veà CNPM .

MOÂ HÌNH TAÊNG DAÀN (t. .Trang 25 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .t) Caùc böôùc (iteration) ñaàu taäp trung vaøo yeâu caàu cuûa phaàn meàm vaø thieát laäp moät kieán truùc oån ñònh cho heä thoáng (ít phaûi thay ñoåi sau naøy) Caùc böôùc sau taäp trung vaøo vieäc xaây döïng saûn phaåm ñeå cuoái cuøng chuyeån sang giai ñoaïn kieåm tra heä thoáng Moãi böôùc hieän thöïc moät phaàn cuï theå trong toaøn boä yeâu caàu cuûa heä thoáng Quaù trình xaây döïng vaø chieán thuaät kieåm tra theo kieåu taêng daàn vaø döïa treân phöông phaùp kieåm tra hoài quy.Chöông 1: Giôùi thieäu veà CNPM .

Chöông 1: Giôùi thieäu veà CNPM .MOÂ HÌNH RAD Business modeling Data modeling Process modeling Application generation Testing & Turnover Rapid Application Development laø moâ hình tuaàn töï tuyeán tính coù thôøi gian phaùt trieån raát ngaén Söû duïng caùc thaønh phaàn coù saün caøng nhieàu caøng toát Söû duïng coâng cuï laäp trình ôû daïng töï ñoäng sinh maõ chöù khoâng phaûi caùc ngoân ngöõ truyeàn thoáng .Trang 26 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .

Tröôøng Ñaïi Hoïc Baùch Khoa Tp.Trang 27 Khoa Coâng Ngheä Thoâng Tin . Hoà Chí Minh Khoa Coâng Ngheä Thoâng Tin PHAÂN TÍCH YEÂU CAÀU THEO PHÖÔNG PHAÙP COÅ ÑIEÅN ✦ Moâ hình phaân tích ✦ DFD & STD ✦ Töø ñieån döõ lieäu Chöông 2 .Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån .Moân Coâng Ngheä Phaàn Meàm .

döõ lieäu input & output.Trang 28 Khoa Coâng Ngheä Thoâng Tin . ..Moân Coâng Ngheä Phaàn Meàm . caùc traïng thaùi khaùc nhau.Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån ..GIÔÙI THIEÄU Khaùch haøng vaø nhaø phaùt trieån gaëp nhau ñeå thaûo luaän veà yeâu caàu cuûa heä thoáng phaàn meàm caàn xaây döïng Nhaø phaùt trieån kieåm chöùng laïi (validate) yeâu caàu vaø bieåu dieãn noù baèng moâ hình phaân tích Moâ hình phaân tích (WHAT?): caùc chöùc naêng.

2.5. Môû roäng cuûa Hatley & Pirbhai 2. Löôïc ñoà doøng chaûy döõ lieäu vôùi caùc kyù hieäu cô baûn 2.4.Moân Coâng Ngheä Phaàn Meàm .1.2.3. Môû roäng cuûa Ward vaø Mellor 2.4.3. Moâ hình haønh vi phaàn meàm 2. Töø ñieån döõ lieäu .2.2.4.1.NOÄI DUNG 2.Trang 29 Khoa Coâng Ngheä Thoâng Tin . Xaây döïng DFD 2. Kyõ thuaät phaân tích yeâu caàu 2. Moâ hình chöùc naêng vaø doøng thoâng tin 2.Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån .1.2. Vieát PSPEC 2.2. Caùc yeáu toá caên baûn cuûa moâ hình phaân tích 2.

PSPEC Moâ hình döõ lieäu: ERD.Moân Coâng Ngheä Phaàn Meàm . ñaëc taû ñoái töôïng döõ lieäu Töø ñieån döõ lieäu Löu ñoà dòch chuyeån traïng thaùi Moâ hình haønh vi: STD. CSPEC Control Specification (CSPEC) .CAÙC YEÁU TOÁ CAÊN BAÛN CUÛA MOÂ HÌNH PHAÂN TÍCH Ñaëc taû ñoái töôïng döõ lieäu Process Specification (PSPEC) Moâ hình chöùc naêng vaø Löu ñoà quan heä thöïc theå Löu ñoà doøng chaûy döõ lieäu doøng thoâng tin: DFD.Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån .Trang 30 Khoa Coâng Ngheä Thoâng Tin .

treân maïng. Thoâng tin input cuõng nhö output coù theå ôû nhieàu daïng khaùc nhau: file. baøn phím.Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån .Moân Coâng Ngheä Phaàn Meàm . töø thieát bò.MOÂ HÌNH CHÖÙC NAÊNG VAØ DOØNG THOÂNG TIN Moâ taû doøng thoâng tin di chuyeån (flow) xuyeân qua caùc heä thoáng thieân veà phaàn meàm.Trang 31 Khoa Coâng Ngheä Thoâng Tin . keát xuaát ra maøn hình vaø maùy in… Caùc giaûi thuaät xöû lyù cuõng raát ña daïng .

Trang 32 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm . trang 315) .t) Löu ñoà doøng chaûy döõ lieäu DFD (Data Flow Diagram) cung caáp 4 kyù hieäu cô baûn ñeå moâ hình söï di chuyeån cuûa doøng thoâng tin DFD ñöôïc môû roäng ñeå moâ hình caùc heä thoáng thôøi gian thöïc Môû roäng cuûa Ward vaø Mellor (töï ñoïc: [1]. trang 312) Môû roäng cuûa Hatley & Pirbhai (töï ñoïc: [1].MOÂ HÌNH CHÖÙC NAÊNG VAØ DOØNG THOÂNG TIN (t.Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån .

Moân Coâng Ngheä Phaàn Meàm .Trang 33 Khoa Coâng Ngheä Thoâng Tin . naèm beân trong phaïm vi thoâng tin heä thoáng Thoâng tin hay döõ lieäu Kho döõ lieäu: löu tröõ döõ lieäu maø ñöôïc söû duïng bôûi nhieàu chöùc naêng xöû lyù Thöïc theå Chöùc naêng xöû lyù Kho döõ lieäu Döõ lieäu . naèm beân ngoaøi bieân giôùi cuûa phaïm vi thoâng tin heä thoáng Chöùc naêng xöû lyù: thöïc hieän chöùc naêng naøo ñoù.LÖÔÏC ÑOÀ DOØNG CHAÛY DÖÕ LIEÄU (DFD) 4 phaàn töû chính Thöïc theå: taïo ra hoaëc tieâu thuï thoâng tin.Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån . tieâu thuï vaø taïo ra thoâng tin.

1.t) DFD ñöôïc xaây döïng qua nhieàu möùc khaùc nhau: möùc 0.Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån . 2… DFD möùc sau chi tieát hôn möùc tröôùc Process Specification (PSPEC) boå sung cho DFD Tính lieân tuïc cuûa doøng döõ lieäu .Trang 34 Khoa Coâng Ngheä Thoâng Tin .LÖÔÏC ÑOÀ DOØNG CHAÛY DÖÕ LIEÄU (t.Moân Coâng Ngheä Phaàn Meàm .

Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån .Trang 35 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .MOÂ HÌNH HAØNH VI PHAÀN MEÀM Ñaày giaáy vaø saün saøng ———————— Yeâu caàu copy Copy xong ———————— Yeâu caàu ñoïc leänh Ñoïc leänh Raûnh ———————— Yeâu caàu ñoïc leänh Löôïc ñoà dòch chuyeån traïng thaùi (STD) theå hieän Caùc traïng thaùi khaùc nhau cuûa heä thoáng Söï dòch chuyeån giöõa caùc traïng thaùi ñoù Ñaày giaáy ———————— Yeâu caàu ñoïc leänh Naïp giaáy Thöïc hieän copy Heát giaáy ———————— Yeâu caàu naïp giaáy Ví duï: mieâu taû hoaït Keït giaáy ———————— Yeâu caàu xöû lyù loãi Xöû lyù loãi Heát keït giaáy ———————— Yeâu caàu ñoïc leänh ñoäng cuûa maùy photocopy .

Trang 36 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån . Luoân luoân tuaân theo tính lieân tuïc cuûa doøng döõ lieäu Vieát PSPEC cho caùc chöùc naêng cuûa DFD möùc cao nhaát .KYÕ THUAÄT PHAÂN TÍCH YEÂU CAÀU Thieát laäp ñoaïn vaên mieâu taû chöùc naêng (processing narrative) cho heä thoáng caàn xaây döïng Xaây döïng DFD ôû caùc möùc khaùc nhau Thieát laäp sô ñoà ngöõ caûnh (DFD möùc 0) Phaân hoaïch DFD vaøo caùc möùc cao hôn Söû duïng phöông phaùp duyeät vaên phaïm.

Trang 37 Khoa Coâng Ngheä Thoâng Tin . output Baûng ñieàu khieån Leänh vaø döõ lieäu Thoâng tin hieån thò Maøn hình SafeHome Traïng thaùi caûm öùng Kieåu baùo ñoäng Chuoâng Taàn soá cuûa soá ñieän thoaïi Boä caûm öùng Ñöôøng ñieän thoaïi .Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån .XAÂY DÖÏNG DFD Phaàn meàm SafeHome: Thieát laäp ñoaïn vaên mieâu taû xöû lyù DFD möùc ngöõ caûnh: nhaän dieän caùc thöïc theå vaø döõ lieäu input.Moân Coâng Ngheä Phaàn Meàm .

XAÂY DÖÏNG DFD (t.Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån .Trang 38 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .t) Baûng ñieàu khieån Leänh vaø döõ lieäu Yeâu caàu caáu hìnhh Caáu hình heä thoáng Thoâng soá caáu hình Töông taùc vôùi user Maät maõ DFD möùc 1: hình thaønh moät soá chöùc naêng chính Maøn hình Start/stop Caám/ Cho pheùp Thoâng baùo a/d Thoâng tin hieån thò Xöû lyù maät maõ Xaùc nhaän maät maõ Thoâng tin caûm öùng Hieån thò Traïng thaùi caûm öùng Theo doõi caûm öùng Kieåu baùo ñoäng Taàn soá cuûa soá ñieän thoaïi Chuoâng Boä caûm öùng Ñöôøng ñieän thoaïi .

Trang 39 Khoa Coâng Ngheä Thoâng Tin . type. vò trí Döõ lieäu caáu hình Ñònh daïng hieån thò Id. type Soá ñieän thoaïi Taïo tín hieäu chuoâng Kieåu baùo ñoäng Chuoâng Traïng thaùi caûm öùng Ñoïc döõ lieäu caûm öùng Quay soá Taàn soá cuûa soá ñieän thoaïi Boä caûm öùng Ñöôøng ñieän thoaïi .t) Thoâng tin caûm öùng DFD möùc 2: tinh cheá chöùc naêng “Theo doõi caûm öùng” Thoâng soá caáu hình Id.Moân Coâng Ngheä Phaàn Meàm .Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån . type Thieát laäp ñieàu kieän baùo ñoäng Id.XAÂY DÖÏNG DFD (t.

Moân Coâng Ngheä Phaàn Meàm .laø ngoân ngöõ giaû giuùp theå hieän kieán truùc vaø giao tieáp cuûa chöùc naêng xöû lyù .VIEÁT PSPEC Coù theå vieát PSPEC baèng moät trong 2 caùch Ngoân ngöõ töï nhieân (töông töï processing narrative) Ngoân ngöõ PDL .Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån .Trang 40 Khoa Coâng Ngheä Thoâng Tin .

ñaëc taû noäi dung vaø thoâng tin phuï trôï . Töø ñieån döõ lieäu thöôøng ñöôïc hieän thöïc nhö laø moät phaàn cuûa coâng cuï CASE.Moân Coâng Ngheä Phaàn Meàm . Moãi phaàn töû bao goàm nhöõng thoâng tin: teân. bí danh.Trang 41 Khoa Coâng Ngheä Thoâng Tin . ñöôïc duøng ôû ñaâu/nhö theá naøo.Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån . ñieàu khieån… Phaûi coù moät caùch thöùc quaûn lyù caùc phaàn töû ñoù sao cho hieäu quaû: töø ñieån döõ lieäu Ñònh nghóa: Töø ñieån döõ lieäu laø moät danh saùch coù toå chöùc cuûa taát caû caùc phaàn töû döõ lieäu caàn thieát cho heä thoáng.TÖØ ÑIEÅN DÖÕ LIEÄU Nhieàu phaàn töû ñöôïc taïo ra trong moâ hình phaân tích: döõ lieäu. chöùc naêng. Caùc phaàn töû ñöôïc ñònh nghóa chính xaùc vaø chaët cheõ sao cho caû phaân tích vieân vaø khaùch haøng cuøng chia seû moät suy nghó veà chuùng.

Trang 42 Khoa Coâng Ngheä Thoâng Tin .Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån .t) Ví duï phaàn töû döõ lieäu soá ñieän thoaïi Teân: Soá ñieän thoaïi Bí danh: Khoâng Ñöôïc duøng ôû ñaâu/nhö theá naøo: output cuûa Thieát laäp ñieàu kieän baùo ñoäng input cuûa Quay soá Ñaëc taû noäi dung: soá ñieän thoaïi = [ môû roäng ñòa phöông | soá beân ngoaøi ] môû roäng ñòa phöông = [ 2001 | 2002 … | 2009 ] soá beân ngoaøi = 9 + [ soá ñòa phöông | soá ñöôøng daøi ] soá ñòa phöông = tieàn toá + <chuoãi 4 kyù soá> soá ñöôøng daøi = (1) + maõ vuøng + soá ñòa phöông tieàn toá = [ 795 | 799 | 874 | 877 ] .Moân Coâng Ngheä Phaàn Meàm .TÖØ ÑIEÅN DÖÕ LIEÄU (t.

TOÅNG KEÁT Phaân tích yeâu caàu theo pp coå ñieån bao goàm: moâ hình chöùc naêng vaø doøng thoâng tin (DFD). chuù yù baûo toaøn tính lieân tuïc cuûa doøng döõ lieäu Töø ñieån döõ lieäu giuùp quaûn lyù vaø tra cöùu caùc phaàn töû döõ lieäu .Chöông 2: Phaân tích yeâu caàu theo pp coå ñieån . moâ hình döõ lieäu (ERD) vaø moâ hình haønh vi (STD) Löôïc ñoà DFD cô baûn coù 4 kyù hieäu vaø noù ñöôïc môû roäng ñeå bieåu dieãn ñöôïc caùc heä thoáng thôøi gian thöïc Xaây döïng DFD möùc 0 roài ñeán caùc möùc cao hôn.Trang 43 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .

Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí Minh Khoa Coâng Ngheä Thoâng Tin CAÙC KHAÙI NIEÄM CÔ BAÛN CUÛA MOÂ HÌNH HÖÔÙNG ÑOÁI TÖÔÏNG ✦ Lôùp vaø ñoái töôïng. söï ñoùng bao ✦ Thuoäc tính.Trang 44 Khoa Coâng Ngheä Thoâng Tin . tính vónh cöûu Chöông 3 . taùc vuï. thoâng ñieäp ✦ Bao goäp.Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . thöøa keá ✦ Tính ña hình.

8.Trang 45 Khoa Coâng Ngheä Thoâng Tin .2.4. Taùc vuï 3. ñoùng bao 3. Thöøa keá vaø override 3. Thuoäc tính 3.1. Thoâng ñieäp 3.5.7.3.NOÄI DUNG 3.Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . Ñoái töôïng vaø lôùp.6. Tính vónh cöûu . Tính ña hình 3. Bao goäp 3.

Eiffel. C++. Sau ñoù xuaát hieän theâm: Object Pascal.Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . Java… Hình thaønh caùc phöông phaùp phaân tích/thieát keá höôùng ñoái töôïng .GIÔÙI THIEÄU Moâ hình höôùng ñoái töôïng giôùi thieäu moät quan ñieåm laäp trình (vaø phaân tích/thieát keá) khaùc haún so vôùi tröôøng phaùi coå ñieån (coù caáu truùc) Baét ñaàu nhen nhoùm vaøo nhöõng naêm cuoái 60s vaø ñeán ñaàu 90s trôû neân raát phoå bieán trong coâng nghieäp phaàn meàm Nhöõng ngoân ngöõ höôùng ñoái töôïng ñaàu tieân: Smalltalk.Trang 46 Khoa Coâng Ngheä Thoâng Tin .

Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng .ÑOÁI TÖÔÏNG vaø LÔÙP Moâ hình höôùng ñoái töôïng quan nieäm theá giôùi bao goàm caùc ñoái töôïng (object) sinh soáng vaø töông taùc vôùi nhau Ñoái töôïng bao goàm döõ lieäu: mang moät giaù trò nhaát ñònh taùc vuï: thöïc hieän moät coâng vieäc naøo ñoù .Trang 47 Khoa Coâng Ngheä Thoâng Tin .

t) Lôùp (class) ñònh nghóa moät taäp hôïp caùc taùc vuï vaø thuoäc tính maø ñaëc taû ñaày ñuû caáu truùc vaø haønh vi cuûa caùc ñoái töôïng.Trang 48 Khoa Coâng Ngheä Thoâng Tin .ÑOÁI TÖÔÏNG vaø LÔÙP (t.Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . Ñoái töôïng (coøn goïi laø minh duï (instance) ) ñöôïc cuï theå hoaù töø lôùp Caùc ngoân ngöõ laäp trình höôùng ñoái töôïng Khai baùo lôùp: töông töï nhö khai baùo moät kieåu do ngöôøi duøng ñònh nghóa Khai baùo ñoái töôïng: bieán cuûa kieåu lôùp .

Trang 49 Khoa Coâng Ngheä Thoâng Tin .x: float .3 x = 3.ÑOÙNG BAO Circle # Radius: float .y: float + Draw( w: Window) + GetClass( ): String Ñoùng bao: vieäc goäp thuoäc tính vaø taùc vuï trong moät ñoái töôïng ñoàng thôøi giôùi haïn caùch truy xuaát caùc thuoäc tính ñoù (thöôøng phaûi thoâng qua caùc taùc vuï get/set) .Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng c1 : Circle Radius = 1.7 .2 y = 1.

2. x.THUOÄC TÍNH Thuoäc tiùnh (attribute) laø moät vuøng coù theå chöùa döõ lieäu (ñôn hoaëc toå hôïp) cuûa lôùp. Giaù trò cuûa taát caû thuoäc tính xaùc ñònh traïng thaùi cuûa ñoái töôïng Ví duï: moät ñoái töôïng cuûa Circle coù (Radius. 5.Trang 50 Khoa Coâng Ngheä Thoâng Tin . 3.Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . Döõ lieäu maø thuoäc tính theå hieän naèm trong moät khoaûng giaù trò naøo ñoù ñöôïc xaùc ñònh bôûi kieåu. y) = (1.3) .4.

. 5.1.Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . 1. protected.THUOÄC TÍNH (t.. private Coù 2 loaïi taàm vöïc Taàm vöïc lôùp: thuoäc tính chung cho taát caû caùc ñoái töôïng cuûa moät lôùp Taàm vöïc ñoái töôïng: thuoäc tính cuûa töøng ñoái töôïng (coù theå mang giaù trò khaùc nhau) Baäc cuûa thuoäc tính chæ ra soá löôïng döõ lieäu maø baûn thaân thuoäc tính coù theå naém giöõ: 0. *.t) Thuoäc tính coù theå bò che daáu hoaëc truy xuaát ñöôïc töø beân ngoaøi Moät soá ngoân ngöõ laäp trình (vaø UML): public.8 .Trang 51 Khoa Coâng Ngheä Thoâng Tin .

Trang 52 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . Daáu hieäu nhaän daïng cuûa taùc vuï (signature) xaùc ñònh caùc thoâng soá coù theå truyeàn cuõng nhö keát quaû traû veà. Phöông thöùc (method) laø phaàn hieän thöïc cuûa taùc vuï .TAÙC VUÏ Taùc vuï (operation) laø moät dòch vuï coù theå yeâu caàu töø phía ñoái töôïng ñeå thöïc hieän haønh vi.

t) Taùc vuï coù theå bò che daáu hoaëc truy xuaát ñöôïc töø beân ngoaøi Moät soá ngoân ngöõ laäp trình (vaø UML): public.TAÙC VUÏ (t.Trang 53 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . protected. private Taùc vuï coù theå ñöôïc override trong caùc lôùp con thöøa keá Tröøu töôïng (abstract): khoâng coù hieän thöïc Moät soá ngoân ngöõ laäp trình cho pheùp ñònh nghóa Taùc vuï khôûi taïo (constructor): ñöôïc goïi khi ñoái töôïng môùi taïo ra Taùc vuï huûy (destructor): ñöôïc goïi khi ñoái töôïng saép bò huyû boû .

JAVA class abstract HTMLObject { protected static final int LEFT = 0. } public abstract String toHTML( ). private int alignment = LEFT.VÍ DUÏ veà LÔÙP/ÑOÁI TÖÔÏNG .Trang 54 Khoa Coâng Ngheä Thoâng Tin . protected Vector objects = null.Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . protected static final int RIGHT = 2. HTMLObject( ){ // constructor objects = new Vector ( 5 ). protected static final int MIDDLE = 1. // abstract operation } . } public void setAlignment( int algnmt ) { alignment = algnmt. } public int getAlignment( ) { return alignment.

Trang 55 Khoa Coâng Ngheä Thoâng Tin . Thoâng ñieäp bao goàm 3 phaàn Ñoái töôïng ñích Daáu hieäu nhaän daïng cuûa taùc vuï muoán goïi Danh saùch thoâng soá goïi .Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng .THOÂNG ÑIEÄP Thoâng ñieäp laø moät pheùp goïi taùc vuï ñeán moät ñoái töôïng cuï theå.

xem caùc .Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . this) Daáu hieäu nhaän daïng cuûa taùc vuï muoán goïi: teân taùc vuï truøng nhau thoâng soá goïi Danh saùch thoâng soá goïi: nhö pheùp goïi haøm bình thöôøng.Trang 56 Khoa Coâng Ngheä Thoâng Tin . aCircle.Draw( pWnd ).THOÂNG ÑIEÄP (t. chuù yù kieåu khi truyeàn vaø gaùn keát quaû traû veà Ví duï: aCircle.t) Ñoái vôùi caùc ngoân ngöõ laäp trình Ñoái töôïng ñích: bieán ñoái töôïng hoaëc baûn thaân ñoái töôïng muoán göûi thoâng ñieäp (self.SetRadius( 3 ).

Trang HTML bao goàm: text..BAO GOÄP Bao goäp (aggregation) laø quan heä giöõa hai ñoái töôïng Moät ñoái töôïng bao laáy ñoái töôïng kia Quan heä naøy thöôøng xaûy ra trong theá giôùi thöïc. khung xe. caùc lieân keát..Trang 57 Khoa Coâng Ngheä Thoâng Tin . ñoäng cô.Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . ví duï Xe hôi bao goàm: baùnh xe.. hình aûnh. tieâu ñeà.. Slider… naèm trong moät hoäp thoaïi . Checkbox. ComboBox.

t) Hai daïng lieân keát giöõa ñoái töôïng nguoàn vaø ñoái töôïng ñích Chaët cheõ: ñoái töôïng ñích ñöôïc taïo ra vaø huyû ñi ñoàng thôøi vôùi ñoái töôïng nguoàn Loûng leûo: chu kyø soáng cuûa hai ñoái töôïng ñoäc laäp nhau Quan heä bao goäp cuõng ñöôïc aùp duïng cho lôùp Moät soá ngoân ngöõ laäp trình hoã trôï caû 2 daïng lieân keát: bieán & con troû .BAO GOÄP (t.Trang 58 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng .

~Geometry( ). // abstract operation protected: int xPos. virtual void Draw( Window *pWnd ).C++ class Geometry { // abstract base class public: Geometry( ). COLORREF color. }. yPos. virtual void Draw( Window *pWnd ) = 0. }. ~Group( ). yScale. class Group : public Geometry { public: Group( ).Trang 59 Khoa Coâng Ngheä Thoâng Tin . // override private: Geometry **ppGeo.Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . double xScale.VÍ DUÏ veà BAO GOÄP . // pointer container int geoCount. .

Trang 60 Khoa Coâng Ngheä Thoâng Tin . lôùp cha laø toång quaùt hoaù cuûa lôùp con Quan heä naøy cuõng thöôøng ñöôïc ghi nhaän trong theá giôùi thöïc.THÖØA KEÁ vaø OVERRIDE Thöøa keá (inheritance) laø quan heä giöõa hai lôùp Lôùp con thöøa höôûng taát caû thuoäc tính vaø taùc vuï cuûa lôùp cha Lôùp con (subclass) laø cuï theå hoaù cuûa lôùp cha (superclass). Checkbox vaø Dialog ñeàu laø Window Hình troøn. baùo. .Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . hình chöõ nhaät. soùi ñeàu laø thuù Button. hình ellipse ñeàu laø hình veõ 2D. ví duï Hoå.

t) Hai loaïi thöøa keá: ñôn thöøa keá vaø ña thöøa keá Ñôn thöøa keá: moãi lôùp con coù nhieàu nhaát laø moät lôùp cha Ña thöøa keá: Moãi lôùp con coù moät hoaëc nhieàu lôùp cha Naûy sinh hai vaán ñeà: ñuïng ñoä giöõa teân caùc thaønh phaàn (member) cuûa lôùp cha vaø thöøa keá laïi .Trang 61 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng .THÖØA KEÁ vaø OVERRIDE (t.

chæ ñöôïc thay ñoåi phöông thöùc (phaàn hieän thöïc) cuûa noù Ña soá ngoân ngöõ laäp trình höôùng ñoái töôïng hoã trôï thöøa keá Moät soá ngoân ngöõ ñöa ra khaùi nieäm phöông thöùc aûo (virtual) .THÖØA KEÁ vaø OVERRIDE (t.Trang 62 Khoa Coâng Ngheä Thoâng Tin . Phaûi giöõa nguyeân daáu veát nhaän daïng (signature) cuûa taùc vuï bò override.t) Lôùp con coù theå override laïi moät soá taùc vuï cuûa lôùp cha.Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng .

} } .. HTMLDocument( ){ } public void setTitle( String ttl ) { if ( ttl != null ) title = ttl...JAVA class HTMLDocument extends HTMLObject { private String title = null. // other attributes. } public String toHTML( ) { // override StringBuffer html = new StringBuffer.toString( ). // additional implementation.. return html.Trang 63 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng . } public String getTitle( ) { return title.VÍ DUÏ veà THÖØA KEÁ vaø OVERRIDE .

Trang 64 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng .TÍNH ÑA HÌNH Moät ñoái töôïng mang nhieàu boä maët khaùc nhau: cuûa chính lôùp ñaëc taû noù vaø cuûa caùc lôùp cha tính ña hình (polymorphism) Töông hôïp kieåu: kieåu cuûa lôùp con luoân töông hôïp vôùi kieåu lôùp cha Moät soá ngoân ngöõ laäp trình ñònh nghóa khaùi nieäm lieân keát muoän Haøm ñöôïc goïi ñeå ñaùp öùng caùc thoâng ñieäp ñöôïc xaùc ñònh trong thôøi gian thöïc thi chöù khoâng phaûi bieân dòch Moãi ñoái töôïng coù moät baûng phöông thöùc aûo .

Trang 65 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng .t) Window # hWnd: HWND + MoveWindow( ) + GetClass( ): String http : HttpView Ví duï: ñoái töôïng http ñöôïc xem nhö thuoäc kieåu cuûa HttpView.TÍNH ÑA HÌNH (t. View + GetClass( ): String + GetDocument( ): Document HttpView + GetClass( ): String View vaø Window .

Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng .TÍNH VÓNH CÖÛU Chu kyø soáng cuûa ñoái töôïng: khoaûng thôøi gian töø luùc ñoái töôïng ñöôïc taïo ra ñeán luùc noù bò huyû ñi. Thoâng thöôøng chu kyø soáng cuûa ñoái töôïng goùi goïn trong thôøi gian chöông trình thöïc thi .Trang 66 Khoa Coâng Ngheä Thoâng Tin .

TÍNH VÓNH CÖÛU (t.t) Chu kyø soáng cuûa ñoái töôïng coù theå vöôït ra khoûi söï thöïc thi cuûa chöông trình tính vónh cöûu (persistence) Ñoái töôïng ñöôïc caát vaøo boä nhôù vónh cöûu khi chöông trình keát thuùc Khi caàn thieát coù theå khoâi phuïc laïi ñoái töôïng vaøo boä nhôù chính Chæ löu tröõ traïng thaùi cuûa ñoái töôïng Ngoân ngöõ C++ vaø Java: streaming .Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng .Trang 67 Khoa Coâng Ngheä Thoâng Tin .

Caùc ñoái töôïng ñöôïc phaân loaïi baèng lôùp Caùc ñoái töôïng töông taùc vôùi nhau baèng caùch göûi thoâng ñieäp Giöõa caùc lôùp/ñoái töôïng coù theå toàn taïi quan heä bao goäp vaø thöøa keá Tính ña hình: ñoái töôïng mang nhieàu boä maët Tính vónh cöûu: ñoái töôïng coù theå “nguû” . Caùc taùc vuï thieát laäp neân haønh vi cuûa ñoái töôïng.TOÅNG KEÁT Moâ hình höôùng ñoái töôïng quan nieäm theá giôùi bao goàm caùc ñoái töôïng soáng chung vaø töông taùc vôùi nhau: Caùc ñaëc ñieåm chính Ñoùng bao: moãi ñoái töôïng bao goàm döõ lieäu vaø taùc vuï.Moân Coâng Ngheä Phaàn Meàm Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng .Trang 68 Khoa Coâng Ngheä Thoâng Tin .

Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Trang 69 Khoa Coâng Ngheä Thoâng Tin . Hoà Chí Minh Khoa Coâng Ngheä Thoâng Tin MOÂ HÌNH NGHIEÄP VUÏ VAØ THU THAÄP YEÂU CAÀU ✦ Actor & use-case ✦ Moâ hình use-case Chöông 4 .Moân Coâng Ngheä Phaàn Meàm .Tröôøng Ñaïi Hoïc Baùch Khoa Tp.

Thieát laäp caùc moái quan heä 4.1.3.3.4. goäp vaø môû roäng .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu . Khaùi nieäm actor 4. Khaùi nieäm use-case 4. Quan heä lieân keát (association) 4. Actor trong UML 4.Trang 70 Khoa Coâng Ngheä Thoâng Tin . Nhaän dieän caùc tröôøng hôïp söû duïng (use-case) 4.3.2.1.1.NOÄI DUNG 4.2.Moân Coâng Ngheä Phaàn Meàm .3.1.1.3. Use-case trong UML 4.1.2. Quan heä giao tieáp.1.1.1. Tìm kieám use-case 4. Nhaän dieän caùc vai troø (actor) 4.2. Nhaän dieän actor 4.1. Xaây döïng moâ hình use-case 4.

Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Trang 71 Khoa Coâng Ngheä Thoâng Tin .GIÔÙI THIEÄU Khaùch haøng vaø nhaø phaùt trieån gaëp nhau cuøng thaûo luaän veà yeâu caàu cuûa heä thoáng phaàn meàm caàn xaây döïng Moâ hình nghieäp vuï ñöôïc thieát laäp ñeå hoã trôï caû nhaø phaùt trieån laãn khaùch haøng trong vieäc kieåm chöùng laïi vaø thoáng nhaát yeâu caàu phaàn meàm vaø vai troø caùc taùc nhaân beân ngoaøi .Moân Coâng Ngheä Phaàn Meàm .

KHAÙI NIEÄM ACTOR Actor xaùc ñònh moät boä vai troø maø ngöôøi hoaëc vaät seõ ñoùng vai khi töông taùc vôùi heä thoáng phaàn meàm Actor naèm ngoaøi phaïm vi cuûa heä thoáng Chæ quan taâm caùc thoâng ñieäp maø actor göûi hay nhaän Khoâng quan taâm caáu truùc beân trong cuûa actor Phaân loaïi actor Chuû yeáu / Thöù yeáu Tích cöïc / Thuï ñoäng .Trang 72 Khoa Coâng Ngheä Thoâng Tin .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Moân Coâng Ngheä Phaàn Meàm .

Moân Coâng Ngheä Phaàn Meàm .Trang 73 Khoa Coâng Ngheä Thoâng Tin . quaûn trò vaø giöõ cho heä thoáng hoaït ñoäng ? Heä thoáng seõ kieåm soaùt thieát bò phaàn cöùng naøo ? Heä thoáng ñang xaây döïng caàn töông taùc vôùi nhöõng heä thoáng khaùc hay khoâng ? Ai hoaëc vaät theå naøo quan taâm ñeán hay chòu aûnh höôûng bôûi keát quaû maø heä thoáng phaàn meàm taïo ra ? .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .NHAÄN DIEÄN CAÙC ACTOR Traû lôøi moät soá caâu hoûi nhö Ai laø ngöôøi söû duïng chöùc naêng chính cuûa heä thoáng ? Ai caàn söï hoã trôï töø heä thoáng ñeå thöïc hieän coâng vieäc thöôøng nhaät cuûa hoï ? Ai phaûi thöïc hieän coâng vieäc baûo döôõng.

Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Moân Coâng Ngheä Phaàn Meàm .Trang 74 Khoa Coâng Ngheä Thoâng Tin . giaûng vieân vaø khaùch ñeàu laø ñoäc giaû cuûa heä thoáng quaûn lyù thö vieän Ví duï: moät heä thoáng ñaêng kyù moân hoïc trong tröôøng ñaïi hoïc .ACTOR trong UML Actor ñöôïc bieåu dieãn baèng kyù hieäu hình ngöôøi Actor ñöôïc xem laø moät lôùp (class) coù stereotype laø <<actor>> Giöõa caùc actor coù theå coù quan heä toång quaù hoaù Ví duï: Sinh vieân.

Trang 75 Khoa Coâng Ngheä Thoâng Tin .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .t) Sinh vieân Phoøng Ñaøo Taïo Heä thoáng ñaêng kyù moân hoïc Giaûng vieân Phoøng Taøi Vuï .Moân Coâng Ngheä Phaàn Meàm .ACTOR trong UML (t.

Trang 76 Khoa Coâng Ngheä Thoâng Tin .ACTOR trong UML (t.t) Quaûn trò vieân Ngöôøi ñaêng kyù mailbox Heä thoáng göûi nhaän mail .Moân Coâng Ngheä Phaàn Meàm .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .

KHAÙI NIEÄM USE-CASE Use-case bieåu dieãn moät chöùc naêng cuûa heä thoáng phaàn meàm Use-case ñöôïc bieåu dieãn baèng moät chuoãi caùc thoâng ñieäp trao ñoåi beân trong heä thoáng vaø moät hoaëc moät soá thoâng ñieäp trao ñoåi vôùi actor Moät soá quy öôùc Use-case luoân luoân ñöôïc baét ñaàu baèng thoâng ñieäp ñeán töø actor Use-case phaûi hoaøn taát: chuoãi thoâng ñieäp phaûi keát thuùc baèng keát quaû cuï theå.Moân Coâng Ngheä Phaàn Meàm .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu . Loãi thöôøng gaëp: chia nhoû use-case trôû thaønh nhöõng chöùc naêng vuïn vaët .Trang 77 Khoa Coâng Ngheä Thoâng Tin .

.Moân Coâng Ngheä Phaàn Meàm . xöû lyù loãi.. ngoaïi leä. Minh duï cuûa use-case laø kòch baûn (scenario): mieâu taû cuï theå trình töï caùc söï kieän .KHAÙI NIEÄM USE-CASE (t.Trang 78 Khoa Coâng Ngheä Thoâng Tin .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .t) Ñieåm môû roäng laø moät vò trí trong use-case maø taïi ñoù coù theå cheøn chuoãi söï kieän cuûa moät use-case khaùc Use-case coù theå chöùa ñieàu kieän reõ nhaùnh.

söûa ñoåi hoaëc löu tröõ thoâng tin naøo ñoù cuûa heä thoáng khoâng ? Actor caàn thieát phaûi ñöôïc caûnh baùo veà nhöõng söï kieän trong heä thoáng.Moân Coâng Ngheä Phaàn Meàm .TÌM KIEÁM USE-CASE Traû lôøi moät soá caâu hoûi nhö Actor yeâu caàu chöùc naêng gì cuûa heä thoáng ? Actor caàn phaûi ñoïc.Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Trang 79 Khoa Coâng Ngheä Thoâng Tin . taïo. xoaù. hay actor caàn phaûi baùo hieäu cho heä thoáng veà vaán ñeà naøo ñoù khoâng ? Heä thoáng coù theå hoã trôï moät soá coâng vieäc thöôøng nhaät cuûa actor naøo ñoù hay khoâng ? .

t) Moät soá caâu hoûi khaùc caàn chuù yù Heä thoáng caàn döõ lieäu input/ouput naøo ? Döõ lieäu ñoù ñeán töø ñaâu ? Nhöõng khoù khaên naøo lieân quan ñeán hieän thöïc cuûa heä thoáng hieän taïi (chaúng haïn heä thoáng quaûn lyù baèng giaáy tôø neân ñöôïc thay theá baèng heä thoáng quaûn lyù treân maùy tính) ? .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Moân Coâng Ngheä Phaàn Meàm .Trang 80 Khoa Coâng Ngheä Thoâng Tin .TÌM KIEÁM USE-CASE (t.

Trang 81 Khoa Coâng Ngheä Thoâng Tin .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Moân Coâng Ngheä Phaàn Meàm .USE-CASE trong UML Use-case ñöôïc bieåu dieãn baèng hình ellipse Giöõa use-case vaø actor thöôøng coù quan heä lieân keát Giöõa caùc use-case cuõng coù quan heä lieân keát hoaëc toång quaùt hoaù Ví duï: moät heä thoáng ñaêng kyù moân hoïc theo tín chæ trong tröôøng ñaïi hoïc .

Trang 82 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .USE-CASE trong UML (t.t) <<communicate>> Sinh vieân Ñaêng kyù hoïc Quaûn lyù MH Phoøng Ñaøo Taïo Ñaêng kyù daïy <<extend>> Quaûn lyù SV Giaûng vieân Theâm SV môùi .

THIEÁT LAÄP CAÙC MOÁI QUAN HEÄ Quan heä giöõa actor vôùi actor Quan heä giöõa actor vôùi use-case Quan heä giöõa use-case vôùi use-case UML ñöa ra quan heä lieân keát (association) .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Moân Coâng Ngheä Phaàn Meàm .Trang 83 Khoa Coâng Ngheä Thoâng Tin .

Moân Coâng Ngheä Phaàn Meàm .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .QUAN HEÄ LIEÂN KEÁT Quan heä lieân keát chæ ra moät quan heä coù yù nghóa giöõa hai beân Trong thöïc teá: haønh khaùch vôùi laùi xe.Trang 84 Khoa Coâng Ngheä Thoâng Tin . sinh vieân vôùi giaùo vieân. giaûng vieân vôùi moân hoïc… Moät soá tính chaát lieân quan Teân cuûa lieân keát Moät chieàu hay 2 chieàu Baäc: soá löôïng thöïc theå tham gia vaøo lieân keát taïi moãi beân .

.QUAN HEÄ LIEÂN KEÁT trong UML UML bieåu dieãn lieân keát nhö laø moät ñoaïn thaúng (hai chieàu) hoaëc muõi teân (moät chieàu) Coù theå aùp duïng stereotype: <<include>> <<extend>> <<communicate>> .Moân Coâng Ngheä Phaàn Meàm .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu . ..Trang 85 Khoa Coâng Ngheä Thoâng Tin .

Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Moân Coâng Ngheä Phaàn Meàm .LIEÂN KEÁT trong MOÂ HÌNH NGHIEÄP VUÏ Lieân keát laø quan heä duy nhaát giöõa actor vaø use-case Coù theå laø moät chieàu hoaëc hai chieàu actor kích hoaït use-case vaø nhaän keát quaû veà: lieân keát 2 chieàu actor kích hoaït use-case.Trang 86 Khoa Coâng Ngheä Thoâng Tin . khoâng quan taâm keát quaû veà: lieân keát 1 chieàu 1 * Ñaët haøng Ngöôøi baùn haøng .

Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Trang 87 Khoa Coâng Ngheä Thoâng Tin .QUAN HEÄ GIAO TIEÁP Laø quan heä lieân keát coù stereotype laø <<communicate>> Duøng ñeå lieân keát giöõa actor vôùi use-case maø noù kích hoaït <<communicate>> Ñaêng kyù daïy Giaûng vieân .Moân Coâng Ngheä Phaàn Meàm .

Trang 88 Khoa Coâng Ngheä Thoâng Tin .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .QUAN HEÄ GOÄP Laø quan heä lieân keát coù stereotype laø <<include>> Duøng ñeå lieân keát giöõa 2 use-case Trong use-case nguoàn coù moät ñieåm môû roäng maø taïi ñoù baét buoäc phaûi cheøn use-case ñích vaøo .Moân Coâng Ngheä Phaàn Meàm .

dieãn tieán cuûa use-case nguoàn taïm thôøi ngöøng laïi ñeå chuyeån sang dieãn tieán cuûa use-case ñích Khi keát thuùc use-case ñích.t) Taïi ñieåm môû roäng.QUAN HEÄ GOÄP (t.Trang 89 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm . dieãn tieán cuûa use-case nguoàn laïi tieáp tuïc <<include>> Tìm kieám Ñaêng nhaäp .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .

QUAN HEÄ MÔÛ ROÄNG Laø quan heä lieân keát coù stereotype laø <<extend>> Duøng ñeå lieân keát giöõa 2 use-case Trong use-case nguoàn coù moät ñieåm môû roäng maø taïi ñoù coù theå (hoaëc khoâng) phaûi cheøn use-case ñích vaøo Cheøn hay khoâng phuï thuoäc vaøo ñieàu kieän reõ nhaùnh hoaëc töông taùc töø phía actor .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Trang 90 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .

dieãn tieán cuûa use-case nguoàn laïi tieáp tuïc <<extend>> Tìm kieám Ñaêng kyù ñaët choã .QUAN HEÄ MÔÛ ROÄNG (t. neáu ñöôïc môû roäng thì dieãn tieán cuûa use-case nguoàn taïm thôøi ngöøng laïi ñeå chuyeån sang dieãn tieán cuûa use-case ñích Khi keát thuùc use-case ñích.t) Taïi ñieåm môû roäng.Trang 91 Khoa Coâng Ngheä Thoâng Tin .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Moân Coâng Ngheä Phaàn Meàm .

Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .Moân Coâng Ngheä Phaàn Meàm .Trang 92 Khoa Coâng Ngheä Thoâng Tin . use-case vaø caùc moái quan heä Coù theå söû duïng package ñeå gom moät soá use-case lieân quan taïo thaønh moät boä chöùc naêng con cuûa heä thoáng .XAÂY DÖÏNG MOÂ HÌNH USE-CASE Caùc yeâu caàu cuûa phaàn meàm ñöôïc mieâu taû trong moâ hình use-case Moâ hình use-case bao goàm caùc löôïc ñoà use-case (use-case diagram) vaø (coù theå) moät soá package Moãi löôïc ñoà use-case bao goàm caùc actor.

Moân Coâng Ngheä Phaàn Meàm .XAÂY DÖÏNG MOÂ HÌNH USE-CASE (t.Trang 93 Khoa Coâng Ngheä Thoâng Tin .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .t) Caùc quan heä coù theå xaûy ra trong löôïc ñoà use-case Quan heä lieân keát giöõa actor vaø use-case: moät chieàu hoaëc hai chieàu. thöôøng coù stereotype laø <<communicate>> Quan heä môû roäng hay goäp giöõa 2 use-case: quan heä lieân keát vôùi stereotype <<extend>> hay <<include>> Quan heä toång quaùt hoaù (generalization) giöõa caùc actor: nhieàu actor coù vai troø cuûa moät actor tröøu töôïng Quan heä toång quaùt hoaù giöõa caùc use-case: nhieàu use-case laø tröôøng hôïp cuï theå cuûa moät use-case tröøu töôïng .

Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu Makes timetable Finance Manages lecturers Adds students <<include>> <<extend>> <<include>> Manages students .Trang 94 Khoa Coâng Ngheä Thoâng Tin .t) fee summary Prints timetable Student print request <<communicate>> <<communicate>> timetable command Registers courses Removes students People Administration <<include>> Manages course <<extend>> <<include>> Lecturer Reads courses <<include>> <<include>> Login Undertakes courses .XAÂY DÖÏNG MOÂ HÌNH USE-CASE (t.Moân Coâng Ngheä Phaàn Meàm .

Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .XAÂY DÖÏNG MOÂ HÌNH USE-CASE (t.Trang 95 Khoa Coâng Ngheä Thoâng Tin .t) <<communicate>> Forwards Subcriber <<extend>> <<extend>> Removes mailbox <<communicate>> Views mail <<include>> Replies <<communicate>> <<extend>> <<include>> Administrator <<communicate>> <<include>> Adds mailbox Login Composes .Moân Coâng Ngheä Phaàn Meàm .

Moân Coâng Ngheä Phaàn Meàm .Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .t) <<include>> <<extend>> imports <<communicate>> import command models <<communicate>> model command run command <<communicate>> export command exports <<communicate>> save command Viewer toggles light saves model <<communicate>> <<extend>> close command toggles mode sets appearance initializes exits sets eye sets viewing .Trang 96 Khoa Coâng Ngheä Thoâng Tin .XAÂY DÖÏNG MOÂ HÌNH USE-CASE (t.

Moân Coâng Ngheä Phaàn Meàm . caùc use-case vaø caùc löôïc ñoà use-case Tieáp theo moâ hình nghieäp vuï laø moâ hình caùc ñoái töôïng phaân tích .Trang 97 Khoa Coâng Ngheä Thoâng Tin .TOÅNG KEÁT Moâ hình nghieäp vuï theå hieän caùc chöùc naêng cuûa heä thoáng phaàn meàm vaø caùc thöïc theå lieân quan UML ñònh nghóa moâ hình use-case bao goàm caùc actor.Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu .

Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .Moân Coâng Ngheä Phaàn Meàm . Hoà Chí Minh Khoa Coâng Ngheä Thoâng Tin PHAÂN TÍCH YEÂU CAÀU HÖÔÙNG ÑOÁI TÖÔÏNG ✦ Nhaän dieän ñoái töôïng/lôùp ✦ Löôïc ñoà lôùp Chöông 5 .Tröôøng Ñaïi Hoïc Baùch Khoa Tp.Trang 98 Khoa Coâng Ngheä Thoâng Tin .

1.2.2.2. Kieåu döõ lieäu cuûa thuoäc tính 5.2.2. Möùc ñoä truy xuaát thuoäc tính 5. Ñoái töôïng/lôùp thöïc theå 5.3.1.Trang 99 Khoa Coâng Ngheä Thoâng Tin .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng . Nhaän dieän caùc thuoäc tính 5.1. Nhaän dieän caùc ñoái töôïng/lôùp 5. Baäc cuûa thuoäc tính 5.1. Ñoái töôïng/lôùp ñieàu khieån 5.Moân Coâng Ngheä Phaàn Meàm .1. Ñoái töôïng/lôùp bieân 5.3. Nhaän dieän caùc taùc vuï .1.3.2.NOÄI DUNG 5.

2.4. Nhaän dieän caùc moái quan heä 5.2.7.Moân Coâng Ngheä Phaàn Meàm . Xaây döïng löôïc ñoà lôùp 5.NOÄI DUNG (t.t) 5. Thieát laäp caùc package .1. Nhaän dieän caùc thuoäc tính/taùc vuï chung 5.4.1.6. Quan heä bao goäp (aggregation) 5.4. Quan heä lieân keát (association) 5. Quan heä toång quaùt hoùa (generalization) 5. Nhaän dieän lôùp cô sôû 5.5.5.Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .5.Trang 100 Khoa Coâng Ngheä Thoâng Tin .

GIÔÙI THIEÄU Moâ hình nghieäp vuï bieåu dieãn caùc chöùc naêng ñoáii töôïng/lôùp ñoá töôïng/lôùp -.quan heä quan heä phaàn meàm caàn xaây döïng döôùi daïng caùc use-case Moâ hình phaân tích seõ tìm kieám caùc ñoái töôïng “soáng” trong ngöõ caûnh cuûa phaàn meàm Caùc ñoái töôïng seõ töông taùc vôùi nhau ñeå taïo neân caùc chöùc naêng moâ taû bôûi use-case .Moân Coâng Ngheä Phaàn Meàm .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .Trang 101 Khoa Coâng Ngheä Thoâng Tin .

coâng cuï phaùt trieån .Moân Coâng Ngheä Phaàn Meàm . ngoân ngöõ laäp trình.t) Moâ hình phaân tích taäp trung moâ taû vai troø vaø caáu truùc cuûa caùc ñoái töôïng Chöa quan taâm ñeán haønh vi cuï theå vaø nhieäm vuï chi tieát cuûa chuùng trong ngöõ caûnh cuûa heä thoáng Nguyeân taéc: moâ hình phaân tích phaûi ñoäc laäp vôùi o/s.Trang 102 Khoa Coâng Ngheä Thoâng Tin .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .GIÔÙI THIEÄU (t.

Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .Moân Coâng Ngheä Phaàn Meàm .NHAÄN DIEÄN ÑOÁI TÖÔÏNG/LÔÙP Döïa vaøo ñaëc taû cuûa töøng use-case ñeå tìm kieám caùc ñoái töôïng Caùc ñoái töôïng thöôøng xuaát hieän trong caùc danh töø hay nhoùm danh töø Moät soá löu yù Khoâng neân duøng ñoái töôïng ñeå bieåu dieãn moät döõ lieäu ñôn (neân xem laø thuoäc tính cuûa ñoái töôïng khaùc) Ñoái töôïng/lôùp phaûi thöïc söï caàn thieát cho söï hoaït ñoäng cuûa heä thoáng Ñoái töôïng/lôùp ≠ baûng cô sôû döõ lieäu Ñoái töôïng/lôùp ≠ actor .Trang 103 Khoa Coâng Ngheä Thoâng Tin .

Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .NHAÄN DIEÄN ÑOÁI TÖÔÏNG/LÔÙP (t.Moân Coâng Ngheä Phaàn Meàm .Trang 104 Khoa Coâng Ngheä Thoâng Tin . coù theå ñöôïc löu trong cô sôû döõ lieäu Ñoái töôïng bieân (boundary): thöïc hieän chöùc naêng giao tieáp vôùi actor Ñoái töôïng ñieàu khieån (control): ñieàu khieån caùc ñoái töôïng khaùc .t) Phaân loaïi ñoái töôïng/lôùp Ñoái töôïng thöïc theå (entity): bieåu dieãn caùc thoâng tin thieát yeáu cuûa heä thoáng.

Ñoái töôïng cuõng ñöôïc bieåu dieãn baèng hình chöõ nhaät. thoâng thöôøng goàm 2 phaàn: teân ñoái töôïng + teân lôùp (ñöôïc gaïch chaân).t) Trong UML. caùc thuoäc tính vaø caùc taùc vuï Coù theå aùp duïng stereotype cho lôùp: <<entity>>. giaù trò caùc thuoäc tính (traïng thaùi cuûa ñoái töôïng) .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng . lôùp ñöôïc bieåu dieãn baèng moät hình chöõ nhaät goàm 3 phaàn: teân. <<control>>.NHAÄN DIEÄN ÑOÁI TÖÔÏNG/LÔÙP (t.. <<boundary>>.Moân Coâng Ngheä Phaàn Meàm ..Trang 105 Khoa Coâng Ngheä Thoâng Tin .

title: String + GetTitle( ): String + toHTML( ): String .Moân Coâng Ngheä Phaàn Meàm .NHAÄN DIEÄN ÑOÁI TÖÔÏNG/LÔÙP (t.t) HTMLObject # alignment: int + GetAlignment( ): int + toHTML( ): String doc : HTMLDocument alignment = MIDDLE title = “A document” HTMLDocument .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .Trang 106 Khoa Coâng Ngheä Thoâng Tin .

Trang 107 Khoa Coâng Ngheä Thoâng Tin . ñöôïc gaùn stereotype <<entity>> Deã nhaän dieän caùc thuoäc tính cuûa chuùng . file.Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .) Trong UML.Moân Coâng Ngheä Phaàn Meàm ...ÑOÁI TÖÔÏNG/LÔÙP THÖÏC THEÅ Bieåu dieãn cho caùc thöïc theå xuaát hieän moät caùch töï nhieân trong heä thoáng Thoâng tin veà caùc ñoái töôïng thöïc theå coù theå phaûi ñöôïc löu tröõ laâu daøi (database.

Trang 108 Khoa Coâng Ngheä Thoâng Tin .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng . soå tay sinh vieân… Ñoái vôùi heä thoáng mail.Moân Coâng Ngheä Phaàn Meàm . nhaän dieän caùc ñoái töôïng thöïc theå nhö: hoäp thö.t) Ví duï: Message <<entity>> # subject: String # sent: Date # content: String + GetSubject( ): String + toString( ): String Ñoái vôùi heä thoáng ñaêng kyù moân hoïc heä tín chæ qua WEB. thoâng ñieäp mail… Ñoái töôïng ñöôøng ñoàng möùc. thoâng tin GV.ÑOÁI TÖÔÏNG/LÔÙP THÖÏC THEÅ (t. ñaêng kyù nhoùm. nhaän dieän caùc ñoái töôïng thöïc theå nhö: thoâng tin SV. nhoùm lôùp hoïc. ñöùt gaõy vaø baûn ñoà trong chöông trình veõ beà maët ñòa hình .

menu.Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng ..ÑOÁI TÖÔÏNG/LÔÙP BIEÂN Thöïc hieän chöùc naêng giao tieáp vôùi actor Thöôøng chöùa caùc phaàn töû hoaëc ñieàu khieån giao dieän ngöôøi duøng (nuùt nhaán.) Trong UML.Moân Coâng Ngheä Phaàn Meàm .Trang 109 Khoa Coâng Ngheä Thoâng Tin .. hoäp danh saùch. tuyø choïn. ñöôïc gaùn stereotype <<boundary>> Khoù nhaän bieát caùc thuoäc tính vaø taùc vuï trong moâ hình phaân tích .

t) Ví duï: MailView <<boundary>> Ñoái vôùi heä thoáng ñaêng kyù moân hoïc heä tín chæ qua WEB. StudentForm… Ñoái vôùi heä thoáng mail. MailCompose. nhaän dieän caùc ñoái töôïng bieân nhö: MailView.ÑOÁI TÖÔÏNG/LÔÙP BIEÂN (t.Moân Coâng Ngheä Phaàn Meàm .. .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .. nhaän dieän caùc ñoái töôïng bieân nhö: RegisterForm.Trang 110 Khoa Coâng Ngheä Thoâng Tin .

ñöôïc gaùn stereotype <<control>> Lôùp bieân thöôøng coù quan heä lieân keát hoaëc phuï thuoäc vôùi caùc lôùp khaùc .Trang 111 Khoa Coâng Ngheä Thoâng Tin .ÑOÁI TÖÔÏNG/LÔÙP ÑIEÀU KHIEÅN Coù nhieäm vuï ñieàu khieån caùc lôùp khaùc hoaëc (Ñôn giaûn hôn) Nhöõng lôùp khoâng phaûi laø lôùp thöïc theå vaø lôùp bieân Trong UML.Moân Coâng Ngheä Phaàn Meàm .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .

t) Command <<control>> + Execute( ) + Reexecute( ) + Unexecute( ) # Do( ) Ví duï: Ñoái töôïng bieåu dieãn moät soá leänh thoâng thöôøng nhö caét. daùn. thay ñoåi thoâng soá nhìn BgCommand <<control>> + Execute( ) + Reexecute( ) + Unexecute( ) # Do( ) PasteCommand <<control>> + Execute( ) + Reexecute( ) + Unexecute( ) # Do( ) trong hieån thò ñoà hoaï… .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .Trang 112 Khoa Coâng Ngheä Thoâng Tin .ÑOÁI TÖÔÏNG/LÔÙP ÑIEÀU KHIEÅN (t.Moân Coâng Ngheä Phaàn Meàm .

tìm kieám caùc danh töø hoaëc nhoùm danh töø lieân quan ñeán ñoái töôïng ñang xeùt Traû lôøi caâu hoûi: nhöõng thaønh phaàn naøo caáu thaønh ñoái töôïng ñang xeùt ? Löu yù: cuøng moät ñoái töôïng trong caùc ngöõ caûnh khaùc nhau chuùng ta coù theå tìm ñöôïc caùc thuoäc tính khaùc nhau .NHAÄN DIEÄN CAÙC THUOÄC TÍNH Döïa vaøo ñaëc taû cuûa töøng use-case.Moân Coâng Ngheä Phaàn Meàm .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .Trang 113 Khoa Coâng Ngheä Thoâng Tin .

Moân Coâng Ngheä Phaàn Meàm .Trang 114 Khoa Coâng Ngheä Thoâng Tin .NHAÄN DIEÄN CAÙC THUOÄC TÍNH (t.Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .t) Neân xaùc ñònh (tuy nhieân khoâng baét buoäc) trong moâ hình phaân tiùch Kieåu cuûa thuoäc tính: moät soá kieåu cô baûn Baäc cuûa thuoäc tính: soá ít hoaëc soá nhieàu Visibility cuûa thuoäc tính: möùc ñoä cho pheùp truy xuaát thuoäc tiùnh töø beân ngoaøi UML: thuoäc tính ñöôïc mieâu taû töôøng minh hoaëc thoâng qua quan heä vôùi caùc lôùp khaùc .

time. char.Moân Coâng Ngheä Phaàn Meàm .. long. double.Trang 115 Khoa Coâng Ngheä Thoâng Tin .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng . UML cho pheùp ñònh nghóa taát caû caùc kieåu döõ lieäu treân ...KIEÅU DÖÕ LIEÄU CUÛA THUOÄC TÍNH Moät soá kieåu cô baûn cuûa caùc ngoân ngöõ laäp trình: integer.. date. Moät soá kieåu cô baûn khaùc: string. float.

2.. *..Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .Trang 116 Khoa Coâng Ngheä Thoâng Tin .9.Moân Coâng Ngheä Phaàn Meàm . 0.n) . 0.BAÄC CUÛA THUOÄC TÍNH Baäc cuûa thuoäc tính: soá ít hay soá nhieàu Neáu thuoäc tính ñöôïc ñaëc taû töôøng minh: duøng daáu [] ñeå chæ soá nhieàu hoaëc soá löôïng chính xaùc Tröôøng hôïp thuoäc tính ñöôïc mieâu taû thoâng qua quan heä vôùi caùc lôùp khaùc: UML cho pheùp theå hieän baäc treân quan heä (ví duï: 1.

Trang 117 Khoa Coâng Ngheä Thoâng Tin .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng . khoâng neân laø public.Moân Coâng Ngheä Phaàn Meàm .MÖÙC ÑOÄ TRUY XUAÁT THUOÄC TÍNH UML ñònh nghóa 3 möùc ñoä truy xuaát thuoäc tính (visibility) public (+): coù theå truy xuaát thuoäc tính töø taát caû caùc vò trí khaùc nhau protected (#): baûn thaân lôùp ñang xeùt vaø caùc lôùp con cuûa noù coù theå truy xuaát thuoäc tính private (-): chæ coù lôùp ñang xeùt coù theå truy xuaát thuoäc tính Thoâng thöôøng neân ñaët möùc ñoä truy xuaát thuoäc tính laø private hoaëc protected (cho caùc lôùp cô sôû). Thuoäc tính neân ñöôïc truy xuaát thoâng qua taùc vuï get/set .

Moân Coâng Ngheä Phaàn Meàm .Trang 118 Khoa Coâng Ngheä Thoâng Tin .NHAÄN DIEÄN CAÙC TAÙC VUÏ Döïa vaøo ñaëc taû cuûa töøng use-case. . tìm kieám caùc ñoäng töø hoaëc nhoùm ñoäng töø lieân quan ñeán ñoái töôïng ñang xeùt Chuù yù xem ñoái töôïng ñöôïc taïo ra vaø bò huyû boû ñi nhö theá naøo ? Trong thôøi gian ñoù noù göûi/nhaän thoâng ñieäp ra sao ? Caùc ñoái töôïng bieân coù caùc taùc vuï nhaän leänh töø actor.Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .

caùc taùc vuï thöôøng coù visibility laø + hoaëc # Moät soá taùc vuï khoâng xuaát hieän moät caùch töï nhieân trong moâ hình phaân tích moâ hình thieát keá seõ nghieân cöùu kyõ traùch nhieäm vaø haønh vi cuûa töøng ñoái töôïng .Trang 119 Khoa Coâng Ngheä Thoâng Tin .NHAÄN DIEÄN CAÙC TAÙC VUÏ (t.Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .t) Xem xeùt möùc ñoä truy xuaát cuûa taùc vuï töông töï nhö ñoái vôùi caùc thuoäc tính.Moân Coâng Ngheä Phaàn Meàm .

addr: String .addr: String .title: String .division .Nhaän dieän caùc thuoäc tính cho caùc ñoái töôïng: StudentInfo.degree .code: String .acaYear: Date .VÍ DUÏ veà NHAÄN DIEÄN THUOÄC TÍNH StudentInfo <<entity>> .name: String . LecturerInfo .home: String .dateOfBirth: String .Moân Coâng Ngheä Phaàn Meàm .department .name: String .experience: Date + GetName( ): String + GetCode( ): String Heä thoáng ñaêng kyù moân hoïc heä tín chæ qua WEB .health .socialAid + GetName( ): String + GetCode( ): Long LecturerInfo <<entity>> .dateOfBirth: Date .code: Long .Trang 120 Khoa Coâng Ngheä Thoâng Tin .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .

t) CourseOfferring <<entity>> .prerequisite Catalog <<entity>> .Nhaän dieän caùc thuoäc tính cho caùc ñoái töôïng: CourseOffering.Trang 121 Khoa Coâng Ngheä Thoâng Tin . Catalog .VÍ DUÏ veà NHAÄN DIEÄN THUOÄC TÍNH (t.session .courseCode: String .Moân Coâng Ngheä Phaàn Meàm .acaYear: Date .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .courseName: String .credit: int .semester Heä thoáng ñaêng kyù moân hoïc heä tín chæ qua WEB .offering: int .

Trang 122 Khoa Coâng Ngheä Thoâng Tin .altitude: double Fracture <<entity>> .VÍ DUÏ veà NHAÄN DIEÄN THUOÄC TÍNH (t.ID: Integer .x: double .t) Isoquant <<entity>> . Fracture .Moân Coâng Ngheä Phaàn Meàm .ID: Integer .y: double .open: boolean Chöông trình bieåu dieãn beà maët ñòa hình Nhaän dieän caùc thuoäc tính cho caùc ñoái töôïng: * # points Point2D * # points Isoquant.Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .open: boolean .

Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .Trang 123 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .NHAÄN DIEÄN LÔÙP CÔ SÔÛ Lôùp cô sôû (base class) ñöôïc nhaän dieän sau khi ñaõ nhaän dieän caùc lôùp cuï theå Söï xuaát hieän cuûa lôùp cô sôû laøm cho moâ hình phaân tiùch coù tính duøng laïi cao (reusability) vaø deã môû roäng (scalability) UML hoã trôï quan heä toång quaùt hoaù (generalization) Lôùp cô sôû tröøu töôïng (khoâng theå cuï theå hoaù taïo ra ñoái töôïng) coù teân in nghieâng .

NHAÄN DIEÄN caùc THUOÄC TÍNH/TAÙC VUÏ CHUNG Ñoái vôùi caùc ñoái töôïng/lôùp thöïc theå. tìm caùc thuoäc tiùnh chung ñeå hình thaønh lôùp cô sôû Ví duï Trong heä thoáng quaûn lyù thö vieän qua WEB: caùc ñoái töôïng Book.Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .Trang 124 Khoa Coâng Ngheä Thoâng Tin . Magazine coù moät soá thuoäc tính chung hình thaønh lôùp LibraryItem Ñoái vôùi heä thoáng ñaêng kyù moân hoïc tín chæ qua WEB: lôùp PeopleInfo laø lôùp cô sôû cuûa StudentInfo vaø LecturerInfo Chöông trình veõ beà maët ñòa hình: lôùp MapCurve laø lôùp cô sôû cuûa ñöôøng ñoàng möùc Isoquant vaø ñöùt gaõy Fracture .Moân Coâng Ngheä Phaàn Meàm .

Trang 125 Khoa Coâng Ngheä Thoâng Tin .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng Fracture .QUAN HEÄ TOÅNG QUAÙT HOAÙ UML ñònh nghóa quan heä toång quaùt hoaù giöõa MapCurve moät lôùp toång quaù hôn vôùi moät lôùp cuï theå hôn: lôùp cuï theå hôn coù taát caû thuoäc tính. taùc vuï vaø quan heä Isoquant cuûa lôùp kia. Kyù hieäu: muõi teân coù ñaàu laø moät tam giaùc nhoû Lôùp toång quaùt hôn naèm veà phía muõi teân .Moân Coâng Ngheä Phaàn Meàm .

department .home: String .health .title: String .division .degree .t) PeopleInfo <<entity>> # name: String # code: String # dateOfBirth: Date # addr: String Ví duï: trong heä thoáng ñaêng kyù moân hoïc tín chæ qua WEB. lôùp PeopleInfo StudentInfo <<entity>> .experience: Date laø toång quaùt hoaù cuûa StudentInfo vaø LecturerInfo .Trang 126 Khoa Coâng Ngheä Thoâng Tin .QUAN HEÄ TOÅNG QUAÙT HOAÙ (t.Moân Coâng Ngheä Phaàn Meàm .acaYear: Date .socialAid LecturerInfo <<entity>> .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .

Trang 127 Khoa Coâng Ngheä Thoâng Tin .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .NHAÄN DIEÄN CAÙC MOÁI QUAN HEÄ Trong moâ hình phaân tích caùc ñoái töôïng/lôùp coù quan heä vôùi nhau Moät soá quan heä maø UML hoã trôï Toång quaùt hoaù (generalization) Lieân keát (association) Bao goäp (aggregation) Caùc quan heä khaùc ñöôïc aùp duïng cho moâ hình thieát keá Phuï thuoäc (dependency) Cuï theå hoaù (realization) .Moân Coâng Ngheä Phaàn Meàm .

QUAN HEÄ LIEÂN KEÁT Veà yù nghóa vaø kyù hieäu gioáng nhö quan heä lieân keát trong moâ hình nghieäp vuï Aùp duïng cho 2 lôùp coù moái töông quan mang yù nghóa nhaát ñònh Chuù yù ghi roõ (neáu coù theå ñöôïc) Baäc vaø teân vai troø cuûa moãi lôùp trong quan heä Teân cuûa chính quan heä lieân keát .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .Moân Coâng Ngheä Phaàn Meàm .Trang 128 Khoa Coâng Ngheä Thoâng Tin .

Trang 129 Khoa Coâng Ngheä Thoâng Tin .QUAN HEÄ LIEÂN KEÁT (t.Moân Coâng Ngheä Phaàn Meàm ..semester Ví duï: lôùp Registration lieân keát vôùi lôùp StudentInfo.acaYear: Date .80 has Registration <<entity>> .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .t) StudentInfo <<entity>> students 40.1 reg offering CourseOffering <<entity>> LecturerInfo vaø CourseOffering . 0..1 lecturer LecturerInfo <<entity>> 0..

Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng . khi maø moät ñaàu noái lieân keát trôû thaønh ñaàu noái bao goäp (aggregation) Lôùp ôû ñaàu noái bao goäp seõ bao haøm lôùp kia Kyù hieäu cuûa ñaàu noái bao goäp laø moät hình thoi toâ hoaëc khoâng toâ ñen Coù hai daïng bao goäp Chia xeû (shared): chia xeû giöõa caùc bao goäp khaùc nhau Hoaøn toaøn (composite): sôû höõu ñaày ñuû .Moân Coâng Ngheä Phaàn Meàm .Trang 130 Khoa Coâng Ngheä Thoâng Tin .QUAN HEÄ BAO GOÄP UML ñònh nghóa quan heä bao goäp laø tröôøng hôïp ñaëc bieät cuûa quan heä lieân keát.

t) CourseOffering <<entity>> * Catalog <<entity>> . lôùp Catalog bao goäp lôùp CourseOffering Cöûa soå giao dieän bao goäp hoaøn toaøn thanh cuoän vaø menu Menu 1 Window * ScrollBar .Moân Coâng Ngheä Phaàn Meàm .semester Ví duï: Ñoái vôùi heä thoáng ñaêng kyù moân hoïc tín chæ qua WEB.QUAN HEÄ BAO GOÄP (t.Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .Trang 131 Khoa Coâng Ngheä Thoâng Tin .acaYear: Date .

moãi löôïc ñoà moâ taû moät phaàn cuûa heä thoáng Löôïc ñoà lôùp ñöôïc boå sung vaø hoaøn thieän trong moâ hình thieát keá (theâm moät soá lôùp. laøm roõ caùc quan heä) .XAÂY DÖÏNG LÖÔÏC ÑOÀ LÔÙP Löôïc ñoà lôùp (class diagram) bieåu dieãn caáu truùc cuûa moät soá lôùp vaø quan heä giöõa chuùng thoáng Heä thoáng phöùc taïp coù nhieàu lôùp caàn xaây döïng nhieàu löôïc ñoà moâ taû khía caïnh tónh (static) cuûa heä lôùp.Moân Coâng Ngheä Phaàn Meàm .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng . chi tieát caùc thuoäc tính vaø taùc vuï.Trang 132 Khoa Coâng Ngheä Thoâng Tin .

Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .open: boolean * fractures Fracture <<entity>> .x: double .name: String + wrap( ): Region points Point2D .Moân Coâng Ngheä Phaàn Meàm .ID: int .Trang 133 Khoa Coâng Ngheä Thoâng Tin .XAÂY DÖÏNG LÖÔÏC ÑOÀ LÔÙP (t.t) Ví duï: moät löôïc ñoà lôùp cuûa chöông trình hieån thò beà maët ñòa hình Isoquant <<entity>> .altitude: double isoquants * FieldMap <<entity>> .y: double * MapCurve .

Trang 134 Khoa Coâng Ngheä Thoâng Tin .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .Moân Coâng Ngheä Phaàn Meàm .THIEÁT LAÄP CAÙC PACKAGE Package laø moät cô cheá ñeå toå chöùc caùc phaàn töû töû vaøo caùc nhoùm coù lieân heä veà ngöõ nghóa vôùi nhau Package coù theå import caùc phaàn töû töø moät package khaùc Coù theå chæ ra quan heä giöõa caùc package Phuï thuoäc Toång quaùt hoaù .

t) Möùc ñoä truy xuaát cuûa package Private: chæ noù vaø caùc package import noù coù theå truy xuaát noäi dung Protected: gioáng nhö private nhöng cho pheùp theâm caùc package daãn xuaát Public: caùc package khaùc coù theå truy xuaát noäi dung Implementation: khoâng cho pheùp import.Trang 135 Khoa Coâng Ngheä Thoâng Tin . coù theå aùp duïng cho caùc phaàn töû beân trong package .THIEÁT LAÄP CAÙC PACKAGE (t.Moân Coâng Ngheä Phaàn Meàm .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .

health .department .Moân Coâng Ngheä Phaàn Meàm .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng .experience: Date Ví duï: package UniPeople chöùa caùc lôùp lieân quan ñeán thoâng tin con ngöôøi .THIEÁT LAÄP CAÙC PACKAGE (t.Trang 136 Khoa Coâng Ngheä Thoâng Tin .acaYear: Date .t) UniPeople PeopleInfo # name: String # code: String # dateOfBirth: Date # addr: String StudentInfo .title: String .socialAid LecturerInfo .division .degree .home: String .

Trang 137 Khoa Coâng Ngheä Thoâng Tin .Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng moâ hình . package .TOÅNG KEÁT Moâ hình phaân tích nhaän dieän caùc ñoái töôïng/lôùp: thöïc theå. bieân. ñieàu khieån Nhaän dieän caùc thuoäc tính vaø moät soá taùc vuï. tuy nhieân chöa laøm roõ haønh vi cuûa chuùng ( thieát keá) UML hoã trôï moät soá phaàn töû: lôùp.Moân Coâng Ngheä Phaàn Meàm . ñoái töôïng. löôïc ñoà lôùp.

giao dieän . thuû tuïc.Trang 138 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån Chöông 6 . tinh cheá. kieán truùc ✦ Phaân chia module hieäu quaû ✦ Thieát keá döõ lieäu.Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí Minh Khoa Coâng Ngheä Thoâng Tin CÔ SÔÛ CUÛA THIEÁT KEÁ PHAÀN MEÀM VAØ PHÖÔNG PHAÙP THIEÁT KEÁ COÅ ÑIEÅN ✦ Tröøu töôïng hoaù. kieán truùc.

6.1.Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .NOÄI DUNG 6.2. Caùc cô sôû cuûa thieát keá phaàn meàm 6.1.5.1. Thuû tuïc 6.1.4.1. Kieán truùc phaàn meàm 6. Tinh cheá (refirement) 6. Che daáu thoâng tin . Phaân chia module (modularity) 6.1.7. Tröøu töôïng hoaù (abstraction) 6.Trang 139 Khoa Coâng Ngheä Thoâng Tin .1. Caáu truùc döõ lieäu 6.1.1.3.

3. Ñoä keát dính (cohesion) 6. Aùnh xaï doøng transaction . Thieát keá thuû tuïc 6.Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .4.4.2.2. Thieát keá döõ lieäu 6. Aùnh xaï doøng transform 6.1.3.6. Doøng transform vaø doøng transaction 6. Thieát keá giao dieän ngöôøi duøng 6.4.t) 6.NOÄI DUNG (t. Phaân chia module hieäu quaû 6.2.2.Trang 140 Khoa Coâng Ngheä Thoâng Tin .1. Thieát keá kieán truùc 6. Caùc heuristics cho phaân chia module 6.2.3. Söï lieân keát (coupling) 6.4.2.5.

Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .Trang 141 Khoa Coâng Ngheä Thoâng Tin .GIÔÙI THIEÄU Thieát keá phaàn meàm laø coâng vieäc ñaàu tieân cuûa giai ñoaïn phaùt trieån Thieát keá taïo ra caùc bieåu dieãn vaø döõ kieän cuûa heä thoáng phaàn meàm caàn xaây döïng töø keát quaû phaân tích yeâu caàu ñeå coù theå deã daøng hieän thöïc sau ñoù Laø lónh vöïc töông ñoái môùi meû vaø ñang phaùt trieån vôùi nhieàu phöông phaùp khaùc nhau .

Trang 142 Khoa Coâng Ngheä Thoâng Tin .TRÖØU TÖÔÏNG HOAÙ Quaù trình thieát keá traûi qua nhieàu möùc tröøu töôïng hoaù khaùc nhau Möùc cao nhaát: vaán ñeà caàn thieát keá ñöôïc moâ taû moät caùch toång quaùt söû duïng thuaät ngöõ höôùng vaán ñeà Caùc möùc thaáp hôn: höôùng ñeán thuû tuïc xöû lyù chi tieát.Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån . keát hôïp caùc thuaät ngöõ höôùng ñeán hieän thöïc Möùc thaáp nhaát: vaán ñeà ñöôïc moâ taû theo caùch coù theå hieän thöïc tröïc tieáp Phaân loaïi tröøu töôïng hoaù: thuû tuïc vaø döõ lieäu .

caàm laáy tay naém..Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån . Ví duï: haøng. cheøn phaàn töû môùi) Tröøu töôïng hoaù döõ lieäu Laø toå hôïp döõ lieäu moâ taû moät ñoái töôïng döõ lieäu (lieân heä tôùi ñoái töôïng thöïc theå trong UML). choàng. Moät soá ngoân ngöõ laäp trình hoã trôï kieåu ADT vaø template . caùnh cöûa. ñi vaøo…).Trang 143 Khoa Coâng Ngheä Thoâng Tin . theâm moät phaàn töû vaøo danh saùch coù thöù töï (xaùc ñònh vò trí..TRÖØU TÖÔÏNG HOAÙ (t. xoay tay naém. Ví duï: môû cöûa (bao goàm ñi ñeán cöûa.t) Tröøu töôïng hoaù thuû tuïc Laø chuoãi caùc leänh lieân tieáp thöïc hieän chöùc naêng naøo ñoù. keùo caùnh cöûa.

Trang 144 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .TINH CHEÁ Tinh cheá laø quaù trình laøm roõ vaán ñeà Tinh cheá vaø tröøu töôïng hoaù laø hai khaùi nieäm buø tröø nhau: caøng tinh cheá thì caøng haï thaáp möùc tröøu töôïng hoaù .

sau ñoù seõ ñöôïc tích hôïp laïi Phaân chia module laøm cho vieäc quaûn lyù phaàn meàm khoa hoïc hôn Giaû söû C(x): ñoä phöùc taïp cuûa x. Neáu phaân chia p = p1 + p2 ta thaáy (moät caùch tröïc quan): C(p1 + p2) > C(p1) + C(p2)  E(p1 + p2) > E(p1) + E(p2) . E(x): coâng söùc ñeå thöïc hieän x. Roõ raøng: neáu C(p1) > C(p2) thì E(p1) > E(p2).Trang 145 Khoa Coâng Ngheä Thoâng Tin .PHAÂN CHIA MODULE Khaùi nieäm module ñaõ xuaát hieän khoaûng 4 thaäp nieân trôø laïi ñaây Phaàn meàm ñöôïc xaây döïng baèng caùch phaân chia thaønh nhieàu module.Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .

Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .t) Coâng söùc boû ra Toång coâng söùc Soá löôïng module phuï thuoäc vaøo ñoä phöùc taïp cuûa heä thoáng phaàn meàm caàn xaây döïng quaù ít hoaëc quaù nhieàu Vuøng toái öu Coâng söùc tích hôïp Coâng söùc töøng module Soá löôïng module module ñeàu khoâng toát .PHAÂN CHIA MODULE (t.Trang 146 Khoa Coâng Ngheä Thoâng Tin .

Trang 147 Khoa Coâng Ngheä Thoâng Tin . Caùc trang HTML.asp.Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån ... .KIEÁN TRUÙC PHAÀN MEÀM Kieán truùc phaàn meàm moâ taû caùc thaønh phaàn (component) kieán taïo neân heä thoáng phaàn meàm vaø söï giao tieáp giöõa caùc thaønh phaàn ñoù Thaønh phaàn coù theå laø Caùc module maõ nguoàn Caùc file thöïc thi (*. *.) Caùc thaønh phaàn cuûa kieán truùc heä thoáng: ActiveX control.dll..jsp.. *... *. *. bean.class.exe.

i j Width r .t) M Fan-out a Depth d f g e h k l m b c Sô ñoà phaân caáp ñöôïc duøng q Fan-in n o p ñeå mieâu taû söï phaân raõ caùc module.Trang 148 Khoa Coâng Ngheä Thoâng Tin .KIEÁN TRUÙC PHAÀN MEÀM (t.Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .

CAÁU TRUÙC DÖÕ LIEÄU
Caáu truùc döõ lieäu moâ taû söï toå chöùc, phöông thöùc truy xuaát, möùc ñoä lieân keát vaø caùc xöû lyù khaùc cuûa thoâng tin Döõ lieäu ñôn laø daïng caáu truùc döõ lieäu ñôn giaûn nhaát chæ bao goàm moät phaàn töû thoâng tin maø coù theå ñöôïc truy xuaát baèng moät danh ñònh Moät soá daïng phöùc taïp hôn: vector, ma traän, maûng nhieàu chieàu, danh saùch lieân keát, haøng, choàng, caây nhò phaân… Ñöôïc bieåu dieãn ôû caùc möùc tröøu töôïng hoaù khaùc nhau
- Trang 149 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån

THUÛ TUÏC
Thuû tuïc taäp trung vaøo chi tieát xöû lyù cuûa moãi module. Cung caáp ñaëc taû chi tieát cuûa
Chuoãi söï kieän Voøng laëp Quyeát ñònh reõ nhaùnh Coù theå caû caáu truùc döõ lieäu

- Trang 150 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån

CHE DAÁU THOÂNG TIN
Che daáu thoâng tin laø moät trong nhöõng nguyeân lyù quan troïng cuûa vieäc phaân chia module Caùc module giao tieáp vôùi nhau baèng nhöõng thoâng tin thaät söï caàn thieát Nhöõng thoâng tin veà thuû tuïc vaø döõ lieäu cuïc boä cuûa moãi module phaûi ñöôïc che daáu khoûi caùc module khaùc Lôïi ích: kieåm soaùt ñöôïc thay ñoåi vaø söûa loãi deã daøng
- Trang 151 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån

PHAÂN CHIA MODULE HIEÄU QUAÛ
Phaân chia module laø baét buoäc trong giai ñoaïn thieát keá Tuy nhieân: phaân chia kieán truùc phaàn meàm thaønh moät boä caùc module nhö theá naøo laø toát nhaát ? Tieâu chí quan troïng nhaát: tính ñoäc laäp chöùc naêng cuûa caùc module Tính ñoäc laäp chöùc naêng ñöôïc ño baèng 2 tieâu chuaån: ñoä keát dính (cohesion) vaø söï lieân keát (coupling)
- Trang 152 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån

ÑOÄ KEÁT DÍNH
Ñoä keát dính duøng ñeå ño söï phuï thuoäc laãn nhau giöõa nhöõng taùc vuï (task) cuûa moät module Module coù ñoä keát dính cao nhaát khi noù chæ ñaûm nhaän ñuùng moät taùc vuï keát dính chöùc naêng

Thieát keá kieán truùc phaàn meàm: coá gaéng taêng ñoä keát dính

- Trang 153 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån

Trang 154 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .ÑOÄ KEÁT DÍNH (t.t) Coù nhieàu möùc ñoä keát dính (töø thaáp ñeán cao) ngaãu nhieân: caùc taùc vuï khoâng lieân heä vôùi nhau luaän lyù: caùc taùc vuï lieân quan logic vôùi nhau nhaát thôøi: caùc taùc vuï phaûi ñöôïc thöïc thi trong moät khoaûng thôøi gian giao tieáp: caùc taùc vuï coù söû duïng chung moät döõ lieäu naøo ñoù thuû tuïc: caùc taùc vuï phaûi ñöôïc thöïc hieän theo moät traät töï nhaát ñònh chöùc naêng: chæ coù moät taùc vuï .

SÖÏ LIEÂN KEÁT
Söï lieân keát duøng ñeå ño ñaïc quaù trình giao tieáp giöõa caùc module: giao tieáp cuûa module chöùa nhieàu taùc vuï vaø nhieàu thoâng soá goïi thì söï lieân keát caøng cao Thieát keá kieán truùc phaàn meàm: coá gaéng giaûm söï lieân keát

- Trang 155 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån

SÖÏ LIEÂN KEÁT (t.t)
Coù nhieàu möùc ñoä lieân keát (töø cao ñeán thaáp)
lieân keát noäi dung: söû duïng döõ lieäu vaø ñieàu khieån cuûa module khaùc lieân keát chung: coù söû duïng chung döõ lieäu toaøn cuïc lieân keát ngoaïi vi: module phuï thuoäc vaøo moät I/O naøo ñoù lieân keát ñieàu khieån: thoâng soá truyeàn aûnh höôûng ñeán ñieàu khieån lieân keát stamp: truyeàn caáu truùc döõ lieäu phöùc taïp lieân keát döõ lieäu: truyeàn caùc thoâng soá ñôn giaûn
- Trang 156 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån

CAÙC HEURISTICS cho PHAÂN CHIA MODULE
Söûa laïi thieát keá ban ñaàu ñeå taêng ñoä keát dính vaø giaûm söï lieân keát Khi chieàu saâu taêng, haïn cheá fan-out trong khi söû duïng fan-in Giöõ cho taàm aûnh höôûng cuûa moät module naèm beân trong taàm ñieàu khieån cuûa noù Loaïi boû dö thöøa trong giao tieáp cuûa caùc module Öu tieân caùc module taát ñònh, haïn cheá caùc module nhieàu raøng buoäc Ñoùng goùi caùc module ñeå ñaït ñöôïc tính khaû chuyeån (portability)
- Trang 157 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån

THIEÁT KEÁ DÖÕ LIEÄU
Tìm kieám bieåu dieãn luaän lyù cho caùc phaàn töû döõ lieäu ñaõ ñöôïc nhaän dieän trong giai ñoaïn phaân tích yeâu caàu Thieát keá caùc caáu truùc döõ lieäu cuûa chöông trình vaø cô sôû döõ lieäu Thöïc hieän tinh cheá töøng böôùc

- Trang 158 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån

THIEÁT KEÁ DÖÕ LIEÄU (t.t)
Moät soá nguyeân taéc
Nhaän dieän caû caáu truùc döõ lieäu vaø taùc vuï truy xuaát Chuù yù söû duïng töø ñieån döõ lieäu Trì hoaõn thieát keá döõ lieäu möùc thaáp cho ñeán cuoái giai ñoaïn naøy Che daáu bieåu dieãn beân trong cuûa caáu truùc döõ lieäu Phaùt trieån moät thö vieän caùc caáu truùc döõ lieäu + taùc vuï thöôøng gaëp Neân aùp dung kieåu ADT trong thieát keá cuõng nhö trong laäp trình
- Trang 159 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån

THIEÁT KEÁ KIEÁN TRUÙC Muïc tieâu laø xaây döïng sô ñoà phaân caáp module töø DFD Ñaët neàn moùng ñeå thieát keá chi tieát thuû tuïc vaø döõ lieäu Phaân bieät doøng transform vaø doøng transaction trong DFD Thöïc hieän aùnh xaï cho töøng vuøng cuûa DFD tuyø theo noù laø doøng transform hay transaction .Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .Trang 160 Khoa Coâng Ngheä Thoâng Tin .

DOØNG TRANSFORM VAØ TRANSACTION Doøng ñi vaøo Doøng xöû lyù Doøng ñi ra Doøng transform bao goàm 3 phaàn: doøng ñi vaøo. doøng xöû lyù vaø doøng ñi ra .Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .Trang 161 Khoa Coâng Ngheä Thoâng Tin .

Trang 162 Khoa Coâng Ngheä Thoâng Tin .t) Doøng ñi vaøo Doøng transaction bao goàm: doøng ñi vaøo.DOØNG TRANSFORM VAØ TRANSACTION (t. Tcenter vaø caùc ñöôøng xöû T-center lyù ñaàu ra T-center: Chæ coù moät ñöôøng ra ñöôïc kích hoaït taïi moät thôøi ñieåm .Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .

Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .Trang 163 Khoa Coâng Ngheä Thoâng Tin .AÙNH XAÏ DOØNG TRANSFORM Töï ñoïc [1]. trang 377 .

trang 387 .Trang 164 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .AÙNH XAÏ DOØNG TRANSACTION Töï ñoïc [1].

Trang 165 Khoa Coâng Ngheä Thoâng Tin .THIEÁT KEÁ GIAO DIEÄN NGÖÔØI DUØNG Phaàn meàm caàn coù giao dieän thaân thieän vôùi ngöôøi söû duïng Moät soá tieâu chuaån giao dieän Thôøi gian ñaùp öùng cuûa heä thoáng: giaù trò trung bình vaø ñoä leäch Phöông tieän trôï giuùp ngöôøi söû duïng: tích hôïp + add-on Kieåm soaùt thoâng tin loãi: hieän thò caû nguyeân nhaân loãi vaø caùch khaéc phuïc Ñaët teân nhaõn: ngaén goïn vaø gôïi nhôù .Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .

THIEÁT KEÁ GIAO DIEÄN NGÖÔØI DUØNG (t.Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .t) Coâng cuï thieát keá giao dieän neân coù nhöõng tính naêng sau Quaûn lyù thieát bò nhaäp (baøn phím.Trang 166 Khoa Coâng Ngheä Thoâng Tin . khaû naêng cuoän Thieát laäp giao tieáp giöõa chöông trình vôùi giao dieän (vd: haøm ñaùp öùng) Caùch ly chöông trình vôùi caùc haøm quaûn lyù giao dieän Cho pheùp tuyø bieán giao dieän . chuoät) Hieäu chænh thoâng tin input Kieåm soaùt loãi vaø hieån thò thoâng baùo loãi Cung caáp trôï giuùp vaø hieån thò thoâng baùo nhaéc nhôû Cung caáp feedback (ví duï nhö töï ñoäng hieån thò kyù töï ñaùnh vaøo) Kieåm soaùt cöûa soå vaø vuøng.

. hieån thò.) Neân cung caáp feedback cho ngöôøi duøng Yeâu caàu xaùc nhaän nhöõng taùc vuï mang tính phaù hoaïi (xoaù file. REDO Haïn cheá löôïng thoâng tin phaûi ghi nhôù giöõa 2 taùc vuï lieân tieáp Toái öu trong trình baøy hoäp thoaïi vaø di chuyeån mouse Chaáp nhaän loãi töø phía ngöôøi söû duïng Cung caáp trôï giuùp tröïc tuyeán Duøng ñoäng töø ñôn giaûn vaø ngaén goïn ñeå ñaët teân caùc leänh .THIEÁT KEÁ GIAO DIEÄN NGÖÔØI DUØNG (t.t) Moät soá höôùng daãn chung Neân ñoàng nhaát (menu. leänh.Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån . account) Neân hoã trôï UNDO.Trang 167 Khoa Coâng Ngheä Thoâng Tin ..

Trang 168 Khoa Coâng Ngheä Thoâng Tin .t) Ñoái vôùi thoâng tin hieån thò Chæ hieån thò nhöõng thoâng tin phuø hôïp vôùi ngöõ caûnh hieän taïi Duøng teân. töø vieát taét vaø maøu gôïi nhôù Cho pheùp töông taùc tröïc quan Taïo thoâng baùo loãi coù yù nghóa Hieån thò döõ lieäu ôû nhieàu daïng khaùc nhau trong cöûa soå Thieát laäp bieåu dieãn töôïng töï Söû duïng khoâng gian maøn hình moät caùch toái öu .Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .THIEÁT KEÁ GIAO DIEÄN NGÖÔØI DUØNG (t.

THIEÁT KEÁ GIAO DIEÄN NGÖÔØI DUØNG (t.Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .Trang 169 Khoa Coâng Ngheä Thoâng Tin .t) Ñoái vôùi thoâng tin input Haïn cheá input tröïc tieáp (coù theå choïn löïa töø moät soá döõ lieäu coù saün) Neân ñoàng nhaát giöõa thoâng tin input vaø hieån thò Neân cho pheùp tuyø bieán input Caám caùc chöùc naêng khoâng thích hôïp trong ngöõ caûnh hieän taïi Cho pheùp input ôû nhieàu daïng khaùc nhau Ñeå cho ngöôøi söû duïng kieåm soaùt doøng söï kieän töông taùc Töï ñoäng tính caùc giaù trò input cho ngöôøi söû duïng neáu coù theå .

Trang 170 Khoa Coâng Ngheä Thoâng Tin .THIEÁT KEÁ THUÛ TUÏC Thieát laäp thuaät giaûi cho caùc module ñaõ kieán taïo sao cho coù theå deã daøng maõ hoaù baèng ngoân ngöõ laäp trình coù caáu truùc Coù theå bieåu dieãn thuaâït giaûi baèng Löu ñoà thuaät giaûi: ñoïc [1]. trang 409 Ngoân ngöõ PDL .Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån . trang 407 Kyù hieäu daïng baûng : ñoïc [1].

phaân chia module Cuù phaùp töï do cuûa ngoân ngöõ töï nhieân giuùp mieâu taû xöû lyù Phöông tieän moâ taû döõ lieäu ñôn cuõng nhö döõ lieäu toå hôïp Cô cheá ñònh nghóa chöông trình con vaø phöông caùch goïi . khai baùo döõ lieäu. Noù coù caùc tính chaát sau: Cuù phaùp chaët cheõ cuûa caùc töø khoaù hoã trôï ñaëc taû caáu truùc.Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån .Trang 171 Khoa Coâng Ngheä Thoâng Tin .NGOÂN NGÖÕ PDL Ngoân ngöõ PDL vay möôïn töø vöïng cuûa ngoân ngöõ töï nhieân vaø cuù phaùp cuûa ngoân ngöõ laäp trình coù caáu truùc.

b. if ( c > 0 and a < b + c ) if ( a = c ) type := “Equilateral” else if ( a = b or b = c ) type := “Isosceles” else if ( a*a = b*b + c*c ) type := “Right” else type := “Scalene” else type := “Error” end . c so that a >= b >= c.Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån . type: out string) begin sort a.Trang 172 Khoa Coâng Ngheä Thoâng Tin . b.NGOÂN NGÖÕ PDL (t. c: in real.t) procedure AnalyzeTriangle( a.

caáu truùc döõ lieäu. che daáu thoâng tin Phaân chia module hieäu quaû: taêng ñoä keát dính vaø giaûm söï lieân keát Thieát keá coå ñieån bao goàm 4 coâng ñoaïn: t/k döõ lieäu. tính cheá töøng böôùc. chöông trình con.Trang 173 Khoa Coâng Ngheä Thoâng Tin . t/k kieán truùc. t/k giao dieän ngöôøi maùy vaø t/k thuû tuïc .TOÅNG KEÁT Caùc cô sôû cuûa thieát keá phaàn meàm: tröøu töôïng hoaù.Moân Coâng Ngheä Phaàn Meàm Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån . phaân chia module.

Hoà Chí Minh Khoa Coâng Ngheä Thoâng Tin THIEÁT KEÁ HÖÔÙNG ÑOÁI TÖÔÏNG ✦ Haønh vi cuûa ñoái töôïng ✦ Hoaøn chænh ñaëc taû lôùp Chöông 7 .Moân Coâng Ngheä Phaàn Meàm .Chöông 7: Thieát keá höôùng ñoái töôïng .Trang 174 Khoa Coâng Ngheä Thoâng Tin .Tröôøng Ñaïi Hoïc Baùch Khoa Tp.

3.2.2.Moân Coâng Ngheä Phaàn Meàm . Löôïc ñoà traïng thaùi (statechart diagram) 7.2.1.1.2. Söï coäng taùc (collaboration) 7. Thieát keá haønh vi 7.Trang 175 Khoa Coâng Ngheä Thoâng Tin .1.1. Mieâu taû trình töï 7.1.2.Chöông 7: Thieát keá höôùng ñoái töôïng 7.NOÄI DUNG 7.1. Löôïc ñoà hoaït ñoäng (activity diagram) 7. Ñaëc taû chi tieát caùc thuoäc tính 7. Töông taùc giöõa caùc ñoái töôïng 7.2.1. Hoaøn chænh löôïc ñoà lôùp .3.5. Nhaän dieän chính xaùc caùc taùc vuï 7. Nhaän dieän theâm moät soá lôùp thieát keá 7.4. Khaùi nieäm moâ hình ñoäng 7.1. Hoaøn chænh ñaëc taû tónh .2.4.6.1.

3-tier.) Kieán truùc heä thoáng (COM. CORBA hay EJB)  Thieát laäp moâ hình ñoäng (dynamic modeling) vaø chi tieát hoaù moâ hình tónh .) Thieát keá cuõng chòu aûnh höôûng töø: Ngoân ngöõ laäp trình vaø thö vieän laäp trình (Hoã trôï Vector.. document/view. thoâng soá cuûa thoâng ñieäp Thuaät giaûi cuûa taùc vuï ñaùp öùng Caáu truùc döõ lieäu cho caùc thuoäc tính Framework (console. Map.. List.GIÔÙI THIEÄU Giai ñoaïn thieát keá quan taâm ñeán “HOW”: Thöù töï caùc thoâng ñieäp trao ñoåi. hay khoâng ? Hoã trôï template hay khoâng ?.Chöông 7: Thieát keá höôùng ñoái töôïng ...Moân Coâng Ngheä Phaàn Meàm ...Trang 176 Khoa Coâng Ngheä Thoâng Tin .

Chöông 7: Thieát keá höôùng ñoái töôïng .Trang 177 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .KHAÙI NIEÄM MOÂ HÌNH ÑOÄNG Löôïc ñoà lôùp chæ moâ taû khía caïnh tónh cuûa heä thoáng Haønh vi cuûa heä thoáng ñöôïc moâ taû baèng moâ hình ñoäng bao goàm Töông taùc giöõa caùc ñoái töôïng: coäng taùc hay trình töï Traïng thaùi cuûa ñoái töôïng/lôùp Quaù trình hoaït ñoäng cuûa lôùp/ñoái töôïng .

hoaëc gaây ra moät tín hieäu Thoâng ñieäp (message) laø ñaëc taû cuûa kích thích .TÖÔNG TAÙC GIÖÕA CAÙC ÑOÁI TÖÔÏNG Ñoái töôïng töông taùc vôùi nhau (interaction) baèng caùch göûi/nhaän kích thích (stimulus) Actor cuõng coù theå göûi kích thích ñeán ñoái töôïng Kích thích khieán moät taùc vuï thöïc thi.Trang 178 Khoa Coâng Ngheä Thoâng Tin . moät ñoái töôïng ñöôïc taïo ra hay huyû ñi.Chöông 7: Thieát keá höôùng ñoái töôïng .Moân Coâng Ngheä Phaàn Meàm .

TÖÔNG TAÙC GIÖÕA CAÙC ÑOÁI TÖÔÏNG (t.Moân Coâng Ngheä Phaàn Meàm .Chöông 7: Thieát keá höôùng ñoái töôïng .Trang 179 Khoa Coâng Ngheä Thoâng Tin .t) Caùc loaïi thoâng ñieäp Ñôn giaûn Ñoàng boä Baát ñoàng boä Traû veà cuûa goïi haøm .

Moân Coâng Ngheä Phaàn Meàm .Chöông 7: Thieát keá höôùng ñoái töôïng .Trang 180 Khoa Coâng Ngheä Thoâng Tin .SÖÏ COÄNG TAÙC Coäng taùc (collaboration) ñònh nghóa taäp hôïp caùc thaønh phaàn tham gia vaø quan heä giöõa chuùng Caùc thaønh phaàn tham gia laø vai troø maø ñoái töôïng/lôùp ñoùng vai khi töông taùc vôùi nhau Caùc vai troø cuûa ñoái töôïng thöôøng chæ coù nghóa ñoái vôùi moät muïc ñích naøo ñoù Löôïc ñoà coäng taùc (collaboration diagram) ñöôïc thieát laäp ñeå cuï theå hoaù moät use-case hoaëc moät taùc vuï .

Chöông 7: Thieát keá höôùng ñoái töôïng .Trang 181 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .t) Löôïc ñoà coäng taùc laø moät ñoà thò lieân keát caùc vai troø Quan heä lieân keát ñöôïc duøng ñeå keát noái caùc vai troø vôùi nhau Coù theå chæ ra teân vai troø cho caùc lieân keát Töông taùc ñöôïc theå hieän baèng göûi/nhaän thoâng ñieäp Moãi thoâng ñieäp ñöôïc theå hieän baèng muõi teân (nhö ñaõ mieâu taû) coäng vôùi phaàn ñaëc taû .SÖÏ COÄNG TAÙC (t.

6]: invert(x.4.4.2/ 3.SÖÏ COÄNG TAÙC (t.1: p := find(specs) 1. color) .4 3.Moân Coâng Ngheä Phaàn Meàm .1.4 Cuù phaùp toång quaùt cuûa thoâng ñieäp precedessor guard-condition sequence-expression returnvalue := message-name argument-list Ví duï: 2/ 1.Chöông 7: Thieát keá höôùng ñoái töôïng .4. 4..Trang 182 Khoa Coâng Ngheä Thoâng Tin .2 xaûy ra sau 3.t) Caùc thoâng ñieäp ñöôïc ñaùnh soá theo kieåu phaân caáp 3.2 *[i:=1.3.1 vaø caû hai ñöôïc loàng (nested) trong 3.3b xaûy ra ñoàng thôøi vaø ñöôïc loàng trong 3.4.3a vaø 3.

Moân Coâng Ngheä Phaàn Meàm .Trang 183 Khoa Coâng Ngheä Thoâng Tin .t) Löôïc ñoà coäng taùc coù theå ñöôïc thieát laäp ôû moät trong 2 daïng: Daïng cuï theå: moãi vai troø ñöôïc bieåu dieãn baèng moät kyù hieäu cuûa ñoái töôïng cuï theå.SÖÏ COÄNG TAÙC (t. caùc ñöôøng lieân keát ñöôïc aùnh xaï vaøo caùc thoâng ñieäp Thieát laäp löôïc ñoà coäng taùc giuùp cuï theå hoaù (realize) caùc use-case vaø nhaän dieän theâm moät soá taùc vuï cuûa caùc ñoái töôïng/lôùp phaân tích .Chöông 7: Thieát keá höôùng ñoái töôïng . caùc thoâng ñieäp ñöôïc trao ñoåi treân caùc ñöôøng lieân keát Daïng ñaëc taû: moâ taû caùc lôùp.

Moân Coâng Ngheä Phaàn Meàm .Chöông 7: Thieát keá höôùng ñoái töôïng .t) Ví duï: löôïc ñoà coäng taùc möùc cuï theå cho use-case Login cuûa heä thoáng ñaêng kyù moân hoïc tín chæ qua WEB 1: login(uname.1: succ := Verify(uname.pswd) : Database .Trang 184 Khoa Coâng Ngheä Thoâng Tin .pswd) : People 1.SÖÏ COÄNG TAÙC (t.2 [succ = true]: welcome : LoginForm 1.

Chöông 7: Thieát keá höôùng ñoái töôïng .3: SetReg(reg) 3.2: AddStudent(code) : Registration : Database .Moân Coâng Ngheä Phaàn Meàm .1: succ := verify(uname.1: reg := FetchReg(crsOffering) 3.4: beSuccessful 2.SÖÏ COÄNG TAÙC (t.1: create 1. psswd) regForm : RegisterForm 3.t) 2: register 1: submit(uname. psswd) : LoginForm : Student 1.2 [succ = true]: welcome Ví duï: löôïc ñoà coäng taùc möùc cuï theå cho use-case Registers course cuûa heä thoáng ñaêng kyù moân hoïc tín chæ qua WEB 3: submit(crsOffering) 3.Trang 185 Khoa Coâng Ngheä Thoâng Tin .

Moân Coâng Ngheä Phaàn Meàm .Chöông 7: Thieát keá höôùng ñoái töôïng duøng löôïc ñoà tuaàn töï .Trang 186 Khoa Coâng Ngheä Thoâng Tin .MIEÂU TAÛ TRÌNH TÖÏ Löôïc ñoà coäng taùc mieâu taû söï töông taùc theo khía caïnh khoâng gian Ñeå nhaán maïnh trình töï cuûa töông taùc (sequence diagram) Löôïc ñoà tuaàn töï mieâu taû caùc ñoái töôïng töông taùc vôùi nhau theo thôøi gian soáng cuûa noù Caùc thoâng ñieäp ñöôïc trao ñoåi theo trình töï thôøi gian Caùc moái lieân keát khoâng ñöôïc theå hieän trong löôïc ñoà .

Chöông 7: Thieát keá höôùng ñoái töôïng .t) Löôïc ñoà tuaàn töï coù 2 daïng Daïng toång quaùt: theå hieän caû voøng laëp vaø reõ nhaùnh Daïng cuï theå: mieâu taû moät kòch baûn cuï theå Thôøi gian soáng cuûa moãi ñoái töôïng ñöôïc moâ taû theo moät ñöôøng thaúng ñöùng Thoâng thöôøng thôøi gian troâi theo chieàu töø treân xuoáng döôùi Ít khi quan taâm ñeán khoaûng thôøi gian. thöôøng chæ quan taâm ñeán trình töï maø thoâi .MIEÂU TAÛ TRÌNH TÖÏ (t.Moân Coâng Ngheä Phaàn Meàm .Trang 187 Khoa Coâng Ngheä Thoâng Tin .

Moân Coâng Ngheä Phaàn Meàm . raøng buoäc thôøi gian...) ñöôïc vieát ôû leà traùi .Trang 188 Khoa Coâng Ngheä Thoâng Tin .t) Thanh hình chöõ nhaät moâ taû söï thöïc thi cuûa moät taùc vuï ñeå ñaùp öùng laïi thoâng ñieäp göûi ñeán Ñoä daøi cuûa thanh chöõ nhaät phaûn aùnh thôøi gian thöïc thi cuûa taùc vuï vaø tính chaát loàng nhau (nested) giöõa chuùng Caùc doøng text phuï trôï (moâ taû taùc vuï.MIEÂU TAÛ TRÌNH TÖÏ (t.Chöông 7: Thieát keá höôùng ñoái töôïng .

Chöông 7: Thieát keá höôùng ñoái töôïng .Moân Coâng Ngheä Phaàn Meàm .t) Ví duï: löôïc ñoà tuaàn töï daïng toång quaùt ob2 : C2 : People ob3 : C3 ob4 : C4 new( ) ob1 : C1 [x<0] op2( ) [x>=0] op3( ) op4( y ) op5( ob3 ) display( ) .MIEÂU TAÛ TRÌNH TÖÏ (t.Trang 189 Khoa Coâng Ngheä Thoâng Tin .

Moân Coâng Ngheä Phaàn Meàm .t) Ví duï: löôïc ñoà tuaàn töï daïng toång quaùt :Computer : Operator :PrinterServer :Printer print(ps-file ) a {b .Trang 190 Khoa Coâng Ngheä Thoâng Tin .a < 5 seconds} b print(ps-file) print(ps-file) .Chöông 7: Thieát keá höôùng ñoái töôïng .MIEÂU TAÛ TRÌNH TÖÏ (t.

psswd) .t) Ví duï: löôïc ñoà tuaàn töï daïng cuï theå cho use-case Login cuûa heä thoáng ñaêng kyù moân hoïc tín chæ qua WEB : LoginForm 1: submit(uname.2: welcome : Database : People 1.Trang 191 Khoa Coâng Ngheä Thoâng Tin .Chöông 7: Thieát keá höôùng ñoái töôïng .1: verify(uname. psswd) 1.MIEÂU TAÛ TRÌNH TÖÏ (t.Moân Coâng Ngheä Phaàn Meàm .

Moân Coâng Ngheä Phaàn Meàm . psswd) 1.1: reg := fetchReg(srcOffering) 3.1: create 3. psswd) 2: register 2.MIEÂU TAÛ TRÌNH TÖÏ (t.3: setReg(reg) use-case Register courses 3. submit(crsOffering) 3.2 [succ = true]: welcome : LoginForm : Registration : Database Ví duï: löôïc ñoà tuaàn töï daïng cuï theå cho 1.1: succ := verify(uname.Chöông 7: Thieát keá höôùng ñoái töôïng .2: addStudent(code) 3.4: beSuccessful( ) .Trang 192 Khoa Coâng Ngheä Thoâng Tin .t) : Student regForm : RegisterForm 1: submit(uname.

LÖÔÏC ÑOÀ TRAÏNG THAÙI Chuaån UML ñöa ra löôïc ñoà traïng thaùi ñeå bieåu dieãn haønh vi cuûa moät phaàn töû baát kyø baèng caùch chæ ra ñaùp öùng cuûa noù ñoái vôùi caùc söï kieän beân ngoaøi Thoâng thöôøng löôïc ñoà traïng thaùi ñöôïc aùp duïng cho ñoái töôïng/lôùp bieåu dieãn haønh vi cuûa lôùp Traïng thaùi cuûa moãi ñoái töôïng (ñònh nghóa goác ?) ít nhieàu seõ bò thay ñoåi trong suoát chu kyø soáng cuûa ñoái töôïng .Chöông 7: Thieát keá höôùng ñoái töôïng .Trang 193 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .

thöïc hieän moät coâng vieäc hoaëc ñôïi moät söï kieän naøo ñoù Thoâng thöôøng moãi ñoái töôïng naèm ôû moät traïng thaùi trong moät khoaûng thôøi gian nhaát ñònh sang traïng thaùi khaùc Traïng thaùi toång hôïp laø traïng thaùi coù theå ñöôïc phaân raõ veà caùc traïng thaùi ñôn giaûn .LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.Trang 194 Khoa Coâng Ngheä Thoâng Tin .Chöông 7: Thieát keá höôùng ñoái töôïng noù seõ dòch chuyeån töø traïng thaùi naøy .Moân Coâng Ngheä Phaàn Meàm .t) Traïng thaùi ñôn giaûn laø moät tình traïng trong ñôøi soáng ñoái töôïng hoaëc moät töông taùc cuûa ñoái töôïng maø theo ñoù ñoái töôïng thoaû moät ñieàu kieän.

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.Trang 195 Khoa Coâng Ngheä Thoâng Tin .t) Trong UML kyù hieäu cuûa traïng thaùi laø moät hình chöõ nhaät troøn goùc vaø ñöôïc chia laøm nhieàu phaàn phaân caùch nhau baèng caùc ñoaïn thaúng naèm ngang: Phaàn teân Phaàn mieâu taû caùc haønh ñoäng beân trong Typing Password entry / set echo visible exit / set echo normal character / handle character help / display help .Chöông 7: Thieát keá höôùng ñoái töôïng .Moân Coâng Ngheä Phaàn Meàm .

t) Teân traïng thaùi laø duy nhaát trong löôïc ñoà.Moân Coâng Ngheä Phaàn Meàm .Trang 196 Khoa Coâng Ngheä Thoâng Tin .LÖÔÏC ÑOÀ TRAÏNG THAÙI (t. coù cuù phaùp nhö sau action-label ’/’ action-expression Moät soá nhaõn haønh ñoäng (action-label) ñöôïc quy öôùc tröôùc: entry: thöïc hieän haønh ñoäng taïi thôøi ñieåm baét ñaàu traïng thaùi exit: thöïc hieän haønh ñoäng taïi thôøi ñieåm keát thuùc traïng thaùi do: thöïc hieän haønh ñoäng suoát traïng thaùi hoaëc cho ñeán khi keát thuùc noù include: trieäu goïi moät maùy traïng thaùi con khaùc .Chöông 7: Thieát keá höôùng ñoái töôïng . coù theå khoâng coù (traïng thaùi voâ danh) Caùc haønh ñoäng beân trong: caùc haønh ñoäng hoaëc taùc vuï ñöôïc thöïc hieän khi ñoái töôïng naèm ôû traïng thaùi ñang xeùt.

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.Chöông 7: Thieát keá höôùng ñoái töôïng .t) Caùc nhaõn haønh ñoäng khaùc chæ ra söï kieän kích hoaït haønh ñoäng töông öùng trong bieåu thöùc haønh ñoäng (action-expression) Cuù phaùp cuûa bieåu thöùc haønh ñoäng event-name ’(‘ parameter-list ’)’ ’[‘guard-condition’]’ ’/’ action-expression .Moân Coâng Ngheä Phaàn Meàm .Trang 197 Khoa Coâng Ngheä Thoâng Tin .

kyù hieäu Traïng thaùi toång hôïp (composite) ñöôïc phaân raõ thaønh nhieàu traïng thaùi con ñoàng thôøi hoaëc caùc traïng thaùi con loaïi tröø nhau .Chöông 7: Thieát keá höôùng ñoái töôïng . kyù hieäu Traïng thaùi keát thuùc: khi ñoái töôïng bò huyû boû hoaëc traïng thaùi toång hôïp trôû neân khoâng xaùc ñònh.Moân Coâng Ngheä Phaàn Meàm .t) Traïng thaùi baét ñaàu: khi ñoái töôïng ñöôïc taïo ra hoaëc traïng thaùi toång hôïp ñöôïc xaùc ñònh.LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.Trang 198 Khoa Coâng Ngheä Thoâng Tin .

Trang 199 Khoa Coâng Ngheä Thoâng Tin .t) Ví duï: phaân raõ traïng thaùi toång hôïp Running Running Forward Backward Slow Fast .LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.Chöông 7: Thieát keá höôùng ñoái töôïng .Moân Coâng Ngheä Phaàn Meàm .

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.Chöông 7: Thieát keá höôùng ñoái töôïng .Moân Coâng Ngheä Phaàn Meàm . coù theå laø Moät ñieàu kieän trôû neân ñuùng (chuù yù khaùc vôùi guard-condition) Moät ñoái töôïng nhaän tín hieäu töø ñoái töôïng khaùc Moät pheùp goïi taùc vuï Moät khoaûng thôøi gian ñaõ troâi qua keå töø moät söï kieän naøo ñoù Cuù phaùp cuûa söï kieän: event-name ’(’ parameter-list ’)’ Söï kieän coù taàm vöïc thuoäc veà package chöùa lôùp ñang moâ taû löôïc ñoà traïng thaùi.t) Söï kieän (event) kích hoaït dòch chuyeån traïng thaùi. chöù khoâng chæ thuoäc veà rieâng lôùp ñoù .Trang 200 Khoa Coâng Ngheä Thoâng Tin .

t) Dòch chuyeån traïng thaùi laø quan heä giöõa hai traïng thaùi theo ñoù ñoái töôïng ñang ôû traïng thaùi thöù nhaát seõ chuyeån sang traïng thaùi thöù hai ñoàng thôøi seõ thöïc hieän moät soá haønh ñoäng khi söï kieän töông öùng xaûy ra vaø thoaû maõn moät soá ñieàu kieän nhaát ñònh Ñöôïc kyù hieäu nhö moät muõi teân höôùng töø traïng thaùi nguoàn ñeán traïng thaùi ñích vaø ñöôïc gaùn nhaõn Nhaõn coù cuù phaùp: event-signature ’[’ guard-condition ’]’ ’/’ action-expression .Moân Coâng Ngheä Phaàn Meàm .Trang 201 Khoa Coâng Ngheä Thoâng Tin .Chöông 7: Thieát keá höôùng ñoái töôïng .LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.

Trang 202 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.Chöông 7: Thieát keá höôùng ñoái töôïng .t) Ví duï: löôïc ñoà traïng thaùi cuûa lôùp Message hightlight Composed focus compose command Read entry/ convert to rich text entry/ assign ID exit/ fill date on char/ handle character re-fwd cmd / quote / append subject save command send command[ recipents != null ] / parse read command / recover( id ) unhightlight Sending do/ send( repc ) sending done Stored entry/ save into folder logout .

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.Trang 203 Khoa Coâng Ngheä Thoâng Tin . param) import / map := create( file ) image loaded exit command Saved exit command entry/ render do/ store modeling done import / map := create(file) import command[ file valid ] model command viewing command save command Dirty exit command / save entry/ render .Moân Coâng Ngheä Phaàn Meàm .t) import failed No map run do/ load map do/ load image map loaded[ image invalid ] Modeling do/ model(map.Chöông 7: Thieát keá höôùng ñoái töôïng .

Chöông 7: Thieát keá höôùng ñoái töôïng taäp trung vaøo .Moân Coâng Ngheä Phaàn Meàm .Trang 204 Khoa Coâng Ngheä Thoâng Tin .LÖÔÏC ÑOÀ HOAÏT ÑOÄNG Löôïc ñoà hoaït ñoäng (activity diagram) laø moät bieán theå cuûa löôïc ñoà traïng thaùi trong ñoù traïng thaùi laø söï thöïc thi moät haønh ñoäng vaø söï dòch chuyeån ñöôïc kích hoaït khi haønh ñoäng hoaøn taát Ñöôïc duøng ñeå moâ taû moät thuû tuïc hay thuaäït giaûi caùc haønh ñoäng Moãi haønh ñoäng ñöôïc kyù hieäu baèng hình veõ nhö sau work .

t) Quyeát ñònh reõ nhaùnh: hình thoi coù moät ñöôøng vaøo vaø nhieàu nhaùnh ra. moãi nhaùnh ñöôïc gaùn moät guard-condition Caùc nhaùnh ra ñöôïc nhaäp laïi baèng moät hình thoi khaùc Moãi “ñöôøng bôi” (swimlane) ñaïi dieän moät lôùp hoaëc moät actor .LÖÔÏC ÑOÀ HOAÏT ÑOÄNG (t.Trang 205 Khoa Coâng Ngheä Thoâng Tin .Chöông 7: Thieát keá höôùng ñoái töôïng .Moân Coâng Ngheä Phaàn Meàm .

Trang 206 Khoa Coâng Ngheä Thoâng Tin .LÖÔÏC ÑOÀ HOAÏT ÑOÄNG (t.t) LoginForm Database Show input for username and password Verify Ví duï: löôïc ñoà hoaït ñoäng cho taùc vuï submit [ psswd invalid ] [ psswd valid ] cuûa LoginForm Reject Welcome .Moân Coâng Ngheä Phaàn Meàm .Chöông 7: Thieát keá höôùng ñoái töôïng .

Moân Coâng Ngheä Phaàn Meàm .LÖÔÏC ÑOÀ HOAÏT ÑOÄNG (t.Trang 207 Khoa Coâng Ngheä Thoâng Tin .t) RegisterForm submit Read course offerings Look for registration Database Registration Ví duï: löôïc ñoà hoaït ñoäng cho taùc vuï submit cuûa RegisterForm [ reg found ] [ reg not found ] Create registration Fetch registration Show success Update registration Add student .Chöông 7: Thieát keá höôùng ñoái töôïng .

heä ñieàu haønh vaø loaïi maùy tính Moät soá lôùp seõ xuaát hieän khi aùp duïng nhöõng yeáu toá treân Ngoân ngöõ laäp trình: template.NHAÄN DIEÄN THEÂM MOÄT SOÁ LÔÙP THIEÁT KEÁ Moâ hình thieát keá phaàn naøo chòu aûnh höôûng töø ngoân ngöõ laäp trình. Time. vector. . iostream… Framework: Applet. framework. CObject. Panel. thö vieän hoã trôï. môû caàu noái network. CDocument.Chöông 7: Thieát keá höôùng ñoái töôïng . caùc phaàn töû giao dieän…..Moân Coâng Ngheä Phaàn Meàm . List. HttpServlet… Heä ñieàu haønh: caùc lôùp thao taùc file. CView. Map..Trang 208 Khoa Coâng Ngheä Thoâng Tin . Thö vieän hoã trôï: lôùp Date.

hoaëc Taïo ra lôùp môùi baèng caùch thöøa keá hay tích hôïp caùc lôùp coù saün. phuï thuoäc) .Moân Coâng Ngheä Phaàn Meàm ..t) Moät soá lôùp khaùc xuaát hieän laøm chöùc naêng duyeät (iterate) moät lôùp khaùc hay thöïc hieän caùc tính toaùn phöùc taïp. Isoquant&> Boå sung caùc lôùp môùi vaøo löôïc ñoà lôùp ñoàng thôøi caäp nhaät caùc moái quan heä môùi (bao goäp. ví duï CArray<Isoquant.. Söû duïng tröïc tieáp caùc lôùp do thö vieän hay ngoân ngöõ cung caáp.Trang 209 Khoa Coâng Ngheä Thoâng Tin .Chöông 7: Thieát keá höôùng ñoái töôïng .NHAÄN DIEÄN THEÂM MOÄT SOÁ LÔÙP THIEÁT KEÁ (t.

ÑAËC TAÛ CHI TIEÁT CAÙC THUOÄC TÍNH Message <<entity>> # subject: String # content: String + GetSubject( ): String + toString( ): String Trong moâ hình phaân tích caàn phaûi chæ roõ kieåu (hoaëc caáu truùc döõ lieäu) vaø möùc ñoä truy xuaát cuûa caùc thuoäc tính Coù theå choïn moät lôùp cung caáp bôûi thö vieän laäp trình ñeå cuï theå hoaù kieåu hay caáu 1 sent CDate truùc döõ lieäu boå sung lôùp cuûa thö vieän vaø quan heä bao goäp vaøo löôïc ñoà lôùp .Chöông 7: Thieát keá höôùng ñoái töôïng .Moân Coâng Ngheä Phaàn Meàm .Trang 210 Khoa Coâng Ngheä Thoâng Tin .

NHAÄN DIEÄN CHÍNH XAÙC CAÙC TAÙC VUÏ Caùc löôïc ñoà moâ taû haønh vi (coäng taùc.Moân Coâng Ngheä Phaàn Meàm . .Trang 211 Khoa Coâng Ngheä Thoâng Tin .Chöông 7: Thieát keá höôùng ñoái töôïng . fetchReg( crsOff: CourseOffering) : Registration. tuaàn töï. traïng thaùi. haønh ñoäng) giuùp nhaän dieän chính xaùc caùc taùc vuï cuûa caùc lôùp Döïa vaøo caùc thoâng ñieäp hay haønh ñoäng ñeå xaùc ñònh signature cuûa caùc taùc vuï Ví duï: nhaän dieän moät soá taùc vuï cuûa lôùp Database setReg( reg: Registration ).

Moân Coâng Ngheä Phaàn Meàm .Trang 212 Khoa Coâng Ngheä Thoâng Tin . makeWelcome( ). . psswd: String ). Ví duï: nhaän dieän moät taùc vuï cuûa lôùp LoginForm submit( uname: String. store( ). param ). load( ). model( map: FieldMap.Chöông 7: Thieát keá höôùng ñoái töôïng .t) Ví duï: nhaän dieän moät taùc vuï cuûa lôùp ChildView render( ).NHAÄN DIEÄN CHÍNH XAÙC CAÙC TAÙC VUÏ (t.

package ôû phía ñuoâi muõi teân phuï thuoäc vaøo lôùp. <<derive>>. <<trace>> . <<instantiate>>. <<import>>. taùc vuï vaø caùc moái quan heä môùi UML ñònh nghóa quan heä phuï thuoäc (dependency) giöõa 2 lôùp hoaëc package: thay ñoåi ôû moät lôùp.Trang 213 Khoa Coâng Ngheä Thoâng Tin . package kia Kyù hieäu cuûa quan heä phuï thuoäc laø muõi teân ñöùt neùt: lôùp. package phía ñaàu muõi teân Moät soá stereotype quy öôùc tröôùc: <<call>>. package keùo theo thay ñoåi ôû lôùp. <<refine>>.HOAØN CHÆNH LÖÔÏC ÑOÀ LÔÙP Caäp nhaät caùc lôùp môùi.Chöông 7: Thieát keá höôùng ñoái töôïng . thuoäc tính. <<realize>>.Moân Coâng Ngheä Phaàn Meàm .

Chöông 7: Thieát keá höôùng ñoái töôïng . psswd: String) + makeWelcome( ) + submit(offering: CourseOffering) + beSuccessful( ) Database <<call>> + fetchReg(crs: CourseOffering): Registration + setReg(reg: Registration) <<call>> .Trang 214 Khoa Coâng Ngheä Thoâng Tin .HOAØN CHÆNH LÖÔÏC ÑOÀ LÔÙP (t.t) Ví duï: theâm löôïc ñoà lôùp cho heä thoáng ñaêng kyù moân hoïc LoginForm <<boundary>> RegisterForm <<boundary>> + submit(uname: String.Moân Coâng Ngheä Phaàn Meàm .

t) # map FieldMap <<entity>> FractureIterator + current( ): Fracture* MapIterator # setBound(b: int) + current( ): Item + operator++() + operator--() + Last( ) + First( ) Item <<friend>> MapIterator<Isoquant*> MapIterator<Fracture*> IsoquantIterator + current( ): Isoquant* .HOAØN CHÆNH LÖÔÏC ÑOÀ LÔÙP (t.Trang 215 Khoa Coâng Ngheä Thoâng Tin .Chöông 7: Thieát keá höôùng ñoái töôïng .Moân Coâng Ngheä Phaàn Meàm .

HOAØN CHÆNH LÖÔÏC ÑOÀ LÔÙP (t.Trang 216 Khoa Coâng Ngheä Thoâng Tin .) Moãi package chöùa moät hoaëc moät vaøi löôïc ñoà lôùp.. veà caùc servlet… Caùc package theå hieän kieán truùc phaàn meàm. thoâng thöôøng chòu aûnh höôûng töø framework (Document/View.Moân Coâng Ngheä Phaàn Meàm .Chöông 7: Thieát keá höôùng ñoái töôïng . trong ñoù coù theå tham chieáu ñeán moät soá lôùp thuoäc caùc package khaùc .. veà thoâng tin sinh vieân/giaûng vieân. veà cöûa soå giao dieän. 3-tiers.t) Chuù yù söû duïng package ñeå toå chöùc caùc phaàn töû lieân quan vôùi nhau: caùc lôùp veà baûn ñoà ñòa hình.

traïng thaùi.Trang 217 Khoa Coâng Ngheä Thoâng Tin .Chöông 7: Thieát keá höôùng ñoái töôïng . boå sung moät soá lôùp thieát keá hoaøn thieän khía caïnh tónh Thieát laäp caùc package taïo thaønh kieán truùc phaàn meàm .Moân Coâng Ngheä Phaàn Meàm . tuaàn töï.TOÅNG KEÁT Moâ hình thieát keá bao truøm caû khía caïnh tónh vaø ñoäng cuûa heä thoáng phaàn meàm caàn xaây döïng UML hoã trôï moät soá löôïc ñoà giuùp moâ taû khía caïnh ñoäng: coäng taùc. haønh ñoäng Mieâu taû chính xaùc thuoäc tính vaø taùc vuï.

Moân Coâng Ngheä Phaàn Meàm .Tröôøng Ñaïi Hoïc Baùch Khoa Tp.Chöông 8: Hieän thöïc vaø trieån khai . Hoà Chí Minh Khoa Coâng Ngheä Thoâng Tin HIEÄN THÖÏC VAØ TRIEÅN KHAI ✦ Caùc thaønh phaàn ✦ Caùc thieát bò Chöông 8 .Trang 218 Khoa Coâng Ngheä Thoâng Tin .

1.1.NOÄI DUNG 8.3. Löôïc ñoà thaønh phaàn (component diagram) 8.Chöông 8: Hieän thöïc vaø trieån khai .1. Gaùn caùc lôùp vaøo caùc thaønh phaàn maõ nguoàn 8.1.2.1.2.Moân Coâng Ngheä Phaàn Meàm . Hieän thöïc 8.2. Sinh maõ nguoàn 8.4.2.Trang 219 Khoa Coâng Ngheä Thoâng Tin .2. Löôïc ñoà trieån khai (deployment diagram) . Node trieån khai 8. Trieån khai 8. Thaønh phaàn (component) 8.2. Keát noái caùc node 8.3.1.1.

Chöông 8: Hieän thöïc vaø trieån khai .Moân Coâng Ngheä Phaàn Meàm .Trang 220 Khoa Coâng Ngheä Thoâng Tin .GIÔÙI THIEÄU Caàn phaûi xaây döïng chöông trình chaïy ñöôïc töø keát quûa cuûa giai ñoaïn thieát keá Caùc lôùp seõ ñöôïc cuï theå hoaù vaøo caùc thaønh phaàn phaàn meàm nhö theá naøo vaø baèng ngoân ngöõ laäp trình gì ? Chöông trình seõ ñöôïc caøi ñaët ra sao treân taøi nguyeân tính toaùn ? .

Moân Coâng Ngheä Phaàn Meàm .Chöông 8: Hieän thöïc vaø trieån khai .Trang 221 Khoa Coâng Ngheä Thoâng Tin .THAØNH PHAÀN Thaønh phaàn (component) bieåu dieãn moät phaàn hieän thöïc naøo ñoù cuûa heä thoáng Moät soá stereotype quy öôùc tröôùc: <<file>>: maõ nguoàn hay döõ lieäu <<executable>>: chöông trình chaïy ñöôïc <<library>>: thö vieän lieân keát tónh hay ñoäng <<document>>: taøi lieäu ñöôïc thieát laäp trong quaù trình phaùt trieån <<table>>: baûng cô sôû döõ lieäu .

java. *.t) Thaønh phaàn phaàn meàm (software component) bao goàm Maõ nguoàn: *.Chöông 8: Hieän thöïc vaø trieån khai . thôøi gian lieân keát chöông trình hoaëc thôøi gian thöïc thi .Trang 222 Khoa Coâng Ngheä Thoâng Tin .THAØNH PHAÀN (t.dll.class Chöông trình thöïc thi: *.bas Maõ ñoái töôïng: *.obj Maõ nhò phaân: *.cpp. *.exe Thaønh phaàn phaàn meàm coù theå toàn taïi trong thôøi gian bieân dòch. *. *. *.pas.c.Moân Coâng Ngheä Phaàn Meàm .

LÖÔÏC ÑOÀ THAØNH PHAÀN Löôïc ñoà thaønh phaàn laø moät ñoà thò goàm caùc thaønh phaàn keát noái vôùi nhau bôûi quan heä phuï thuoäc Kyù hieäu cuûa thaønh phaàn coù theå bao goàm moät soá hình troøn bieåu dieãn caùc giao tieáp vaø chöùa caùc lôùp maø noù cuï theå hoaù Component-name Class-name Interface-name .Moân Coâng Ngheä Phaàn Meàm .Chöông 8: Hieän thöïc vaø trieån khai .Trang 223 Khoa Coâng Ngheä Thoâng Tin .

Chöông 8: Hieän thöïc vaø trieån khai .t) Ví duï: löôïc ñoà thaønh phaàn theå hieän moät soá module maõ nguoàn cuûa chöông trình hieån thò beà maët ñòa hình GeoMap <<file>> FieldMap <<file>> FieldMap Isoquant MapCurve <<file>> MapCurve Fracture .Trang 224 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .LÖÔÏC ÑOÀ THAØNH PHAÀN (t.

Moân Coâng Ngheä Phaàn Meàm .LÖÔÏC ÑOÀ THAØNH PHAÀN (t.dll <<library>> IFL0.dll <<library>> cbsLoader12_dp.dll <<library>> .Trang 225 Khoa Coâng Ngheä Thoâng Tin .t) Ví duï: löôïc ñoà thaønh phaàn theå hieän thôøi gian thöïc thi cuûa chöông trình hieån thò beà maët ñòa hình op12_dp.dll <<library>> FieldVis.Chöông 8: Hieän thöïc vaø trieån khai .dll <<library>> MFC42.exe <<executable>> Cosmo3D12.

Trang 226 Khoa Coâng Ngheä Thoâng Tin .t) Ví duï: löôïc ñoà thaønh phaàn cuûa heä thoáng ñaêng kyù moân hoïc People <<file>> PeopleInfo Register <<file>> StudentInfo LectureInfo Database RegisterForm Login <<file>> LoginForm .Moân Coâng Ngheä Phaàn Meàm .LÖÔÏC ÑOÀ THAØNH PHAÀN (t.Chöông 8: Hieän thöïc vaø trieån khai .

Chöông 8: Hieän thöïc vaø trieån khai .t) Ví duï: löôïc ñoà thaønh phaàn theå hieän thôøi gian thöïc thi cuûa heä thoáng ñaêng kyù moân hoïc qua WEB AddStdServ <<executable>> CheckApl <<executable>> LoginServ <<executable>> AddLectServ <<executable>> RegServ <<executable>> .Trang 227 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .LÖÔÏC ÑOÀ THAØNH PHAÀN (t.

Chöông 8: Hieän thöïc vaø trieån khai .GAÙN CAÙC LÔÙP VAØO CAÙC THAØNH PHAÀN Khi thieát laäp caùc thaønh phaàn maõ nguoàn.Trang 228 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm . LectureInfo vaø Database vaøo thaønh phaàn People (Java) Gaùn lôùp vaø LoginForm vaøo thaønh phaàn Login (Java) Kyù hieäu cuûa thaønh phaàn chöùa kyù hieäu cuûa lôùp ñöôïc gaùn Chuù yù: component ≠ package . chuù yù gaùn (bind) caùc lôùp thieát keá vaø choïn ngoân ngöõ laäp trình Gaùn lôùp FieldMap vaøo thaønh phaàn FieldMap (C++) Gaùn lôùp MapCurve. StudentInfo. Isoquant vaø Fracture vaøo thaønh phaàn MapCurve Gaùn lôùp PeopleInfo.

Chöông 8: Hieän thöïc vaø trieån khai .SINH MAÕ NGUOÀN Döïa vaøo ñaëc taû lôùp ñeå vieát maõ cho töøng thaønh phaàn maõ nguoàn theo ngoân ngöõ laäp trình ñaõ choïn Vieát maõ söôøn laø coâng vieäc hôi nhaøm chaùn ñoäng hoaù bôûi caùc coâng cuï CASE coù theå ñöôïc töï .Moân Coâng Ngheä Phaàn Meàm .Trang 229 Khoa Coâng Ngheä Thoâng Tin .

maùy in.Chöông 8: Hieän thöïc vaø trieån khai . bao goàm: maùy tính.Trang 230 Khoa Coâng Ngheä Thoâng Tin .NODE TRIEÅN KHAI Node laø moät thieát bò vaät lyù coù khaû naêng tính toaùn. thieát bò queùt card. router… Node ñöôïc moâ taû ôû caû 2 daïng: daïng lôùp vaø daïng instance Node ñöôïc kyù hieäu nhö hình hoäp ba chieàu Caùc minh duï cuûa thaønh phaàn coù theå soáng trong moät minh duï node Dell Pentium III 600 Server of 600: Dell Pentium III 600 .Moân Coâng Ngheä Phaàn Meàm .

Trang 231 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .Chöông 8: Hieän thöïc vaø trieån khai .KEÁT NOÁI CAÙC NODE Coù theå chæ ra quan heä lieân keát giöõa caùc node ñeå moâ taû caáu hình keát noái (connection) :Pentium II 450 <<TCP/IP>> :Silicon Graphics <<TCP/IP>> :Sun Ultra1 :Pentium III 600 .

LÖÔÏC ÑOÀ TRIEÅN KHAI Löôïc ñoà trieån khai cho pheùp mieâu taû caùch caøi ñaët caùc thaønh phaàn thöïc thi treân caùc node Ví duï: heä thoáng ñaêng kyù moân hoïc qua WEB Java WEB Server: Pentium III 600 Client: Pentium MMX 200 RegServ <<executable>> LoginServ <<executable>> <<TCP/IP>> CheckApplet <<executable>> .Chöông 8: Hieän thöïc vaø trieån khai .Trang 232 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .

dll <<library>> cbsLoader12_dp.t) Ví duï: chöông trình hieån thò beà maët ñòa hình WindowsNT workstation: Pentium II 450 op12_dp.Trang 233 Khoa Coâng Ngheä Thoâng Tin .exe <<executable>> IFL0.dll <<library>> MFC42.LÖÔÏC ÑOÀ TRIEÅN KHAI (t.dll <<library>> Cosmo3D12.Moân Coâng Ngheä Phaàn Meàm .dll <<library>> .dll <<library>> FieldVis.Chöông 8: Hieän thöïc vaø trieån khai .

TOÅNG KEÁT Hieän thöïc vaø trieån khai taäp trung vaøo xaây döïng caùc thaønh phaàn chaïy ñöôïc hoaëc caùc thö vieän. Caùc thaønh phaàn maõ nguoàn cuï theå hoaù moät soá lôùp thieát keá vaø coù theå ñöôïc vieát baèng caùc ngoân ngöõ laäp trình khaùc nhau Cuoái cuøng trieån khai caùc thaønh phaàn chaïy ñöôïc treân caùc thieát bò tiùnh toaùn . daïng nhò phaân..Chöông 8: Hieän thöïc vaø trieån khai . module maõ nguoàn. trang HTML..Moân Coâng Ngheä Phaàn Meàm .Trang 234 Khoa Coâng Ngheä Thoâng Tin .

Hoà Chí Minh Khoa Coâng Ngheä Thoâng Tin KYÕ THUAÄT KIEÅM NGHIEÄM PHAÀN MEÀM ✦ Test-case ✦ Kieåm tra caùc ñöôøng ñoäc laäp cô baûn Chöông 9 .Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm .Tröôøng Ñaïi Hoïc Baùch Khoa Tp.Moân Coâng Ngheä Phaàn Meàm .Trang 235 Khoa Coâng Ngheä Thoâng Tin .

1.3.2.3.3. Muïc tieâu cuûa kieåm nghieäm phaàn meàm 9. Xaây döïng ñoà thò doøng chaûy (flow graph) 9.1.Moân Coâng Ngheä Phaàn Meàm .Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm . Kieåm nghieäm caùc ñöôøng ñoäc laäp cô baûn 9.1.2.1 Moät soá khaùi nieäm 9.1. Lieät keâ caùc ñöôøng ñoäc laäp cô baûn 9. Thieát laäp caùc test-case 9. Cô sôû cuûa kieåm nghieäm phaàn meàm 9.2.Trang 236 Khoa Coâng Ngheä Thoâng Tin .1.2.NOÄI DUNG 9. Caùc nguyeân lyù cuûa kieåm nghieäm phaàn meàm 9.2.2. Thieát laäp caùc test-case .

Moân Coâng Ngheä Phaàn Meàm . raát nhieàu coâng ñoaïn trong quaù trình saûn xuaát phaàn meàm vaãn ñöôïc thöïc hieän bôûi con ngöôøi Loãi coù theå xaûy ra trong taát caû caùc giai ñoaïn: phaân tích yeâu caàu. thieát keá.Trang 237 Khoa Coâng Ngheä Thoâng Tin .GIÔÙI THIEÄU Maëc duø ñöôïc töï ñoäng hoaù moät phaàn bôûi caùc coâng cuï CASE. maõ hoaù Do ñoù phaûi kieåm nghieäm chöông trình tröôùc khi chính thöùc söû duïng .Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm .

Kieåm nghieäm white-box: kieåm tra caáu truùc ñieàu khieån beân trong chöông trình. thöôøng aùp duïng cho nhöõng module lôùn.Trang 238 Khoa Coâng Ngheä Thoâng Tin . khoâng quan taâm caáu truùc beân trong.Moân Coâng Ngheä Phaàn Meàm . thöôøng duøng cho nhöõng nhöõng module nhoû.MOÄT SOÁ KHAÙI NIEÄM Kieåm nghieäm phaàn meàm laø hoaït ñoäng thöïc thi chöông trình vôùi muïc ñích tìm ra loãi Phaân loaïi: Kieåm nghieäm black-box: kieåm tra caùc chöùc naêng cuï theå cuûa phaàn meàm. khoâng mang tính xaây döïng Moãi loaïi kieåm nghieäm coù khaû naêng tìm ra nhöõng nhoùm loãi khaùc nhau neân keát hôïp caû hai . pheâ phaùn.Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm .

Trang 239 Khoa Coâng Ngheä Thoâng Tin . Chöùng minh ñöôïc phaàn meàm ñaùp öùng yeâu caàu cuûa user Goùp phaàn chöùng minh chaát löôïng cuûa phaàn meàm.Moân Coâng Ngheä Phaàn Meàm .Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm . . Chöùng minh ñöôïc phaàn meàm hoaït ñoäng ñuùng nhö ñaõ thieát keá. Kieåm nghieäm phaàn meàm giuùp Phaùt hieän ñöôïc loãi trong chöông trình (neáu coù).MUÏC TIEÂU CUÛA KIEÅM NGHIEÄM PHAÀN MEÀM Muïc tieâu cuûa kieåm nghieäm phaàn meàm laø tìm ra loãi (neáu coù) vôùi chi phí thaáp nhaát.

Moân Coâng Ngheä Phaàn Meàm . Khoâng dö thöøa. Khoâng quaù phöùc taïp cuõng khoâng quaù ñôn giaûn.t) Quaù trình kieåm nghieäm phaàn meàm laø toát khi Coù khaû naêng tìm ra loãi cao. Bieát choïn loïc: chæ kieåm nghieäm nhöõng phaàn naøo coù khaû naêng tìm ra loãi ñaëc tröng. Chuù yù: Kieåm nghieäm phaàn meàm khoâng khaúng ñònh ñöôïc phaàn meàm khoâng coøn khieám khuyeát. chæ khaúng ñònh ñöôïc phaàn meàm coù loãi.Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm .MUÏC TIEÂU CUÛA KIEÅM NGHIEÄM PHAÀN MEÀM (t.Trang 240 Khoa Coâng Ngheä Thoâng Tin . .

Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm . Neân ñöôïc thöïc hieän bôûi nhöõng ñoái töôïng KHOÂNG tham gia vaøo quaù trình phaùt trieån phaàn meàm.Trang 241 Khoa Coâng Ngheä Thoâng Tin . Neân tieán haønh töø nhoû ñeán lôùn: baét ñaàu töø nhöõng module rieâng bieät roài sau ñoù tích hôïp caùc module laïi.CAÙC NGUYEÂN LYÙ KIEÅM NGHIEÄM PHAÀN MEÀM Vieäc kieåm nghieäm neân höôùng veà yeâu caàu cuûa khaùch haøng Neân ñöôïc hoaïch ñònh tröôùc moät thôøi gian daøi. .Moân Coâng Ngheä Phaàn Meàm . Khoâng theå kieåm nghieäm trieät ñeå moät phaàn meàm. Aùp duïng nguyeân lyù Pareto: 80% loãi coù nguyeân nhaân töø 20% caùc module coâ laäp vaø kieåm tra nhöõng module khaû nghi nhaát.

Trang 242 Khoa Coâng Ngheä Thoâng Tin .THIEÁT LAÄP CAÙC TEST-CASE Khaùi nieäm test-case Döõ lieäu input Thao taùc kieåm nghieäm Döõ lieäu output hay ñaùp öùng mong ñôïi cuûa chöông trình Test-case cho kieåm nghieäm black-box: chuû yeáu döïa vaøo caùc yeâu caàu cuï theå cuûa chöùc naêng phaàn meàm. Test-case cho kieåm nghieäm white-box: chuû yeáu döïa vaøo caáu truùc ñieàu khieån cuûa phaàn meàm thieát laø quaù lôùn .Moân Coâng Ngheä Phaàn Meàm .Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm vaán ñeà ñaët ra: soá löôïng test-case caàn .

Moân Coâng Ngheä Phaàn Meàm .KIEÅM NGHIEÄM CAÙC ÑÖÔØNG ÑOÄC LAÄP CÔ BAÛN Kieåm nghieäm white-box döïa vaøo caáu truùc ñieàu khieån cuûa thieát keá thuû tuïc ñeå sinh caùc test-case vôùi tieâu chí Taát caû caùc ñöôøng thöïc thi ñoäc laäp ñöôïc thöû qua ít nhaát moät laàn Thöû caùc ñieàu kieän reõ nhaùnh ôû caû 2 nhaùnh true vaø false Thöû qua voøng laëp taïi bieân cuõng nhö beân trong Thöû qua caáu truùc döõ lieäu ñeå ñaûm baûo tính toaøn veïn cuûa noù Kieåm nghieäm caùc ñöôøng ñoäc laäp cô baûn laø moät trong nhöõng phöông caùch kieåm nghieäm white-box .Trang 243 Khoa Coâng Ngheä Thoâng Tin .Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm .

Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm .Moân Coâng Ngheä Phaàn Meàm .Trang 244 Khoa Coâng Ngheä Thoâng Tin .XAÂY DÖÏNG ÑOÀ THÒ DOØNG CHAÛY Moãi node hình troøn bieåu dieãn moät hoaëc moät vaøi taùc vuï (hôi khaùc so vôùi löu ñoà thuaät giaûi) Caïnh coù höôùng mieâu taû ñöôøng thöïc thi Ñoà thò doøng chaûy ñöôïc xaây döïng töø löu ñoà thuaät giaûi sequence if until while case .

XAÂY DÖÏNG ÑOÀ THÒ DOØNG CHAÛY (t.t) 1 1 2.Trang 245 Khoa Coâng Ngheä Thoâng Tin .3 2 3 6 7 9 8 10 11 4 5 7 6 8 9 10 4.5 11 .Moân Coâng Ngheä Phaàn Meàm .Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm .

endif. else x=1. elseif k=0 then z=1.Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm .Trang 246 Khoa Coâng Ngheä Thoâng Tin . 8: enddo 9 6 7 8 5 4 2 1 3 9: end .t) procedure: DoSomething 1: 2: 3: 4: 5: 6: 7: do while x=0 if y=0 then z=0. endif.Moân Coâng Ngheä Phaàn Meàm .XAÂY DÖÏNG ÑOÀ THÒ DOØNG CHAÛY (t.

Trang 247 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .t) Phaûi phaân raõ taát caû caùc ñieàu kieän phöùc trôû thaønh caùc ñieàu kieän ñôn Moãi node moâ taû moät ñieàu kieän ñôn ñöôïc goïi laø predicate a b x b a y x if a and b then y else x while a or b do x .Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm .XAÂY DÖÏNG ÑOÀ THÒ DOØNG CHAÛY (t.

t) procedure AnalyzeTriangle 5 a=c a<b+c 2 c>0 1 3 a=b 4 6 8 b=c a2=b2+c2 9 10 12 7 11 .Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm .Moân Coâng Ngheä Phaàn Meàm .XAÂY DÖÏNG ÑOÀ THÒ DOØNG CHAÛY (t.Trang 248 Khoa Coâng Ngheä Thoâng Tin .

trong ñoù P laø soá node phaân nhaùnh (predicate) .LIEÄT KEÂ CAÙC ÑÖÔØNG ÑOÄC LAÄP CÔ BAÛN Töø node baét ñaàu ñeán node keát thuùc.Trang 249 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm . caùc ñöôøng thöïc thi cô baûn ñöôïc lieät keâ theo moät thöù töï naøo ñoù ñeå ñaûm baûo raèng: ñöôøng ñang lieät keâ ít nhaát ñi qua moät caïnh chöa ñöôïc duyeät qua bôûi caùc ñöôøng ñaõ lieät keâ tröôùc ñoù Toång soá ñöôøng thöïc thi cô baûn ñoäc laäp nhau ñöôïc tính baèng V = P + 1.

LIEÄT KEÂ CAÙC ÑÖÔØNG ÑOÄC LAÄP CÔ BAÛN (t.t)
Ñoái vôùi chöông trình con DoSomething
Toång soá ñöôøng : V = 3 + 1 = 4 Ñöôøng 1: 1-9 Ñöôøng 2: 1-2-3-8-1… Ñöôøng 3: 1-2-4-5-7-8-1… Ñöôøng 4: 1-2-4-6-7-8-1…
6 7 8 4 5 2 1

3

Chuù yù: daáu 3 chaám (…) mang yù nghóa “khoâng quan taâm”, töø ñoù coù theå ñi theo baát kyø caïnh naøo bôûi vì caùc caïnh sau ñoù ñaõ ñöôïc duyeät qua roài

9

- Trang 250 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm

LIEÄT KEÂ CAÙC ÑÖÔØNG ÑOÄC LAÄP CÔ BAÛN (t.t)
Ñoái vôùi chöông trình con AnalyzeTriangle
Toång soá ñöôøng : V = 6 + 1 = 7 Ñöôøng 1: 1-3-12 Ñöôøng 2: 1-2-3-12 Ñöôøng 3: 1-2-4-5-12 Ñöôøng 4: 1-2-4-6-7-12 Ñöôøng 5: 1-2-4-6-8-7-12 Ñöôøng 6: 1-2-4-6-8-9-10-12 Ñöôøng 7: 1-2-4-6-8-9-11-12
- Trang 251 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm

THIEÁT LAÄP CAÙC TEST-CASE
Thieát laäp moät test-case cho moãi ñöôøng thöïc thi cô baûn Döïa vaøo thuaät giaûi ñeå tìm ra moät döõ lieäu input, sau ñoù tính ra döõ lieäu output hay ñaùp öùng mong ñôïi cuûa thuaät giaûi Chuù yù: coù theå khoâng taïo ra ñöôïc test-case cho moät ñöôøng thöïc thi naøo ñoù
- Trang 252 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm

THIEÁT LAÄP CAÙC TEST-CASE (t.t)
Sinh test-case cho chöông trình con AnalyzeTriangle Test-case cho ñöôøng 1:
Input: Output mong ñôïi: a = 3, b = 2, c = 0 type = “Error” a = 17, b = 5, c = 4 type = “Error” a = 6, b = 6, c = 6 type = “Equilateral”

Test-case cho ñöôøng 2:
Input: Output mong ñôïi:

Test-case cho ñöôøng 3:
Input: Output mong ñôïi:

- Trang 253 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm

THIEÁT LAÄP CAÙC TEST-CASE (t.t)
Test-case cho ñöôøng 4:
Input: Output mong ñôïi: a = 7, b = 7, c = 4 type = “Isosceles” a = 12, b = 9, c = 9 type = “Isosceles” a = 5, b = 4, c = 3 type = “Right” a = 13, b = 11, c = 6 type = “Scalene”

Test-case cho ñöôøng 5:
Input: Output mong ñôïi:

Test-case cho ñöôøng 6:
Input: Output mong ñôïi:

Test-case cho ñöôøng 7:
Input: Output mong ñôïi:

- Trang 254 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm

bao goàm caùc böôùc Thieát laäp ñoà thò doøng chaûy Lieät keâ caùc ñöôøng thöïc thi ñoäc laäp cô baûn Sinh caùc test-case cho caùc ñöôøng thöïc thi ñoù .TOÅNG KEÁT Muïc tieâu cuûa kieåm nghieäm phaàn meàm laø tìm ra loãi Hai loaïi kieåm nghieäm: white-box vaø black-box.Moân Coâng Ngheä Phaàn Meàm .Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm . Kieåm nghieäm caùc ñöôøng ñoäc laäp cô baûn duøng trong kieåm nghieäm white-box.Trang 255 Khoa Coâng Ngheä Thoâng Tin .

Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm Chöông 10 .Trang 256 Khoa Coâng Ngheä Thoâng Tin .Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí Minh Khoa Coâng Ngheä Thoâng Tin CHIEÁN THUAÄT KIEÅM NGHIEÄM PHAÀN MEÀM ✦ Verification & Validation ✦ Unit test & Integration test ✦ Kieåm nghieäm höôùng ñoái töôïng ✦ Ngheä thuaät gôõ roái .Moân Coâng Ngheä Phaàn Meàm .

Kieåm nghieäm tính naêng (validation) . Tích hôïp töø treân xuoáng (top-down) 10.3.Trang 257 Khoa Coâng Ngheä Thoâng Tin . Verification vaø validation 10.NOÄI DUNG 10.1.1. Kieåm nghieäm tích hôïp 10. Tích hôïp töø döôùi leân (bottom-up) 10.2. Kieåm nghieäm töøng module 10.1.3.3.1.3. Moät soá khaùi nieäm 10.3.4. Kieåm nghieäm hoài quy (regression) 10.2.1.Moân Coâng Ngheä Phaàn Meàm .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm . Moät chieán thuaät kieåm nghieäm phoå bieán 10.2.

t) 10.5.6.1.6. Brute force 10. Kieåm nghieäm ñôn vò höôùng ñoái töôïng 10.1. Kieåm nghieäm tích hôïp höôùng ñoái töôïng 10.2.5.5. Theo veát . Kieåm nghieäm höôùng ñoái töôïng 10. Kieåm nghieäm theo kòch baûn 10.Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm . Ngheä thuaät gôõ roái (debug) 10.3.2.NOÄI DUNG (t.Trang 258 Khoa Coâng Ngheä Thoâng Tin .5.Moân Coâng Ngheä Phaàn Meàm . Loaïi tröø nguyeân nhaân 10.6.3.6.

Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm .Moân Coâng Ngheä Phaàn Meàm .Trang 259 Khoa Coâng Ngheä Thoâng Tin . Bao goàm caùc coâng vieäc Laäp keá hoaïch kieåm nghieäm Sinh test-case Thöïc hieän kieåm nghieäm. thu thaäp keát quûa vaø ñaùnh giaù .MOÄT SOÁ KHAÙI NIEÄM Chieán thuaät kieåm tra phaàn meàm tích hôïp caùc phöông phaùp taïo ra test-case trôû thaønh moät chuoãi caùc böôùc coù thöù töï ñeå coù theå kieåm nghieäm phaàn meàm thaønh coâng.

Trang 260 Khoa Coâng Ngheä Thoâng Tin .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm “Are we “Are we building the .VERIFICATION vaø VALIDATION Verification: caùc haønh ñoäng ñeå ñaûm baûo cho phaàn meàm ñöôïc hieän thöïc ñuùng theo moät chöùc naêng cuï theå naøo ñoù building the product right ?” Validation: caùc haønh ñoäng ñeå ñaûm baûo cho phaàn meàm ñöôïc xaây döïng theo ñuùng yeâu caàu cuûa khaùch haøng right product ?” .Moân Coâng Ngheä Phaàn Meàm .

Trang 261 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm .MOÄT CHIEÁN THUAÄT KIEÅM NGHIEÄM PHOÅ BIEÁN Phaân tích toaøn boä heä thoáng Kieåm nghieäm toaøn boä heä thoáng Phaân tích yeâu caàu Kieåm nghieäm tính naêng Thieát keá Kieåm nghieäm tích hôïp Maõ hoaù Kieåm nghieäm ñôn vò .

t) Baét ñaàu taïi töøng module roài tích hôïp lôùn daàn ñeán toaøn boä heä thoáng. Kieåm nghieäm coù theå ñöôïc tieán haønh bôûi ngöôøi phaùt trieån phaàn meàm.Trang 262 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm . nhöng ñoái vôùi caùc döï aùn lôùn thì vieäc kieåm nghieäm phaûi ñöôïc tieán haønh bôûi moät nhoùm ñoäc laäp. .MOÄT CHIEÁN THUAÄT KIEÅM NGHIEÄM PHOÅ BIEÁN (t. Caùc kyõ thuaät khaùc nhau thích hôïp taïi caùc giai ñoaïn khaùc nhau. Kieåm nghieäm vaø söûa loãi laø caùc hoaït ñoäng ñoäc laäp nhöng vieäc söûa loãi phaûi phuø hôïp vôùi caùc chieán thuaät kieåm nghieäm.

Trang 263 Khoa Coâng Ngheä Thoâng Tin .KIEÅM NGHIEÄM TÖØNG MODULE Tieán haønh kieåm nghieäm treân töøng ñôn vò nhoû nhaát cuûa phaàn meàm. .Moân Coâng Ngheä Phaàn Meàm . maõ hoaù vaø bieân dòch thaønh coâng Thöôøng duøng kyõ thuaät kieåm nghieäm white-box Coù theå tieán haønh kieåm nghieäm cuøng luùc nhieàu module.Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm . sau khi ñaõ thieát keá. ñoù laø module maõ nguoàn.

Moân Coâng Ngheä Phaàn Meàm .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm interface local data structures boundary conditions independent paths error handling paths . ~~~~~~ ~~~~~~ ~~~~~~ stub stub testcases .KIEÅM NGHIEÄM TÖØNG MODULE (t.Trang 264 Khoa Coâng Ngheä Thoâng Tin .t) driver Module ……….

Trang 265 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm . .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm coù .t) Moãi module maõ nguoàn khoâng phaûi laø moät chöông trình hoaøn chænh vaø ñoâi khi phaûi goïi caùc module chöa ñöôïc kieåm nghieäm khaùc theå phaûi thieát laäp driver vaø/hoaëc stub: phí toån khaù lôùn (70%) Driver laø moät chöông trình chính coù nhieäm vuï nhaän döõ lieäu kieåm nghieäm. chuyeån döõ lieäu ñoù xuoáng cho module ñeå kieåm tra vaø in ra caùc keát quaû kieåm tra töông öùng. Stub thay theá caùc module ñöôïc goïi bôûi module ñang kieåm tra.KIEÅM NGHIEÄM TÖØNG MODULE (t.

KIEÅM NGHIEÄM TÍCH HÔÏP
Töøng module maõ nguoàn ñaõ hoaït ñoäng ñuùng. Lieäu khi keát hôïp chuùng laïi thaønh moät nhoùm lôùn chuùng coù hoaït ñoäng ñuùng khoâng ? Phaûi tieán haønh kieåm nghieäm tích hôïp ñeå phaùt hieän loãi lieân quan ñeán giao tieáp giöõa caùc module. Traùnh tích hôïp kieåu big-bang: taát caû caùc module ñöôïc keát hôïp laïi, vaø toaøn boä chöông trình seõ ñöôïc kieåm nghieäm moät luùc Neân tích hôïp taêng daàn: töø treân xuoáng hoaëc töø döôùi leân
- Trang 266 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm

TÍCH HÔÏP TÖØ TREÂN XUOÁNG
Module chính ñöôïc duøng nhö laø driver, vaø stub ñöôïc thay theá bôûi caùc module con tröïc tieáp cuûa cuûa module chính naøy. Tuyø thuoäc vaøo caùch tích hôïp theo chieàu saâu (depth-first) hoaëc chieàu ngang(breath-first), moãi stub con ñöôïc thay theá moät laàn bôûi module töông öùng ñaõ kieåm nghieäm. Tieán haønh kieåm nghieäm khi coù söï thay theá môùi Tieán haønh kieåm nghieäm hoài quy ñeå phaùt hieän caùc loãi khaùc trong töøng module
- Trang 267 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm

TÍCH HÔÏP TÖØ TREÂN XUOÁNG (t.t)
M1

M2

M3

M4

M5

M6

M7

M8

Tích hôïp kieåu töø treân xuoáng theo hình thöùc depth-first

- Trang 268 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm

TÍCH HÔÏP TÖØ DÖÔÙI LEÂN
Caùc module möùc thaáp nhaát ñöôïc keát hôïp thaønh caùc nhoùm theå hieän moät chöùc naêng con ñaëc bieät cuûa phaàn meàm. Moät driver ñöôïc taïo ra ñeå thao taùc caùc test-case Nhoùm module ñöôïc kieåm nghieäm. Driver ñöôïc boû ñi vaø caùc nhoùm module ñöôïc keát hôïp daàn leân phía treân trong sô ñoà phaân caáp cuûa chöông trình.
- Trang 269 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm

TÍCH HÔÏP TÖØ DÖÔÙI LEÂN (t.t)
Mo Ma D1 D2 Mb D3

cluster 3

cluster 1

cluster 2

- Trang 270 Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm

caáu truùc döõ lieäu hay I/O chia seû trong moät soá module Ñieàu ñoù laøm loä ra moät soá loãi khoâng theå phaùt hieän ñöôïc khi tieán haønh kieåm nghieäm theo ñôn vò Kieåm nghieäm hoài quy coù theå ñöôïc tieán haønh thuû coâng baèng caùch thöïc hieän laïi caùc test-case ñaõ taïo ra.Moân Coâng Ngheä Phaàn Meàm .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm .KIEÅM NGHIEÄM HOÀI QUY Vieäc keát hôïp caùc module laïi vôùi nhau coù theå aûnh höôûng ñeán voøng laëp ñieàu khieån.Trang 271 Khoa Coâng Ngheä Thoâng Tin . Hoaëc coù theå duøng moät coâng cuï capture-playback ñeå thöïc hieän töï ñoäng .

KIEÅM NGHIEÄM TÍNH NAÊNG Kieåm nghieäm tính naêng hieåu theo caùch ñôn giaûn nhaát laø: caùc chöùc naêng cuûa phaàn meàm ñaùp öùng ñöôïc nhu caàu cuûa khaùch haøng voán ñaõ ñöôïc xaùc ñònh trong vaên baûn ñaëc taû yeâu caàu cuûa phaàn meàm AÙp duïng kyõ thuaät black-box Kieåm nghieäm tính naêng bao goàm Xem xeùt laïi caáu hình phaàn meàm Kieåm nghieäm alpha Kieåm nghieäm beta .Trang 272 Khoa Coâng Ngheä Thoâng Tin .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm .Moân Coâng Ngheä Phaàn Meàm .

. Khaùch haønh tröïc tieáp söû duïng vaø ghi nhaän loãi ñeå baùo laïi cho nhaø phaùt trieån söûa chöõa.Trang 273 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm . Kieåm nghieäm beta Phaàn meàm ñöôïc kieåm tra beân ngoaøi phaïm vi cuûa ñôn vuï saûn xuaát. Nhaø phaùt trieån phaàn meàm seõ quan saùt ngöôøi söû duïng saûn phaåm vaø ghi nhaän laïi nhöõng loãi phaùt sinh ñeå söûa chöõa.KIEÅM NGHIEÄM TÍNH NAÊNG (t.t) Kieåm nghieäm alpha Ñöôïc tieán haønh ngay taïi nôi saûn xuaát phaàn meàm.Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm .

Trang 274 Khoa Coâng Ngheä Thoâng Tin .KIEÅM NGHIEÄM HÖÔÙNG ÑOÁI TÖÔÏNG Veà cô baûn chieán thuaät kieåm nghieäm höôùng ñoái töôïng cuõng theo thöù töï gioáng nhö kieåm nghieäm coå ñieån: kieåm nghieäm ñôn vò .kieåm nghieäm chöùc naêng -kieåm nghieäm toaøn boä heä thoáng .kieåm nghieäm tích hôïp .Moân Coâng Ngheä Phaàn Meàm .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm .

Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm .Trang 275 Khoa Coâng Ngheä Thoâng Tin .Moân Coâng Ngheä Phaàn Meàm .KIEÅM NGHIEÄM ÑÔN VÒ HÖÔÙNG ÑT Khoâng theå taùch rôøi töøng taùc vuï cuûa ñoái töôïng/lôùp ñeå kieåm nghieäm Taùc vuï ñöôïc ñoùng bao trong lôùp Caùc lôùp con coù theå override moät taùc vuï naøo ñoù Kieåm nghieäm ñôn vò höôùng ñoái töôïng taäp trung vaøo caùc lôùp kieåm nghieäm haønh vi cuûa lôùp .

Trang 276 Khoa Coâng Ngheä Thoâng Tin .KIEÅM NGHIEÄM TÍCH HÔÏP HÖÔÙNG ÑT Khaùi nieäm sô ñoà phaân caáp khoâng coøn nhieàu yù nghóa trong chöông trình höôùng ñoái töôïng khaùc Hai hình thöùc kieåm nghieäm tích hôïp höôùng ñoái töôïng Kieåm nghieäm treân cô sôû thread: tích hôïp caùc lôùp taïo thaønh moät thread ñeå phuïc vuï cho moät input naøo ñoù cuûa chöông trình Kieåm nghieäm treân cô sôû söû duïng: caùc lôùp client seõ ñöôïc tích hôïp ñeå söû duïng dòch vuï naøo ñoù cung caáp bôûi caùc lôùp server .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm kieåm nghieäm tích hôïp theo caùch .Moân Coâng Ngheä Phaàn Meàm .

Choïn 5 nhoùm moân hoïc cuûa 5 moân: CNPM.Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm . Login vôùi username = “e59306547”. Choïn chöùc naêng ñaêng kyù moân hoïc 3.Trang 277 Khoa Coâng Ngheä Thoâng Tin . XLSS trong ñoù coù 2 nhoùm truøng thôøi khoaù bieåu 4. PTTK. AI.KIEÅM NGHIEÄM THEO KÒCH BAÛN Döïa vaøo caùc use-case ñeå soaïn ra caùc kòch baûn Ví duï: moät kòch baûn cho heä thoáng ñaêng kyù moân hoïc qua WEB 1. XLTHS. Nhaán nuùt Submit Chöông trình phaûi baùo loãi vaø lieät keâ 2 nhoùm bò truøng thôøi khoaù bieåu .Moân Coâng Ngheä Phaàn Meàm . password = “6547” 2.

Moân Coâng Ngheä Phaàn Meàm . Neân duøng keát hôïp caû 3 hình thöùc naøy.Trang 278 Khoa Coâng Ngheä Thoâng Tin .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm . loaïi tröø nguyeân nhaân vaø theo veát.NGHEÄ THUAÄT GÔÕ ROÁI Gôõ roái laø moät quaù trình nhaèm loaïi boû caùc loãi ñöôïc phaùt hieän trong quaù trình kieåm tra. . Gôõ roái ñöôïc thöïc hieän nhö laø moät keát quaû cuûa vieäc kieåm tra: loãi phaùt hieän ñöôïc tìm kieám nguyeân nhaân söûa loãi Coù 3 hình thöùc gôõ roái: brute force.

Trang 279 Khoa Coâng Ngheä Thoâng Tin .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm . do ñoä chính xaùc.t) Gôõ roái laø coâng vieäc khoù khaên vaø deã gaây taâm lyù chaùn naûn bôûi nguyeân nhaân gaây ra loãi nhieàu khi laïi mô hoà: do time-out.. do chuû quan laäp trình..Moân Coâng Ngheä Phaàn Meàm .NGHEÄ THUAÄT GÔÕ ROÁI (t. Khaû naêng gôõ roái gaàn nhö laø baåm sinh cuûa moãi ngöôøi .

Trieát lyù cuûa phöông phaùp naøy laø: “Haõy ñeå maùy tính tìm ra loãi”.BRUTE FORCE Laø phöông phaùp phoå bieán nhaát nhöng laïi ít hieäu quaû nhaát cho vieäc phaùt hieän nguyeân nhaân gaây loãi phaàn meàm. Coù 3 caùch thöïc hieän: Laáy döõ lieäu trong boä nhôù ñeå xem xeùt.Trang 280 Khoa Coâng Ngheä Thoâng Tin . .Moân Coâng Ngheä Phaàn Meàm . Duøng run-time trace ñeå tìm loãi. AÙp duïng phöông phaùp naøy khi taát caû caùc phöông phaùp khaùc ñeàu thaát baïi. Duøng leänh WRITE ñeå xuaát döõ lieäu caàn kieåm tra ra maøn hình.Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm .

Trang 281 Khoa Coâng Ngheä Thoâng Tin . coá gaéng ñöa ra moät danh saùch caùc nguyeân nhaân coù theå gaây ra loãi.Moân Coâng Ngheä Phaàn Meàm . Khi ñoù döõ lieäu kieåm nghieäm seõ ñöôïc tinh cheá laïi ñeå tieáp tuïc tìm loãi. Caùch thöïc hieän: Khi moät loãi ñöôïc phaùt hieän.Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm . .LOAÏI TRÖØ NGUYEÂN NHAÂN Phöông phaùp naøy döïa treân nguyeân taéc phaân chia nhò phaân. Danh saùch naøy ñöôïc nghieäm laïi ñeå loaïi boû daàn caùc nguyeân nhaân khoâng ñuùng cho ñeán khi tìm thaáy moät nguyeân nhaân khaû nghi nhaát.

Trang 282 Khoa Coâng Ngheä Thoâng Tin . Caùch thöïc hieän: baét ñaàu taïi doøng maõ nguoàn coù trieäu chöùng loãi thöïc hieän laàn ngöôïc trôû laïi töøng doøng maõ nguoàn cho ñeán khi tìm thaáy doøng gaây ra loãi.Moân Coâng Ngheä Phaàn Meàm .Chöông 10: Chieán thuaät kieåm nghieäm phaàn meàm . .THEO VEÁT Laø moät phöông phaùp gôõ loãi khaù phoå bieán coù theå duøng thaønh coâng trong caùc chöông trình nhoû nhöng khoù aùp duïng cho ñoái vôùi caùc chöông trình raát lôùn.

Moân Coâng Ngheä Phaàn Meàm .Trang 283 Khoa Coâng Ngheä Thoâng Tin .KEÁT THUÙC MOÂN HOÏC Thi cuoáii kyø ? Thi cuoá kyø ? Phaânntích --Thieáttkeá á-Phaâ tích Thieá ke Hieännthöïc/trieånnkhai -Hieä thöïc/trieå khai Kieåm nghieäm -UML Kieåm nghieäm -UML Taáttcaû noäiidung Taá caû noä dung Chuùc möøng baïn ñaõ hoaøn taát moân hoïc Coâng Ngheä Phaàn Meàm ! .

Sign up to vote on this title
UsefulNot useful