Download as pdf or txt
Download as pdf or txt
You are on page 1of 124

Chương 4: Thiết kế

Nội dung:
Tổng quan về thiết kế phần mềm
Khái niệm
Tầm quan trọng
Quá trình
Các hoạt động
Mô tả
Nguyên lý
Chất lượng thiết kế
Khái niệm
Thiết kế là một quá áp dụng các kỹ thuật và các
nguyên lý để tạo ra mô hình của một thiết bị, một
tiến trình hay một hệ thống đủ chi tiết mà theo đó có
thể tạo ra sản phẩm vật lý tương ứng với nó.
Thiết kế phần mềm là một quá trình chuyển hóa các
yêu cầu phần mềm thành một biểu diễn thiết kế. Làm
mịn yêu cầu liên tục để ánh xạ bản thiết kế vào ngôn
ngữ lập trình cụ thể.
Tầm quan trọng
Vai trò:
Cung cấp cách biểu diễn phần mềm có thể được xác định về
chất lượng.
Cách duy nhất có thể chuyển hóa một cách chính xác các yêu
cầu của khách hàng thành sản phẩm hay hệ thống phần mềm
cuối.
Cơ sở để mô tả một cách đầy đủ các dịch vụ của hệ thống, để
quản lý rủi ro, lựa chọn giải pháp thích hợp.
Phục vụ cho các bước sau cũng như bảo trì.
Tầm quan trọng
Thiết kế và chất lượng:
Thỏa mãn yêu cầu tường minh cũng như ngầm định.
Phải dễ hiểu, dễ đọc và hỗ trợ cho việc tạo mã nguồn
(code), kiểm tra (test).
Cung cấp đầy đủ hình ảnh của phần mềm, xác định dữ liệu,
chức năng, hành vi.
Giảm công sức mã hóa, bảo trì.
Quá trình thiết kế
Các giai đoạn chính:
Nghiên cứu để làm rõ vấn đề để có thiết kế hữu hiệu.
Chọn giải pháp thiết kế và xác định các đặc điểm thô của
nó.
Mô tả trừu tượng mỗi nội dung trong giải pháp.
Kết quả của mỗi hoạt động thiết kế là một đặc tả thiết kế.
Các hoạt động của thiết kế phần
mềm
Thiết kế kiến trúc: xác định hệ tổng thể phần mềm
bao gồm các hệ con và các quan hệ giữa chúng và ghi
thành tài liệu.
Đặc tả trừu tượng: các đặc tả trừu tượng cho mỗi
hệ con về các dịch vụ mà nó cung cấp cũng như các
ràng buộc chúng phải tuân thủ.
Thiết kế giao diện: giao diện của từng hệ con với các
hệ con khác được thiết kế và ghi thành tài liệu.
Các hoạt động của thiết kế phần
mềm
Thiết kế các thành phần: các dịch vụ mà một hệ con
cung cấp được phân chia cho các thành phần hợp
thành của nó.
Thiết kế dữ liệu: thiết kế chi tiết và đặc tả các cấu
trúc dữ liệu (các mô hình về thế giới thực cần xử lý)
được dùng trong việc thực hiện hệ thống.
Thiết kế thuật toán: các thuật toán được dùng cho
các dịch vụ được thiết kế chi tiết và được đặc tả.
Các hoạt động của thiết kế phần
mềm
Các hoạt động của thiết kế phần
mềm
Mô tả thiết kế
Mô tả một đối tượng của thế giới thực có nhiều thành phần
và các mối quan hệ giữa chúng với nhau.
Đảm bảo thực hiện các yêu cầu:
- Làm cơ sở cho việc triển khai chương trình.
- Làm phương tiện giao tiếp giữa các nhóm thiết kế các hệ
con.
- Cung cấp thông tin cho người bảo trì hệ thống.
Mô tả thiết kế
Thiết kế mô tả ở hai mức: mức cao (high level), mức thấp (low level).
Thiết kế mức cao (thiết kế kiến trúc):
-Mô hình tổng thể của hệ thống.
-Cách thức hệ thống phân rã thành các module.
-Mối quan hệ giữa các module.
-Các trao đổi thông tin giữa các module.
Không chỉ ra được số lần thực hiện, thứ tự thực hiện, trạng thái và
hoạt động bên trong của mỗi module.
Mô tả thiết kế
Thiết kế ở mức chi còn gọi là thiết kế thuật toán:
- Cấu trúc tuần tự.
- Cấu trúc rẽ nhánh.
- Cấu trúc lặp.
Thể hiện được cho mọi thuật toán.
Mô tả thiết kế
Có 3 mô hình mô tả thường được sử dụng trong thiết kế:
- Dạng văn bản phi hình thức: mô tả các thông tin không thể
hình thức hóa được bằng ngôn ngữ tự nhiên như các thông
tin phi chức năng, bổ sung để làm cho thiết kế đủ đủ dễ
hiểu hơn.
- Các biểu đồ: thể hiện các mối quan hệ giữa các thành phần
lập lên hệ thống (mô tả thế giới thực) một cách trực quan.
- Mã giả: Mô tả chính xác thiết kế nhưng không trực quan.
Mô tả thiết kế
Mô tả thiết kế
Thiết kế kiến trúc thường mô tả bằng đồ thị và
được bổ sung bằng văn bản phi hình thức.
Thiết kế dữ liệu logic thường được mô tả bằng
các bảng.
Thiết kế giao diện, thiết kế caais trúc dữ liệu
chi tiết, thiết kế thuật toán thường được mô tả
bằng mã giả.
Mô tả thiết kế
Thiết kế kiến trúc thường mô tả bằng đồ thị và
được bổ sung bằng văn bản phi hình thức.
Thiết kế dữ liệu logic thường được mô tả bằng
các bảng.
Thiết kế giao diện, thiết kế caais trúc dữ liệu
chi tiết, thiết kế thuật toán thường được mô tả
bằng mã giả.
Nguyên lý thiết kế
Thiết kế không bị bó buộc vào một cách nhìn
hạn chế nào, lựa chọn từ các giải pháp có thể.
Thỏa mãn các yêu cầu.
Không tạo lại các kế (giải pháp đã có) mà tái sử
dụng tối đa chúng.
Mô hình thiết kế nên tiến gần với mô hình bài
toán thực.
Nguyên lý thiết kế
Biểu diễn thiết kế nhất quán và tính tích hợp.
Cấu trúc dễ hiểu, dễ thay đổi (module, phân cấp)
Có mức trừu tượng hơn mã hóa, để đảm bảo tính dễ hiểu,
dễ thay đổi.
Thiết kế cần được đánh giá chất lượng ngay khi tạo ra thông
qua tính kết dính, tính ghép nối, hiệu qua thuật toán…
Cần thẩm định để tránh lỗi hệ thống: thiếu chức năng, mâu
thuẫn, chức năng không rõ, …
Tiêu chí chất lượng
Thiết kế cần có kiến trúc tốt: cấu thành từ các mẫu,
các thành phần có đặc trưng tốt, dễ tiến hóa.
Thiết kế được module hóa cho mỗi thành phần chức
năng.
Chứa các biểu diễn tách biệt với nhau về: dữ liệu, kiến
trúc, giao diện, thành phần, môi trường.
Liên kết qua giao diện làm giảm độ phức tạp liên kết
giữa các phần với nhau.
Tiêu chí chất lượng
Một số độ đo:
-Cohension: mức độ liên kết giữa các thành phần
trong một module.
-Coupling: mức độ ghép nối giữa các module.
-Understanability: tính hiểu được.
-Adaptability: tính thích nghi được.
Sự kết dính
Là độ đo về tính khớp lại với nhau của các thành
phần trong module.
Thiết kế có độ kết dính cao giúp dễ dàng hiểu
được từng module và sửa chữa module không
(ít) ảnh hưởng tới các module khác.
Sự kết dính
Có 8 mức kết dính theo thứ tự tang dần về độ kết dính:
1. Kết dính gom góp: các công việc không liên quan với nhau
nhưng bị bó vào một module.
2. Kết dính logic: các thành phần cùng thực hiện các chức
năng tương tự về logic như vào/ra, … được đặt vào cùng
module.
3. Kết dính thời điểm: tất cả các thành phần cùng hoạt động
một lúc. Ví dụ: hàm khởi tạo, đọc dữ liệu, cấp phát bộ nhớ …
Sự kết dính
Có 8 mức kết dính theo thứ tự tang dần về độ kết dính:
4. Kết dính thủ tục: các thành phần trong module được ghép
lại trong một dãy điều khiển, thực hiện theo một thức tự xác
định. Ví dụ: tính lương cơ bản, tính phụ cấp, tính bảo hiểm…
5. Kết dính truyền thông: tất cả các thành phần của module
cùng thao tác trên một dữ liệu vào và đưa ra cùng 1 dữ liệu.
Ví dụ tính toán thống kê: max, min, mean, …
6. Kết dính tuần tự: trong một module, đầu ra của phần tử
này là đầu vào của phần tử khác.
Sự kết dính
Có 8 mức kết dính theo thứ tự tang dần về độ kết dính:
7. Kết dính chức năng: Mỗi phần của module đều là cần thiết
để thi hành cùng một chức năng nào đó.
8. Kết dính đối tượng: mỗi phép toán đều liên quan đến thay
đổi, kiểm tra và sử dụng thuộc tính của một đối tượng, là cơ
sở cung cấp các dịch vụ của đối
tượng.
Sự ghép nối
Là độ đo sự nối ghép với nhau giữa các đơn vị
(module) của hệ thống.
Các module được ghép nối chặt chẽ nếu chúng dùng
các biến chung và nếu chúng trao đổi các thông tin điều
khiển.
Ghép nối lỏng lẻo đạt được khi bảo đảm rằng các thông
tin cục bộ được che dấu trong các module và các
module trao đổi thông tin thông qua danh sách tham số
(giao diện) xác định.
Sự ghép nối
Các mức ghép nối từ chặt chẽ đến lỏng lẻo:
Ghép nối nội dung: hai hay nhiều module dùng lẫn dữ
liệu của nhau, đây là mức xấu nhất, thường xảy ra đối
với các ngôn ngữ mức thấp dùng các dữ liệu toàn cục
hay lạm dụng lệnh GOTO.
Ghép nối chung: một số module dùng các biến chung,
nếu xảy ra lỗi thao tác dữ liệu, sẽ khó xác định được lỗi
đó do module nào gây ra.
Sự ghép nối
Sự ghép nối
Các mức ghép nối từ chặt chẽ đến lỏng lẻo:
Ghép nối điều khiển: một module truyền các thông tin
điều khiển để điều khiển hoạt động của một module
khác.
Ghép nối dư thừa: module nhận thông tin thừa không
liên quan trực tiếp đến chức năng của nó, điều này sẽ
làm giảm khả năng thích nghi của module đó.
Ghép nối dữ liệu: Các module trao đổi thông tin thông
qua tham số và giá trị trả lại.
Sự ghép nối
Sự ghép nối
Ghép nối điều khiển: một module truyền các thông tin điều
khiển để điều khiển hoạt động của một module khác.
Ghép nối dư thừa: module nhận thông tin thừa không liên quan
trực tiếp đến chức năng của nó, điều này sẽ làm giảm khả
năng thích nghi của module đó.
Ghép nối dữ liệu: Các module trao đổi thông tin thông qua
tham số và giá trị trả lại.
Ghép nối không có trao đổi thông tin: module thực hiện một
chức năng độc lập và hoàn toàn không nhận tham số và không
có giá trị trả lại.
Sự hiểu được
Tính kết dính: có thể hiểu được thành phần đó mà không cần
tham khảo tới một thành phần nào khác hay không?
Đặt tên: phải chăng là mọi tên được dùng trong thành phần đó
đều có nghĩa?
Soạn tư liệu: Thành phần có được soạn thảo tư liệu sao cho
ánh xạ giữa các thực thể trong thế giới thực và thành phần đó
là rõ ràng.
Độ phức tạp: độ phức tạp của các thuật toán được dùng để
thực hiện thành phần đó như thế nào?
Sự thích nghi được
Một thiết kế dễ bảo trì thì nó phải sẵn sàng thích
nghi được, nghĩa là các thành phần của chúng
nên được ghép nối lỏng lẻo.
Sự thích nghi được còn có nghĩa là thiết kế phải
được soạn thảo tư liệu tốt, dễ hiểu và nhất quán.
Trắc nghiệm
Sự quan trọng của thiết kế phần mềm có thể
được tóm tắt bằng từ đơn:

A Accuracy
B Complexity
C Efficiency
D Quality
Trắc nghiệm
Mô hình thiết kế không quan tâm tới

A: Kiến trúc
B: Dữ liệu
C: Giao diện
D: Phạm vi dự án
Trắc nghiệm
Mô hình thiết kế không quan tâm tới

A: Kiến trúc
B: Dữ liệu
C: Giao diện
D: Phạm vi dự án
Trắc nghiệm
Một đặc trưng của thiết kế tốt là

A Cho thấy sự liên kết mạnh giữa các module


B Thực hiện tất cả yêu cầu trong phân tích
C Bao gồm những test case cho tất cả thành phần
D Kết hợp mã nguồn nhằm mục đích mô tả
Thiết kế hướng chức năng
Nội dụng:
Cách tiếp cận hướng chức năng.
Các cơ sở của thiết kế phần mềm hướng chức năng.
 Trừu tượng hóa.
 Tinh chế
 Phân chia module
 Kiến trúc phần mềm
 Cấu trúc dữ liệu
 Thủ tục
 Nguyên lý che giấu thông tin
 Thiết kế dữ liệu
Cách tiếp cận hướng chức năng
Là một cách tiếp cận thiết kế phần mềm trong đó bản thiết kế
được phân rã thành một bộ các đơn thể tác động lẫn nhau, mà
mỗi đơn thể có một chức năng được xác định rõ ràng.
Nhiều tổ chức phát triển các chuẩn và phương pháp dựa trên
sự phân rã chức năng.
Các biểu đồ luồng dữ liệu (mô tả việc xử lý dữ liệu), các biểu
đồ cấu trúc (chỉ ra cấu trúc của phần mềm), và các mô tả thiết
kế chi tiết được sử dụng.
Khi mà khối lượng thông tin trạng thái hệ thống được làm nhỏ
nhất và thông tin dùng chung nhau là rõ ràng.
Các cơ sở của thiết kế phần
mềm hướng chức năng
Trừu tượng hóa:
Trừu tượng hóa là một khái niệm cơ sở trong tư duy của con
người, đây là quá trình ánh xạ một sự vật/hiện tượng của thế
giới thực thành một khái niệm logic.
Có nhiều mức trừu tượng hóa: trừu tượng hóa dữ liệu, trừu
tượng hóa chức năng, trừu tượng hóa điều khiển, …
Các cơ sở của thiết kế phần
mềm hướng chức năng
Trừu tượng hóa:
Các mức trừu tượng hóa:
Mức cao nhất: vấn đề cần thiết kế được mô tả một cách tổng
quát sử dụng thuật ngữ hướng vấn đề.
Các mức thấp hơn: hướng đến thủ tục xử lý chi tiết; kết hợp
các thuật ngữ hướng đến hiện thực.
Mức thấp nhất: vấn đề được mô tả theo cách có thể hiện thực
trực tiếp.
Các cơ sở của thiết kế phần
mềm hướng chức năng
Trừu tượng hóa:
Phân loại:
Trừu tượng hóa thủ tục là xác định chuỗi các lệnh liên tiếp thực
hiện chức năng nào đó.
Ví dụ: mở cửa (bao gồm đi đến cửa, cầm lấy tay nắm, xoay tay
nắm, kéo cánh cửa, đi vào…); thêm một phần tử vào danh
sách có thứ tự (xác định vị trí, chèn phần tử mới).
Các cơ sở của thiết kế phần
mềm hướng chức năng
Trừu tượng hóa:
Phân loại:
Trừu tượng hoá dữ liệu: là tổ hợp dữ liệu mô tả một đối tượng
dữ liệu (liên hệ tới đối tượng thực thể trong UML).
Các cơ sở của thiết kế phần
mềm hướng chức năng
Tinh chế:
Tinh chế là quá trình làm rõ vấn đề.
Tinh chế và trừu tượng hoá là hai khái niệm bù trừ
nhau: càng tinh chế thì càng hạ thấp mức trừu tượng
hóa.
Các cơ sở của thiết kế phần
mềm hướng chức năng
Phân chia module:
Phần mềm được xây dựng bằng cách phân chia thành nhiều
module, sau đó sẽ được tích hợp lạ. Quá trình này dựa trên
chiến lược “chia để trị”.
Phân chia module làm cho việc quản lý phần mềm khoa học
hơn, nhằm giảm độ phức tạp cục bộ, dễ sửa đổi, có khả năng
phát triển song song, dễ sửa đổi, dễ hiểu nên dễ tái sử dụng.
Các cơ sở của thiết kế phần
mềm hướng chức năng
Phân chia module:
Các cơ sở của thiết kế phần
mềm hướng chức năng
Kiến trúc phần mềm:
Kiến trúc phần mềm mô tả các thành phần (component) kiến
tạo nên hệ thống phần mềm và sự giao tiếp giữa các thành
phần đó.
Thành phần có thể là: Các module mã nguồn; Các file thực
thi (*.dll, *.exe, *.class...); Các thành phần của kiến trúc hệ
thống: ActiveX control, bean...; Các trang HTML, *.asp,
*.jsp...
Các cơ sở của thiết kế phần
mềm hướng chức năng
Thủ tục:
Thủ tục tập trung vào chi tiết xử lý của mỗi module.
Cung cấp đặc tả chi tiết của: Chuỗi sự kiện; Vòng lặp;
Quyết định rẽ nhánh; Có thể cả cấu trúc dữ liệu.
Các cơ sở của thiết kế phần
mềm hướng chức năng
Nguyên lý che giấu thông tin:
Những thông tin về thủ tục và dữ liệu cục bộ của mỗi
module phải được che dấu khỏi các module khác.
Lợi ích: Kiểm soát được thay đổi và sửa lỗi dễ dàng.
Các cơ sở của thiết kế phần
mềm hướng chức năng
Thiết kế dữ liệu:
Nhằm tìm kiếm biểu diễn luận lý cho các phần tử dữ
liệu đã được nhận diện trong giai đoạn phân tích yêu
cầu.
Giai đoạn này bao gồm cả thiết kế các cấu trúc dữ liệu
của chương trình và cơ sở dữ liệu.
Các cơ sở của thiết kế phần
mềm hướng chức năng
Thiết kế dữ liệu:
Một số nguyên tắc:
Nhận diện cả cấu trúc dữ liệu và tác vụ truy xuất.
Chú ý sử dụng từ điển dữ liệu.
Trì hoãn thiết kế dữ liệu mức thấp cho đến cuối giai đoạn này.
Che dấu biểu diễn bên trong của cấu trúc dữ liệu.
Phát triển một thư viện các cấu trúc dữ liệu và các tác vụ
thường gặp.
3. Thiết kế kiến trúc
Nội dung:
Khái niệm kiến trúc
Khái niệm thiết kế kiến trúc
Mô hình kiến trúc
Các mô hình cấu trúc
Các mô hình điều khiển
Các mô hình phân rã module
Khái niệm kiến trúc
Kiến trúc phần mềm chỉ cấu trúc tổng thể của
một phần mềm và cách thức tổ chức qua đó cho
ta một sự tích hợp về mặt khái niệm của một hệ
thống.
Thường được thể hiện bằng một biểu đồ phân
cấp các thành phần và mối quan hệ giữa chúng.
Có nhiều góc nhìn: tĩnh, động, dữ liệu,…
Vai trò của kiến trúc phần mềm
Phân tích tính hiệu quả của kết quả thiết kế
đáp ứng được yêu cầu của phần mềm.
Tìm các giải pháp thay thế cấu trúc ở giai
đoạn sớm.

Tìm các rủi ro liên quan đến cấu trúc.


Khái niệm thiết kế kiến trúc
Là quá trình xác định các hệ con lập thành hệ thống và
khung làm việc để điều khiển và giao tiếp giữa các hệ
con với nhau (sự truyền thông giữa chúng).
Sử dụng các biểu đồ cấu trúc để mô tả cái nhìn tổng
thể về hệ thống, mối quan hệ giữa các mô đun và giao
diện giữa các mô đun, mà không chỉ ra số lần thực
hiện, chi tiết thiết kế, thứ tự thực hiện.
=> Tài liệu mô tả về kiến trúc phần mềm.
Lợi ích của bản thiết kế rõ ràng
Giao tiếp với Stakeholder: Kiến trúc có thể được sử dụng để
thảo luận bởi các Stakeholders hệ thống.
Phân tích hệ thống: Có thể dùng kiến trúc để phân tích xem
hệ thống có thỏa mãn các yêu cầu phi chức năng của nó hay
không.
Tái sử dụng Large-scale: Bản kiến trúc tốt có thể được sử
dụng lại cho một loạt các hệ thống.
Tiến trình thiết kế kiến trúc
Các bước thiết kế kiến trúc:
1. Cấu trúc hóa hệ thống: phân chia hệ thống thành các
hệ con (subsystem) độc lập và xác định trao đổi thông
tin giữa các hệ con xác định các giao diện của chúng.
2. Mô hình hóa điều khiển: xác lập mô hinh điều khiển
giữa các phần khácnhau của hệ thống đã được xác
định.
3. Phân rã thành các module: phân rã các hệ con thành
các module.
Tiến trình thiết kế kiến trúc
Mô hình kiến trúc
Có nhiều mô hình kiến trúc khác nhau được tạo
ra trong quá trình thiết kế, biểu diễn một cách
nhìn của kiến trúc. (tĩnh, động, giao diện, …)
Mô hình kiến trúc bao gồm:
Mô hình cấu trúc
Mô hình điều khiển
Mô hình phân rã module
Mô hình cấu trúc
Mô hình cấu trúc bao gồm:
Kiến trúc dữ liệu tập trung
Kiến trúc khách – dịch vụ
Kiến trúc phân tầng
Kiến trúc dữ liệu tập trung
Hai cách trao đổi thông tin:
Dữ liệu được chia sẻ chứa trong một CSDL trung
tâm/kho dữ liệu trung tâm và được truy cập bởi
các hệ thống con. Đây còn gọi là kiểu kho dữ liệu
dùng chung.
Mỗi hệ thông con duy trì một CSDL riêng của nó
và truyền dữ liệu rõ rang đến các hệ thống khác
Kiến trúc dữ liệu tập trung
Kiến trúc dữ liệu tập trung
Ưu điểm:
-Tiện lợi cho chia sẻ dữ liệu lớn.
-Các phân hệ không cần quan tâm đến cách quản lí dữ liệu.
Ưu điểm:
-Các phân hệ phải thống nhất về mô hình dữ liệu.
-Khó thay đổi cấu trúc dữ liệu.
-Các phân hệ không thể đưa ra chính sách quản lý dữ liệu riêng.
-Khó khăn trong quản lý giao dịch.
Kiến trúc khách dịch vụ (client-
server Architecture)
Là một mô hình phân tán. Gồm 3 thành phần chính:
Một tập hợp các servers độc lập cung cấp các dịch vụ
cụ thể: ví dụ in ấn, quản lý dữ liệu, vv…
Một tập các Client gọi các dịch vụ này từ các servers.
Mạng kết nối cho phép các Client truy cập đến các
servers
Kiến trúc khách dịch vụ (client-
server Architecture)
Kiến trúc khách dịch vụ (client-
server Architecture)
Ưu điểm:
-Sử dụng hiểu quả mạng, giảm chi phí thiết bị.
-Dễ dàng mở rộng, thêm dịch vụ.
-Phân tán dữ liệu trực tiếp.
Nhược điểm:
-Khó tích hợp dữ liệu do khác cấu trúc dữ liệu.
-Cần cơ chế bảo toàn dữ liệu cho từng server.
Kiến trúc phân tầng (Layered
Architecture)
Mô hình này phân rã hệ thống thành các tầng, mỗi tầng cung
cấp một tập các dịch vụ.
Kiến trúc phân tầng (Layered
Architecture)
Mô hình phân rã mô-đun
Hệ thống con là một hệ thống có thể vận hành
một cách độc lập, có thể sử dụng một số dịch vụ
được cung cấp bởi các hệ thống con khác hoặc
cung cấp dịch vụ cho các hệ thống con khác sử
dụng.
Mô-đun là một thành phần của hệ thống cung
cấp các dịch vụ cho các thành phần khác, nhưng
nó thường không được coi như là một hệ thống
riêng rẽ, độc lập.
Mô hình phân rã mô-đun
Bao gồm các kiểu sau:
+ Mô hình đối tượng: phân rã hệ thống dựa
trên sự tương tác giữa các đối tượng.
+ Mô hình luồng dữ liệu (đường ống –
pipeline): mỗi chức năng là một tiến trình
chuyển hóa các đầu vào thành đầu ra.
Điều khiển hệ thống
Điều khiển hệ thống là hoạt động xác
lập mô hình điều khiển giữa các phần
khác nhau của hệ thống đã được xác
định. Điều khiển hệ thống liên quan đến
luồng điều khiển giữa các hệ thống con.
Mô hình điều khiển
Điều khiển tập trung: Một hệ thống chụi
trách nhiệm điều khiển, khởi tạo và dừng sự
thực hiệu của các hệ thống con khác.
Điều khiển dựa trên sự kiện: Mỗi hệ thống
con có thể phản ứng lại với các sự kiện phát
sinh từ các hệ thống con khác hoặc từ môi
trường của hệ thống.
Kiến trúc gọi và trả lại
Là mô hình thủ tục top – down: Việc điều
khiển bắt đầu ở đỉnh của cây thủ tục và di
chuyển xuống.
Mô hình này có thể áp dụng có các hệ
thống tuần tự.
Kiến trúc gọi và trả lại
Kiến trúc gọi và trả lại
Mô hình quản lí
Một thành phần hệ thống được thiết kế như một
hệ quản trị để điều khiển việc dừng, khởi động
và phối hợp các xử lý của hệ thống khác.

Mô hình này có thể áp dụng cho các hệ thống


song song.
Mô hình quản lí
Kiến trúc xử lý sự kiện
Các hệ thống điều khiển dựa trên sự kiện được
điều khiển bởi các sự kiện phát sinh từ bên
ngoài hệ thống.
Kiến trúc xử lý sự kiện
Mô hình điều khiển quản bá (Broadcast):
Sự kiện được truyền đến tất cả hệ con. Hệ con được truyền
điều khiển khi đã có đăng ký.
Kiến trúc xử lý sự kiện
Mô hình điều khiển hướng ngắt (Interupt):
Các phương pháp tạo kiến trúc
từ biểu đồ luồng dữ liệu
Phân hoạch ngang
Phân hoạch dọc
Tạo kiến trúc phần mềm
Tạo kiến trúc phần mềm
Tạo kiến trúc phần mềm
Tạo kiến trúc phần mềm
Phương pháp chuyển đổi luồng chuyển đổi:
Tạo kiến trúc phần mềm
Phương pháp chuyển đổi luồng giao dịch:
Phân hoạch kiến trúc
Phân hoạch ngang: phân tầng các module ra các
mức: module điều khiển, module thao tác.
Phân hoạch kiến trúc
Phân hoạch dọc:
Phân hoạch kiến trúc
Phân hoạch kiến trúc giúp chúng ta tạo ra những
phần mềm đảm bảo:
•Dễ kiểm thử.
•Dễ bảo trì.
•Hạn chế hiệu ứng phụ khi sửa đổi.
•Dễ mở rộng.
Trắc nghiệm
Trắc nghiệm
Trắc nghiệm
Trắc nghiệm
Trắc nghiệm
Thiết kế giao diện người dùng
Đặc trưng: hướng đến người dùng, cần làm bản
mẫu, cần được người dùng đánh giá.
Vai trò, tầm quan trọng: khâu không thể thiếu
trong thiết kế phần mềm, người dùng đáng giá
phần mềm qua dao diện.
Thiết kế giao diện người dùng
Một giao diện tốt nên:
- Hướng đến người dùng.
- Che giấu kỹ thuật bên trong.
- Kết hợp 3 mặt: người dùng, chứ năng, công nghệ.
Thiết kế giao diện người dùng
Thiết kế giao diện người dùng
Nguyên tắc:
Cần phản ảnh vào thiết kế giao diện.
Luôn làm bản mẫu để người dùng đánh giá.
Giao diện phải có:
+ Tính thân thiện.
+ Tính nhất quán.
Các vấn đề trong thiết kế giao
diện người dùng
Thông tin nhập bởi người dùng nên được cung
cấp cho hệ thống máy tính như thế nào, hay ta
phải thiết kế các giao diện nhập liệu như thế
nào.
Thông tin sau khi xử lý bởi hệ thống máy tính
nên được trình bày đến người dùng như thế nào,
hay ta phải thiết kế các giao diện hiển thị dữ liệu
như thế nào.
Các vấn đề trong thiết kế giao
diện người dùng
Các vấn đề trong thiết kế giao
diện người dùng
Biểu diễn thông tin
Các vấn đề trong thiết kế giao
diện người dùng
Thông tin cần biểu diễn được chia thành hai loại:
Thông tin tĩnh: được khởi tạo ở đầu của mỗi phiên. Nó
không thay đổi trong suốt phiên đó và có thể là ở dạng
số hoặc dạng văn bản.
Thông tin động: thay đổi trong cả phiên sử dụng và sự
thay đổi này phải được thể hiện để người sử dụng có
thể quan sát.
Các vấn đề trong thiết kế giao
diện người dùng
Các vấn đề trong thiết kế giao
diện người dùng
Thiết kế thông báo lỗi:
Khi người sử dụng tương tác với hệ thống, rất có thể
xảy ra lỗi và hệ thống phải thông báo cho người sử
dụng biết lỗi gì đã xảy ra hoặc đã có chuyện gì xảy ra
với hệ thống.
Các vấn đề trong thiết kế giao
diện người dùng
Thiết kế giao diện người dùng
Một số giao diện: màn hình, chuột, bàn phím, bút từ,
loa, ….
Các kiểu tương tác thống dụng: thao tác trực tiếp,
chọn thực đơn, chọn biểu tượng, điền vào biểu mẫu,
ngôn ngữ lệnh, ngôn ngữ tự nhiên,..
Các loại giao diện:
+ Giao diện dòng lệnh: dễ cài đặt, khó sử dụng.
+ Giao diện đồ họa: khó cài đặt, dễ sự dụng, hiệu suất cao
Thiết kế giao diện người dùng
Ngôn ngữ lệnh (Command Language): đơn giản, linh
hoạt, thao tác nhanh, người dùng phải có kinh
nghiệm, dễ nhầm lẫn, cần phải nhớ cú pháp, ngữ
nghĩa lệnh.
Thiết kế giao diện người dùng
Tương tác thực đơn (menu): thao tác trên danh sách
tùy chọn, dễ hiểu, dễ dùng, có cấu trúc logic, hạn chế
dùng phím,…
Thiết kế giao diện người dùng
Tương tác biểu mẫu: điền thông tin vào các mục của
biểu mẫu, hiệu quả cho việc cập nhật và biểu diễn
thông tin, …
Thiết kế giao diện người dùng
Tương tác biểu tượng: sử dụng ký họa mang ý nghĩa
trực quan.
Thiết kế giao diện người dùng
Tương tác ngôn ngữ nói: sử dụng ngôn ngữ tự nhiên
để tương tác với hệ thống.
Có tính tiện lợi cao, khó thiết kế.
Các vấn đề khác cần quan tâm khi thiết kế giao diện
là: Phương pháp hiển thị thông tin, thời gian phải hồi,
hiển thị thông báo, tiện ích…
Thiết kế giao diện người dùng
Các phương pháp hiển thị thông tin:
- Hiển thị văn bản: chính xác, dễ cài đặt.
- Hiển thị bằng đồ họa: trực quan, dễ dàng nhận ra các mối quan
hệ.
Thời gian phản hồi: thời gian trung bình phản hồi các thao tác.
Thông báo cần có nghĩa, dễ hiểu, hữu ích, chính xác, số lượng
phù hợp, …
Tiện ích: trợ giúp trực tuyến, hướng dẫn sử dụng, các công cụ tự
động, ….
Thiết kế giao diện người dùng
Một số tiêu chuẩn giao diện:
Thời gian đáp ứng của hệ thống phù hợp.
Phương tiện trợ giúp người dùng.
Kiểm soát thông tin lỗi: hiển thị nguyên nhân và cách khắc
phục.
Đặt tên nhãn ngắn gọn dễ nhớ.
Một số hướng dẫn: cung cấp phản hồi, xác nhận,…
Trắc nghiệm
Trắc nghiệm
Trắc nghiệm
Trắc nghiệm
Thiết kế thủ tục
Thiết kế giải thuật cho các module để dễ dàng mã hóa bằng
ngôn ngữ lập trình.
Biểu diễn bằng:
•Giải mã (pseudo code)
•Sơ đồ luồng (flow chart)
•Biểu đồ (diagram)
•Biểu đồ hoạt động (activity diagram)
Thiết kế thủ tục
Mã giả mượn từ ngôn ngữ tự nhiên + ngôn ngữ lập
trình có cấu trúc.
Có cú pháp chặt chẽ, khai báo dữ liệu, chia module, …
ngôn ngữ tự nhiên miêu tả xử lý,….
Thiết kế thủ tục
Thiết kế thủ tục
Thiết kế hướng đối tượng
Bản chất duy nhất của thiết kế hướng đối tượng là
khả năng xây dựng ba khái niệm thiết kế phần mềm
quan trọng: trừu tượng, che dấu thông tin, và
module.
Thiết kế hướng đối tượng
Đặc trưng của thiết kế hướng đối tượng:
Không có vùng dữ liệu dùng chung. Các đối tượng liên lạc
với nhau bằng các trao đổi thông báo chứ không phải các
biến dùng chung.
Các đối tượng là thực thể độc lập, dễ thay đổi vì rằng tất
cả các trạng thái các thông tin biểu diễn chỉ ảnh hưởng
trong phạm vi chính đối tượng đó thôi.
Các đối tượng có thể phân tán và có thể hành động tuần
tự hoặc song song.
Thiết kế hướng đối tượng
Ưu điểm:
Dễ bảo trì vì các đối tượng độc lập.
Các đối tượng là các thành phần được dùng lại.
Quan hệ giữa các lớp, các thực thể được thể hiện rõ
ràng. Đạt tính dễ hiểu trong thiết kế.
Thiết kế hướng đối tượng
Nhược điểm:
Xác định các đối tượng trong hệ thống rất khó
khăn.

You might also like