Tải bản đầy đủ (.pdf) (11 trang)

phần 8: kiến trúc vật lý và sinh mã trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (463.21 KB, 11 trang )

12-09-2011
1
Gv: Vũ Thị Dương
Email:
KHOA CÔNG NGHỆ THÔNG TIN
Trường Đại học công nghiệp Hà Nội
PHÂN TÍCH THIẾT KẾ
HƯỚNG ĐỐI TƯỢNG
Biểu đồ kiến trúc vật lý
và phát sinh mã trình
Bài 8
Phân tích thiết kế hướng đối tượng Bài - 3/20
Kiến trúc phần mềm?
 Kiến trúc hệ thống là kế hoạch chi tiết của các bộ phận hình thành hệ
thống
 UML định nghĩa:
 Kiến trúc là cấu trúc tổ chức của hệ thống
 Kiến trúc bao gồm các bộ phận tương tác thông qua giao diện
 Theo Buschman:
 Kiến trúc phần mềm là mô tả các phân hệ, các thành phần của hệ thống
phần mềm và các quan hệ giữa chúng
 Hai loại kiến trúc hệ thống
 Kiến trúc logíc
 Chỉ ra các lớp đối tượng và các quan hệ giữa chúng để hình thành chức năng
hệ thống
 Nó được thể hiện bằng các biểu đồ UC, biểu đồ lớp, trạng thái, hoạt động
 Kiến trúc vật lý
 Là mô tả từ khía cạnh phần cứng và các mođun phần mềm trên đó
 Nó được mô tả bằng các biểu đồ cài đặt: biểu đồ thành phần và biểu đồ triển
khai
12-09-2011


2
Kiến trúc thành phần
 Thiết kế kiến trúc hệ thống là
 Vỡ hệ thống thành các hệ con
 Chọn lựa loại hình điều kiển
 Miêu tả ngắn gọn các thành phần vật lý của hệ thống
 Bố trí các thành phần khả thi vào các nút phần cứng
dvduc-2004 Phân tích thiết kế hướng đối tượng Bài 8 - 4/20
Vỡ hệ thống thành các hệ con
 Hệ con (subsystem) là một sự gom nhóm lôgic các lớp có
sự cố kết bên trong mạnh và sự tương liên bên ngoài yếu.
thường mang thêm khuôn dập <<subsystem>>.
 Nội dung của một hệ con (gồm các lớp và các mối liên
quan giữa chúng) được UML 2.0 diễn tả trong một
khung
(frame), với một tựa đề viết trong một hình chữ nhật cắt
góc theo khuôn dạng: [<loại>] Tên [<tham số>]
dvduc-2004 Phân tích thiết kế hướng đối tượng Bài 8 - 5/20
 Sự cố kết cao của các lớp trong cùng một hệ con thể hiện
ở chỗ:
 Về mục đích: Chúng phải cung cấp các dịch vụ có cùng bản chất
cho người dùng (chúng phải thuộc vào cùng một lĩnh vực và đề
cập một số thuật ngữ chung)-Ví dụ hệ con giao diện: cửa sổ, đơn
chọn, nút hành động v.v ).
 Về xu thế phát triển: Người ta tách các lớp bền vững với các lớp
còn nhiều khả năng thay đổi, phát triển. Đặc biệt là ta thường tách
các lớp
nghiệp vụ
với các lớp
ứng dụng

và xếp chúng vào các hệ
con khác nhau.
 Về ứng dụng các công nghệ: để tận dụng các dịch vụ công nghệ
có sẵn, như các thư viện chương trình (lớp/thành phần), các GUI,
các hệ quản trị cơ sở dữ liệu v.v , ta thường tách các hệ con giao
tiếp, hệ con quản trị dữ liệu ra khỏi phần lõi (ứng dụng và nghiệp
vụ) của hệ thống
dvduc-2004 Phân tích thiết kế hướng đối tượng Bài 8 - 6/20
12-09-2011
3
 Sự tương liên giữa các hệ con thể hiện ở mối liên quan
phụ thuộc giữa chúng
 Sự phụ thuộc giữa các hệ con phải càng đơn giản, càng
lỏng lẻo càng tốt. Để đảm bảo tính tương liên yếu này, khi
thành lập hệ con, ta áp dụng các quy tắc sau
 Các lớp thuộc vào cùng một phả hệ thừa kế nên được xếp vào
cùng một hệ con.
 Các lớp có mối liên quan kết nhập và hợp thành với nhau thường
được xếp vào cùng một hệ con.
 Các lớp cộng tác với nhau nhiều, trao đổi thông tin nhiều, thể hiện
qua các biểu đồ tương tác, thì nên đặt chung vào một hệ con.
 Nên tránh sự phụ thuộc vòng quanh giữa các lớp.
 Ví dụ trong hệ ĐKMH ta có các hệ con sau
 Lịch biểu: Lớp học, môn học, phòng học ;Sinh viên ;Thầy giáo
dvduc-2004 Phân tích thiết kế hướng đối tượng Bài 8 - 7/20
Vỡ hệ thống thành các hệ con
 Kiến trúc phân tầng
 Một hệ con thường được định nghĩa bởi các dịch vụ mà nó
cung cấp. Mối liên quan giữa một hệ con với phần còn lại
của hệ thống có thể là ngang hàng hay là khách hàng/dịch

vụ.
 Trong mối liên quan ngang hàng (peer-to-peer) thì mỗi bên đều có
thể truy cập các dịch vụ của bên kia. Bấy giờ sự giao tiếp không
nhất thiết là ở dạng câu hỏi và trả lời liền sau đó, mà có thể là một
sự giao tiếp loanh quanh, rất dễ dẫn tới những sai lỗi đáng tiếc về
thiết kế.
 Còn mối liên quan khách hàng/dịch vụ (client/server) thì đơn giản
hơn: bên khách hàng gọi bên dịch vụ và bên dịch vụ thực hiện một
dịch vụ theo yêu cầu và trả kết quả cho bên khách hàng. Bên
khách hàng thì phải biết giao diện của bên dịch vụ, song bên dịch
vụ thì không cần biết giao diện của bên khách hàng
dvduc-2004 Phân tích thiết kế hướng đối tượng Bài 8 - 8/20
 Từ hai hình thức giao tiếp đó mà ta có hai cách để vỡ hệ
thống thành các hệ con:
 Tổ chức hệ thống thành các tầng theo chiều ngang, với mối quan
hệ khách hàng/dịch vụ luôn luôn hướng từ tầng trên xuống (các)
tầng dưới.
 Ví dụ hệ thống tạo cửa sổ trong giao diện người dùng của máy tính.
 Tổ chức hệ thống thành lát theo chiều đứng, với quan hệ ngang
hàng giữa các lát, tuy nhiên các lát là khá độc lập hoặc tương liên
yếu với nhau.
 Ví dụ một hệ điều hành, thường gồm các hệ con như là các hệ quản lý
tệp, điều khiển thiết bị, quản lý sự kiện và ngắt
 Khi thực hiện phân tầng, thì số tầng là tuỳ thuộc sự phức tạp của
hệ thống
dvduc-2004 Phân tích thiết kế hướng đối tượng Bài 8 - 9/20
12-09-2011
4
 Trong một hệ đơn giản, thì số tầng có thể là 2 tầng:
 tầng khách hàng quản lý giao diện người dùng và các quá trình

khai thác,
 tầng dịch vụ thì xử lý việc cất giữ các dữ liệu.
 Trong một hệ phức tạp hơn, thì số tầng có thể là 3 do
người ta tách:
 tầng trên thành tầng giao diện - ứng dụng
 tầng nghiệp vụ (hay lĩnh vực)
dvduc-2004 Phân tích thiết kế hướng đối tượng Bài 8 - 10/20
 Trong các hệ lớn ta có n tầng mà điển hình là kiến trúc
năm tầng, với các tầng kể từ trên xuống là:
 Tầng trình bày: Chuyển các dữ liệu cho người dùng và biến đổi các
hành động của người dùng thành các sự kiện vào của hệ thống.
 Tầng ứng dụng: bao gồm các đối tượng điều khiển và dẫn dắt các
quy luật của ứng dụng.
 Tầng nghiệp vụ: bao gồm các đối tượng nghiệp vụ (hay lĩnh vực),
cùng sự cài đặt các quy tắc quản lý chúng.
 Tầng truy cập dữ liệu: phục hồi các đối tượng nghiệp vụ từ các
phương tiện lưu trữ.
 Tầng lưu trữ dữ liệu: bảo đảm sự lưu giữ lâu dài các dữ liệu.
dvduc-2004 Phân tích thiết kế hướng đối tượng Bài 8 - 11/20
 Ví dụ kiến
trúc 5 tầng
<<user interface
framework>>
khuôn khổ giao
diện người dùng
<<user interface>>
- giao diện người
dùng
<<domain>> lĩnh
vực

<<infastructure>>
cơ sở hạ tầng
<<database>> cơ
sở dữ liệu
Phân tích thiết kế hướng đối tượng Bài 8 - 12/20
12-09-2011
5
Thành phần và biểu đồ TP
 Đây là vấn đề đặt ra từ góc nhìn hệ thống về quá trình
thực hiện (xem xét các luồng điều khiển trong hệ thống
khi hệ thống đang làm việc)
 Có hai loại luồng điều khiển: luồng điều khiển ngoài và
luồng điều khiển trong.
 Điều khiển ngoài là luồng các sự kiện xẩy ra giữa các đối tượng
trong hệ thống mà ta có thể thấy được từ bên ngoài.
 Điều khiển trong là luồng điều khiển ở bên trong một phương
thức.
 Điều khiển ngoài có thể thực hiện theo ba cách: tuần tự dựa vào
thủ tục ; procedure-driven sequential), tuần tự dựa vào sự kiện
(event-driven sequential), đồng thời (concurrent).
 điều khiển trong có thể thực hiện theo ba cách: gọi thủ tục, gọi
tựa đồng thời giữa các nhiệm vụ (intertask) và gọi đồng thời giữa
các nhiệm vụ.
dvduc-2004 Phân tích thiết kế hướng đối tượng Bài 8 - 13/20
Phân tích thiết kế hướng đối tượng Bài - 14/20
Các thành phần
 Thành phần?
 Một bộ phận vật lý thay thế được của hệ thống và cung cấp sự
thực hiện cho một tập các giao diện
 Hay thành phần là một cài đặt của một tập hợp các phần tử logic

như các lớp hay các hợp tác.
 Phân loại thành phần
 Các thành phần bố trí (deployment componets): các thành phần cần và đủ
tạo nên hệ thống khả thi: thư viện động (.dll), các mã khả thi (.exe)
 Thành phần là sản phẩm làm việc (work product components): là
các thành phần tồn tích từ quá trình phát triển: mã nguồn, tệp dữ
liệu…
 Các thành phần thực hiện (execution): được tạo nên như là 2 kết
quả của một hệ thực hiện : COM+, cá thể hóa từ DLL
Phân tích thiết kế hướng đối tượng Bài - 15/20
Các thành phần
 Phân loại thành phần dựa vào khuôn dập chuẩn
 <<executable>>: 1 Thành phần có thể thực hiện trên 1 nút
 <<library>>: một thư viện tĩnh hay động
 <<table>>: một thành phần biểu diễn 1 bảng CSDL
 <<file>>: một thành phần biểu diễn một tư liệu chứa mã nguồn hay dữ liệu
 <<document>>: một thành phần biểu diễn một tư liệu
 Phân loại thành phần dựa vào khuôn dập không chuẩn
 <<application>>: Mặt tiền của hệ thống (html, asp.jsp, màn hình )
 <<database>>: một cơ sở dữ liệu quan hệ, đối tương/quan hệ…
 <<infrastructure>>: một thành phần kỹ thuật: dịch vụ lưu trữ, kiểm
soát đăng nhập
 <<source code>>: Một tệp mã nguồn (.cpp. .java)
 <<web service>> là một hay nhiều dịch vụ web
 ……….
12-09-2011
6
Phân tích thiết kế hướng đối tượng Bài - 16/20
Biểu đồ thành phần
 Biểu đồ thành phần là biểu đồ hiển

thị các thành phần trong hệ thống
và phụ thuộc giữa chúng
 Thành phần A phụ thuộc vào
thành phần B khi vài lớp trong A
phụ thuộc vào vài lớp trong B
 Biểu đồ cho biết
 Thư viện nào được sử dụng, tệp
khả thực (.exe) nào được tạo ra
khi dịch chương trình
 Các quan hệ giữa các thư viện mã
trình
 Có khả năng tổ chức các thành
phần vào các gói và thiết lập mỗi
liên quan phụ thuộc giữa chung
Credit
Flight
Reservation
FlightServer
<<DLL>>
Thành lập biểu đồ thành phần
 Để tổ chức các thành phần lại với nhau, ta có hai cách:
 Gom các thành phần vào các gói, nghĩa là đưa chúng vào các hệ
con;
 Thiết lập các mối liên quan phụ thuộc giữa chúng
dvduc-2004 Phân tích thiết kế hướng đối tượng Bài 8 - 17/20
Phân tích thiết kế hướng đối tượng Bài - 18/20
Bổ sung chi tiết cho thành phần
 Stereotype
 Lựa chọn biểu tượng để biểu diễn thành phần
 Có thể là:

 <none>, ActiveX, Applet, Subroutine Spec, dll tự định nghĩa
 Language
 Trong Rose có thể gán ngôn ngữ cho thành phần
 Cho khả năng phát sinh các ngôn ngữ khác nhau cho mỗi thành phần
 Declaration
 Gán các khai báo vào mã trình của từng thành phần
 Class
 Gán lớp vào thành phần trước khi phát sinh mã trình
 Có thể ánh xạ một hay nhiều lớp vào một thành phần
 Dependency
 Thành phần chỉ có một loại quan hệ: quan hệ phụ thuộc
 Tránh hình thành quan hệ vòng
12-09-2011
7
Phân tích thiết kế hướng đối tượng Bài - 19/20
Tạo lập biểu đồ thành phần
 Chiến lược thành lập từ dưới lên
 Tập trung nghiên cứu các chức năng nghiệp vụ để tìm ra các lớp
sau đó gom thành các thành phần (có bổ sung lớp phụ trợ)
 Vẽ các mối liên quan bằng các đường đường đứt nét
 Nguyên tắc phân loại lớp dựa vào bản chất
 Lớp giao diện người dùng: Lớp cài đặt màn hình, báo cáo,… Các
lớp này đặt trong thành phần có khuôn dập <<application>>
 Các lớp kỹ thuật: Các lớp cài đặt dịch vụ ở mức hệ thống như: bảo
mật, trường cữu, hoặc middleware- <<infrastructure>>
 Lớp lĩnh vực: lớp chứa thông tin lĩnh vực và các dịch vụ liên quan.
Chúng được đưa vào thành phần lĩnh vực – <<domain>>
Phân tích thiết kế hướng đối tượng Bài - 20/20
Biểu đồ thành phần
 Ví dụ biểu đồ thành phần bài toán: Đăng ký môn học

CSDL QLMH
Giaovien
<<application>>
LichBieu
<<domain>>
SinhVien
<<domain>>
Giaovien
<<application>>
GiaoVu
<<application>>
Sinhvien
<<application>>
BaoMat
<<infrastructure>>
TruongCuu
<<Infrastructure>>
Phân tích thiết kế hướng đối tượng Bài - 21/20
Biểu đồ thành phần
 Phân loại dựa vào hình thức giao tiếp
 Lớp dịch vụ: lớp chỉ nhận mà không gửi thông điệp
 Lớp khách hàng: lớp chỉ gửi mà không nhận. Thường thì lớp khách
hàng thuộc vào thành phần ứng dụng
 Lớp khách hàng/dịch vụ: Là các lớp còn lại vừa nhận và vừa gửi. Vị
trí có thể là ở một thành phần ứng dụng hay ở 1 thành phần lĩnh
vưc tùy theo bản chất lớp nghiêng về phía khách hay dịch vụ
12-09-2011
8
Phân tích thiết kế hướng đối tượng Bài - 22/20
Biểu đồ triển khai

 Bố trí các thành phần khả thi vào các nút phần cứng
ta dùng các biểu đồ triển khai
 Biểu đồ triển khai mô tả kiến trúc phần cứng (các nút) có
phần mềm chạy trên chúng, bao gồm các bộ xử lý, các
tiến trình, các thiết bị và các kết nối giữa chúng
 Nút là đối tượng vật lý có tài nguyên tính toán
 Máy tính, máy in, thiết bị đọc thẻ từ và truyền tin
 Giữa các nút là kết nối giao tiếp, kiểu kết nối được thể
hiện bằng stereotype
Phân tích thiết kế hướng đối tượng Bài - 23/20
Các phần tử của biểu đồ triển khai
 Bộ xử lý
 Là máy xử lý: máy chủ, máy trạm
 Bổ sung thuộc tính:
 Stereotype
 Mô tả vật lý của bộ xử lý: tốc độ, dung lượng nhớ
 Lập lịch xử lý: Preemptive, Non-preemptive, Cyclic,
Executive, Manual
 Thiết bị
 Là phần cứng chỉ có một mục đích: máy in, scanner
 Bổ sung thuộc tính:
 Stereotype
 Mô tả vật lý của thiết bị
 Kết nối
 Là liên kết vật lý giữa các thiết bị và bộ xử lý
 Bổ sung stereotype và đặc tính vật lý cho kết nối: T1
 Bổ sung tiến trình cho bộ xử lý
Processor
Device
Phân tích thiết kế hướng đối tượng Bài - 24/20

Thí dụ biểu đồ triển khai
Application
Server
Database
Server
Web
Server
Client
Workstation #1
Client
Workstation #2
Printer
Oracle Server
Main Program
Internet
Information Server
Web Browser
Web Browser
12-09-2011
9
Phân tích thiết kế hướng đối tượng Bài - 25/20
Phát sinh mã trình
 Sáu bước cơ bản để phát sinh mã trình
 Kiếm tra mô hình
 Tạo lập thành phần
 Ánh xạ lớp vào thành phần
 Gán thuộc tính phát sinh mã trình
 Chọn lớp, thành phần hay gói để phát sinh mã
 Phát sinh mã trình
Phân tích thiết kế hướng đối tượng Bài - 26/20

Phát sinh mã trình
 Bước 1: Kiểm tra mô hình
 Rose có chức năng kiểm tra mô hình độc lập ngôn ngữ để đảm
bảo tính nhất quán trong mô hình
 Khi kiểm tra có thể phát hiện các lỗi sau
 Ánh xạ không đầy đủ: Các đối tượng hay thông điệp trong biểu đồ
trình tự chưa ánh xạ vào thao tác hay lớp trong biểu đồ lớp
 Vi phạm xâm nhập: Thí dụ, hai lớp trong hai gói có quan hệ nhưng vẽ
thiếu quan hệ giữa hai gói
 Kiểm tra phụ thuộc ngôn ngữ: Sẽ phát hiện, thí dụ, nhiều lớp cùng tên
khai báo public trong một mođun chương trình
 Bước 2: Tạo lập thành phần
 Tạo lập thành phần để chứa lớp
 Trước khi phát sinh mã trình phải ánh xạ các lớp vào thành phần
tương ứng
 Bổ sung quan hệ thành phần trên Biểu đồ thành phần
Phân tích thiết kế hướng đối tượng Bài - 27/20
Phát sinh mã trình
 Bước 3: Ánh xạ lớp vào thành phần
 Mỗi thành phần mã nguồn biểu diễn tệp mã nguồn cho một hoặc
vài lớp
 Thí dụ C++: Mỗi lớp ánh xạ đến hai thành phần – Các tệp Header và
Body
 Bước này yêu cầu ánh xạ lớp vào thành phần tương ứng
 Bước 4: Đặt đặc tính cho phát sinh mã trình
 Nhiều đặc tính có thể gán cho lớp, thuộc tính, thành phần của mô
hình để điều khiển mã được phát sinh như thế nào.
 Thí dụ C++: Đặc tính GenerateGetOperation điều khiển việc có phát
sinh hàm Get() hay không.
 Thí dụ khác: GenerateDefaultConstructor

 Đặt tập đặc tính tạm thời
 Thay vì thay đổi trực tiếp tập đặc tính ta có thể tạo ra tập đặc tính
tạm thời để sử dụng, không ảnh hưởng đến tập đặc tính mặc định
 Hủy bỏ tập đặc tính tạm thời
12-09-2011
10
Phân tích thiết kế hướng đối tượng Bài - 28/20
Phát sinh mã trình
 Bước 5: Chọn lớp, thành phần hay gói
 Có thể chọn lớp, thành phần hay gói để phát sinh mã trình vào các
thời điểm khác nhau
 Phát sinh mã từ biểu đồ hay Browser
 Có thể phát sinh mã trình cho một vài lớp, thành phần hay gói
đồng thời
 Bước 6: Phát sinh mã trình
 Lựa chọn ngôn ngữ theo yêu cầu để phát sinh mã từ mô hình
Phân tích thiết kế hướng đối tượng Bài - 29/20
Phát sinh mã trình
 Cái gì đã được phát sinh từ mô hình?
 Thực tế
 Không có công cụ mô hình hóa nào phát sinh mã trình đầy đủ
 Rose cũng chỉ phát sinh khung chương trình
 Các phần tử được phát sinh
 Lớp: Mọi lớp trong mô hình được sinh mã
 Thuộc tính: Mã trình sẽ chứa các thuộc tính lớp bao gồm phạm vi, kiểu
dữ liệu và giá trị mặc định, các hàm Get(), Set().
 Signature: Các thao tác được khai báo trong mã trình cùng với danh
sách tham số, kiểu dữ liệu của tham số và kiểu giá trị cho lại của thao
tác
 Quan hệ: Một số quan hệ trong mô hình được chuyển sang thuộc tính

 Thành phần: Mỗi thành phần được hiện thực trong tệp tương ứng
 Tài liệu: Tài liệu trong mô hình được chèn vào nơi thích ứng trong mã
trình
Phân tích thiết kế hướng đối tượng Bài - 30/20
Phát sinh mã trình
 Nhiệm vụ của người phát triển sau khi Rose sinh mã trình
 Thu thập các tệp mã trình, viết mã trình cho các thao tác lớp
 Thiết kế giao diện đồ họa
 Thí dụ đoạn mã trình do Rose phát sinh
#include "stdafx.h"
#include "Order.h"
//##ModelId=3A77E3CD0280
Boolean Order::Create()
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}
//##ModelId=3A77E3E60316
Boolean Order::SetInfo(Integer OrderNum, String Customer, Date OrderDate, Date
FillDate)
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}
//##ModelId=3A77E40E0230
String Order::GetInfo()
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}

12-09-2011
11
Phân tích thiết kế hướng đối tượng Bài - 31/20
Phát sinh mã trình
class Order
{
public:
//##ModelId=3A7F695F019A
OrderItem* theOrderItem;
//##ModelId=3A77E3CD0280
Boolean Create();
//##ModelId=3A77E3E60316
Boolean SetInfo(Integer OrderNum, String Customer, Date OrderDate, Date
FillDate);
//##ModelId=3A77E40E0230
String GetInfo();
private:
//##ModelId=3A7E13F9038E
Integer OrderNumber;
//##ModelId=3A7E14260122
String CustomerName;
//##ModelId=3A7E14470208
Date OrderDate;
//##ModelId=3A7E145303D4
Date OrderFillDate;
};
Phân tích thiết kế hướng đối tượng Bài - 32/20
Tóm tắt
 Bài này đã xem xét các vấn đề sau
 Kiến trúc vật lý của hệ thống

 Xây dựng biểu đồ thành phần
 Các thành phần phần mềm và quan hệ giữa chúng
 Các phần tử đồ họa vẽ biểu đồ thành phần
 Xây dựng biểu đồ triển khai
 Các phần tử đồ họa vẽ biểu đồ triển khai
 Các bước chuyển đổi mô hình thành phần mềm

×