Tài liệu Bài giảng công nghệ phần mềm: Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Công Nghệ Thông Tin
Môn học
CÔNG NGHỆ PHẦN MỀM
- Trang 1 -
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm
GIỚI THIỆU MÔN HỌC
Đặc điểm
Mã số: 501095 Số tín chỉ: 2 Phân phối giờ: 2(2.1.4)
Môn học trước: Toán Tin Học (501302)
Tóm tắt nội dung
Các khái niệm cơ bản của Công Nghệ Phần Mềm: các mô hình phát triển
phần mềm, phân tích yêu cầu, thiết kế, kiểm tra…
2 trường phái chính: có cấu trúc (cổ điển) & hướng đối tượng
Chuẩn UML và việc áp dụng nó trong phương pháp hướng đối tượng
Thực hành tại phòng Lab: làm quen với công cụ Rational Rose
- Trang 2 -
Khoa Công Nghệ Thông Tin - Môn Công Nghệ Phần Mềm
GIỚI THIỆU MÔN HỌC (t.t)
Tài liệu tham khảo
[1] Software Engineering - A practitioner’s approach, R.S.
Pressman, McGraw-Hill, 1997
[2] OMG Unified Modeling Language Specification, version 1.3,
Ob...
283 trang |
Chia sẻ: hunglv | Lượt xem: 1514 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Bài giảng công nghệ phần mềm, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
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
GIÔÙI THIEÄU MOÂN HOÏC
Ñaëc ñieåm
Maõ soá: 501095 Soá tín chæ: 2 Phaân phoái giôø: 2(2.1.4)
Moân hoïc tröôùc: Toaùn Tin Hoïc (501302)
Toùm taét noäi dung
Caùc khaùi nieäm cô baûn cuûa Coâng Ngheä Phaàn Meàm: caùc moâ hình phaùt trieån
phaàn meàm, phaân tích yeâu caàu, thieát keá, kieåm tra…
2 tröôøng phaùi chính: coù caáu truùc (coå ñieån) & höôùng ñoái töôïng
Chuaån UML vaø vieäc aùp duïng noù trong phöông phaùp höôùng ñoái töôïng
Thöïc haønh taïi phoøng Lab: laøm quen vôùi coâng cuï Rational Rose
- Trang 2 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm
GIÔÙI THIEÄU MOÂN HOÏC (t.t)
Taøi lieäu tham khaûo
[1] Software Engineering - A practitioner’s approach, R.S.
Pressman, McGraw-Hill, 1997
[2] OMG Unified Modeling Language Specification, version 1.3,
Object Management Group (www.omg.org), 1999
[3]UML Toolkit, Hans-Erik Eriksson & Magnus Penker, 1998
[4] Object-Oriented Software Engineering, A Use-Case Driven
Approach, I. Jacobson, ACM Press/Addison-Wesley, 1992
[5] Object-Oriented Analysis and Design with Applications, G.
Booch, The Benjamin Cummings Publishing Company, 1994
- Trang 3 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm
GIÔÙI THIEÄU MOÂN HOÏC (t.t)
Hình thöùc ñaùnh giaù
Thi giöõa kyø: traéc nghieäm khoâng söû duïng
taøi lieäu, chieám 20 % keát quaû cuoái cuøng
Thi cuoái kyø: traéc nghieäm khoâng söû duïng
taøi lieäu, chieám 80 % keát quaû cuoái cuøng
- Trang 4 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm
ÑEÀ CÖÔNG
Chöông 1: Giôùi thieäu veà Coâng Ngheä Phaàn Meàm
Chöông 2: Phaân tích yeâu caàu theo phöông phaùp coå ñieån
Chöông 3: Caùc khaùi nieäm cô baûn cuûa moâ hình höôùng ñoái töôïng
Chöông 4: Moâ hình nghieäp vuï vaø thu thaäp yeâu caàu
Chöông 5: Phaân tích yeâu caàu höôùng ñoái töôïng
Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå ñieån
Chöông 7: Thieát keá höôùng ñoái töôïng
Chöông 8: Hieän thöïc vaø trieån khai heä thoáng
Chöông 9: Kyõ thuaät kieåm tra phaàn meàm
Chöông 10: Chieán thuaät kieåm tra phaàn meàm
- Trang 5 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm
Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí Minh
Khoa 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
NOÄI DUNG
1.1. Moät soá khaùi nieäm
1.1.1. Khuûng hoaûng phaàn meàm
1.1.2. Ñònh nghóa
1.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àm
1.1.5. Moâ hình CMM
1.2. Caùc moâ hình phaùt trieån phaàn meàm
1.2.1. Moâ hình tuaàn töï tuyeán tính
1.2.2. Moâ hình prototype
1.2.3. Moâ hình xoaén oác
1.2.4. Moâ hình taêng daàn
1.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
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
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
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
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
science
professional
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
ÑÒ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
ÑÒ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
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
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
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
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
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
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
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
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
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öïng
prototype
Ñ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
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
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
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
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
Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí Minh
Khoa 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
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
NOÄI DUNG
2.1. Caùc yeáu toá caên baûn cuûa moâ hình phaân tích
2.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ûn
2.2.2. Môû roäng cuûa Ward vaø Mellor
2.2.3. Môû roäng cuûa Hatley & Pirbhai
2.3. Moâ hình haønh vi phaàn meàm
2.4. Kyõ thuaät phaân tích yeâu caàu
2.4.1. Xaây döïng DFD
2.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
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
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
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
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êng
xöû 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
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
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áy
Heá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
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
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
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 öùng
Kieå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
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äu
chuoâ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
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
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
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á +
soá ñöôøng daøi = (1) + maõ vuøng + soá ñòa phöông
tieà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
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
Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí Minh
Khoa 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
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
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
Ñ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
Ñ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
Ñ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 : Circle
Radius = 1.3
x = 3.2
y = 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
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
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
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
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
VÍ DUÏ veà LÔÙP/ÑOÁI TÖÔÏNG - JAVA
class 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
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
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
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
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
VÍ DUÏ veà BAO GOÄP - C++
class Geometry { // abstract base class
public:
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 container
int 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
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
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
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
VÍ DUÏ veà THÖØA KEÁ vaø OVERRIDE - JAVA
class 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
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
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
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
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
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
Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí Minh
Khoa 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
NOÄI DUNG
4.1. Nhaän dieän caùc vai troø (actor)
4.1.1. Khaùi nieäm actor
4.1.2. Nhaän dieän actor
4.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-case
4.1.2. Tìm kieám use-case
4.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
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
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
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
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ø >
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
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ï
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
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
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
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
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
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
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
>
>
- 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
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
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
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:
>
>
>
...
- 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
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
QUAN HEÄ GIAO TIEÁP
Laø quan heä lieân keát coù stereotype laø >
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
>
- 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
QUAN HEÄ GOÄP
Laø quan heä lieân keát coù stereotype laø >
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
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
>
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
QUAN HEÄ MÔÛ ROÄNG
Laø quan heä lieân keát coù stereotype laø >
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
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ã
>
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
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
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ø >
Quan heä môû roäng hay goäp giöõa 2 use-case: quan heä lieân keát vôùi stereotype
> hay >
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
XAÂY DÖÏNG MOÂ HÌNH USE-CASE (t.t)
People
Finance
Prints timetable Makes timetable
fee summary
Adds students
Removes students
Administration
print request
> timetable command
>
Student
Lecturer Reads courses
Manages students
>
>
Manages lecturers
Manages course
Registers courses
Login
>
>
>
>
>
Undertakes
courses
>
- 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
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
>
AdministratorViews mail
>
Forwards
>
Replies
>
Adds mailbox
Removes mailbox
>Subcriber
>
>
Login
>
>
>
XAÂY DÖÏNG MOÂ HÌNH USE-CASE (t.t)
sets viewing
>
imports
exports
models
initializes
>
saves model
exits
>
sets eye
toggles mode
toggles light
sets appearance
Viewer
import command
>
export command
>
model command
>
run command
save command
>
close command
>
- 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
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
Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí Minh
Khoa 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
NOÄI DUNG
5.1. Nhaän dieän caùc ñoái töôïng/lôùp
5.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ính
5.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
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
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ä
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
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
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
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: >, >,
>...
Ñ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
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
Ñ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 >
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
Ñ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
>
- 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
Ñ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 >
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
Ñ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
>
- 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
Ñ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 >
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
Ñ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
>
+ Execute( )
+ Reexecute( )
+ Unexecute( )
# Do( )
PasteCommand
>
+ Execute( )
+ Reexecute( )
+ Unexecute( )
# Do( )
BgCommand
>
+ 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
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
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
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
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
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
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
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
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
>
- name: String
- code: Long
- dateOfBirth: Date
- addr: String
- acaYear: Date
- department
- home: String
- socialAid
LecturerInfo
>
- 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
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
>
- courseName: String
- courseCode: String
- offering: int
- session
- credit: int
- prerequisite
Catalog
>
- 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
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
>
- ID: Integer
- open: boolean
- altitude: double
Fracture
>
- ID: Integer
- open: boolean
Point2D
- x: double
- y: double
# points*
# points
*
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
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
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
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
>
StudentInfo
>
- acaYear: Date
- department
- home: String
- socialAid
LecturerInfo
>
- 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
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
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
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
>
Registration
>
- acaYear: Date
- semester
LecturerInfo
> CourseOffering
>
students
40..80
offering
lecturer
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
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
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
>
Catalog
>
- acaYear: Date
- semester
*
1
WindowMenu * 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
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
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
>
FieldMap
>
- name: String
*
+ wrap( ): Region
- altitude: double
MapCurve
- ID: int
- open: boolean
Point2D
- x: double
- y: double
*
points
isoquants
Fracture
>
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
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
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
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
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
Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí Minh
Khoa 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
NOÄI DUNG
6.1. Caùc cô sôû cuûa thieát keá phaàn meàm
6.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
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äu
6.4. Thieát keá kieán truùc
6.4.1. Doøng transform vaø doøng transaction
6.4.2. Aùnh xaï doøng transform
6.4.3. Aùnh xaï doøng transaction
6.5. Thieát keá giao dieän ngöôøi duøng
6.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
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
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
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
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
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
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át
Soá 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
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
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
CAÁU TRUÙC DÖÕ LIEÄU
Caáu truùc döõ lieäu moâ taû söï toå chöùc, phöông thöùc truy xuaát, möùc
ñoä lieân keát vaø caùc xöû lyù khaùc cuûa thoâng tin
Döõ lieäu ñôn laø daïng caáu truùc döõ lieäu ñôn giaûn nhaát chæ bao goàm
moät phaàn töû thoâng tin maø coù theå ñöôïc truy xuaát baèng moät danh
ñònh
Moät soá daïng phöùc taïp hôn: vector, ma traän, maûng nhieàu chieàu,
danh saùch lieân keát, haøng, choàng, caây nhò phaân…
Ñöôïc bieåu dieãn ôû caùc möùc tröøu töôïng hoaù khaùc nhau
- Trang 149 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm -
Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå
ñieån
THUÛ TUÏC
Thuû tuïc taäp trung vaøo chi tieát xöû lyù cuûa moãi module.
Cung caáp ñaëc taû chi tieát cuûa
Chuoãi söï kieän
Voøng laëp
Quyeát ñònh reõ nhaùnh
Coù theå caû caáu truùc döõ lieäu
- Trang 150 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm -
Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå
ñieån
CHE DAÁU THOÂNG TIN
Che daáu thoâng tin laø moät trong nhöõng nguyeân lyù quan troïng cuûa vieäc
phaân chia module
Caùc module giao tieáp vôùi nhau baèng nhöõng thoâng tin thaät söï caàn thieát
Nhöõng thoâng tin veà thuû tuïc vaø döõ lieäu cuïc boä cuûa moãi module phaûi
ñöôïc che daáu khoûi caùc module khaùc
Lôïi ích: kieåm soaùt ñöôïc thay ñoåi vaø söûa loãi deã daøng
- Trang 151 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm -
Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå
ñieån
PHAÂN CHIA MODULE HIEÄU QUAÛ
Phaân chia module laø baét buoäc trong giai ñoaïn thieát keá
Tuy nhieân: phaân chia kieán truùc phaàn meàm thaønh moät boä caùc
module nhö theá naøo laø toát nhaát ?
Tieâu chí quan troïng nhaát: tính ñoäc laäp chöùc naêng cuûa caùc module
Tính ñoäc laäp chöùc naêng ñöôïc ño baèng 2 tieâu chuaån: ñoä keát dính
(cohesion) vaø söï lieân keát (coupling)
- Trang 152 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm -
Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå
ñieån
ÑOÄ KEÁT DÍNH
Ñoä keát dính duøng ñeå ño söï phuï thuoäc laãn nhau giöõa nhöõng taùc vuï
(task) cuûa moät module
Module coù ñoä keát dính cao nhaát khi noù chæ ñaûm nhaän ñuùng moät
taùc vuï keát dính chöùc naêng
Thieát keá kieán truùc phaàn meàm: coá gaéng taêng ñoä keát dính
- Trang 153 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm -
Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå
ñieån
Ñ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
SÖÏ LIEÂN KEÁT
Söï lieân keát duøng ñeå ño ñaïc quaù trình giao tieáp giöõa caùc module:
giao tieáp cuûa module chöùa nhieàu taùc vuï vaø nhieàu thoâng soá goïi thì
söï lieân keát caøng cao
Thieát keá kieán truùc phaàn meàm: coá gaéng giaûm söï lieân keát
- Trang 155 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm -
Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå
ñieån
SÖÏ LIEÂN KEÁT (t.t)
Coù nhieàu möùc ñoä lieân keát (töø cao ñeán thaáp)
lieân keát noäi dung: söû duïng döõ lieäu vaø ñieàu khieån cuûa module khaùc
lieân keát chung: coù söû duïng chung döõ lieäu toaøn cuïc
lieân keát ngoaïi vi: module phuï thuoäc vaøo moät I/O naøo ñoù
lieân keát ñieàu khieån: thoâng soá truyeàn aûnh höôûng ñeán ñieàu khieån
lieân keát stamp: truyeàn caáu truùc döõ lieäu phöùc taïp
lieân keát döõ lieäu: truyeàn caùc thoâng soá ñôn giaûn
- Trang 156 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm -
Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå
ñieån
CAÙC HEURISTICS cho PHAÂN CHIA MODULE
Söûa laïi thieát keá ban ñaàu ñeå taêng ñoä keát dính vaø giaûm söï lieân keát
Khi chieàu saâu taêng, haïn cheá fan-out trong khi söû duïng fan-in
Giöõ cho taàm aûnh höôûng cuûa moät module naèm beân trong taàm ñieàu
khieån cuûa noù
Loaïi boû dö thöøa trong giao tieáp cuûa caùc module
Öu tieân caùc module taát ñònh, haïn cheá caùc module nhieàu raøng buoäc
Ñoùng goùi caùc module ñeå ñaït ñöôïc tính khaû chuyeån (portability)
- Trang 157 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm -
Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå
ñieån
THIEÁT KEÁ DÖÕ LIEÄU
Tìm kieám bieåu dieãn luaän lyù cho caùc phaàn töû döõ lieäu ñaõ ñöôïc
nhaän dieän trong giai ñoaïn phaân tích yeâu caàu
Thieát keá caùc caáu truùc döõ lieäu cuûa chöông trình vaø cô sôû döõ lieäu
Thöïc hieän tinh cheá töøng böôùc
- Trang 158 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm -
Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå
ñieån
THIEÁT KEÁ DÖÕ LIEÄU (t.t)
Moät soá nguyeân taéc
Nhaän dieän caû caáu truùc döõ lieäu vaø taùc vuï truy xuaát
Chuù yù söû duïng töø ñieån döõ lieäu
Trì hoaõn thieát keá döõ lieäu möùc thaáp cho ñeán cuoái giai ñoaïn naøy
Che daáu bieåu dieãn beân trong cuûa caáu truùc döõ lieäu
Phaùt trieån moät thö vieän caùc caáu truùc döõ lieäu + taùc vuï thöôøng gaëp
Neân aùp dung kieåu ADT trong thieát keá cuõng nhö trong laäp trình
- Trang 159 -
Khoa Coâng Ngheä Thoâng Tin - Moân Coâng Ngheä Phaàn Meàm -
Chöông 6: Cô sôû cuûa thieát keá phaàn meàm vaø phöông phaùp thieát keá coå
ñieån
THIEÁT KEÁ KIEÁN TRUÙC
Muïc tieâu laø xaây döïng sô ñoà phaân caáp module töø DFD
Ñaët neàn moùng ñeå thieát keá chi tieát thuû tuïc vaø döõ lieäu
Phaân bieät doøng transform vaø doøng transaction trong DFD
Thöïc hieän aùnh xaï cho töøng vuøng cuûa DFD tuyø theo noù laø doøng
transform hay transaction
- 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
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øo
Doø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
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
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
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
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
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
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
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
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
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
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
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”
else
if ( a = b or b = c )
type := “Isosceles”
else
if ( a*a = b*b + c*c )
type := “Right”
else
type := “Scalene”
else
type := “Error”
end
- 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
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
Tröôøng Ñaïi Hoïc Baùch Khoa Tp. Hoà Chí Minh
Khoa 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
NOÄI DUNG
7.1. Thieát keá haønh vi
7.1.1. Khaùi nieäm moâ hình ñoäng
7.1.2. Töông taùc giöõa caùc ñoái töôïng
7.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ónh
7.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ính
7.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
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
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
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
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
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
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
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
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
: 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
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)
: LoginForm
1: 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
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
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
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
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
: People
ob1 : C1new( )
ob2 : C2 ob3 : C3
[x<0] op2( )
[x>=0] op3( )
ob4 : C4
op5( ob3 )
op4( y )
display( )
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
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
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
: Student
regForm :
RegisterForm
: Database: Registration: LoginForm
1: submit(uname, psswd) 1.1: succ := verify(uname, psswd)
1.2 [succ = true]: welcome
2: register
2.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
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
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
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 Password
entry / set echo visible
exit / set echo normal
character / handle character
help / display help
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ö sau
action-label ’/’ action-expression
Moät soá nhaõn haønh ñoäng (action-label) ñöôïc quy öôùc tröôùc:
entry: thöïc hieän haønh ñoäng taïi thôøi ñieåm baét ñaàu traïng thaùi
exit: thöïc hieän haønh ñoäng taïi thôøi ñieåm keát thuùc traïng thaùi
do: thöïc hieän haønh ñoäng suoát traïng thaùi hoaëc cho ñeán khi keát thuùc noù
include: trieäu goïi moät maùy traïng thaùi con khaùc
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
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)
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)
- 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
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)
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)
- 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 ID
exit/ fill d
Các file đính kèm theo tài liệu này:
- Bài giảng Công Nghệ Phần Mềm.pdf