Cong Nghe Phan Mem Dhbk

283
Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí Minh Khoa Coâng Ngheä Thoâng Tin Moân hoïc COÂNG NGHEÄ PHAÀN MEÀM - Trang 1 - Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm

description

kỹ nghệ phần mềm

Transcript of Cong Nghe Phan Mem Dhbk

Page 1: Cong Nghe Phan Mem   Dhbk

Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí MinhKhoa Coâng Ngheä Thoâng Tin

Moân hoïc

COÂNG NGHEÄ PHAÀN MEÀM

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

Page 2: Cong Nghe Phan Mem   Dhbk

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

Page 3: Cong Nghe Phan Mem   Dhbk

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

Page 4: Cong Nghe Phan Mem   Dhbk

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

Page 5: Cong Nghe Phan Mem   Dhbk

ÑEÀ CÖÔNGChöô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

Page 6: Cong Nghe Phan Mem   Dhbk

Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí MinhKhoa Coâng Ngheä Thoâng Tin

Chöông 1

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

- Trang 6 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 7: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG1.1. Moät soá khaùi nieäm

1.1.1. Khuûng hoaûng phaàn meàm1.1.2. Ñònh nghóa1.1.3. Chu trình (process), phöông phaùp (method), coâng cuï (tool)1.1.4. Moät caùch nhìn toång quan veà coâng ngheä phaàn meàm1.1.5. Moâ hình CMM

1.2. Caùc moâ hình phaùt trieån phaàn meàm1.2.1. Moâ hình tuaàn töï tuyeán tính1.2.2. Moâ hình prototype1.2.3. Moâ hình xoaén oác1.2.4. Moâ hình taêng daàn1.2.3. Moâ hình RAD

- Trang 7 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 8: Cong Nghe Phan Mem   Dhbk

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 - Chöông 1: Giôùi thieäu veà CNPM

Page 9: Cong Nghe Phan Mem   Dhbk

KHUÛNG HOAÛNG PHAÀN MEÀM (t.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 200-300%)� 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, coù 18 %phaùt hieän ñöôïc� Quaù trình thieát keá (25 % coâng söùc): ñeå laïi 30 % loãi, coù 10 % phaùt hieän ñöôïc� Quaù trình maõ hoaù, kieåm tra vaø baûo trì: ñeå laïi 15 % loãi, coù 72 % phaùt hieän ñöôïc

- Trang 9 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 10: Cong Nghe Phan Mem   Dhbk

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ö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 - Chöông 1: Giôùi thieäu veà CNPM

Page 11: Cong Nghe Phan Mem   Dhbk

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

craft

production

commercialization

scienceprofessional

engineering

- Trang 11 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 12: Cong Nghe Phan Mem   Dhbk

ÑÒ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.

- Trang 12 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 13: Cong Nghe Phan Mem   Dhbk

ÑÒNH NGHÓA (t.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, 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, söï ño löôøng, saûn phaåm, tính ñuùng

thôøi gian vaø chaát löôïng

- Trang 13 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 14: Cong Nghe Phan Mem   Dhbk

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.

- Trang 14 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 15: Cong Nghe Phan Mem   Dhbk

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

� ...

- Trang 15 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 16: Cong Nghe Phan Mem   Dhbk

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 - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 17: Cong Nghe Phan Mem   Dhbk

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), Hoaïch

ñònh ñeà taøi (software project management), Phaân tích yeâu caàu (requirement

analysis).

� Giai ñoaïn phaùt trieån: Thieát keá phaàn meàm (software design), sinh maõ

(code generation), kieåm tra phaàn meàm (software testing)

� Giai ñoaïn baûo trì: Söûa loãi (correction), thay ñoåi moâi tröôøng thöïc thi

(adaptation), taêng cöôøng (enhancement)

- Trang 17 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 18: Cong Nghe Phan Mem   Dhbk

MOÂ HÌNH CMM

Initial

(Level 1)

Repeatable

(Level 2)

Defined

(Level 3)

Managed

(Level 4)

Optimized

(Level 5)

Risk

Competitiveness

- Trang 18 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 19: Cong Nghe Phan Mem   Dhbk

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

- Trang 19 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 20: Cong Nghe Phan Mem   Dhbk

MOÂ HÌNH TUAÀN TÖÏ TUYEÁN TÍNH

� 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, thieát keá, kieåm

tra…

System Engineering Requirement Analysis

Software Design Coding Test Maintenance

- Trang 20 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 21: Cong Nghe Phan Mem   Dhbk

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

MOÂ HÌNH TUAÀN TÖÏ TUYEÁN TÍNH (t.t)

- Trang 21 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 22: Cong Nghe Phan Mem   Dhbk

MOÂ HÌNH PROTOTYPING� 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û

Thaûo luaän vôùi khaùch haøng

Xaây döïngprototype

Ñaùnh giaù cuûa khaùch haøng

- Trang 22 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 23: Cong Nghe Phan Mem   Dhbk

MOÂ HÌNH XOAÉN OÁC

� Ñöôïc thöïc hieän theo moät chuoãi laëp kieåu xoaén oác, 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

Ñaùnh giaù ruûi ro

Phaùt trieån saûn phaåm ôû laàn laëp tieáp theo

Hoaïch ñònhñeà taøi

Ñònh nghóa quy trình

R

R

R

- Trang 23 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 24: Cong Nghe Phan Mem   Dhbk

MOÂ HÌNH TAÊNG DAÀN

Phaân tích yeâu caàu

1

2

3

Kieåm tra heä thoáng

Thieát keá kieán truùc

Phaùt trieån module

Tích hôïp

4

- Trang 24 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 25: Cong Nghe Phan Mem   Dhbk

MOÂ HÌNH TAÊNG DAÀN (t.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.

- Trang 25 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 26: Cong Nghe Phan Mem   Dhbk

MOÂ HÌNH RAD

� 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

Business modeling Data modeling Process modeling Application generation

Testing & Turnover

- Trang 26 -Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm - Chöông 1: Giôùi thieäu veà CNPM

Page 27: Cong Nghe Phan Mem   Dhbk

Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí MinhKhoa Coâng Ngheä Thoâng Tin

Chöông 2

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

- Trang 27 -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

Page 28: Cong Nghe Phan Mem   Dhbk

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, döõ

lieäu input & output, caùc traïng thaùi khaùc nhau...

- Trang 28 -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

Page 29: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG

2.1. Caùc yeáu toá caên baûn cuûa moâ hình phaân tích2.2. Moâ hình chöùc naêng vaø doøng thoâng tin

2.2.1. Löôïc ñoà doøng chaûy döõ lieäu vôùi caùc kyù hieäu cô baûn2.2.2. Môû roäng cuûa Ward vaø Mellor2.2.3. Môû roäng cuûa Hatley & Pirbhai

2.3. Moâ hình haønh vi phaàn meàm2.4. Kyõ thuaät phaân tích yeâu caàu

2.4.1. Xaây döïng DFD2.4.2. Vieát PSPEC

2.5. Töø ñieån döõ lieäu

- Trang 29 -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

Page 30: Cong Nghe Phan Mem   Dhbk

CAÙC YEÁU TOÁ CAÊN BAÛN CUÛA MOÂ HÌNH PHAÂN TÍCH

� Moâ hình chöùc naêng vaø

doøng thoâng tin: DFD, PSPEC

� Moâ hình döõ lieäu: ERD,

ñaëc taû ñoái töôïng döõ lieäu

� Moâ hình haønh vi: STD,

CSPEC

Töø ñieån döõ lieäu

Löu ñoà doøng chaûy

döõ lieäu

Löu ñoà quan heä thöïc theå

Löu ñoà dòch chuyeån

traïng thaùi

Process Specification (PSPEC)Ñaëc taû ñoái töôïng

döõ lieäu

Control Specification (CSPEC)

- Trang 30 -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

Page 31: Cong Nghe Phan Mem   Dhbk

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.

� Thoâng tin input cuõng nhö output coù theå ôû nhieàu daïng khaùc nhau:

file, baøn phím, treân maïng, töø thieát bò, 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 31 -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

Page 32: Cong Nghe Phan Mem   Dhbk

MOÂ HÌNH CHÖÙC NAÊNG VAØ DOØNG THOÂNG TIN (t.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], trang 315)

- Trang 32 -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

Page 33: Cong Nghe Phan Mem   Dhbk

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, 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ù, tieâu thuï vaø taïo ra 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êngxöû lyù Döõ lieäu

Kho döõ lieäu

- Trang 33 -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

Page 34: Cong Nghe Phan Mem   Dhbk

LÖÔÏC ÑOÀ DOØNG CHAÛY DÖÕ LIEÄU (t.t)

� DFD ñöôïc xaây döïng qua nhieàu möùc khaùc nhau: möùc 0, 1, 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 - 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

Page 35: Cong Nghe Phan Mem   Dhbk

MOÂ HÌNH HAØNH VI PHAÀN MEÀM

� 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ù

� Ví duï: mieâu taû hoaït

ñoäng cuûa maùy photocopy

Ñoïc leänh

Xöû lyù loãi

Thöïc hieän copy

Naïp giaáyHeát giaáy

————————Yeâu caàu naïp giaáy

Keït giaáy————————Yeâu caàu xöû lyù loãi

Heát keït giaáy————————Yeâu caàu ñoïc leänh

Ñaày giaáy————————Yeâu caàu ñoïc leänh

Raûnh————————Yeâu caàu ñoïc leänh

Ñaày giaáy vaø saün saøng————————

Yeâu caàu copy

Copy xong————————Yeâu caàu ñoïc leänh

- Trang 35 -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

Page 36: Cong Nghe Phan Mem   Dhbk

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.

� 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

- 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

Page 37: Cong Nghe Phan Mem   Dhbk

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, output

SafeHome

Baûng ñieàu khieån

Boä caûm öùng

Maøn hình

Chuoâng

Ñöôøng ñieän thoaïi

Leänh vaø döõ lieäu

Traïng thaùi caûm öùng

Thoâng tin hieån thò

Kieåu baùo ñoäng

Taàn soá cuûa soá ñieän thoaïi

- Trang 37 -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

Page 38: Cong Nghe Phan Mem   Dhbk

XAÂY DÖÏNG DFD (t.t)� DFD möùc 1: hình thaønh moät soá chöùc naêng chínhTöông taùc

vôùi user

Baûng ñieàu khieån

Boä caûm öùng

Maøn hình

Chuoâng

Ñöôøng ñieän thoaïi

Leänh vaø döõ lieäu

Traïng thaùi caûm öùngKieåu baùo ñoäng

Taàn soá cuûa soá ñieän thoaïi

Caáu hình heä thoáng

Yeâu caàu caáu hìnhh

Caám/Cho pheùp

Start/stop

Thoâng soá caáu hình

Xöû lyùmaät maõ

Maät maõ

Theo doõi caûm öùng

Hieån thò

Thoâng baùo a/d

Xaùc nhaän maät maõ

Thoâng tin caûm öùng

Thoâng tin hieån thò

- Trang 38 -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

Page 39: Cong Nghe Phan Mem   Dhbk

XAÂY DÖÏNG DFD (t.t)

� DFD möùc 2: tinh cheá chöùc naêng “Theo doõi caûm öùng”

Boä caûm öùng

Chuoâng

Ñöôøng ñieän thoaïi

Traïng thaùi caûm öùng

Kieåu baùo ñoäng

Taàn soá cuûa soá ñieän thoaïi

Thieát laäp ñieàu kieän baùo ñoäng

Döõ lieäu caáu hình

Thoâng soá caáu hìnhÑònh daïng

hieån thò

Id, type

Ñoïc döõ lieäu caûm öùng Quay soá

Id, type, vò trí

Thoâng tin caûm öùng

Taïo tín hieäuchuoâng

Id, type

Soá ñieän thoaïi

- Trang 39 -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

Page 40: Cong Nghe Phan Mem   Dhbk

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 - 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ù

- Trang 40 -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

Page 41: Cong Nghe Phan Mem   Dhbk

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, ñ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. 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.

� 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ãi phaàn töû bao goàm nhöõng thoâng tin: teân, bí danh, ñöôïc duøng ôû ñaâu/nhö theá naøo, ñaëc taû noäi dung vaø thoâng tin phuï trôï

- Trang 41 -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

Page 42: Cong Nghe Phan Mem   Dhbk

TÖØ ÑIEÅN DÖÕ LIEÄU (t.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öôngtieàn toá = [ 795 | 799 | 874 | 877 ]

- Trang 42 -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

Page 43: Cong Nghe Phan Mem   Dhbk

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), 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;

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- Trang 43 -

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

Page 44: Cong Nghe Phan Mem   Dhbk

Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí MinhKhoa Coâng Ngheä Thoâng Tin

Chöông 3

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, taùc vuï, thoâng ñieäp✦✦✦✦ Bao goäp, thöøa keá✦✦✦✦ Tính ña hình, tính vónh cöûu

- Trang 44 -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

Page 45: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG

3.1. Ñoái töôïng vaø lôùp, ñoùng bao

3.2. Thuoäc tính

3.3. Taùc vuï

3.4. Thoâng ñieäp

3.5. Bao goäp

3.6. Thöøa keá vaø override

3.7. Tính ña hình

3.8. Tính vónh cöûu- Trang 45 -

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

Page 46: Cong Nghe Phan Mem   Dhbk

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, Eiffel. Sau

ñoù xuaát hieän theâm: Object Pascal, C++, Java…

� Hình thaønh caùc phöông phaùp phaân tích/thieát keá höôùng ñoái töôïng

- 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

Page 47: Cong Nghe Phan Mem   Dhbk

Ñ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 - 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

Page 48: Cong Nghe Phan Mem   Dhbk

ÑOÁI TÖÔÏNG vaø LÔÙP (t.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.

� Ñ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 48 -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

Page 49: Cong Nghe Phan Mem   Dhbk

ÑOÙNG BAO

� Ñ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)

Circle# Radius: float- x: float- y: float+ Draw( w: Window)+ GetClass( ): String

c1 : CircleRadius = 1.3x = 3.2y = 1.7

- Trang 49 -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

Page 50: Cong Nghe Phan Mem   Dhbk

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.

� 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.

� 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, x, y) = (1.2, 3.4, 5.3)

- Trang 50 -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

Page 51: Cong Nghe Phan Mem   Dhbk

THUOÄC TÍNH (t.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, protected, 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..1, 1, *, 5..8

- Trang 51 -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

Page 52: Cong Nghe Phan Mem   Dhbk

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.

� 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ï

- 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

Page 53: Cong Nghe Phan Mem   Dhbk

TAÙC VUÏ (t.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, 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û

- 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

Page 54: Cong Nghe Phan Mem   Dhbk

VÍ DUÏ veà LÔÙP/ÑOÁI TÖÔÏNG - JAVAclass abstract HTMLObject {

protected static final int LEFT = 0;protected static final int MIDDLE = 1;protected static final int RIGHT = 2;private int alignment = LEFT;protected Vector objects = null;HTMLObject( ){ // constructor

objects = new Vector ( 5 );}public void setAlignment( int algnmt ) {

alignment = algnmt;}public int getAlignment( ) {

return alignment;}public abstract String toHTML( ); // abstract operation

}

- Trang 54 -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

Page 55: Cong Nghe Phan Mem   Dhbk

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å.

� 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

- Trang 55 -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

Page 56: Cong Nghe Phan Mem   Dhbk

THOÂNG ÑIEÄP (t.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, 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 ���� xem caùc

thoâng soá goïi

� Danh saùch thoâng soá goïi: nhö pheùp goïi haøm bình thöôøng, chuù yù kieåu khi

truyeàn vaø gaùn keát quaû traû veà

� Ví duï: aCircle.SetRadius( 3 ); aCircle.Draw( pWnd );

- Trang 56 -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

Page 57: Cong Nghe Phan Mem   Dhbk

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, ví duï

� Xe hôi bao goàm: baùnh xe, ñoäng cô, khung xe...

� Trang HTML bao goàm: text, hình aûnh, tieâu ñeà, caùc lieân keát...

� Checkbox, ComboBox, Slider… naèm trong moät hoäp thoaïi

- Trang 57 -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

Page 58: Cong Nghe Phan Mem   Dhbk

BAO GOÄP (t.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û

- 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

Page 59: Cong Nghe Phan Mem   Dhbk

VÍ DUÏ veà BAO GOÄP - C++class Geometry { // abstract base classpublic:

Geometry( );~Geometry( );virtual void Draw( Window *pWnd ) = 0; // abstract operation

protected:int xPos, yPos;double xScale, yScale;COLORREF color;

};class Group : public Geometry {public:

Group( );~Group( );virtual void Draw( Window *pWnd ); // override

private:Geometry **ppGeo; // pointer containerint geoCount;

};

- Trang 59 -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

Page 60: Cong Nghe Phan Mem   Dhbk

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); 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, ví

duï� Hoå, baùo, soùi ñeàu laø thuù

� Button, Checkbox vaø Dialog ñeàu laø Window

� Hình troøn, hình chöõ nhaät, hình ellipse ñeàu laø hình veõ 2D.

- Trang 60 -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

Page 61: Cong Nghe Phan Mem   Dhbk

THÖØA KEÁ vaø OVERRIDE (t.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

Page 62: Cong Nghe Phan Mem   Dhbk

THÖØA KEÁ vaø OVERRIDE (t.t)

� Lôùp con coù theå override laïi moät soá taùc vuï cuûa lôùp cha.

� Phaûi giöõa nguyeân daáu veát nhaän daïng (signature) cuûa taùc vuï bò

override; 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)

- Trang 62 -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

Page 63: Cong Nghe Phan Mem   Dhbk

VÍ DUÏ veà THÖØA KEÁ vaø OVERRIDE - JAVAclass HTMLDocument extends HTMLObject {

private String title = null;// other attributes...HTMLDocument( ){}public void setTitle( String ttl ) {

if ( ttl != null )title = ttl;

}public String getTitle( ) {

return title;}public String toHTML( ) { // override

StringBuffer html = new StringBuffer;// additional implementation...return html.toString( );

}}

- 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

Page 64: Cong Nghe Phan Mem   Dhbk

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 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

Page 65: Cong Nghe Phan Mem   Dhbk

TÍNH ÑA HÌNH (t.t)

Ví duï: ñoái töôïng http

ñöôïc xem nhö thuoäc

kieåu cuûa HttpView,

View vaø Window

Window

# hWnd: HWND

+ MoveWindow( )+ GetClass( ): String

View

+ GetClass( ): String+ GetDocument( ): Document

HttpView

+ GetClass( ): String

http : HttpView

- 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

Page 66: Cong Nghe Phan Mem   Dhbk

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 - 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

Page 67: Cong Nghe Phan Mem   Dhbk

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

- Trang 67 -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

Page 68: Cong Nghe Phan Mem   Dhbk

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ï. Caùc taùc vuï thieát laäp

neân haønh vi cuûa ñoái töôïng. 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û”

- Trang 68 -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

Page 69: Cong Nghe Phan Mem   Dhbk

Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí MinhKhoa Coâng Ngheä Thoâng Tin

Chöông 4

MOÂ HÌNH NGHIEÄP VUÏ VAØ THU THAÄP YEÂU CAÀU

✦✦✦✦ Actor & use-case✦✦✦✦ Moâ hình use-case

- Trang 69 -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

Page 70: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG

4.1. Nhaän dieän caùc vai troø (actor)4.1.1. Khaùi nieäm actor4.1.2. Nhaän dieän actor4.1.3. Actor trong UML

4.2. Nhaän dieän caùc tröôøng hôïp söû duïng (use-case)4.1.1. Khaùi nieäm use-case4.1.2. Tìm kieám use-case4.1.3. Use-case trong UML

4.3. Thieát laäp caùc moái quan heä4.3.1. Quan heä lieân keát (association)4.3.2. Quan heä giao tieáp, goäp vaø môû roäng

4.4. Xaây döïng moâ hình use-case

- Trang 70 -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

Page 71: Cong Nghe Phan Mem   Dhbk

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

- Trang 71 -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

Page 72: Cong Nghe Phan Mem   Dhbk

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 - 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

Page 73: Cong Nghe Phan Mem   Dhbk

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, 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 ?

- Trang 73 -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

Page 74: Cong Nghe Phan Mem   Dhbk

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, 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

- Trang 74 -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

Page 75: Cong Nghe Phan Mem   Dhbk

ACTOR trong UML (t.t)

- Trang 75 -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

Sinh vieân

Heä thoáng ñaêng kyù moân hoïc

Phoøng Ñaøo Taïo

Giaûng vieân Phoøng Taøi Vuï

Page 76: Cong Nghe Phan Mem   Dhbk

ACTOR trong UML (t.t)

- Trang 76 -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

Ngöôøi ñaêng kyù mailbox Heä thoáng göûi nhaän mail

Quaûn trò vieân

Page 77: Cong Nghe Phan Mem   Dhbk

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å.

� 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 - Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu

caàu

Page 78: Cong Nghe Phan Mem   Dhbk

KHAÙI NIEÄM USE-CASE (t.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, 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

- Trang 78 -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

Page 79: Cong Nghe Phan Mem   Dhbk

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, taïo, xoaù, 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, 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 ?

- Trang 79 -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

Page 80: Cong Nghe Phan Mem   Dhbk

TÌM KIEÁM USE-CASE (t.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) ?

- Trang 80 -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

Page 81: Cong Nghe Phan Mem   Dhbk

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 81 -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

Page 82: Cong Nghe Phan Mem   Dhbk

USE-CASE trong UML (t.t)

Phoøng Ñaøo TaïoSinh vieân

Giaûng vieân

Ñaêng kyù hoïc

Ñaêng kyù daïy

Quaûn lyù SV

Quaûn lyù MH

Theâm SV môùi

<<extend>>

<<communicate>>

- 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

Page 83: Cong Nghe Phan Mem   Dhbk

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)

- 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

Page 84: Cong Nghe Phan Mem   Dhbk

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, 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

- Trang 84 -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

Page 85: Cong Nghe Phan Mem   Dhbk

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>>

� ...

- Trang 85 -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

Page 86: Cong Nghe Phan Mem   Dhbk

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, khoâng quan taâm keát quaû veà: lieân keát 1 chieàu

Ngöôøi baùn haøngÑaët haøng

1 *

- Trang 86 -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

Page 87: Cong Nghe Phan Mem   Dhbk

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

Giaûng vieân

Ñaêng kyù daïy<<communicate>>

- Trang 87 -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

Page 88: Cong Nghe Phan Mem   Dhbk

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

- Trang 88 -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

Page 89: Cong Nghe Phan Mem   Dhbk

QUAN HEÄ GOÄP (t.t)

� Taïi ñieåm môû roäng, 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, dieãn tieán cuûa use-case nguoàn laïi tieáp

tuïc

Ñaêng nhaäp

<<include>>

Tìm kieám

- Trang 89 -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

Page 90: Cong Nghe Phan Mem   Dhbk

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

- Trang 90 -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

Page 91: Cong Nghe Phan Mem   Dhbk

QUAN HEÄ MÔÛ ROÄNG (t.t)� Taïi ñieåm môû roäng, 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, dieãn tieán cuûa use-case nguoàn laïi tieáp

tuïc

Ñaêng kyù ñaët choã

<<extend>>

Tìm kieám

- Trang 91 -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

Page 92: Cong Nghe Phan Mem   Dhbk

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, 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

- Trang 92 -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

Page 93: Cong Nghe Phan Mem   Dhbk

XAÂY DÖÏNG MOÂ HÌNH USE-CASE (t.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

- Trang 93 -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

Page 94: Cong Nghe Phan Mem   Dhbk

XAÂY DÖÏNG MOÂ HÌNH USE-CASE (t.t)

People

Finance

Prints timetable Makes timetablefee summary

Adds students

Removes students

Administration

print request<<communicate>> timetable command

<<communicate>>Student

Lecturer Reads courses

Manages students

<<extend>>

<<extend>>

Manages lecturers

Manages course

Registers courses

Login

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

Undertakes courses

<<include>>

- Trang 94 -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

Page 95: Cong Nghe Phan Mem   Dhbk

XAÂY DÖÏNG MOÂ HÌNH USE-CASE (t.t)

- Trang 95 -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

Composes

<<communicate>>

AdministratorViews mail

<<extend>>

Forwards

<<extend>>

Replies

<<extend>>

Adds mailbox

Removes mailbox<<communicate>>Subcriber

<<communicate>>

<<communicate>>

Login

<<include>>

<<include>>

<<include>>

Page 96: Cong Nghe Phan Mem   Dhbk

XAÂY DÖÏNG MOÂ HÌNH USE-CASE (t.t)

sets viewing

<<include>>

imports

exports

modelsinitializes

<<extend>>

saves model

exits

<<extend>>

sets eye

toggles mode

toggles light

sets appearance

Viewer

import command<<communicate>>

export command<<communicate>>

model command<<communicate>>

run command

save command<<communicate>>

close command<<communicate>>

- Trang 96 -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

Page 97: Cong Nghe Phan Mem   Dhbk

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, 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 - 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

Page 98: Cong Nghe Phan Mem   Dhbk

Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí MinhKhoa Coâng Ngheä Thoâng Tin

- Trang 98 -Khoa Coâng Ngheä Thoâng Tin - 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

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✦✦✦✦ Löôïc ñoà lôùp

Page 99: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG

5.1. Nhaän dieän caùc ñoái töôïng/lôùp5.1.1. Ñoái töôïng/lôùp thöïc theå

5.1.2. Ñoái töôïng/lôùp bieân

5.1.3. Ñoái töôïng/lôùp ñieàu khieån

5.2. Nhaän dieän caùc thuoäc tính5.2.1. Kieåu döõ lieäu cuûa thuoäc tính

5.2.2. Baäc cuûa thuoäc tính

5.2.3. Möùc ñoä truy xuaát thuoäc tính

5.3. Nhaän dieän caùc taùc vuï

- Trang 99 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 100: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG (t.t)

5.4. Nhaän dieän lôùp cô sôû5.4.1. Nhaän dieän caùc thuoäc tính/taùc vuï chung

5.4.2. Quan heä toång quaùt hoùa (generalization)

5.5. Nhaän dieän caùc moái quan heä5.5.1. Quan heä lieân keát (association)

5.5.2. Quan heä bao goäp (aggregation)

5.6. Xaây döïng löôïc ñoà lôùp

5.7. Thieát laäp caùc package

- Trang 100 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 101: Cong Nghe Phan Mem   Dhbk

GIÔÙI THIEÄU

� Moâ hình nghieäp vuï bieåu dieãn caùc chöùc naêng

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

- Trang 101 -Khoa Coâng Ngheä Thoâng Tin - 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

ñoái töôïng/lôùp- quan heä

ñoái töôïng/lôùp- quan heä

Page 102: Cong Nghe Phan Mem   Dhbk

GIÔÙI THIEÄU (t.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, ngoân ngöõ

laäp trình, coâng cuï phaùt trieån

- Trang 102 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 103: Cong Nghe Phan Mem   Dhbk

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 - 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

Page 104: Cong Nghe Phan Mem   Dhbk

NHAÄN DIEÄN ÑOÁI TÖÔÏNG/LÔÙP (t.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, 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

- Trang 104 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 105: Cong Nghe Phan Mem   Dhbk

NHAÄN DIEÄN ÑOÁI TÖÔÏNG/LÔÙP (t.t)

� Trong UML, lôùp ñöôïc bieåu dieãn baèng moät hình chöõ nhaät goàm 3

phaàn: teân, caùc thuoäc tính vaø caùc taùc vuï

� Coù theå aùp duïng stereotype cho lôùp: <<entity>>, <<boundary>>,

<<control>>...

� Ñ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), giaù

trò caùc thuoäc tính (traïng thaùi cuûa ñoái töôïng)

- Trang 105 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 106: Cong Nghe Phan Mem   Dhbk

NHAÄN DIEÄN ÑOÁI TÖÔÏNG/LÔÙP (t.t)

HTMLObject

# alignment: int

+ GetAlignment( ): int+ toHTML( ): String

HTMLDocument

+ GetTitle( ): String+ toHTML( ): String

doc : HTMLDocument

- title: String alignment = MIDDLEtitle = “A document”

- Trang 106 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 107: Cong Nghe Phan Mem   Dhbk

Ñ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, file...)

� Trong UML, ñöôïc gaùn stereotype <<entity>>

� Deã nhaän dieän caùc thuoäc tính cuûa chuùng

- Trang 107 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 108: Cong Nghe Phan Mem   Dhbk

ÑOÁI TÖÔÏNG/LÔÙP THÖÏC THEÅ (t.t)

� Ví duï:

� Ñoái vôùi heä thoáng ñaêng kyù moân hoïc heä tín

chæ qua WEB, nhaän dieän caùc ñoái töôïng thöïc

theå nhö: thoâng tin SV, thoâng tin GV, nhoùm

lôùp hoïc, ñaêng kyù nhoùm, soå tay sinh vieân…

� Ñoái vôùi heä thoáng mail, nhaän dieän caùc ñoái

töôïng thöïc theå nhö: hoäp thö, thoâng ñieäp mail…

� Ñoái töôïng ñöôøng ñoàng möùc, ñöùt gaõy vaø

baûn ñoà trong chöông trình veõ beà maët ñòa hình

+ GetSubject( ): String+ toString( ): String

# subject: String# sent: Date# content: String

Message<<entity>>

- Trang 108 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 109: Cong Nghe Phan Mem   Dhbk

Ñ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, hoäp danh saùch, tuyø choïn, menu...)

� Trong UML, ñöôï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

- Trang 109 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 110: Cong Nghe Phan Mem   Dhbk

ÑOÁI TÖÔÏNG/LÔÙP BIEÂN (t.t)

� Ví duï:

� Ñoái vôùi heä thoáng ñaêng kyù moân hoïc heä

tín chæ qua WEB, nhaän dieän caùc ñoái töôïng

bieân nhö: RegisterForm, StudentForm…

� Ñoái vôùi heä thoáng mail, nhaän dieän caùc

ñoái töôïng bieân nhö: MailView,

MailCompose...

MailView<<boundary>>

- Trang 110 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 111: Cong Nghe Phan Mem   Dhbk

Ñ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, ñöôï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 - 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

Page 112: Cong Nghe Phan Mem   Dhbk

ÑOÁI TÖÔÏNG/LÔÙP ÑIEÀU KHIEÅN (t.t)

� 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

trong hieån thò ñoà hoaï…

Command<<control>>

+ Execute( )+ Reexecute( )+ Unexecute( )# Do( )

PasteCommand<<control>>

+ Execute( )+ Reexecute( )+ Unexecute( )# Do( )

BgCommand<<control>>

+ Execute( )+ Reexecute( )+ Unexecute( )# Do( )

- Trang 112 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 113: Cong Nghe Phan Mem   Dhbk

NHAÄN DIEÄN CAÙC THUOÄC TÍNH

� Döïa vaøo ñaëc taû cuûa töøng use-case, 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

- Trang 113 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 114: Cong Nghe Phan Mem   Dhbk

NHAÄN DIEÄN CAÙC THUOÄC TÍNH (t.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

- Trang 114 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 115: Cong Nghe Phan Mem   Dhbk

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, float,

double, long, char...

� Moät soá kieåu cô baûn khaùc: string, date, time...

� UML cho pheùp ñònh nghóa taát caû caùc kieåu döõ lieäu treân

- Trang 115 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 116: Cong Nghe Phan Mem   Dhbk

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, 0, *,

2..9, 0..n)

- Trang 116 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 117: Cong Nghe Phan Mem   Dhbk

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ôû), khoâng neân laø public. Thuoäc tính

neân ñöôïc truy xuaát thoâng qua taùc vuï get/set

- Trang 117 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 118: Cong Nghe Phan Mem   Dhbk

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.

- Trang 118 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 119: Cong Nghe Phan Mem   Dhbk

NHAÄN DIEÄN CAÙC TAÙC VUÏ (t.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; 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 - 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

Page 120: Cong Nghe Phan Mem   Dhbk

VÍ DUÏ veà NHAÄN DIEÄN THUOÄC TÍNH

� Heä thoáng ñaêng kyù

moân hoïc heä tín chæ qua

WEB - Nhaän dieän caùc

thuoäc tính cho caùc ñoái

töôïng: StudentInfo,

LecturerInfo

StudentInfo<<entity>>

- name: String- code: Long- dateOfBirth: Date- addr: String- acaYear: Date- department- home: String- socialAid

LecturerInfo<<entity>>

- name: String- code: String- dateOfBirth: String- addr: String- degree - title: String- division - health- experience: Date

+ GetName( ): String+ GetCode( ): Long + GetName( ): String

+ GetCode( ): String

- Trang 120 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 121: Cong Nghe Phan Mem   Dhbk

VÍ DUÏ veà NHAÄN DIEÄN THUOÄC TÍNH (t.t)

� Heä thoáng ñaêng kyù

moân hoïc heä tín chæ qua

WEB - Nhaän dieän caùc

thuoäc tính cho caùc ñoái

töôïng: CourseOffering,

Catalog

CourseOfferring<<entity>>

- courseName: String- courseCode: String- offering: int- session- credit: int- prerequisite

Catalog<<entity>>

- acaYear: Date- semester

- Trang 121 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 122: Cong Nghe Phan Mem   Dhbk

VÍ DUÏ veà NHAÄN DIEÄN THUOÄC TÍNH (t.t)

� 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:

Isoquant, Fracture

- Trang 122 -Khoa Coâng Ngheä Thoâng Tin - 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

Isoquant<<entity>>

- ID: Integer- open: boolean- altitude: double

Fracture<<entity>>

- ID: Integer- open: boolean

Point2D

- x: double- y: double

# points*

# points

*

Page 123: Cong Nghe Phan Mem   Dhbk

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

- Trang 123 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 124: Cong Nghe Phan Mem   Dhbk

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,

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

- Trang 124 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 125: Cong Nghe Phan Mem   Dhbk

QUAN HEÄ TOÅNG QUAÙT HOAÙ

� UML ñònh nghóa quan heä toång quaùt hoaù giöõa

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ä

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

- Trang 125 -Khoa Coâng Ngheä Thoâng Tin - 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

Isoquant

MapCurve

Fracture

Page 126: Cong Nghe Phan Mem   Dhbk

QUAN HEÄ TOÅNG QUAÙT HOAÙ (t.t)

� Ví duï: trong heä thoáng

ñaêng kyù moân hoïc tín chæ

qua WEB, lôùp PeopleInfo

laø toång quaùt hoaù cuûa

StudentInfo vaø

LecturerInfo

PeopleInfo<<entity>>

StudentInfo<<entity>>

- acaYear: Date- department- home: String- socialAid

LecturerInfo<<entity>>

- degree - title: String- division - health- experience: Date

# name: String# code: String# dateOfBirth: Date# addr: String

- Trang 126 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 127: Cong Nghe Phan Mem   Dhbk

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)

- Trang 127 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 128: Cong Nghe Phan Mem   Dhbk

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

- Trang 128 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 129: Cong Nghe Phan Mem   Dhbk

QUAN HEÄ LIEÂN KEÁT (t.t)

� Ví duï: lôùp

Registration

lieân keát vôùi lôùp

StudentInfo,

LecturerInfo vaø

CourseOffering

StudentInfo<<entity>>

Registration<<entity>>

- acaYear: Date- semester

LecturerInfo<<entity>> CourseOffering

<<entity>>

students

40..80

offeringlecturer

0..1

has

reg0..1

- Trang 129 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 130: Cong Nghe Phan Mem   Dhbk

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, 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û

- Trang 130 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 131: Cong Nghe Phan Mem   Dhbk

QUAN HEÄ BAO GOÄP (t.t)

� Ví duï:

� Ñoái vôùi heä thoáng ñaêng kyù moân hoïc tín chæ qua WEB, 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

CourseOffering<<entity>>

Catalog<<entity>>

- acaYear: Date- semester

*

1WindowMenu * ScrollBar

- Trang 131 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 132: Cong Nghe Phan Mem   Dhbk

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 ���� moâ taû khía caïnh tónh (static) cuûa heä

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à

lôùp, 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, chi tieát caùc thuoäc tính vaø taùc vuï, laøm roõ caùc quan heä)

- Trang 132 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 133: Cong Nghe Phan Mem   Dhbk

XAÂY DÖÏNG LÖÔÏC ÑOÀ LÔÙP (t.t)

- Trang 133 -Khoa Coâng Ngheä Thoâng Tin - 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

Isoquant<<entity>>

FieldMap<<entity>>

- name: String*

+ wrap( ): Region- altitude: double

MapCurve

- ID: int- open: boolean

Point2D

- x: double- y: double

*

points

isoquants

Fracture<<entity>>

fractures*

� Ví duï: moät löôïc ñoà lôùp cuûa chöông trình hieån thò beà maët ñòa hình

Page 134: Cong Nghe Phan Mem   Dhbk

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ù

- Trang 134 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 135: Cong Nghe Phan Mem   Dhbk

THIEÁT LAÄP CAÙC PACKAGE (t.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, coù theå aùp duïng cho caùc phaàn töû

beân trong package

- Trang 135 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 136: Cong Nghe Phan Mem   Dhbk

THIEÁT LAÄP CAÙC PACKAGE (t.t)

StudentInfo

- acaYear: Date- department- home: String- socialAid

LecturerInfo- degree - title: String- division - health- experience: Date

# name: String# code: String# dateOfBirth: Date# addr: String

PeopleInfo

UniPeople

- Trang 136 -Khoa Coâng Ngheä Thoâng Tin - 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

� Ví duï: package

UniPeople chöùa

caùc lôùp lieân quan

ñeán thoâng tin con

ngöôøi

Page 137: Cong Nghe Phan Mem   Dhbk

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 (���� moâ hình

thieát keá)

� UML hoã trôï moät soá phaàn töû: lôùp, ñoái töôïng, löôïc

ñoà lôùp, package

- Trang 137 -Khoa Coâng Ngheä Thoâng Tin - 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

Page 138: Cong Nghe Phan Mem   Dhbk

Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí MinhKhoa Coâng Ngheä Thoâng Tin

- 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

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ù, tinh cheá, kieán truùc✦✦✦✦ Phaân chia module hieäu quaû✦✦✦✦ Thieát keá döõ lieäu, kieán truùc, thuû tuïc, giao dieän

Page 139: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG

6.1. Caùc cô sôû cuûa thieát keá phaàn meàm6.1.1. Tröøu töôïng hoaù (abstraction)

6.1.2. Tinh cheá (refirement)

6.1.3. Phaân chia module (modularity)

6.1.4. Kieán truùc phaàn meàm

6.1.5. Caáu truùc döõ lieäu

6.1.6. Thuû tuïc

6.1.7. Che daáu thoâng tin

- Trang 139 -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

Page 140: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG (t.t)

6.2. Phaân chia module hieäu quaû6.2.1. Ñoä keát dính (cohesion)6.2.2. Söï lieân keát (coupling)6.2.3. Caùc heuristics cho phaân chia module

6.3. Thieát keá döõ lieäu6.4. Thieát keá kieán truùc

6.4.1. Doøng transform vaø doøng transaction6.4.2. Aùnh xaï doøng transform6.4.3. Aùnh xaï doøng transaction

6.5. Thieát keá giao dieän ngöôøi duøng6.6. Thieát keá thuû tuïc

- Trang 140 -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

Page 141: Cong Nghe Phan Mem   Dhbk

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 141 -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

Page 142: Cong Nghe Phan Mem   Dhbk

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; 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

- Trang 142 -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

Page 143: Cong Nghe Phan Mem   Dhbk

TRÖØU TÖÔÏNG HOAÙ (t.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ù.

� Ví duï: môû cöûa (bao goàm ñi ñeán cöûa, caàm laáy tay naém, xoay tay naém,

keùo caùnh cöûa, ñi vaøo…); theâm moät phaàn töû vaøo danh saùch coù thöù töï (xaùc

ñònh vò trí, 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). Ví duï: haøng, choàng, caùnh cöûa...

� Moät soá ngoân ngöõ laäp trình hoã trôï kieåu ADT vaø template

- Trang 143 -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

Page 144: Cong Nghe Phan Mem   Dhbk

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ù

- 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

Page 145: Cong Nghe Phan Mem   Dhbk

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, 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, 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).

� 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)

- Trang 145 -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

Page 146: Cong Nghe Phan Mem   Dhbk

PHAÂN CHIA MODULE (t.t)� 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

module ñeàu khoâng

toátSoá löôïng module

Coâng söùc boû ra

Coâng söùc töøng module

Coâng söùc tích hôïp

Toång coâng söùc

Vuøng toái öu

- Trang 146 -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

Page 147: Cong Nghe Phan Mem   Dhbk

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 (*.dll, *.exe, *.class...)

� Caùc thaønh phaàn cuûa kieán truùc heä thoáng: ActiveX control, bean...

� Caùc trang HTML, *.asp, *.jsp...

- Trang 147 -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

Page 148: Cong Nghe Phan Mem   Dhbk

KIEÁN TRUÙC PHAÀN MEÀM (t.t)

� Sô ñoà

phaân caáp

ñöôïc duøng

ñeå mieâu taû

söï phaân raõ

caùc module.

M

ba c

ed k l m

f hg

i j

n o p q

r

Fan-out

Fan-in

Depth

Width

- Trang 148 -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

Page 149: Cong Nghe Phan Mem   Dhbk

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

Page 150: Cong Nghe Phan Mem   Dhbk

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

Page 151: Cong Nghe Phan Mem   Dhbk

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

Page 152: Cong Nghe Phan Mem   Dhbk

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

Page 153: Cong Nghe Phan Mem   Dhbk

Ñ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

Page 154: Cong Nghe Phan Mem   Dhbk

Ñ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ï

- 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

Page 155: Cong Nghe Phan Mem   Dhbk

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

Page 156: Cong Nghe Phan Mem   Dhbk

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

Page 157: Cong Nghe Phan Mem   Dhbk

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

Page 158: Cong Nghe Phan Mem   Dhbk

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

Page 159: Cong Nghe Phan Mem   Dhbk

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

Page 160: Cong Nghe Phan Mem   Dhbk

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

- Trang 160 -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

Page 161: Cong Nghe Phan Mem   Dhbk

DOØNG TRANSFORM VAØ TRANSACTION

� Doøng transform bao goàm 3 phaàn: doøng ñi vaøo, doøng xöû lyù vaø doøng

ñi ra

Doøng ñi vaøoDoøng xöû lyù

Doøng ñi ra

- Trang 161 -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

Page 162: Cong Nghe Phan Mem   Dhbk

DOØNG TRANSFORM VAØ TRANSACTION (t.t)

� Doøng transaction bao

goàm: doøng ñi vaøo, T-

center vaø caùc ñöôøng xöû

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

Doøng ñi vaøo

T-center

- Trang 162 -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

Page 163: Cong Nghe Phan Mem   Dhbk

AÙNH XAÏ DOØNG TRANSFORM

� Töï ñoïc [1], trang 377

- Trang 163 -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

Page 164: Cong Nghe Phan Mem   Dhbk

AÙNH XAÏ DOØNG TRANSACTION

� Töï ñoïc [1], 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

Page 165: Cong Nghe Phan Mem   Dhbk

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ôù

- Trang 165 -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

Page 166: Cong Nghe Phan Mem   Dhbk

THIEÁT KEÁ GIAO DIEÄN NGÖÔØI DUØNG (t.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, 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, 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

- Trang 166 -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

Page 167: Cong Nghe Phan Mem   Dhbk

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, 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, account)

� Neân hoã trôï UNDO, 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

- Trang 167 -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

Page 168: Cong Nghe Phan Mem   Dhbk

THIEÁT KEÁ GIAO DIEÄN NGÖÔØI DUØNG (t.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

- Trang 168 -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

Page 169: Cong Nghe Phan Mem   Dhbk

THIEÁT KEÁ GIAO DIEÄN NGÖÔØI DUØNG (t.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 169 -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

Page 170: Cong Nghe Phan Mem   Dhbk

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 407

� Kyù hieäu daïng baûng : ñoïc [1], trang 409

� Ngoân ngöõ PDL

- Trang 170 -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

Page 171: Cong Nghe Phan Mem   Dhbk

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. 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, khai baùo döõ

lieäu, 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

- Trang 171 -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

Page 172: Cong Nghe Phan Mem   Dhbk

NGOÂN NGÖÕ PDL (t.t)procedure AnalyzeTriangle( a, b, c: in real; type: out string)begin

sort a, b, c so that a >= b >= c;if ( c > 0 and a < b + c )

if ( a = c )type := “Equilateral”

elseif ( a = b or b = c )

type := “Isosceles”else

if ( a*a = b*b + c*c )type := “Right”

elsetype := “Scalene”

elsetype := “Error”

end

- Trang 172 -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

Page 173: Cong Nghe Phan Mem   Dhbk

TOÅNG KEÁT

� Caùc cô sôû cuûa thieát keá phaàn meàm: tröøu töôïng

hoaù, tính cheá töøng böôùc, phaân chia module, caáu

truùc döõ lieäu, chöông trình con, 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/k kieán truùc, t/k giao dieän ngöôøi maùy vaø t/k

thuû tuïc- Trang 173 -

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

Page 174: Cong Nghe Phan Mem   Dhbk

Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí MinhKhoa Coâng Ngheä Thoâng Tin

- Trang 174 -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

Chöông 7

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

Page 175: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG7.1. Thieát keá haønh vi

7.1.1. Khaùi nieäm moâ hình ñoäng7.1.2. Töông taùc giöõa caùc ñoái töôïng7.1.3. Söï coäng taùc (collaboration)7.1.4. Mieâu taû trình töï7.1.5. Löôïc ñoà traïng thaùi (statechart diagram)7.1.6. Löôïc ñoà hoaït ñoäng (activity diagram)

7.2. Hoaøn chænh ñaëc taû tónh7.2.1. Nhaän dieän theâm moät soá lôùp thieát keá 7.2.2. Ñaëc taû chi tieát caùc thuoäc tính7.2.3. Nhaän dieän chính xaùc caùc taùc vuï7.2.4. Hoaøn chænh löôïc ñoà lôùp

- Trang 175 -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

Page 176: Cong Nghe Phan Mem   Dhbk

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, 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, document/view, 3-tier...)

� 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, List, Map... hay

khoâng ? Hoã trôï template hay khoâng ?...)

� 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

- Trang 176 -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

Page 177: Cong Nghe Phan Mem   Dhbk

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

- Trang 177 -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

Page 178: Cong Nghe Phan Mem   Dhbk

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, moät ñoái töôïng ñöôïc taïo ra

hay huyû ñi, 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

- Trang 178 -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

Page 179: Cong Nghe Phan Mem   Dhbk

TÖÔNG TAÙC GIÖÕA CAÙC ÑOÁI TÖÔÏNG (t.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

- Trang 179 -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

Page 180: Cong Nghe Phan Mem   Dhbk

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ï

- Trang 180 -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

Page 181: Cong Nghe Phan Mem   Dhbk

SÖÏ COÄNG TAÙC (t.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û

- Trang 181 -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

Page 182: Cong Nghe Phan Mem   Dhbk

SÖÏ COÄNG TAÙC (t.t)

� Caùc thoâng ñieäp ñöôïc ñaùnh soá theo kieåu phaân caáp

� 3.4.2 xaûy ra sau 3.4.1 vaø caû hai ñöôïc loàng (nested) trong 3.4

� 3.4.3a vaø 3.4.3b xaûy ra ñoàng thôøi vaø ñöôïc loàng trong 3.4

� Cuù phaùp toång quaùt cuûa thoâng ñieäp

precedessor guard-condition sequence-expression return-

value := message-name argument-list

� Ví duï: 2/ 1.3.1: p := find(specs)

1.1, 4.2/ 3.2 *[i:=1..6]: invert(x, color)

- Trang 182 -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

Page 183: Cong Nghe Phan Mem   Dhbk

SÖÏ COÄNG TAÙC (t.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å, 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; 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

- Trang 183 -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

Page 184: Cong Nghe Phan Mem   Dhbk

: People

: LoginForm

: Database

1: login(uname,pswd)

1.2 [succ = true]: welcome

1.1: succ := Verify(uname,pswd)

SÖÏ COÄNG TAÙC (t.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

- Trang 184 -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

Page 185: Cong Nghe Phan Mem   Dhbk

SÖÏ COÄNG TAÙC (t.t)� 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

- 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

regForm : RegisterForm

: Student

: Database: Registration

3.1: reg := FetchReg(crsOffering)

3.3: SetReg(reg)3.2: AddStudent(code)

: LoginForm1: submit(uname, psswd)

1.1: succ := verify(uname, psswd)

1.2 [succ = true]: welcome

3: submit(crsOffering)

3.4: beSuccessful 2.1: create

2: register

Page 186: Cong Nghe Phan Mem   Dhbk

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 ���� duøng löôïc ñoà tuaàn töï

(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à

- Trang 186 -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

Page 187: Cong Nghe Phan Mem   Dhbk

MIEÂU TAÛ TRÌNH TÖÏ (t.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

- Trang 187 -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

Page 188: Cong Nghe Phan Mem   Dhbk

MIEÂU TAÛ TRÌNH TÖÏ (t.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ï, raøng buoäc thôøi gian...) ñöôïc

vieát ôû leà traùi

- Trang 188 -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

Page 189: Cong Nghe Phan Mem   Dhbk

MIEÂU TAÛ TRÌNH TÖÏ (t.t)

� Ví duï: löôïc ñoà tuaàn töï daïng toång quaùt

- Trang 189 -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

: Peopleob1 : C1new( )

ob2 : C2 ob3 : C3

[x<0] op2( )

[x>=0] op3( )

ob4 : C4

op5( ob3 )op4( y )

display( )

Page 190: Cong Nghe Phan Mem   Dhbk

MIEÂU TAÛ TRÌNH TÖÏ (t.t)

� Ví duï: löôïc ñoà tuaàn töï daïng toång quaùt

- Trang 190 -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

: Operator:Computer

print(ps-file )

:PrinterServer :Printer

print(ps-file)print(ps-file)a

{b - a < 5 seconds}b

Page 191: Cong Nghe Phan Mem   Dhbk

MIEÂU TAÛ TRÌNH TÖÏ (t.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

- Trang 191 -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

: Database: People : LoginForm

1: submit(uname, psswd) 1.1: verify(uname, psswd)

1.2: welcome

Page 192: Cong Nghe Phan Mem   Dhbk

MIEÂU TAÛ TRÌNH TÖÏ (t.t)

- Trang 192 -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

: StudentregForm :

RegisterForm: Database: Registration: LoginForm

1: submit(uname, psswd) 1.1: succ := verify(uname, psswd)1.2 [succ = true]: welcome

2: register2.1: create

3. submit(crsOffering) 3.1: reg := fetchReg(srcOffering)

3.2: addStudent(code)

3.3: setReg(reg)

3.4: beSuccessful( )

� Ví duï:

löôïc ñoà

tuaàn töï

daïng cuï

theå cho

use-case

Register

courses

Page 193: Cong Nghe Phan Mem   Dhbk

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

- Trang 193 -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

Page 194: Cong Nghe Phan Mem   Dhbk

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.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, 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 ���� noù seõ dòch chuyeån töø traïng thaùi naøy

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

- Trang 194 -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

Page 195: Cong Nghe Phan Mem   Dhbk

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.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

- Trang 195 -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

Typing Passwordentry / set echo visibleexit / set echo normalcharacter / handle characterhelp / display help

Page 196: Cong Nghe Phan Mem   Dhbk

� Teân traïng thaùi laø duy nhaát trong löôïc ñoà; 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; coù cuù phaùp nhö sauaction-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

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.t)

- Trang 196 -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

Page 197: Cong Nghe Phan Mem   Dhbk

� 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

- Trang 197 -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

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.t)

Page 198: Cong Nghe Phan Mem   Dhbk

� 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; 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; 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

- Trang 198 -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

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.t)

Page 199: Cong Nghe Phan Mem   Dhbk

- Trang 199 -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

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.t)

� Ví duï: phaân raõ traïng thaùi toång hôïp Running

Running

Forward Backward

Slow Fast

Page 200: Cong Nghe Phan Mem   Dhbk

� Söï kieän (event) kích hoaït dòch chuyeån traïng thaùi, 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, chöù khoâng chæ thuoäc veà rieâng lôùp ñoù

- Trang 200 -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

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.t)

Page 201: Cong Nghe Phan Mem   Dhbk

� 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

- Trang 201 -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

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.t)

Page 202: Cong Nghe Phan Mem   Dhbk

- Trang 202 -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

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.t)

� Ví duï: löôïc ñoà traïng thaùi cuûa lôùp Message

Composed

entry/ assign IDexit/ fill dateon char/ handle character

compose command

Stored

entry/ save into folder

Read

entry/ convert to rich text

unhightlight

focushightlight

read command / recover( id )

logout

save command

re-fwd cmd / quote / append subject

Sending

do/ send( repc )

send command[ recipents != null ] / parse

sending done

Page 203: Cong Nghe Phan Mem   Dhbk

- Trang 203 -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

LÖÔÏC ÑOÀ TRAÏNG THAÙI (t.t)

import / map := create(file)

Dirty

entry/ render

No mapdo/ load mapdo/ load image

run

import failed

Modelingdo/ model(map, param)

Saved

entry/ renderdo/ store

modeling done

exit command / save

model command

save command

import command[ file valid ]

map loaded[ image invalid ]

exit command

image loaded

viewing command

exit command

import / map := create( file )

Page 204: Cong Nghe Phan Mem   Dhbk

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 ���� taäp trung vaøo

caùc haønh ñoäng

� Moãi haønh ñoäng ñöôïc kyù hieäu baèng hình veõ nhö sau

- Trang 204 -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

work

Page 205: Cong Nghe Phan Mem   Dhbk

LÖÔÏC ÑOÀ HOAÏT ÑOÄNG (t.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

- Trang 205 -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

Page 206: Cong Nghe Phan Mem   Dhbk

LÖÔÏC ÑOÀ HOAÏT ÑOÄNG (t.t)

� Ví duï: löôïc ñoà

hoaït ñoäng cho

taùc vuï submit

cuûa LoginForm

- Trang 206 -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

Show input for username and password

Reject

[ psswd invalid ]

Welcome

[ psswd valid ]

Verify

DatabaseLoginForm

Page 207: Cong Nghe Phan Mem   Dhbk

LÖÔÏC ÑOÀ HOAÏT ÑOÄNG (t.t)

� Ví duï: löôïc

ñoà hoaït ñoäng

cho taùc vuï

submit cuûa

RegisterForm

- Trang 207 -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

Read course offerings

submit

Show success

Look for registration

Fetch registration

Create registration

Update registration

Add student

[ reg found ][ reg not found ]

RegistrationDatabaseRegisterForm

Page 208: Cong Nghe Phan Mem   Dhbk

� Moâ hình thieát keá phaàn naøo chòu aûnh höôûng töø ngoân ngöõ laäp trình,

thö vieän hoã trôï, framework, 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, CObject...

� Thö vieän hoã trôï: lôùp Date, Time, List, Map, vector, iostream…

� Framework: Applet, Panel, CDocument, CView, HttpServlet…

� Heä ñieàu haønh: caùc lôùp thao taùc file, môû caàu noái network, caùc phaàn töû

giao dieän….

- Trang 208 -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

NHAÄN DIEÄN THEÂM MOÄT SOÁ LÔÙP THIEÁT KEÁ

Page 209: Cong Nghe Phan Mem   Dhbk

� 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...

� Söû duïng tröïc tieáp caùc lôùp do thö vieän hay ngoân ngöõ cung caáp, 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, ví

duï CArray<Isoquant, 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, phuï thuoäc)

- Trang 209 -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

NHAÄN DIEÄN THEÂM MOÄT SOÁ LÔÙP THIEÁT KEÁ (t.t)

Page 210: Cong Nghe Phan Mem   Dhbk

� 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

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

- Trang 210 -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

ÑAËC TAÛ CHI TIEÁT CAÙC THUOÄC TÍNH

+ GetSubject( ): String+ toString( ): String

# subject: String# content: String

Message<<entity>>

CDate

sent1

Page 211: Cong Nghe Phan Mem   Dhbk

� Caùc löôïc ñoà moâ taû haønh vi (coäng taùc, 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 );

fetchReg( crsOff: CourseOffering) : Registration;

- Trang 211 -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

NHAÄN DIEÄN CHÍNH XAÙC CAÙC TAÙC VUÏ

Page 212: Cong Nghe Phan Mem   Dhbk

� Ví duï: nhaän dieän moät taùc vuï cuûa lôùp ChildView

render( );

store( );

load( );

model( map: FieldMap, param );

� Ví duï: nhaän dieän moät taùc vuï cuûa lôùp LoginForm

submit( uname: String; psswd: String );

makeWelcome( );

- Trang 212 -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

NHAÄN DIEÄN CHÍNH XAÙC CAÙC TAÙC VUÏ (t.t)

Page 213: Cong Nghe Phan Mem   Dhbk

� Caäp nhaät caùc lôùp môùi, thuoäc tính, 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, package keùo theo thay ñoåi ôû lôùp,

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 ñuoâi muõi teân phuï thuoäc vaøo lôùp, package phía ñaàu muõi teân

� Moät soá stereotype quy öôùc tröôùc: <<call>>, <<instantiate>>,

<<import>>, <<refine>>, <<realize>>, <<derive>>, <<trace>>

- Trang 213 -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

HOAØN CHÆNH LÖÔÏC ÑOÀ LÔÙP

Page 214: Cong Nghe Phan Mem   Dhbk

- Trang 214 -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

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

+ submit(offering: CourseOffering)+ beSuccessful( )

LoginForm<<boundary>>

+ submit(uname: String, psswd: String)+ makeWelcome( )

RegisterForm<<boundary>>

Database

+ fetchReg(crs: CourseOffering): Registration

+ setReg(reg: Registration)

<<call>> <<call>>

Page 215: Cong Nghe Phan Mem   Dhbk

- Trang 215 -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

HOAØN CHÆNH LÖÔÏC ÑOÀ LÔÙP (t.t)

MapIterator

# setBound(b: int)+ current( ): Item+ operator++()+ operator--()+ Last( )+ First( )

MapIterator<Isoquant*>Item

IsoquantIterator

+ current( ): Isoquant*

MapIterator<Fracture*>

FractureIterator

+ current( ): Fracture*

FieldMap<<entity>>

<<friend>>

# map

Page 216: Cong Nghe Phan Mem   Dhbk

� 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, veà thoâng tin sinh vieân/giaûng

vieân, veà cöûa soå giao dieän, 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, 3-tiers...)

� Moãi package chöùa moät hoaëc moät vaøi löôïc ñoà lôùp, trong ñoù coù

theå tham chieáu ñeán moät soá lôùp thuoäc caùc package khaùc

- Trang 216 -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

HOAØN CHÆNH LÖÔÏC ÑOÀ LÔÙP (t.t)

Page 217: Cong Nghe Phan Mem   Dhbk

� 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, tuaàn töï, traïng thaùi, haønh ñoäng

� Mieâu taû chính xaùc thuoäc tính vaø taùc vuï, 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

- Trang 217 -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

TOÅNG KEÁT

Page 218: Cong Nghe Phan Mem   Dhbk

Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí MinhKhoa Coâng Ngheä Thoâng Tin

- Trang 218 -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

Chöông 8

HIEÄN THÖÏC VAØ TRIEÅN KHAI✦✦✦✦ Caùc thaønh phaàn✦✦✦✦ Caùc thieát bò

Page 219: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG

8.1. Hieän thöïc8.1.1. Thaønh phaàn (component)

8.1.2. Löôïc ñoà thaønh phaàn (component diagram)

8.1.3. Gaùn caùc lôùp vaøo caùc thaønh phaàn maõ nguoàn

8.1.4. Sinh maõ nguoàn

8.2. Trieån khai8.2.1. Node trieån khai

8.2.2. Keát noái caùc node

8.2.3. Löôïc ñoà trieån khai (deployment diagram)

- Trang 219 -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

Page 220: Cong Nghe Phan Mem   Dhbk

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 ?

- Trang 220 -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

Page 221: Cong Nghe Phan Mem   Dhbk

� 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

THAØNH PHAÀN

- Trang 221 -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

Page 222: Cong Nghe Phan Mem   Dhbk

� Thaønh phaàn phaàn meàm (software component) bao goàm

� Maõ nguoàn: *.cpp, *.c, *.pas, *.java, *.bas

� Maõ ñoái töôïng: *.obj

� Maõ nhò phaân: *.class

� Chöông trình thöïc thi: *.dll, *.exe

� Thaønh phaàn phaàn meàm coù theå toàn taïi trong thôøi gian bieân dòch,

thôøi gian lieân keát chöông trình hoaëc thôøi gian thöïc thi

THAØNH PHAÀN (t.t)

- Trang 222 -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

Page 223: Cong Nghe Phan Mem   Dhbk

� 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ù

LÖÔÏC ÑOÀ THAØNH PHAÀN

- Trang 223 -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

Component-name Interface-name

Class-name

Page 224: Cong Nghe Phan Mem   Dhbk

� 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

LÖÔÏC ÑOÀ THAØNH PHAÀN (t.t)

- Trang 224 -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

GeoMap<<file>>

MapCurve<<file>>

FieldMap<<file>>

Isoquant

FractureMapCurve

FieldMap

Page 225: Cong Nghe Phan Mem   Dhbk

� 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

LÖÔÏC ÑOÀ THAØNH PHAÀN (t.t)

- Trang 225 -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

IFL0.dll<<library>>

FieldVis.exe<<executable>>

Cosmo3D12.dll<<library>>

cbsLoader12_dp.dll<<library>>

op12_dp.dll<<library>>

MFC42.dll<<library>>

Page 226: Cong Nghe Phan Mem   Dhbk

� Ví duï: löôïc ñoà thaønh phaàn cuûa heä thoáng ñaêng kyù moân hoïc

LÖÔÏC ÑOÀ THAØNH PHAÀN (t.t)

- Trang 226 -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

Login<<file>>

Register<<file>>

People<<file>>

LoginForm

Database

RegisterForm

PeopleInfo

StudentInfo

LectureInfo

Page 227: Cong Nghe Phan Mem   Dhbk

� 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

LÖÔÏC ÑOÀ THAØNH PHAÀN (t.t)

- Trang 227 -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

RegServ<<executable>>

CheckApl<<executable>>

LoginServ<<executable>>

AddStdServ<<executable>>

AddLectServ<<executable>>

Page 228: Cong Nghe Phan Mem   Dhbk

� Khi thieát laäp caùc thaønh phaàn maõ nguoàn, 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, Isoquant vaø Fracture vaøo thaønh phaàn MapCurve

� Gaùn lôùp PeopleInfo, StudentInfo, 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

GAÙN CAÙC LÔÙP VAØO CAÙC THAØNH PHAÀN

- Trang 228 -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

Page 229: Cong Nghe Phan Mem   Dhbk

� 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 ���� coù theå ñöôïc töï

ñoäng hoaù bôûi caùc coâng cuï CASE

SINH MAÕ NGUOÀN

- Trang 229 -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

Page 230: Cong Nghe Phan Mem   Dhbk

� Node laø moät thieát bò vaät lyù coù khaû naêng tính toaùn, bao goàm: maùy

tính, maùy in, 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

NODE TRIEÅN KHAI

- Trang 230 -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

DellPentium III 600

Server of 600: Dell Pentium III 600

Page 231: Cong Nghe Phan Mem   Dhbk

KEÁT NOÁI CAÙC NODE

- 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

� 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

:SiliconGraphics

:Sun Ultra1

:Pentium III 600

<<TCP/IP>>

<<TCP/IP>>

Page 232: Cong Nghe Phan Mem   Dhbk

LÖÔÏC ÑOÀ TRIEÅN KHAI

- Trang 232 -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

� 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

Client: Pentium MMX 200Java WEB Server: Pentium III 600

<<TCP/IP>>RegServ<<executable>>

CheckApplet<<executable>>LoginServ

<<executable>>

Page 233: Cong Nghe Phan Mem   Dhbk

LÖÔÏC ÑOÀ TRIEÅN KHAI (t.t)

- Trang 233 -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

� Ví duï: chöông trình hieån thò beà maët ñòa hình

IFL0.dll<<library>>

FieldVis.exe<<executable>>

Cosmo3D12.dll<<library>>

cbsLoader12_dp.dll<<library>>op12_dp.dll

<<library>>

MFC42.dll<<library>>

WindowsNT workstation: Pentium II 450

Page 234: Cong Nghe Phan Mem   Dhbk

� 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, module maõ

nguoàn, trang HTML, daïng nhò phaâ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

TOÅNG KEÁT

- Trang 234 -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

Page 235: Cong Nghe Phan Mem   Dhbk

Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí MinhKhoa Coâng Ngheä Thoâng Tin

- Trang 235 -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

Chöông 9

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

Page 236: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG

9.1 Moät soá khaùi nieäm

9.2. Cô sôû cuûa kieåm nghieäm phaàn meàm9.1.1. Muïc tieâu cuûa kieåm nghieäm phaàn meàm

9.1.2. Caùc nguyeân lyù cuûa kieåm nghieäm phaàn meàm

9.1.3. Thieát laäp caùc test-case

9.3. Kieåm nghieäm caùc ñöôøng ñoäc laäp cô baûn9.2.1. Xaây döïng ñoà thò doøng chaûy (flow graph)

9.2.2. Lieät keâ caùc ñöôøng ñoäc laäp cô baûn

9.2.3. Thieát laäp caùc test-case

- Trang 236 -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

Page 237: Cong Nghe Phan Mem   Dhbk

GIÔÙI THIEÄU

� Maëc duø ñöôïc töï ñoäng hoaù moät phaàn bôûi caùc

coâng cuï CASE, 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á, maõ hoaù

� Do ñoù phaûi kieåm nghieäm chöông trình tröôùc khi

chính thöùc söû duïng

- Trang 237 -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

Page 238: Cong Nghe Phan Mem   Dhbk

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 ���� pheâ phaùn, khoâng mang tính xaây döïng

� 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 quan taâm caáu truùc beân trong, thöôøng aùp duïng cho nhöõng module

lôùn.

� 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 duøng cho nhöõng nhöõng module nhoû.

� 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

- Trang 238 -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

Page 239: Cong Nghe Phan Mem   Dhbk

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.

� 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ù).

� Chöùng minh ñöôïc phaàn meàm hoaït ñoäng ñuùng nhö ñaõ thieát keá.

� 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.

- Trang 239 -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

Page 240: Cong Nghe Phan Mem   Dhbk

MUÏC TIEÂU CUÛA KIEÅM NGHIEÄM PHAÀN MEÀM (t.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.

� Khoâng dö thöøa.

� 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.

� Khoâng quaù phöùc taïp cuõng khoâng quaù ñôn giaûn.

� 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. - Trang 240 -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

Page 241: Cong Nghe Phan Mem   Dhbk

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.

� 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.

� 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.

� Khoâng theå kieåm nghieäm trieät ñeå moät 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 - Moân Coâng Ngheä Phaàn Meàm - Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm

Page 242: Cong Nghe Phan Mem   Dhbk

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 ���� vaán ñeà ñaët ra: soá löôïng test-case caàn

thieát laø quaù lôùn

- Trang 242 -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

Page 243: Cong Nghe Phan Mem   Dhbk

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 - Moân Coâng Ngheä Phaàn Meàm - Chöông 9: Kyõ thuaät kieåm nghieäm phaàn meàm

Page 244: Cong Nghe Phan Mem   Dhbk

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

- Trang 244 -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

sequence if while caseuntil

Page 245: Cong Nghe Phan Mem   Dhbk

XAÂY DÖÏNG ÑOÀ THÒ DOØNG CHAÛY (t.t)

- Trang 245 -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

1

2

3

4

5

6

87

11

10

9

1

2,3

4,56

7 8

9

10

11

Page 246: Cong Nghe Phan Mem   Dhbk

XAÂY DÖÏNG ÑOÀ THÒ DOØNG CHAÛY (t.t)procedure: DoSomething

1: do while x=0

2: if y=0 then

3: z=0;

4: elseif k=0 then

5: z=1;

6: else x=1;

7: endif;

endif;

8: enddo

9: end

- Trang 246 -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

1

2

34

6 5

7

8

9

Page 247: Cong Nghe Phan Mem   Dhbk

XAÂY DÖÏNG ÑOÀ THÒ DOØNG CHAÛY (t.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

- Trang 247 -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

b

yx

a

if a and b then y else x

b

x

a

while a or b do x

Page 248: Cong Nghe Phan Mem   Dhbk

XAÂY DÖÏNG ÑOÀ THÒ DOØNG CHAÛY (t.t)procedure AnalyzeTriangle

- Trang 248 -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

1

2

3

4

6

5

7

8

9

c > 0

a<b+c

a = c

a = b

b = ca2=b2+c2

11

1012

Page 249: Cong Nghe Phan Mem   Dhbk

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, 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; trong ñoù P laø soá node phaân nhaùnh (predicate)

- 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

Page 250: Cong Nghe Phan Mem   Dhbk

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…

� 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

- 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

1

2

34

6 5

7

8

9

Page 251: Cong Nghe Phan Mem   Dhbk

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

Page 252: Cong Nghe Phan Mem   Dhbk

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

Page 253: Cong Nghe Phan Mem   Dhbk

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: a = 3, b = 2, c = 0

� Output mong ñôïi: type = “Error”

� Test-case cho ñöôøng 2:� Input: a = 17, b = 5, c = 4

� Output mong ñôïi: type = “Error”

� Test-case cho ñöôøng 3:� Input: a = 6, b = 6, c = 6

� Output mong ñôïi: type = “Equilateral”

- 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

Page 254: Cong Nghe Phan Mem   Dhbk

THIEÁT LAÄP CAÙC TEST-CASE (t.t)� Test-case cho ñöôøng 4:

� Input: a = 7, b = 7, c = 4� Output mong ñôïi: type = “Isosceles”

� Test-case cho ñöôøng 5:� Input: a = 12, b = 9, c = 9� Output mong ñôïi: type = “Isosceles”

� Test-case cho ñöôøng 6:� Input: a = 5, b = 4, c = 3� Output mong ñôïi: type = “Right”

� Test-case cho ñöôøng 7:� Input: a = 13, b = 11, c = 6� Output mong ñôïi: type = “Scalene”

- 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

Page 255: Cong Nghe Phan Mem   Dhbk

� 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.

� Kieåm nghieäm caùc ñöôøng ñoäc laäp cô baûn duøng trong kieåm nghieäm

white-box, 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ù

- Trang 255 -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

TOÅNG KEÁT

Page 256: Cong Nghe Phan Mem   Dhbk

Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí MinhKhoa Coâng Ngheä Thoâng Tin

Chöông 10

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

- Trang 256 -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

Page 257: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG

10.1. Moät soá khaùi nieäm10.1.1. Verification vaø validation10.1.2. Moät chieán thuaät kieåm nghieäm phoå bieán

10.2. Kieåm nghieäm töøng module10.3. Kieåm nghieäm tích hôïp

10.3.1. Tích hôïp töø treân xuoáng (top-down)10.3.2. Tích hôïp töø döôùi leân (bottom-up)10.3.3. Kieåm nghieäm hoài quy (regression)

10.4. Kieåm nghieäm tính naêng (validation)

- Trang 257 -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

Page 258: Cong Nghe Phan Mem   Dhbk

NOÄI DUNG (t.t)

10.5. Kieåm nghieäm höôùng ñoái töôïng

10.5.1. Kieåm nghieäm ñôn vò höôùng ñoái töôïng

10.5.2. Kieåm nghieäm tích hôïp höôùng ñoái töôïng

10.5.3. Kieåm nghieäm theo kòch baûn

10.6. Ngheä thuaät gôõ roái (debug)

10.6.1. Brute force

10.6.2. Loaïi tröø nguyeân nhaân

10.6.3. Theo veát

- Trang 258 -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

Page 259: Cong Nghe Phan Mem   Dhbk

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.

� 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ù

- Trang 259 -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

Page 260: Cong Nghe Phan Mem   Dhbk

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ù ���� “Are we

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 ���� “Are we building the

right product ?”

- Trang 260 -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

Page 261: Cong Nghe Phan Mem   Dhbk

MOÄT CHIEÁN THUAÄT KIEÅM NGHIEÄM PHOÅ BIEÁN

- 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

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

Thieát keá

Maõ hoaù Kieåm nghieäm ñôn vò

Kieåm nghieäm tích hôïp

Kieåm nghieäm tính naêng

Page 262: Cong Nghe Phan Mem   Dhbk

MOÄT CHIEÁN THUAÄT KIEÅM NGHIEÄM PHOÅ BIEÁN (t.t)

- 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

� 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.

� 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 coù theå ñöôïc tieán haønh bôûi ngöôøi phaùt trieån 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.

� 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.

Page 263: Cong Nghe Phan Mem   Dhbk

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,

ñoù laø module maõ nguoàn, sau khi ñaõ thieát keá, 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.

- Trang 263 -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

Page 264: Cong Nghe Phan Mem   Dhbk

- Trang 264 -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

KIEÅM NGHIEÄM TÖØNG MODULE (t.t)

Module……….~~~~~~~~~~~~~~~~~~

interfacelocal data structuresboundary conditionsindependent pathserror handling paths

test-cases

driver

stub stub

Page 265: Cong Nghe Phan Mem   Dhbk

� 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 ���� coù

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.

- 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

KIEÅM NGHIEÄM TÖØNG MODULE (t.t)

Page 266: Cong Nghe Phan Mem   Dhbk

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

Page 267: Cong Nghe Phan Mem   Dhbk

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

Page 268: Cong Nghe Phan Mem   Dhbk

M1

M3 M4

M7

M2

M5 M6

M8Tí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ÖØ TREÂN XUOÁNG (t.t)

Page 269: Cong Nghe Phan Mem   Dhbk

- 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

� 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.

Page 270: Cong Nghe Phan Mem   Dhbk

Mo

Ma Mb

D2D1 D3

clus

ter 1

cluster 2

cluster 3

- 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

TÍCH HÔÏP TÖØ DÖÔÙI LEÂN (t.t)

Page 271: Cong Nghe Phan Mem   Dhbk

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, 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. Hoaëc coù theå duøng moät coâng cuï

capture-playback ñeå thöïc hieän töï ñoäng

- Trang 271 -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

Page 272: Cong Nghe Phan Mem   Dhbk

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 - Moân Coâng Ngheä Phaàn Meàm - Chöông 10: Chieán thuaät kieåm nghieäm phaàn

meàm

Page 273: Cong Nghe Phan Mem   Dhbk

� Kieåm nghieäm alpha

� Ñöôïc tieán haønh ngay taïi nôi saûn xuaát phaàn meàm.

� 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 beta

� Phaàn meàm ñöôïc kieåm tra beân ngoaøi phaïm vi cuûa ñôn vuï saûn xuaát.

� 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 - Chöông 10: Chieán thuaät kieåm nghieäm phaàn

meàm

KIEÅM NGHIEÄM TÍNH NAÊNG (t.t)

Page 274: Cong Nghe Phan Mem   Dhbk

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 tích hôïp - kieåm nghieäm chöùc

naêng -kieåm nghieäm toaøn boä heä thoáng

- Trang 274 -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

Page 275: Cong Nghe Phan Mem   Dhbk

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 275 -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

Page 276: Cong Nghe Phan Mem   Dhbk

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 ���� kieåm nghieäm tích hôïp theo caùch

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

- Trang 276 -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

Page 277: Cong Nghe Phan Mem   Dhbk

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. Login vôùi username = “e59306547”, password = “6547”

2. Choïn chöùc naêng ñaêng kyù moân hoïc

3. Choïn 5 nhoùm moân hoïc cuûa 5 moân: CNPM, AI, XLTHS, PTTK, XLSS

trong ñoù coù 2 nhoùm truøng thôøi khoaù bieåu

4. 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

- Trang 277 -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

Page 278: Cong Nghe Phan Mem   Dhbk

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, loaïi tröø nguyeân nhaân vaø theo

veát. 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 - Moân Coâng Ngheä Phaàn Meàm - Chöông 10: Chieán thuaät kieåm nghieäm phaàn

meàm

Page 279: Cong Nghe Phan Mem   Dhbk

NGHEÄ THUAÄT GÔÕ ROÁI (t.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 ñoä chính

xaùc, do chuû quan laäp trình...

� Khaû naêng gôõ roái gaàn nhö laø baåm sinh cuûa

moãi ngöôøi

- Trang 279 -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

Page 280: Cong Nghe Phan Mem   Dhbk

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.

� Trieát lyù cuûa phöông phaùp naøy laø: “Haõy ñeå maùy tính tìm ra loãi”.

� Coù 3 caùch thöïc hieän:� Laáy döõ lieäu trong boä nhôù ñeå xem xeùt.

� Duøng run-time trace ñeå tìm loãi.

� Duøng leänh WRITE ñeå xuaát döõ lieäu caàn kieåm tra ra maøn hình.

� 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.

- Trang 280 -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

Page 281: Cong Nghe Phan Mem   Dhbk

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.

� Caùch thöïc hieän:

� Khi moät loãi ñöôïc phaùt hieän, coá gaéng ñöa ra moät danh saùch caùc nguyeân

nhaân coù theå gaây ra loãi.

� 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.

� Khi ñoù döõ lieäu kieåm nghieäm seõ ñöôïc tinh cheá laïi ñeå tieáp tuïc tìm loãi.

- Trang 281 -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

Page 282: Cong Nghe Phan Mem   Dhbk

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.

� 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.

- Trang 282 -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

Page 283: Cong Nghe Phan Mem   Dhbk

KEÁT THUÙC MOÂN HOÏC

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

Thi cuoái kyø ?Phaân tích - Thieát keá -Hieän thöïc/trieån khai -Kieåm nghieäm -UML���� Taát caû noäi dung

Thi cuoái kyø ?Phaân tích - Thieát keá -Hieän thöïc/trieån khai -Kieåm nghieäm -UML���� Taát caû noäi dung

Chuùc möøng baïn ñaõ hoaøn taát moân hoïc Coâng Ngheä Phaàn Meàm !