Phân tích thiết kế hệ thống hướng đối tượng bằng UML: mô hình hóa use case

12 900 3
Phân tích thiết kế hệ thống hướng đối tượng bằng UML: mô hình hóa use case

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Phân tích thit k h thng hng đi tng bng UML 74 Chng 6 HÌNH HOÁ USE CASE Mc tiêu Sau khi hc xong sinh viên có th: - Hiu ý ngha ca vic s dng s đ use case trong biu din yêu cu h thng - Xác đnh đc các tác nhân và mi quan h gia các tác nhân ca mt h thng phn mm - Xác đnh đc các use case biu din chc nng phn mm h thng và mi quan h gia tác nhân cà use case nhm xây dng s đ use case t yêu c u phn mm h thng - Tinh ch s đ use case nhm làm gia tng tính din đt, tính tái s dng qua vic s dng các liên kt <<extend>>, <<include>> Gii thiu Trong giai đon phân tích, kt qu ca quá trình kho sát yêu cu phn ánh quá trình làm vic ca ngi phát trin vi ngi s dng. Các kt qu này phi nhm đn yu t ca ngi dùng. Có ngha là ngi phát trin trc tiên phi din đt bc tranh ca h thng tng lai theo cách nhìn ca ngi s dng. iu này s giúp cho ngi dùng có th thy đc h thng s làm thoã mãn các yêu cu nh th nào và đó chính là chìa khoá đu vào cho vic phát trin h thng trong các giai đon v sau. Mt công c giúp din đt điu này chính là hình use case. Jacobson và cng s ca ông (1992) là nhng ngi tiên phong trong vic s dng hình use case đ phân tích yêu cu h thng. Bi vì hình use case đt trng tâm đ biu din h thng hin ti làm gì, h thng mi s làm gì và môi trng c a nó. Nó giúp cho ngi phát trin có th hiu rõ v yêu cu chc nng h thng mà không quan tâm đn chc nng này đc cài đt nh th nào.  hiu yêu cu ca h thng, chúng ta phi tìm ra ngi dùng s s dng h thng nh th nào. Do đó t mt quan đim ngi dùng chúng ta phát hin các tình hung s dng khác nhau ca ngi dùng, các tình hung này đc thit lp b i các use case, tng hp các use case và tác nhân cùng vi quan h gia chúng s cho ta mt hình use case t yêu cu ca h thng. Trong chng 5, quá trình hình hoá nghip v đc áp dng đi vi các h thng nghip v và kt qu ca nó s cung cp s đ use case t vic thng nht các yêu cu h thng phn mm đ t đng hoá hot đng ca h thng nghi p v đó. Tuy nhiên, trong nhng h thng mà không có hot đng nghip v (ví d: h thng nhúng), hoc các nghip v ca h thng không quá phc tp hoc không quan tâm đ hình hoá nghip v thì vic xây dng hình use case phn mm s là bc tip cn hình hoá đu tiên v h thng. Mt tin trình xây dng s đ use case bao gm các bc sau: - Xác đnh tác nhân h thng o Ai đang s dng h thng? o Hoc trong trng hp phát trin mi thì ai s s dng h thng? - Phát trin use case o Ngi dùng (tác nhân) đang làm gì vi h thng? Phân tích thit k h thng hng đi tng bng UML 75 o Hoc trong trng hp h thng mi thì ngi dùng s làm gì vi h thng? - Xây dng s đ use case o Xác đnh mi quan h gia tác nhân – use case o Xác đnh mi quan h gia các use case - Phân chia s đ use case thành các gói (package) Xác đnh tác nhân Tác nhân (actor) Ý ngha: mt tác nhân là mt đi tng bên ngoài h thng giao tip vi h thng theo mt trong nhng hình thc sau: - Tng tác, trao đi thông tin vi h thng hoc s dng chc nng h thng - Cung cp đu vào hoc nhn các đu ra t h thng - Không điu khin hot đng ca h thng Ký hiu Tên tác nhân: tên tác nhân là mt danh t Quan h gia các tác nhân: Là quan h tng quát hóa và chuyên bit hoá Ví d: Xác đnh tác nhân Xác đnh tác nhân cng đc xem có tm quan trng nh xác đnh class, use case, liên kt,…. Khi xác đnh ngi s dng phn mm h thng, chúng ta đng quan trng vn đ quan sát ngi nào đang s dng h thng mà chúng ta nên xác đnh xem vai trò chu trách nhim trong vic s dng h thng. Ngha là tác đng lên h thng theo ngha cung cp thông tin cho h thng hoc nhn kt qu x lý t h thng. Tác nhân đc hiu là mt vai trò tham gia vào h thng không ging nh mt con ngi c th hoc mt công vic. Mt đi tng có th tham gia vào mt hoc nhiu vai trò Tên tác nhân <<Actor>> <Tên tác nhân> Khách hàng Khách quen Nhân viên Nhân viên bán hàng Th kho Phân tích thit k h thng hng đi tng bng UML 76 Qua quá trình kho sát và phân tích tài liu h thng, chúng ta có th nhn ra các tác nhân thông qua các câu hi sau: - Ai đang s dng h thng? Hoc ai đc tác đng bi h thng? Hoc nhóm đi tng nào cn h thng tr giúp đ làm công vic? (tác nhân chính) - Ai tác đng ti h thng? Nhng nhóm đi tng nào h thng cn đ thc hin hot đng ca nó (hot đng g m chc nng chính và chc nng ph, nh là chc nng qun tr)? - Nhng phn cng hoc h thng bên ngoài nào s dng h thng? Ví d: trong hot đng ca máy ATM ca mt ngân hàng, các tác nhân đc xác đnh là: Trong đó, các tác nhân Khách hàng, Nhân viên ngân hàng là các tác nhân chính (primary actor) ca h thng ATM. Bi vì khách hàng là mc tiêu mà h thng tng tác; Nhân viên ngân hàng s dng h thng đ tr giúp công vic. Trong khi đó, Nhân viên v n hành là tác nhân ph (secondary actor) bi vì tác nhân này đm nhn nhng chc nng ph mà h thng cn có đ thc hin hot đng ca nó. Hoc trong mt th vin ca trng đi hc, các tác nhân ca h thng phn mm qun lý th viên gm: Xác đnh use case Use case Mt Use case đc xem nh mt chc nng h thng t quan đim ngi dùng, nh vy tp hp tt c use case biu din b mt ca h thng bao gm các chc nng cn có đ cung cp cho các đi tng tng tác làm vic vi h thng. Nh vy, use case dùng đ t yêu cu Nguyn Vn A Nguyn Th B Trn Vn C Khách hàng NV bán hàng Bán hàng Th kho t mua NGK Ngi dùng Tác nhân Use case Khách hàng Nhân viên ngân hàng Nhân viên vn hành c gi Th th Nhà cung cp Phân tích thit k h thng hng đi tng bng UML 77 ca h thng mi v mt chc nng, mi chc nng s đc biu din nh mt hoc nhiu use case. Ví d: h thng ca hàng NGK ta có mt vài use case Bán hàng, qun tr tn kho,… Ký hiu Xác đnh use case Chúng ta bt đu t tp các tác nhân đã xác đnh trong bc đu tiên. ng vi mi tác nhân: - Tìm các nhim v và chc nng mà tác nhân s thi hành hoc h thng cn tác nhân đ thi hành và hình hoá nó nh là use case. Use case s đi din mt dòng s kin dn ti mt mc tiêu rõ ràng (hoc trong mt vài trng hp, dn ti mt vài mc tiêu riêng bit có th là các phng án thay th cho tác nhân hoc cho h thng so v i dòng s kin chính) - t tên cho use case: tên use case nên đt nhm phn ánh mt t tng quan v chc nng ca use case. Tên nên dn đt nhng gì xy ra khi mt th hin ca use case đc thi hành. Mt hình thc đt tên use case ph bin là : đng t (do) + danh t (what). - t use case mt cách ngn gn bng vic áp dng các thut ng gn gi vi ngi s dng. iu này s làm cho t use case ít m h. Ví d: trong h thng ATM Tác nhân Khách hàng s s dng h thng qua các chc nng: - Gi tin - Rút tin - Truy vn thông tin v tài khon Tác nhân Nhân viên vn hành s s dng các chc nng - Khi đng h thng - óng h thng Gi tin: khách hàng đng nhp vào h th ng và yêu cu gi tin vào tài khon. Khách hàng s xác đnh tài khon và s tin gi, h thng s to mt giao tác gi tin và lu vào h thng. Các bc nh sau: - Yêu cu xác đnh tài khon - H thng hi s tin gi Gi tin Rút tin Truy vn thông tin tài khon Khi đng h thn g óng h thng Tên use case Bán hàng Qun tr kho Phân tích thit k h thng hng đi tng bng UML 78 - Nhp vào s tin gi - Khách hàng đa tin vào bao th và chuyn vào máy ATM Rút tin: khách hàng đng nhp h thng và yêu cu rút tin t tài khon. Khách hàng xác đnh tài khon và lng tin rút. Sau khi kim tra s d tài khon còn đ, h thng s to mt giao tác rút tin và lu vào h thng. Các bc nh sau: - Yêu cu xác đnh tài khon - Yêu cu xác đnh s tin cn rút - Nhp s tin rút - Kim tra s d có đ không - Chuyn tin ra ngoài Truy vn thông tin tài khon: khách hàng đng nhp vào h thng và yêu cu xem thông tin v các giao dch ca tài khon. H thng hin th các thông tin v các giao tác đã to lên màn hình cho khách hàng. Khi đng h thng: h thng đc khi đng khi nhân viên vn hành bt công tc ca máy. Nhân viên vn hành s đc yêu cu nhp vào s tin hin hành ca máy nm trong két đng tin. Sau đó, h thng s thit lp mt kt ni ti ngân hàng và các dch v ca máy ATM bt đu vn hành. óng h thng: h thng đc đóng li khi nhân viên vn hành đm bo rng không có khách hàng nào đang s dng máy. Khi đó, nhân viên vn hành s ly các bao tin gi ra, bô sung l ng tin, giy,… Trong h thng qun lý th vin, các use case đc xác đnh nh sau: Xác đnh mi quan h Quan h tác nhân – use case : quan h này cho bit tác nhân s tng tác vi use case. Mt use case luôn luôn đc khi to bi mt tác nhân và có th tng tác vi nhiu tác nhân. Ký hiu Ví d: Tên use case Tác nhân X lý mn sách X lý tr sách Tra cu sách ng ký thành viên Mua sách Phân tích thit k h thng hng đi tng bng UML 79 Mi quan h gia các use case Vic t use case có th s khó hiu nu use case này cha đng nhiu dòng ph hoc dòng ngoi l ch x lý cho nhng s kin trong nhng điu kin đc bit.  làm đn gin t này chúng ta s dng thêm các mi kt hp <<extend>> và <<include>>. Liên kt m rng (<<extend>> ): đc dùng khi chúng ta có mt use case tng t nh use case khác nhng có nhiu hn mt vài x lý đc bit. Ging nh liên kt tng quát - chuyên bit, trong đó, use case chuyên bit là mt m rng ca use case tng quát bng vic đa thêm vào các hot đng hoc ng ngha mi vào use case tng quát, hoc b qua hot đng ca use case tng quát. Ví d: gi s ng nhp là mt use case c b n. Use case này s đi din cho tt c nhng gì đc xem là thc hin đng nhp mt cách xuyên sut.Tuy nhiên, nhiu vn đ có th tác đng đn dòng s kin chính. Ví d, mã s PIN không hp l, hoc th không đc đc do b h,…. Do đó, chúng ta không phi luôn luôn thi hành các hot đng thng xuyên ca mt use case đc cho và nh vy, cn thit to ra các use case mi đ gii quyt nh ng tình hung mi. Tt nhiên, chúng ta có th đa vào use case c bn các ni dung x lý đc bit đó. Tuy nhiên, điu này có th dn đn s phc tp vi nhiu lun lý riêng bit và s làm gim vai trò ca dòng chính.  gii quyt vn đ này chúng ta có th s dng quan h <<extend>>.  đây chúng ta gom các x lý c bn hoc bình thng vào trong mt use case (c bn). Các x lý đc bi t vào X lý mn sách X lý tr sách Tra cu sách ng ký thành viên Mua sách c gi Th th Nhà cung cp Truy vn thông tin tài khon Rút tin Gi tin Khách hàng Khi đng h thn g Nhân viên vn hành óng h thng Phân tích thit k h thng hng đi tng bng UML 80 nhng use case (chuyên bit) khác. Ri to mt liên kt <<extend>> gia use case c bn ti các use case chuyên bit đ khai báo rng: ngoài x lý dòng chính (c bn), use case c bn có m rng đn các tình hung x lý đc bit đc gii quyt trong các use case chuyên bit. To mt use case tng quát có tên là Giao dch ca các use case Rút tin, Gi tin và Truy vn thông tin tài khon. To các liên kt <<extend>> t use case Giao dch đn các use case này. Nh vy, mt rút ti n, hoc gi tin, hoc truy vn thông tin tài khon là mt loi giao dch mà khách hàng có th s dng trên máy ATM. Có ngha rng, các x lý trong use case Giao dch s cung cp mt dòng chung và khi khách hàng chn mt loi giao dch đc bit nào đó thì use case này s m rng vic gii quyt thông qua các use case chuyên bit. Giao dch: khách hàng tng tác vi h thng bt đu bng vic đng nhp h thng. Sau khi đ ng nhp, khách hàng có th thc hin các giao dch. Sau đây là các bc: - a th vào máy - Thc hin đng nhp - Yêu cu loi giao dch - Nhp loi giao dch - Thc hin giao dch - y th ra - Yêu cu ly th - Ly th Trong h thng qun lý th vin, use case Mn sách ngoài dòng hot đng chính còn có các dòng ph. Dòng ph  này s đc kích hot đ gii quyt vn đ khi mt đc gi đn mn tài liu nhng không có trong th vin và th vin s mn tài liu đó t nhng th vin khác có liên kt. Hoc do đc gi không tho các điu kin đ đc mn (mn sách quá hn cha Giao dch Rút tin Gi tin Khách hàng Khi đng h thn g Nhân viên vn hành óng h thng Truy vn thông tin tài khon <<extend>> <<extend>> <<extend>> Use case Use case <<extend>> ng nhp Gii quyt PIN khôn g hp l <<extend>> Phân tích thit k h thng hng đi tng bng UML 81 tr ca ln mn trc). Do đó, chúng ta tách dòng ph này và use case “Mn sách t th vin thành viên” và “ ”và to mt liên kt <<extend>> t use case này đn use case X lý mn sách. Liên kt s dng (<<include>>): đc thành lp khi chúng ta có các use case mà tìm thy mt vài use case có nhng dòng hot đng chung, và đ tránh t dòng hot đng chung đó lp li trên nhng use case này, chúng ta có th tách nhng dòng hot đng chung đó ra thành mt use case. Use case mi này có th s dng bi nhng use case khác. Quan h gia nhng use case vi use case đc trích ra này gi là quan h <<include>>. Quan h s dng giúp chúng ta tránh s trùng lp bng cách cho phép mt use case có th đc chia s. Trong ví d trên, use case mn sách và tr sách đu phi thc hin công vic kim tra th th vin ca đc gi, do đó chúng ta phát sinh mt use case mi là kim tra th bng cách trích ra hot đng kim tra th th vin t hai use case trên và to mt liên kt <<include>> ti use case t hai use case đó ti use case mi. Các use case X lý mn sách và X lý tr sách đu tha hng tt c hot đng ca use case ca use case kim tra th. Trong h thng ATM, use case Giao dch s có mi liên kt <<include>> vi use case đng nhp. ng nhp: khách hàng nhp vào mã s PIN gm bn ký s. Nu mã s PIN hp l, tài khon ca khách hàng s sn sàng cho các giao dch. Các bc nh sau: - Yêu cu password - Nhp password - Kim tra password Gii quyt PIN không hp l: nu mã s PIN không hp l, h thng s hin th mt thông báo ti khách hàng. Giao dch Khách hàng ng nhp Gii quyt PIN khôn g hp l <<extend>> <<include>> X lý mn sách Mn sách t th vi n thành viên <<extend>> X lý t chi m n sách <<extend>> X lý mn sách X lý tr sách Th th Kim tra th <<include>> <<include>> Phân tích thit k h thng hng đi tng bng UML 82 S ging nhau gia liên kt <<extend>> và liên kt <<include>> là tt c đu đc xem nh là mt loi k tha. Khi chúng ta mun chia s mt s hot đng chung trong nhiu use case, dùng liên kt <<include>> bng cách trích các hot đng chia s đó thành mt use case mi. Khi chúng ta mun thêm vào mt ít khác bit cho mt use case đ t mt tình hung đc bit trong mt tình hung chung, chúng ta s to mt use case mi có liên kt <<extend>> vi use case chung đ ó. Da vào các liên kt đc thit lp cho các use case chúng ta phân use case thành hai loi: Use case tru tng: là use case cha hoàn ho ngha là không tng tác vi bt k mt tác nhân nào mà đc s dng bi mt use case khác. Use case tru tng cng có th có liên kt <<extend>> hoc liên kt <<include>> trong nhng mc đ khác. Ví d: các use case Kim tra th, X lý t chi mn sách,… là các use case tru tng. Use case c th: là use case có tng tác trc tip vi m t tác nhân. Ví d: các use case X lý mn sách, X lý tr sách, hoc Khi đng máy,óng máy,…. hình use case ca h thng máy ATM Giao dch Rút tin Gi tin Khách hàng Khi đng h thn g Nhân viên vn hành óng h thng Truy vn thông tin tài khon <<extend>> <<extend>> <<extend>> ng nhp Gii quyt PIN khôn g hp l <<extend>> <<include>> Phân tích thit k h thng hng đi tng bng UML 83 hình use case h thng phn mm qun lý th vin Phân chia các use case thành các gói (package) Mi use case minh ho mt kch bn trong h thng. Khi gp nhng h thng tng đi phc tp thì chúng ta nên thu hp tiêu đim ca các kch bn trong h thng bng cách phân chia thành các gói. Mi gói phn ánh mt phm vi ca h thng mà chúng ta ch mun qun lý nó khi chúng ta truy cp gói đó. Ví d, có th chia các se case ca h thng máy ATM thành ba gói: Giao dch, Rút gi và Vn hành Trong đó, gói Giao dch g m các use case: Giao dch, ng nhp, Gii quyt PIN không hp l; gói Rút gi gm các use case: Gi tin, Rút tin, Truy vn thông tin tài khon; và gói Vn hành gm các use case: Khi đng h thng, óng h thng H thng qun lý th vin đc chia thành ba gói nh sau: Mn tr sách, đng ký thành viên, và Mua sách. X lý mn sách X lý tr sách Tra cu sách ng ký thành viên Mua sách c gi Th th Nhà cung cp Kim tra th <<include>> <<include>> Mn sách t th vi n thành viên X lý t chi m n sách <<extend>> <<extend>> Giao dch Rút gi Vn hành . use case t hai use case đó ti use case mi. Các use case X lý mn sách và X lý tr sách đu tha hng tt c hot đng ca use case ca use case. đng chung đó ra thành mt use case. Use case mi này có th s dng bi nhng use case khác. Quan h gia nhng use case vi use case đc trích ra này gi

Ngày đăng: 19/12/2013, 20:46

Hình ảnh liên quan

Mô hình use case ca h th ng máy ATMGiao d ch  - Phân tích thiết kế hệ thống hướng đối tượng bằng UML: mô hình hóa use case

h.

ình use case ca h th ng máy ATMGiao d ch Xem tại trang 9 của tài liệu.
Mô hình use case h th ng ph mm q un lý th v in - Phân tích thiết kế hệ thống hướng đối tượng bằng UML: mô hình hóa use case

h.

ình use case h th ng ph mm q un lý th v in Xem tại trang 10 của tài liệu.
Phân chia các use case thành các gói (package) - Phân tích thiết kế hệ thống hướng đối tượng bằng UML: mô hình hóa use case

h.

ân chia các use case thành các gói (package) Xem tại trang 10 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan