1
Chương 5:
Thiết kế hệ thống
2
Nội dung
1. Một số khái niệm
2. Các mô hình thiết kế
1. Thiết kế mô hình hệ thống
2. Thiết kế giao diện (Interface Design)
3. Thiết kế dữ liệu (Data design)
4. Thiết kế kiến trúc (Achitectural Design)
5. Thiết kế thành phần (Component Design)
3
1. Một số khái niệm
•
Thiết kế là gì
•
Thuộc tính chất lượng
•
Thiết kế hệ thống
•
Hướng dẫn thiết kế
•
Nguyên lý thiết kế
•
Khái niệm thiết kế
4
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,
nhưng không giống như mô hình phân tích (tập trung vào việc
mô tả dữ liệu, chức năng và hành vi)
•
Mô hình thiết kế cung cấp chi tiết về kiến trúc (architecture),
Giao diện (interfaces) và thành phần (component) cần thiết để
cài đặt phần mềm
•
Sản phẩm công tác (work product): biểu diễn kiến trúc (Cơ sơ
dữ liệu, giao tiếp với hệ thống khác…), giao diện người dùng
(GUI), thành phần (giao tiếp các thành phần, cấu trúc dữ liệu,
giải thuật dưới dạng mã giả…)
5
Thiết kế là gì?
•
SRS cho biết hệ thống làm gì (what) và trở thành đầu vào cho
quá trình thiết kế
•
Thiết kế dùng để chỉ ra hệ thống sẽ làm như thế nào (how), các
yêu cầu sẽ được hiện thực hóa (realize) ra sao?
•
Kết quả của quá trình thiết kế là Software Design Document
(SDD).
6
Thuộc tính chất lượng
•
Chức năng (functionality): khả năng của phần mềm, kèm theo
tính an ninh
•
Tiện dụng (usability): bao gồm cả tính mỹ thuật, toàn vẹn và tư
liệu
•
Tin cậy (reliability): tính chính xác, dùng The mean-time-to-
failure (MTTF), Khả năng phục hồi từ lỗi
•
Thực thi (performance): tốc độ xử lý, thời gian đáp ứng, sử
dụng tài nguyên, hiệu quả…
•
Khả năng hỗ trợ (suppotability): dễ mở rộng, khả năng ráp nối,
khả năng test, khả năng cấu hình, khả năng tương thích…
7
Thiết kế hệ thống
8
Thiết kế phần mềm
•
Thiết kế phần mềm là quá trình lặp thông qua đó các yêu cầu hệ
thống sẽ được chuyển đổi thành “blueprint” (bản thiết kế chi
tiết) của phần mềm.
•
Thiết kế bao gồm hai phần:
–
Thiết kế ý niệm (conceptual design) nhằm nói cho khách
hàng biết chính xác hệ thống sẽ làm gì
–
Thiết kế kỹ thuật (technical design) cho phép các nhà xây
dựng hệ thống biết cách vận dụng phần cứng và phần mềm
như thế nào để giải quyết bài toán của khách hàng.
9
Hướng dẫn thiết kế
•
Một thiết kế phải đưa ra một kiến trúc mà:
–
(1) Dùng mẫu (pattern) hay kiểu (style) kiến trúc được thừa
nhận
–
(2) Gồm những thành phần có đặc trưng thiết kế tốt
–
(3) Có thể thi hành theo cách tiến hóa
•
Thiết kế phải module hóa
•
Thiết kế phải trình bày riêng dữ liệu, kiến trúc, giao diện và
thành phần (component)
•
Thiết kế phải đưa ra cấu trúc dữ liệu phù hợp với lớp thực thi
và từ những mẫu dữ liệu được thừa nhận
•
Thiết kế phải đưa ra những thành phần mà độc lập chức năng
10
•
Thiết kế phải đưa ra những giao diện (interface) mà giảm sự
phức tạp của việc kết nối giữa các thành phần, cũng như môi
trường ngoài
•
Thiết kế được đưa ra từ việc dùng phương pháp lặp mà được
định hướng bởi thông tin đạt được suốt quá trình phân tích yêu
cầu phần mềm
•
Thiết kế phải dùng những ký hiệu hiệu quả cao trong việc thông
tin
11
Chuyển mô hình phân tích sang mô hình
thiết kế
•
Mỗi phần tử của mô hình phân tích (analysis model) cung cấp
thông tin cần thiết để tạo 4 mô hình thiết kế.
Analysis Model
Scenario-based
Element
Use case diagram
Activity diagram
Scenario-based
Element
Use case diagram
Activity diagram
Flow-oriented
Element
Data Flow Diagram
Control-Flow diagram
Flow-oriented
Element
Data Flow Diagram
Control-Flow diagram
Behavioral
Element
State diagram
Sequence diagram
Behavioral
Element
State diagram
Sequence diagram
Class-based
Element
Class diagram
CRC models
Class-based
Element
Class diagram
CRC models
12
Nguyên lý thiết kế
•
Thiết kế phải tránh “tunnel vision”
•
Thiết kế phải có thể lần vết ra mô hình phân tích
•
Thiết kế phải không “reinvent the wheel”
•
Thiết kế “minimize the intellectual distance” giữa phần mềm và những vấn
đề trong thế giới thực
•
Thiết kế phải thể hiện tính đồng nhất và tích hợp
•
Thiết kế phải hỗ trợ sự thay đổi
•
Thiết kế phải làm nhẹ đi những lệch lạc về dữ liệu sự kiện hay điều kiện
hoạt động
•
Thiết kế không là code, code không là thiết kế
•
Thiết kế phải được đánh giá chất lượng khi nó đang được tạo không phải
khi nó có vấn đề
•
Thiết kế phải được kiểm tra (review) để làm giảm thiểu những lỗi ngữ
nghĩa (semantic)
13
Khái niệm thiết kế
•
Trừu tượng (Abstraction) - data, procedure, control
•
Kiến trúc (Architecture) - the overall structure of the software
•
Mẫu (Patterns) - ”conveys the essence” of a proven design solution
•
Module hóa (Modularity) - compartmentalization of data and function
•
Che dấu thông tin (Information hiding) - controlled interface
•
Độc lập chức năng (Functional independence) - single-minded function
and low coupling
•
Tinh chế (Refinement) - elaboration of detail for all abstractions
•
Phân tách lại (Refactoring) - a reorganization technique that simplifies the
design
14
2. Các mô hình thiết kế
•
Thiết kế giao diện (Interface Design)
•
Thiết kế kiến trúc (Achitectural Design)
•
Thiết kế dữ liệu (Data design)
•
Thiết kế thành phần (Component Design)
15
2.2 Thiết kế giao diện
•
Để hệ thống làm việc tốt, ta phải điều khiển được các hệ thống
con, làm cho các dịch vụ của chúng phải được thực hiện đúng
chỗ và đúng thời điểm.
•
Có 2 loại điều khiển (control styles):
–
Điều khiển tập trung: một hệ thống con chịu trách nhiệm
kiểm soát, khởi tạo hoặc dừng các hệ thống con khác.
–
Điều khiển hướng sự kiện: mỗi hệ thống đáp ứng với các sự
kiện xảy ra từ các hệ thống con khác hoặc từ môi trường của
hệ thống.
16
2.2 Thiết kế giao diện
•
Ba quy tắc vàng
•
Các mô hình phân tích & thiết kế giao diện
•
Quy trình phân tích & thiết kế giao diện
•
Phân tích giao diện
•
Thiết kế giao diện
17
Xây nhà Phát triển hệ thống
Bản vẽ kiến trúc (Blueprint)
Thiết kế kiến trúc
(architecture design)
Các mô tả Doors, windows,
utility connections for
water, for electricity,…
Thiết kế giao diện (user
interface design)
18
Ba quy tắc vàng
1. Place the user in control.
2. Reduce the user’s memory load.
3. Make the interface consistent.
19
Quy tắc 1: Theo yêu cầu người dùng
Place the user in control
•
Người dùng luôn mong muốn hệ thống tương tác và giúp họ
thực hiện mọi việc dễ dàng.
•
Người dùng muốn
–
“to control the computer, not have the computer control”,
–
“System reads their mind, it knows what the users want to
do before the user need to do”
Nhưng
•
Người thiết kế muốn đưa vào giao diện các ràng buộc và giới
hạn để làm đơn giản hóa việc thực thi giao diện.
20
Quy tắc 1: Theo yêu cầu người dùng
Place the user in control
•
Nên xác định kiểu tương tác sao cho không ép người dùng thực
hiện các thao tác không cần thiết hay không mong muốn
•
Cho phép tương tác linh hoạt ( bàn phím, chuột, bút,..)
•
Cho phép người dùng được ngắt khi thực 1 chuỗi thao tác hay
được phép “undo” thao tác nào
•
Cho phép người dùng thông thạo được phép tùy biến các tương
tác (dùng macro)
•
Không nên để người dùng phải nhìn thấy các yếu tố kỹ thuật
của hệ thống (hệ điều hành, chức năng quản lý file,…)
•
Cho phép người dùng tương tác trực tiếp với các đối tượng trên
màn hình (kéo dãn 1 đối tượng vẽ..)
21
Quy tắc 2: giảm thiểu việc ghi nhớ của người dùng
Reduce the user’s memory load
•
Càng bắt người dùng phải nhớ càng nhiều, thì việc tương tác
với hệ thống càng dễ bị lỗi
–
Để giảm việc phải nhớ các hành động cần làm, nên đưa ra
các gợi ý hình ảnh (visual cues)
–
Nên tạo các mặc định thích hợp
–
Nên tạo các phím gõ tắt (shortcut) trực giác, dễ nhớ
–
Nên sắp xếp giao diện gần giống với thế giới thực
–
Nên tổ chức thông tin theo dạng phân cấp (hierarchical),
thông tin ở mức trừu tượng trước, rồi tới mức chi tiết ( chọn
chức năng gạch dưới xong, thì các kiểu gạch dưới cụ thể sẽ
được liệt kê tiếp theo..)
22
Quy tắc 3: Giao diện phải luôn nhất quán
Make the interface consistent.
•
Nhất quán trong việc thiết kế các màn hình giao diện theo cùng
một tiêu chuẩn
–
Cùng cơ chế nhập liệu
–
Cùng cơ chế chuyển đổi từ nhiệm vụ này sang nhiệm vụ
khác
23
Mục tiêu của thiết kế giao diện
•
Là để xác định tập hợp các đối tượng giao diện và các hành
động cho phép người dùng thực hiện được tất cả những nhiệm
vụ của hệ thống
24
Các mô hình phân tích và thiết kế giao diện
Bốn mô hình có liên quan đến thiết kế giao diện:
1. Kỹ sư phần mềm tạo mô hình thiết kế (design model)
2. Người phụ trách về nhân sự tạo ra mô hình người dùng
(user model)
3. Người dùng cuối phát triển mô hình nhận biết hệ thống
(system perception)
4. Người thực thi tạo mô hình thực thi (implementation
model)
Các mô hình này có thể rất khác nhau. Vai trò của người thiết kế
giao diện là phải làm sao cho các mô hình này tương thích và
tạo ra giao diện ôn định.
25
Phân loại người dùng
•
Novices (người mới) – không có kiến thức về hệ thống, hiểu
biết rất ít về ứng dụng cũng như cách sử dụng máy tính
•
Knowledgeable intermittent users (người dùng gián đoạn tuy có
kiến thức)
•
Knowledgeable frequent users (người dùng thường xuyên có
hiểu biết)
Phân tích giao diện thường xét đến hồ sơ (profile) của người dùng
hệ thống và phân tích cả môi trường làm việc của người dùng.