Xây dựng phần mềm hướng đối tượng
Trang 1• Sinh viên s c gi i thi u ph ng pháp , k thu t xây
d ng ph n m m theo h ng i t ng, c bi t trong giai
K n ng phân tích, thi t k và tri n khai d án ph n m m.
• Ph n 02 – Môi tr ng và công c xây d ng ph n m m
K n ng xây d ng, cài t ph n m m d a trên b n thi t k
Trang 2Tài li u tham kh o
• Roger S Pressman, Roger Pressman (2004),Software Engineering: A Practitioner's Approach, McGraw Hill Science/Engineering/Math
• Ian Sommerville (2006), Software Engineering: (Update) (8th Edition), Addison Wesley
• Dennis de Champeaux, Douglas Lea, Penelope, Faure (1993). Software Engineering Object Oriented System Development, Addison Wesley
• Len Bass, Paul Clements, Rick Kazman (2003),Software Architecture in Practice, 2 nd edition, Addison Wesley
• Clifton Nock (2003), Data Access Patterns: Database Interactions in Object Oriented Applications, Addison Wesley
• Sherif M Yacoub, Hany H Ammar (2003),Pattern Oriented Analysis and Design:
Composing Patterns to Design Software Systems, Addison Wesley.
• Microsoft Corporation (2003),Enterprise Solution Patterns Using Microsoft NET,
Trang 3• Nguy n Nam Trung, Windows Presentation Foundation, 2011
• Adam Nathan (2010), WPF 4 Unleashed, SAMS
• Matthew MacDonald, Pro WPF in C# 2010:
Windows Presentation Foundation in NET 4.0, Apress
Designer orientated tutorials for Expression Blend
Flow Document Overview
Tài li u tham kh o
Trang 4Mô hình Phân tích Thi t k Thi t k Thi t k
M t s v
c a ng i s hóa yêu c u
h
d li u
ki n trúc ph giao di n
Trang 5• Khái ni m v Công ngh ph n m m
• Khái ni m v Quy trình ph n m m
Ph n m m qu n lý s ti t ki m.
Ph n m m qu n lý gi i vô ch bóng á.
Ph n m m qu n lý bán vé chuy n bay.
chuyên d ng khác , nh m h tr cho các nhà chuyên môn trong
t ng l nh v c chuyên ngành th c hi n t t h n các thao tác nghi p
v c a mình
Trang 6Khái ni m v ph n m m (tt)
Môi tr ng tri n khai ph n m m
• Máy tính: Desktop, Laptop, Tablet PC…
hi b h ê d
• Thi t b chuyên d ng :
Thi t b di ng: PDA, Pocket PC, Đi n tho i di ng…
Các thi t b chuyên d ng khác: set top box, router, firewall (ph n c ng…)
H tr làm t t h n các thao tác nghi p v :
• Tin h c hóa nghi p v hi n ang làm th công
• C i ti n ch c n ng nghi p v hi n ang c th c hi n trên máy tính
• Đ ra, xây d ng và tri n khai ch c n ng nghi p v m i
d li u ngu n liên quan n công vi c ó), t các thi t b thu th p
d li u (cân, nhi t k , t bào quang i n…), ho c t các ph n
m m khác.
• Cho phép trình bày các k t qu c a vi c th c hi n các yêu c u cho
ng i dùng (k t qu c a công vi c khi th c hi n trên máy tính)
ho c i u khi n ho t ng các thi t b i u khi n ( óng/m c a, dùng hay cho chuy n g y y ng…) g
• M t cách t ng quát, thành ph n giao ti p cho phép nh p/xu t thông tin cùng v i hình th c trình bày/giao ti p t ng ng.
• M c tiêu chính c a thành ph n này là a thông tin t th gi i bên ngoài ph n m m (ng i s d ng, các thi t b , ph n m m khác…) và bên trong, ho c ng c l i.
Trang 7• Dùng thông tin ngu n t các thành ph n giao di n ( ch c n ng
• Dùng thông tin ngu n t các thành ph n giao di n ( ch c n ng
Thành ph n l u tr (thành ph n d li u)
• Cho phép l u tr l i ( ch c n ng ghi ) các k t qu ã x lý
Ví d : Vi c m n sách ã c ki m tra h p l , b ng l ng tháng ã c tính
M c tiêu chính c a thành ph n này là chuy n i d li u gi a b
nh chính và b nh ph
Các lo i
Trang 9Tí h ú
Ph n
Ph n m mm m
nh t c quan tâm xem xét trong ngành Công ngh Ph n m m
Tính d s a l i: khi có s không phù h p (so v i yêu c u) trong quá trình ki m tra m t thành ph n, vi c phát hi u chính xác “v trí l i” và s a l i là nhanh nh t có th c.
Tính d b o trì: khi c n nâng c p, c i ti n m t thành ph n (theo yêu c u m i), vi c c p nh t ph n m m là nhanh, chính xác nh t có th c và c bi t là c g ng h n ch nh
h ng n các thành ph n khác
h ng n các thành ph n khác
Tính tái s d ng: các thành ph n ã th c hi n có th dùng
l i trong các ph n m m cùng l p (ho c cùng l nh v c) v i th i gian và công s c ít nh t có th c
………
góc nhìn c a Ng i s d ng
Trang 10S phát tri n c a Công ngh ph n m m
Giai o n 1 (1950 – gi a 1960)
• X lý theo lô, x lý t p trung, ít x lý phân tán, ít s a i ph n m m
Giai o n 2 (t gi a 1960 n gi a 1970)
• H th ng a ch ng trình và a ngu i dùng
• Th c hi n không úng yêu c u (tính toán sai, không n nh…)
• Th i gian b o trì nâng c p quá lâu, chi phí cao, hi u qu th p
• Khó s d ng
• Th c hi n ch m Khô h i d li i á h
• Không chuy n i d li u gi a các ph n m m
C m tính : m i ng i theo m t ph ng pháp riêng
Thô s , n gi n : ch t p trung vào vi c l p trình mà ít quan tâm
n các công vi c c n làm khác (kh o sát hi n tr ng, phân tích yêu c u, thi t k …)
Th công : còn thi u các công c h tr quy trình phát tri n
Khái ni m:
• Công ngh ph n m m là ngành khoa h c nghiên c u v vi c xây
d ng các ph n m m có ch t l ng trong th i gian và chi phí h p lý
d ng các ph n m m có ch t l ng trong th i gian và chi phí h p lý
Công ngh ph n m m
Công c Quy trình
Ph ng pháp
Trang 11ph n m m
• Công c và Môi tr ng phát tri n ph n m m :
• H th ng các ph n m m tr giúp trong l nh v c xây d ng ph n
m m
• H tr các chuyên viên tin h c trong các b c xây d ng ph n
m m theo m t ph ng pháp nào ó v i m t quy trình c
Các yêu c u Xác nh
Ki m ch ng
Tri n khai Waterfall
Xác nh yêu c u
“Thi t k nhanh”
Xây d ng Prototype
Đánh giá và xác nh rõ yêu c u
Phát tri n
ph n m m
Trang 13• Phân lo i yêu c u:
Yêu c u ch c n ng: L u tr , tra c u, tính toán, k t xu t
Trang 14Giai o n kh o sát hi n tr ng và xác nh yêu c u
oCó v n /khó kh n gì hi n t i hay không? Nguyênnhân?
V n /khó kh n c l p v i công ngh , ch liên quan
n chuyên môn nghi p v thì c n gi i quy t ngay
• Hi n tr ng t ch c
• Hi n tr ng nghi p v
• Hi n tr ng Tin h c (ph n c ng, ph n m m, con ngg (p g, p , g i))
Trang 16K thu t thu th p yêu c u – Ph ng v n
Có th nh h ng n i dung c n tìm hi u, có th h
th ng hóa các v n ghi nh n c
th ng hóa các v n ghi nh n c
• Làm vi c v i c p lãnh o n m m c tiêu c a h
th ng ph n m m c n xây d ng, nh ng i t ng c n h
• Khi tìm hi u, c n ghi nh n các thông tin:
Đ a nh n xét cá nhân c a ng i ph ng v n
Dùng thu t ng /ngôn ng Tin h c
Trang 17K thu t thu th p yêu c u – B ng câu h i
Thêm ch cho l i bình
Không ph i ch cu i trang, hay cu i b ng câu h i,
Nên d ki n nh ng câu h i nào s có ý ki n thêm thì nên có s n ch ghi l i bình ngay d i câu h i ó)
• Các tài li u (có th tìm hi u nh ng v n b n chung)
• Ti n hành sau cùng (n u c n thi t)
• Ki m tra l i:
Đã hi u úng nghi p v hi n t i?
Có nh ng ngo i l ?
Phát hi n nh ng khó kh n, l h ng trong quy trình nghi p v
Phân tích thi t k nhóm (JAD – Joint Application Design)
Trang 18Q & A
Trang 19• Các mô t v yêu c u trong giai o n xác nh yêu c u:
Ch mô t ch y u các thông tin liên quan n vi c
Ch mô t ch y u các thông tin liên quan n vi c
th c hi n các nghi p v trong th gi i th c, ch a
th hi n rõ nét vi c th c hi n các nghi p v trênmáy tính
Mô t thông quá các v n b nd gây ra nh m l nvàkhông tr c quan
Trang 20 Nhi u nhóm ng i dùng có cùng các quy n h n gi ng nhau
Nên xét là 1 Actor hay nhi u Actor ?
Vi c xác nh Actor ph thu c ng c nh và quy trình th c t
Trang 21•Đ c tín hi u t camera, sensor
• Phát l nh i u khi n ra loa, èn, i n tho i…
• K t xu t/n p d li u t Excel
• K t xu t d li u báo cáo ra ph n m m g i email
(Microsoft Outlook, Outlook Express…)
• Ph n m m trung gian k t n i chuy n i email t
d ng Web based sang POP3 (ví d Yahoo!Pop)
• …………
• M t Use Case làm t chu i các hành ngmàh th ng
Trang 22Ví d 1 : Xét ph n m m Qu n lý h c sinh c p III
• S t ng tác gi a Actor và Use case
• Chi u c a m i tên th hi n vai trò ch ng trong s t ng tác
Trang 23S Use Case
• S t ng tác gi a Actor và Use case
• S t ng tác gi a Actor và Use case
• Chi u c a m i tên th hi n vai trò ch ng trong
s t ng tác
• Ví d :
Ki m tra tài kho n
Rút ti n Khách hàng Ki m tra tài kho n
Ng i s d ng
1 Use Case b t u khi khách hàng a th tín d ng vào. H th ng c và th m tra thông tin c a th
2 H thông nh c nh p s PIN. H th ng ki m tra s PIN
3 H th ng h i tác v nào khách hàng mu n th c hi n.
• basic flow (“Happy Path”)
Trang 24c p 1, các s c p 1 này ph i m b o th hi n y
ý ngh a s c p 0 (tác nhân, thi t b , lu ng d
li u, x lý, b nh ph )
C p 2: M i s c p 1 l i có th phân rã thành nhi u
s c p 2 t ng t nh vi c phân rã c a s c p p g p p0
………
Ví d : S c p 0
Configuration Information
Configuration Data
Configuration Data
Ví d : S c p 1
Trang 25 D1: Thông tin c n l u tr (d a vào bi u
m u liên quan)
D5: Thông tin c n l u tr (ch có trong m t
Ng i dùng D5: Thông tin c n l u tr (ch có trong m t
X lý l u tr
• Đ c D3 l y các tham s , quy nh và danh m c
• N u th a quy nh, ghi D4 , thông báo
tin trong bi u m u liên quan
• Tùy theo quy nh có th có hay không
Trang 26 D3:
• Các danh m c ch n l a
• D li u v i t ng khi tìm th y (d a vào
bi u m u liên quan n i t ng c n tìm ki m)
D2:
• Các danh m c ch n l a
• D li u v i t ng khi tìm th y (d a vào
bi u m u liên quan n i t ng c n tìm ki m)
D6: D li u k t xu t (thông th ng là c n thi t)
D4: D li u c n l u tr l i
• Thông th ng không c n thi t
• C n thi t khi nào???
• Hi n th thông tin k t qu ( D2 ) và k t xu t D6 (n u c n)
• D2 và D6 th ng trùng v i D3 (nh ng không nh t thi t)
Trang 27• S d ng D1 , D3, D5 và quy nh liên quan tính k t qu D4
D1: Thông tin v báo bi u mu n th c
hi n (d a vào bi u m u liên quan)
D5: Thông tin v báo bi u mu n th c
D4: Thông tin có trong báo bi u liên quan (c n thi t ph i l u l i) nh ng ch a
c x lý và ghi nh n l i (yêu c u x lý tính toán)
D2: Thông tin v báo bi u c l p (bi u
• N u có D4 thì tính toán theo quy nh
và Ghi k t qu D4
• Hi n th thông tin báo bi u D2 và k t
xu t D6
Trang 29Phân tích: xây d ng mô hìnhTh gi i th c
Phân tích theo h ng i t ng: xây d ng các mô hình
v các i t ngc a Th gi i th c
Trang 30L p i t ng
(Các) ph ng th c(Các) thu c tính
Protected
# protectedAttribute +publicOp()
# protectedOp() privateOp()
• Xác nh s l ng th hi n c a thu c tính / ph ng th c
Cl Class classifierScopeAttribute
classifierScopeOperation() instanceScopeAttribute
instanceScopeOperation()
Ví d
Student name
address nextAvailID : int + addSchedule(theSchedule : Schedule, forSemester : Semester) + getSchedule(forSemester : Semester) : Schedule
+ hasPrerequisites(forCourseOffering : CourseOffering) : boolean
# passed(theCourseOffering : CourseOffering) : boolean
studentID
# passed(theCourseOffering : CourseOffering) : boolean + getNextAvailID() : int
Trang 31Nh n xét
Bình th ng: Class bình th ng
Tên class
(Các) ph ng th c (Các) thu c tính
In nghiêng: Class thu n o
G ch d i: Object (không ph i class) Bình th ng: Thu c tính bình th ng
In nghiêng: không s d ng
G ch d i: Thu c tính static
Bì h h Ph h bì h h Bình th ng: Ph ng th c bình th ng
+ float DienTich() + float ChuVi() + void Ve() +
# CDiem P2
# CDiem P3
# CDiem P4 + CTuGiac()
+ float DienTich() + float ChuVi() + void Ve() +
# float A
# float B + CEllipse()
+ float DienTich() + float ChuVi() + void Ve() +
Quan h k th a
• ClassBk th a t ClassA
• ClassBk th a t ClassA
• ClassBlà m t tr ng h p c bi t c a ClassA
• ClassAlà tr ng h p t ng quát c a ClassB
Trang 32Quan h gi a các l p i t ng
ObjectXc a ClassAb h y thì ObjectYc a ClassB
(bên trong ObjectX) v n có th còn t n t i
ObjectXc a ClassAb h y thì ObjectYc a ClassB
(bên trong ObjectX) không th còn t n t i
• Ví d :?
Chi u c a quan h (Association, Aggregation, Composition)
• N u quan h là 1 chi u: a s các l i g i hàm c g i theo úng chi u c a quan h
• N u quan h là 2 chi u: không v m i tên
Trang 33Quan h gi a các l p i t ng
Quan h Dependency
• ClassA và ClassB không có quan h Association
• ClassA “ph thu c” vào ClassB
Trong ClassA có s
Tham s truy n vào K t qu tr ra Bi n c c b
c c (ki u B), ho c
th c/thu c tính static c a ClassB
class A { void F(B x) {
… } };
class A {
B F() {
… } };
class A { void F() {
B x;
} };
Đ i t ng chính
Đ i t ng ph
Tiêu chu n nh n d ng i t ng: có r t nhi u tr ng phái
Trang 34Đ ngh :
• Quan h theo th i gian
Ít bi n ng: sau 1 th i gian dài m i thay i (th ng làm v
m t t ch c)
Bi n ng: quan h x y ra vào lúc nào, trong thông tin có thu c
tính v th i gian thay i theo th i gian ( th ng quan tâm
tính v th i gian, thay i theo th i gian ( th ng quan tâm nhi u n lo i quan h này )
• Quan h v t ch c (th ng liên quan n i t ng ph )
• Quan h v không gian (th ng liên quan n i t ng ph
• Quan h theo vai trò : Ch ng/B ng
Trang 35Nh n d ng thu c tính
S ph thu c (không có ý ngh a rõ ràng khi ng c l p)
• Ph thu c m t i t ng Thu c tính c a i t ng
• Ph thu c nhi u i t ng Thu c tính c a quan h
• Ph thu c nhi u i t ng Thu c tính c a quan h
• Xét l n l t t ng bi u m u và quy nh
N u trong s l p hi n t i ch a có th l u tr
• 3.1.Nhi ul p i t ng cónhi u c i m chung
Xây d ng l p i t ng t ng quát chung cho các
Trang 36 Danh sách các l p i t ng và quan h
Mô t chi ti t t ng l p i t ng và quan h
• V i m i l p i t ng:
Trang 37Các khái ni m
S tr ng thái
• Mô t chu trình s ng c a các i t ng chính t khi
sinh ra, ho t ng & m t i
• M i i t ng có th có nhi u s tr ng thái theo các góc nhìn khác nhau
Tr ng thái & bi n c
• Tr ng tháic a i t ng di n t tình tr ng hi n có
c a i t ng (có ý ngh a trong m t o n th i gian)
Là th có h ng v i các node là các tr ng thái n i v i nhau
b i các cung mô t vi c chuy n i tr ng thái
Tên tr ng thái
stateVar : type = value entry/ entry action
d / ti it
Tên tr ng thái
stateVar : type = value entry/ entry action
d / ti it
Bi n c (tham s ) [Bi u th c i u ki n]
/ Hành ng (tham s )
do/ activity exit/ exit action
do/ activity exit/ exit action
Chuy n i tr ng thái Hành ng
Hành ng
Trang 38B3
B4
B5 B3, B5, B6, B7 : bi n c ho t ng
Ph c v tra c u, tìm ki m Ph c v tra c u, tìm ki m
• Khi ã quan tâm n s tr ng thái c a 1 i t ng
Th ng trong ng d ng không còn ch c n ng xóa (th t s ) i
Trang 39Assigned removeProfessor
addProfessor
Ví d 2
add student / numStudents = numStudents + 1 add student / numStudents = numStudents + 1
Unassigned / numStudents = 0
/ numStudents = 0
remove student / numStudents = numStudents 1 remove student / numStudents = numStudents 1 add student / numStudents = numStudents + 1
Unassigned / numStudents = 0
remove student / numStudents = numStudents 1
Full
Cancelled do: Send cancellation notices do: Send cancellation notices
close addProfessor
closeRegistration
cancel
removeProfessor
close[ numStudents < 3 ] cancel
close
[ numStudents = 10 ] [ numStudents = 10 ] cancel
Full
Cancelled do: Send cancellation notices
close addProfessor
closeRegistration
cancel
removeProfessor
close[ numStudents < 3 ] cancel
close
[ numStudents = 10 ] cancel
do: Generate class roster do: Generate class roster
closeRegistration [ has Professor assigned ] closeRegistration [ has Professor assigned ]
close
[ numStudents = 10 ] [ numStudents = 10 ]
close[ numStudents < 3 ] close[ numStudents < 3 ]
closeRegistration[ numStudents >= 3 ] closeRegistration[ numStudents >= 3 ]
add student / numStudents = numStudents + 1
add student / numStudents = numStudents + 1
closeRegistration[ numStudents >= 3 ]
add student / numStudents = numStudents + 1
Ví d 3: tr ng thái l ng nhau
superstate
ll d closeRegistration
/ numStudents = 0 / numStudents = 0
superstate
ll d closeRegistration
/ numStudents = 0
substate
Unassigned
add a professor add a professor
Cancelled do: Send cancellation notices do: Send cancellation notices
Full close
remove a professor remove a professor
close[ numStudents < 3 ] close[ numStudents < 3 ] [ numStudents = 10 ] [ numStudents = 10 ]
closeRegistration [ has Professor assigned ] closeRegistration [ has Professor assigned ]
Full close
remove a professor
close[ numStudents < 3 ] [ numStudents = 10 ]
closeRegistration [ has Professor assigned ]
close
add student / numStudents = numStudents + 1 add student /
numStudents = numStudents + 1
Assigned
H
Committed do: Generate class roster do: Generate class roster closeRegistration[ numStudents >= 3 ]
closeRegistration[ numStudents >= 3 ]
close[ numStudents >= 3 ] close[ numStudents >= 3 ]
add student / numStudents = numStudents + 1
Assigned
H
Committed do: Generate class roster closeRegistration[ numStudents >= 3 ]
close[ numStudents >= 3 ]
Trang 40Luy n t p
• V s tr ng thái c a thang máy
• V s tr ng thái c a 1 èn giao thông
• V s tr ng thái c a 1 c p èn giao thông t i ngã t
• V s tr ng thái c a 1 c p èn giao thông t i ngã t
• V s tr ng thái c a 1 c gi