Thiết kế là gì? Thiết kế tạo ra một biểu diễn hay mô hình của phần mềm hướng thực thi Mô hình thiết kế cung cấp các thông tin về kiến trúc architecture, Giao tiếp interfaces, thành p
Trang 41 Thiết kế?
Trang 5Thiết kế là gì?
Thiết kế tạo ra một biểu diễn hay mô hình của phần mềm hướng thực thi
Mô hình thiết kế cung cấp các thông tin về kiến trúc
(architecture), Giao tiếp (interfaces), thành phần
(components) và dữ liệu (data)
Trang 62 hướng thiết kế
Trang 7Hướng dẫn thiết kế
Một thiết kế phải đưa ra một kiến trúc mà
Dùng mẫu (pattern) hay kiểu (style) kiến trúc được thừa nhận
tốt
Có thể thi hành theo cách tiến hóa
Thiết kế phải có tính module, thiết kế phải đưa ra những thành phần mà độc lập chức năng
Thiết kế được đưa ra từ việc dùng phương pháp lặp
Trang 8Kiến trúc (Architecture)?
Kiến trúc phần mềm là một sự tổ chức có tính căn bản
của một hệ thống chứa những thành phần, những mối
quan hệ lẫn nhau của các thành phần này và của các
thành phần này với môi trường, nó chứa đựng những
nguyên lý định hướng cho việc thiết kế và tiến hóa kiến trúc
Kiến trúc có tính tổng thể
Kiến trúc cho ta một hình ảnh về hệ thống phần mềm
Module và hệ thống con (sub-systems):
Module là một thành phần hệ thống mà cung cấp dịch vụ cho
những thành phần khác nhưng không được xem là một hệ thống riêng biệt
Một hệ thống con hoạt động có tính độc lập cao
Trang 9"four bedrooms, three baths, lots of glass "
customer requirements
Trang 10Safehome product
Internet-based system
Trang 12Thiết kế dữ liệu ở mức kiến trúc
Thiết kế một hay nhiều cơ sở dữ liệu để hỗ trợ kiến trúc ứng dụng
Trang 132 Thiết kế mô hình hệ thống
Trong quá trình thiết kế kiến trúc hệ thống, hoạt động đầu tiên phải thực hiện là xây dựng mô hình tổ chức hệ
thống.
Phương pháp tổ chức hệ thống thường được sử dụng:
Kiến trúc gọi trả về
Mô hình client – server
Trang 14Mô hình trung tâm dữ liệu
Trang 15Kho dữ liệu
Hệ thống con phải biến đổi dữ liệu có thể theo 2 cách:
Chia sẻ dữ liệu trung tâm
Khi cần chia sẻ dữ liệu lớn thì thường dùng kho dữ liệu trung tâm
Trang 16Thuận lợi – bất lợi
Thuận lợi
Hiệu quả trong chia sẻ
Hệ thống con không quan tâm tới việc xử lý dữ liệu của
trung tâm dữ liệu (an toàn, backup…)
Bất lợi
Tất cả phải theo mô hình dữ liệu của kho
Tiến hóa dữ liệu thì khó và đắt
Trang 17Kiến trúc gọi trả về
Có 2 loại:
Kiến trúc chương trình chính /chương trình con (main
program /subprogram)
Kiến trúc gọi thủ tục từ xa (remote procedure call
architecture): các thành phần được phân bổ trên nhiều
máy tính
Trang 18Chương trình chính /chương trình con
Main program
Controller subprogram
Controller subprogram
Controller subprogram
Controller subprogram
Controller subprogram
Controller subprogram
Application subprogram
Application subprogram
Application subprogram
Application subprogram
Application subprogram
Application subprogram
Application subprogram
Application subprogram
Application subprogram
Application subprogram Application subprogram
Trang 19Mô hình phân lớp
lớp cung cấp một tập các dịch vụ Hệ thống này tương đối
phức tạp
Trang 20Mô hình phân lớp
Tổ chức hệ thống thành một tập những tầng (hay máy
trừu tượng), những tầng sẽ cung cấp một tập những dịch vụ
Các hệ thống con tương tác với nhau qua tầng giao tiếp
Khi một tầng thay đổi chỉ những tầng liền kề mới bị ảnh hưởng
Việc cấu trúc hệ thống theo mô hình này rất khó
Trang 21Mô hình client - server
Mô hình kiến trúc client-server bao gồm một tập hợp các server cung cấp dịch vụ và các client truy nhập và sử
dụng các dịch vụ đó
Các thành phần chính của mô hình này bao gồm:
Trang 22Mô hình client - server
Trang 23Thuận lợi - bất tiện
Tổng quát hóa của kiến trúc Client /Server
Client cũng có thể đóng vai trò server và ngược lại
Trang 243 Thiết kế điều khiển
Có 2 loại điều khiển:
Điều khiển tập trung: một hệ thống con chính chịu
trách nhiệm kiểm soát, khởi tạo hoặc dừng các hệ
Môhình lan truyền (Broadcast)
Mô hình hướng ngắt (Interrupt-driven)
Trang 25Mô hình gọi - trả lời (call-return)
khiển nằm ở đỉnh của cấu trúc phân cấp và di chuyển dần
xuống dưới Mô hình này thường được áp dụng cho các hệ thống tuần tự (không là mô hình cấu trúc)
Trang 26Mô hình quản lý
thành phần hệ thống điều khiển việc khởi tạo, ngừng, hoặc cộng tác với các hệ thống khác
Trang 27Mô hình lan truyền (Broadcast)
Trong mô hình lan truyền, sự kiện được lan truyền tới tất cả các hệ thống con Hệ thống con được thiết kế để điều khiển
sự kiện này sẽ đáp ứng sự kiện
trên nhiều máy tính khác nhau trong cùng một mạng
Phát triển tương đối đơn giản
lý
Hai phân hệ cùng sinh sự kiện có thể gây xung đột
Trang 28Mô hình hướng ngắt (Interrupt-driven)
gian thực (Có thể kết hợp với mô hình quản lý tập trung)
đáp ứng sự kiện
phức tạp và phụ thuộc phần cứng
Trang 294 Thiết kế Module
What is the "right" number of modules for a specific software design?
cost of software
module integration cost module development cost
Trang 30Width
Trang 31Kết dính (Cohension) và liên kết (coupling)
Trang 32Liên kết và phụ thuộc
Uncoupled
Loosely Couple: Some Dependencies
Highly Couple: Many Dependencies
Trang 33 Liên kết đo lường mức độ kết nối với nhau giữa các thành
phần của hệ thống
Liên kết lỏng có nghĩa là khi một thành phần thay đổi Khả
năng ảnh hưởng của nó đến các thành phần khác là thấp
Việc trao đổi thông tin điều khiển và những biến chia sẻ dẫn tới liên kết chặt
Liên kết lỏng có thể đạt được bằng cách truyền thông giữa các thành phần bằng cách truyền tham số hay thông điệp
message hay tham số, hay là ‘state decentralisation’ (như
trong đối tượng)
Liên kết
Trang 34Liên kết chặt
Trang 35Liên kết lỏng
Trang 37Liên kết tem (stamp)
Liên kết giữa hai thành phần là một phần của cấu trúc hoặc toàn bộ cấu trúc
Ví dụ:
integer Operation_A(){
int x,y;
Class_B cB; Class_C c;
Trang 38Liên kết điều khiển
Một thành phần gởi các yếu tố điều khiển tới một thành phần khác thì hai thành phần này có control coupling
io (command, device buffer, length);
where command is 0,1,2 for read, write open; better
to use read (device buffer, length);
+ A() {
int x = 1;
sub(x, dk)
… }
Trang 39Liên kết chung và Liên kết nội dung
Liên kết chung: hai thành phần cùng tham chiếu đến
một cấu trúc toàn cục (hoặc biến toàn cục)
Liên kết nội dung: nếu một thành phần tham khảo trực
tiếp đến nội dung của một thành phần khác (biến đổi mã (LISP, Assembler) , con trỏ hay truyền tham chiếu)
Trang 40Trung bình Cao
Rất cao
Trang 43…Mức kết dính…
Kết dính thời gian (Temporal cohesion (weak))
Nhóm các thành phần được kích hoạt ở thời gian tương tự
call init_calculations
Trang 44…Mức kết dính…
Kết dính thủ tục (Procedural cohesion (weak))
Các phần bên trong một thành phần thể hiện một trình tự điều khiển duy nhất (a single control sequence)
Tất cả các phần trong một thành phần hoạt động trên cùng dữ liệu tương tự (display and log temperature)
Kết dính trình tự (Sequential cohesion (medium))
output của một phần trong thành phần là input của một phần
khác
Trang 45Mức kết dính
Kết dính chức năng (Functional cohesion (strong))
Loại kết dính tối ưu
Mỗi phần của một thành phần là cần thiết cho việc thực thi
một chức năng duy nhất
Thực hiện một hoạt động được xác định rõ duy nhất trên một đối tượng dữ liệu (vd: calculate average)
Trang 46Kết dính
Chức năng: liên quan tới thực
hiện chức năng duy nhất
Trình tự: output của hoạt động
này là input của thành phần kế
tiếp
Thông tin: những hoạt động trên
cùng dữ liệu tương tự thì thuộc
về một module
Thủ tục: Các phần bên trong một
thành phần thể hiện một trình tự
điều khiển duy nhất
Thời gian: Các phần của module
cùng hoạt động ở thời gian
tương tự
Logic: Những phần của module
tất cả hướng về phía thực hiện
một tập những hoạt động tương
tự
Ngẫu nhiên: Những phần của
module không có quan hệ thiết
yếu
Functional Sequential Communicational Procedural Temporal Logical Coincidental
Trang 475 Các mẫu thiết kế
Creational Pattern (Mẫu kiến tạo): 5 mẫu
Abstractional Factory Method Pattern.
Builder pattern.
Factory Method pattern.
Prototype Pattern.
Singleton Pattern.
Trang 48Tư duy hướng đối tượng
problem domain
Đối tượng - objects
Trang 49Xây dựng một lớp (Class)
Trang 50class name attributes:
operations:
Trang 51Thông điệp - Messages
Trang 52Mẫu thiết kế Singleton
Cho phép có một thể hiện của lớp Vd: Find Dialog,
Unikey, một đối tượng toàn cục lưu giữ kết nối CSDL…
Trang 54Mẫu thiết kế Observer
Bài toán thực tế: Một đối tượng thời gian để đếm giờ được thể hiện dưới nhiều hình thức như đồng hồ số, đồng hồ kim… Ta có thể
Dễ dàng thêm, bớt nhiều đối tượng thể hiện
Khi tay đổi đối tượng thời gian thì tất cả các thể hiện của thời gian đều thay đổi theo
Trang 55Mô hình Observer
A
B C
Trang 56AnalogClock
Update() ClockTimer *sub;
Trang 58MonthlyEmployee : me getPay()
getName()
MonthlyEmployee
getMonthlyPay() getEmployeeName()
Client - unaltered
Target
-unaltered.
Adaptee unaltered
Adaptor
Contains an adaptee object
Provides own implementation of
target’s methods – which call
Trang 59public class MonthlyAdapter
extends WeeklyEmployee {
private MonthlyEmployee me; //composed with adaptee
//created with adaptee object
public MonthlyAdapter(MonthlyEmployee memp)
{ me = memp; }
//own implementation of target method,
//adapting to use adaptee’s instead
public String getName()
Trang 60PayProcessor.printPay(ma);
}
}
Trang 61Draw()
Text Line Rectangle
Add(Graphic) Remove(Graphic) GetChild(int)
Picture
*
Mẫu composite
Trang 62VD: Hệ thống đặt phòng
Trang 63Kiến trúc
Trang 64Thành phần
Trang 65Chọn ngôn ngữ
Trang 66Bảo trì và phát triển