CHƯƠNG 3 THIẾT KẾ VÀ LẬP TRÌNH
3.1. Mô hình hóa hệ thống
3.2. Thiết kế hệ thống
3.3. Lập trình
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
75
3.1. Mô hình hóa hệ thống
§ Khái niệm “mô hình” (model): mô hình là một sự thể hiện của một
đối tượng trong thế giới thực hoặc một hệ thống đang tồn tại hoặc sẽ
có trong tương lai.
§ Khái niệm “mô hình hóa” (modelling): là hành động xây dựng mô
hình của đối tượng hay xây dựng mô hình của hệ thống.
76
Các góc nhìn về hệ thống cần được mô hình hóa
§ Biên của hệ thống và sự tương tác của hệ thống với con người, thiết bị hoặc hệ
thống bên ngoài.
§ Bên trong hệ thống là các thành phần cấu thành hệ thống và mỗi thành phần đều
có hành vi.
§ Hệ thống cung cấp các chức năng, các dịch vụ được mô tả dưới dạng các yêu
cầu phần mềm.
§ Các thành phần của hệ thống tương tác với nhau, trao đổi (exchange), chuyển đổi (transform) và lưu trữ (store) dữ liệu để đáp ứng các chức năng, các dịch vụ kể trên.
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
77
Các góc nhìn của hệ thống cần mô hình hóa
§ Chức năng (functionality): hệ thống làm gì hoặc được yêu cầu làm gì (ví dụ, xử lý dữ liệu), cộng tác/tương tác với ai/thiết bị/hệ thống khác như thế nào.
§ Dữ liệu (data): mô hình hóa dữ liệu vào, thao tác, lưu trữ và xuất dữ
liệu ra.
§ Sự kiện (sự kiện): mô hình hóa các sự kiện mà kích hoạt các tính
năng của hệ thống.
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
78
Các kỹ thuật mô hình hóa truyền thống (trước khi có UML)
§ Chức năng
— Biểu đồ/ Sơ đồ phân rã chức năng (Function Decomposition Diagram - FDD)
— Biểu đồ/ Sơ đồ luồng dữ liệu ( Data Flow Diagram - DFD)
— Biểu đồ/ Sơ đồ luồng (Flow chart )
§ Dữ liệu
— Biểu đồ/ Sơ đồ cấu trúc Jackson (Jackson structure chart)
— Sơ đồ thực thể liên kết ( Entity Relationship Diagram - ERD)
— Sơ đồ cây phân cấp ( Hierarchical tree diagram )
§ Sự kiện
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
79
— Biểu đồ/ Sơ đồ bong bóng (Bubble diagram)
Mô hình hóa bằng UML
§ Chức năng
— Biểu đồ/ sơ đồ ca sử dung (Use case diagram)
— Biểu đồ/ sơ đồ hoạt động (Activity diagram)
§ Dữ liệu
— Biểu đồ/ sơ đồ tương tác (Interaction diagram: sequence & collaboration diagram)
§ Sự kiện
— Biểu đồ/ sơ đồ lớp (Class diagram )
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
80
— Biểu đồ/ sơ đồ trạng thái (State machine )
Mô hình chức năng
§ Mô tả các chức năng cần có trong phần mềm và mối quan hệ giữa
các chức năng
— Định danh các chức năng (biến đổi dữ liệu thành thông tin)
— Xác định cách thức dữ liệu (thông tin) di chuyển trong hệ thống
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
81
— Xác định các tác nhân đưa vào dữ liệu và tác nhân nhận thông tin.
Biểu đồ phân rã chức năng (Function Decomposition Diagram)
§ Xác định phạm vi của hệ thống
§ Phân hoạch chức năng
§ Tạo nền tảng cho thiết kế kiến trúc hệ thống
chức năng
liên kết
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
82
Biểu đồ luồng dữ liệu (Data Flow Diagram)
§ Dùng để mô hình hóa việc xử lý dữ liệu trong hệ thống.
§ Mô tả các bước xử lý khi dữ liệu chảy qua một hệ thống từ khi vào hệ
thống cho đến khi ra khỏi hệ thống (end-to-end).
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
83
Biểu đồ luồng dữ liệu (Data Flow diagram)
§ Tiến trình (chức năng) § Tác nhân § Kho dữ liệu § Luồng di chuyển của
dữ liệu/ thông tin vào/ ra 1 tiến trình.
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
84
Mô hình dữ liệu
§ Mô hình hóa hệ thống từ phương diện dữ liệu.
§ Lưu vết và làm tài liệu về mối quan hệ giữa dữ liệu và một tiến trình.
§ Có thể dùng để minh họa sự trao đổi dữ liệu giữa một hệ thống và
các hệ thống khác.
— Biểu đồ luồng dữ liệu
— Sơ đồ thực thể - liên kết
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
85
— Từ điển dữ liệu
Sơ đồ thực thể liên kết (Entity Relationship Diagram)
§ Dùng để mô tả cấu trúc lô-gic của dữ liệu mà hệ thống xử lý.
§ Sơ đồ thực thể - liên kết mô tả các thực thể trong hệ thống, quan hệ giữa
chúng và các thuộc tính của chúng.
§ Dùng rộng rãi trong thiết kế cơ sở dữ liệu, có thể cài đặt được ngay bằng
CSDL quan hệ.
§ UML không cung cấp kí pháp cụ thể nhưng có thể dùng các đối tượng
(object) và quan hệ (association).
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
86
Sơ đồ thực thể liên kết (Entity Relationship Diagram)
§ Thực thể
§ Thuộc tính của thực thể
§ Mối quan hệ: tên mối quan hệ
§ Loại mối quan hệ: 1-1, 1-N, N-N
§ Số lượng bản thể tham gia vào mối
quan hệ
§ Thuộc tính của mối quan hệ (chỉ có
ở mối quan hệ N-N)
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
87
Từ điển dữ liệu (Data dictionary)
§ Từ điển dữ liệu là danh sách tất cả các tên gọi được sử dụng trong các mô
hình hệ thống. Đó có thể là các thực thể, quan hệ và các thuộc tính.
§ Sử dụng từ điển dữ liệu làm công cụ bổ trợ.
§ Ưu điểm của từ điển dữ liệu là:
— Hỗ trợ quản lý tên và tránh trùng lặp tên,
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
88
— Lưu trữ kiến thức một cách có tổ chức kết nối pha phân tích, thiết kế và cài đặt.
Từ điển dữ liệu (Data dictionary)
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
89
Tổng quan về biểu đồ use case
• Biểu đồ mô tả các yêu cầu chức năng của hệ
thống dưới dạng các use case.
Mô hình chức năng bằng UML Biểu đồ ca sử dụng (Use case diagram)
• Bao gồm các chức năng mong đợi của hệ thống
(use case) và môi trường (actor) của nó.
View Report Card
§ Thể hiện phạm vi của hệ thống
Register for Courses
Giữa các use case
Student
Login
20
• Generalization
§ Thể hiện các chức năng, dịch vụ mà hệ thống cung cấp dưới dạng các ca sử dụng (use case)
• <
§ Thể hiện tương tác giữa hệ thống và các tác nhân (actor) bên ngoài
• <
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
90
32
Mô hình chức năng bằng Biểu đồ hoạt động (Activity diagram) Phân chia một chiều
§ Thể hiện luồng các hoạt
động mà hệ thống cần thực
hiện với mỗi ca sử dụng
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
91
Mô hình đối tượng bằng Biểu đồ lớp (Class diagram)
§ Là cách tự nhiên phản ánh các thực thể trong thế giới thực mà hệ
thống xử lý.
§ Các đối tượng càng trừu tượng thì càng khó dùng loại mô hình này.
§ Việc xác định các lớp là một quy trình khó, đòi hỏi hiểu biết sâu về
miền ứng dụng.
§ Có thể tái sử dụng các lớp đối tượng phản ánh các thực thể của miền
ứng dụng cho các hệ thống khác.
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
92
Mô hình đối tượng bằng Biểu đồ lớp (Class diagram)
§ Mỗi lớp là một hình
chữ nhật với:
— Tên đặt tại đỉnh,
— Các thuộc tính nằm ở ngăn giữa
dưới.
§ Quan hệ giữa các lớp thể hiện bằng
các đường nối giữa các đối tượng.
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
93
— Các thao tác / phương thức nằm ở ngăn
Mô hình hành vi
§ Mô hình hành vi (behavioural model) dùng để mô tả hành vi của
các thành phần bên trong hệ thống
§ Mô tả sự tương tác giữa các đối tượng để tạo ra một hành vi cụ thể
của hệ thống đã được đặc tả bằng một ca sử dung.
— Biểu đồ tuần tự
— Biểu đồ cộng tác
94
Ví dụ
Mô hình hành vi bằng Biểu đồ tuần tự (sequence diagram)
§ Tác nhân
§ Các đối tượng trong
hệ thống
§ Thông điệp được trao
procedure dispatch foreach (lineitem) if (product.value>$10K) careful.dispatch else regular.dispatch end if end for if (needsConfirmation) messenger.confirm end procedure
đổi giữa các đối
tượng trong hệ thống
để hoàn thành một ca
65
sử dụng
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
95
Mô hình hành vi bằng Biểu đồ cộng tác (collaboration diagram)
Ví dụ
§ Ngữ nghĩa giống như biểu đồ tuần tự
5: display course offerings( ) 6: display blank schedule( )
1: create schedule( )
: Course Catalog
: RegisterForCoursesForm
: Student
2: get course offerings( )
4: get course offerings( )
3: get course offerings(forSemester)
: CourseCatalogSystem
: RegistrationController
9/5/22
Bộ môn Công nghệ thông tin - Bài giảng điện tử 2020
96
68
§ Chỉ không xếp thứ tự các thông điệp
Mô hình sự kiện
§ Mô hình hóa hành vi của hệ thống đáp ứng các sự kiện
bên trong và bên ngoài.
§ Thể hiện các trạng thái hệ thống bằng các nút và các sự
kiện là các cung nối các nút.
khác.
— Khi một sự kiện xảy ra, hệ thống chuyển từ trạng thái này sang trạng thái
97
Mô hình sự kiện bằng Biểu đồ trạng thái (state chart / state machine)
§ Xác định các trạng
thái của hệ thống
§ Xác định các sự
kiện làm thay đổi
hành vi hệ thống
98
3.2.1. Tổng quan thiết kế
§ Là hoạt động thiết kế cấu hình phần cứng và cấu trúc phần mềm (gồm cả chức năng và dữ liệu) để có được hệ thống thỏa mãn các yêu cầu đề ra.
§ Mục tiêu
§ Đầu vào
— Xây dựng một giải pháp để hiện thực các yêu cầu cho phần mềm
— Tài liệu đặc tả yêu cầu (requirement document)
99
Phân biệt hai giai đoạn
§ Xác định, phân tích, đặc tả yêu cầu
— Hiểu rõ và mô tả đầy đủ Hệ thống làm gì (What?)
§ Thiết kế
— Hành vi của hệ thống, những gì có thể quan sát được từ bên ngoài
— Mô tả giải pháp Hệ thống làm như thế nào (How?)
gì và chúng tương tác với nhau như thế nào.
— Hành vi bên trong của hệ thống, bên trong hệ thống gồm những thành phần
Tổng quan thiết kế
Nội dung
Thiết kế kiến trúc
Phân rã hệ thống ra thành các thành phần (mô đun/ hệ thống con ..)
Xác định các tương tác (giao diện) giữa các hệ con
Thiết kế dữ liệu
Xây dựng mô hình biểu diễn, lưu trữ thông tin
Thiết kế thủ tục, thuật toán để thực hiện chức năng
Xác định các bước thực hiện/tính toán
Thiết kế giao diện người dùng
Giao diện thực đơn, giao diện dòng lệnh, kéo thả, …
101
3.2.2. Thiết kế kiến trúc
Một số mô hình kiến trúc: § Dữ liệu tập trung § Client – Server § Phân tầng § MVC § Mô hình hướng đối tượng
Mô hình dữ liệu tập trung
Mô hình dữ liệu tập trung
Mô hình dữ liệu tập trung
§ Ưu điểm
§ Nhược điểm
— Tiện lợi cho chia sẻ dữ liệu lớn — Sự độc lập giữa các phân hệ
— Khó thay đổi cấu trúc dữ liệu
Mô hình Client – Server
Mô hình Client – Server
Mô hình Client – Server
§ Ưu điểm
§ Nhược điểm
— Chia sẻ tài nguyên — Hiệu quả sử dụng cao — Dễ dàng mở rộng thêm dịch vụ — Dễ dàng nâng cấp — Thuận tiện cho bảo trì — Dữ liệu được giữ ở server nên được bảo vệ tốt hơn
— Số lượng client có thể tăng giảm mà phía server không biết — Nghiệp vụ và dữ liệu thường để chung phía server — Server bị hỏng
Mô hình phân tầng
§ Nhóm các chức năng có liên quan chặt chẽ vào chung một tầng (layer)
§ Các tầng được sắp xếp
chồng lên nhau
§ Chỉ tầng trên mới gọi được
tầng dưới
Mô hình phân tầng
Mô hình phân tầng
§ Ưu điểm
§ Nhược điểm — Hiệu năng — Tương tác giữa các tầng theo thiết kế
111
— Cho phép thay thế từng tầng một (giữ nguyên giao diện với các tầng khác) — Thuận tiện cho việc kiểm thử — Dễ quản lý, dễ thay đổi — Khả năng tái sử dụng cao
Mô hình phân tầng
§ Bố trí các tầng như thế nào?
Mô hình phân tầng
§ Bố trí các tầng như thế nào?
Mô hình phân tầng
§ Bố trí các tầng như thế nào?
Kiến trúc hướng đối tượng
§ Che giấu thông tin § Hệ thống được phân rã thành một tập các đối tượng có tương tác với
nhau
Mô hình MVC
§ Model View Controller — 1 Model, nhiều View — Mỗi View có một Controller
Các quyết định khi thiết kế
§ Có kiến trúc mẫu nào không? (của một ứng dụng đang được sử dụng nào
đó)
§ Làm thế nào để tổ chức ứng dụng? (nghĩa là chia ứng dụng thành các phân
hệ)
§ Tương tác giữa các phân hệ như thế nào?
§ Phân rã các phân hệ như thế nào?
§ Những tài liệu mô tả kiến trúc?
§ Làm thế nào để đánh giá?
3.2.3.Thiết kế chương trình
§ Nội dung chủ yếu trong giai đoạn thiết kế chương trình là:
— Phân chia chương trình thành các mô đun phần mềm
tin trao đổi)
— Xác định mối liên quan giữa các mô đun đó (thông qua lời gọi và các thông
— Đặc tả chi tiết thuật toán cho mỗi mô đun
— Gộp các mô đun thành chương trình
— Thiết kế các trường hợp kiểm thử mức đơn vị (unit tests)
118
3.2.4. Thiết kế các tập tin dữ liệu
§ Thiết kế tập tin dữ liệu phải dựa vào:
— Mô hình thực thể liên kết E-R
— Biểu đồ luồng dữ liệu trong đó đặc biệt quan tâm đến kho dữ liệu.
ngữ định nghĩa dữ liệu sẵn.
— Hệ Quản trị CSDL có sẵn: Mỗi hệ quản trị CSDL đều có ngôn
119
3.2.4. Thiết kế các tập tin dữ liệu
§ Đảm bảo sao cho các dữ liệu phải đủ, không trùng lặp, việc truy cập đến các tập tin dữ liệu phải thuận tiện, tốc độ nhanh. — Bổ sung thêm một số thuộc tính tính toán, lặp lại một số thuộc tính,
ghép một số thực thể (bảng)..
— Đôi khi đã chuẩn hóa dữ liệu đạt chuẩn 3 NF, BCNF.. nhưng để phục vụ các thao tác tìm kiếm, xử lý nhanh chóng, thì các chuẩn trên có thể bị phá vỡ thành các chuẩn mức thấp hơn.
120
3.2.5. Thiết kế giao diện
§ Các vấn đề khi thiết kế giao diện
§ Quy trình thiết kế giao diện
§ Tạo bản mẫu thiết kế giao diện
§ Biểu diễn thông tin
§ Sử dung màu sắc và thông báo lỗi
121
Các vấn đề khi thiết kế giao diện
§ Nên được thiết kế cho phù hợp với kĩ năng, kinh nghiệm và sự trông
đợi của người dùng tương lai của hệ thống.
§ Người dùng hệ thống thường đánh giá một hệ thống theo giao diện
thay vì chức năng.
§ Một giao diện thiết kế tồi
— Có thể dẫn đến việc một người dùng phạm những lỗi nghiêm trọng.
— Là lí do vì sao nhiều hệ thống phần mềm không bao giờ được đem ra sử dụng.
Các vấn đề khi thiết kế giao diện
§ Người sử dụng có thể gây ra lỗi khiến hệ thống sẽ hoạt động sai, những thông báo không thích hợp có thể làm người sử dụng căng thẳng và do đó, càng xảy ra nhiều lỗi hơn.
phù hợp với những khả năng của chính họ.
§ Người sử dụng là khác nhau nên những người thiết kế không nên chỉ thiết kế giao diện
§ Người sử dụng thích các loại tương tác khác nhau: ảnh, văn bản, âm thanh.
§ Khả năng nhớ tức thời của con người bị hạn chế: con người chỉ có thể nhớ ngay khoảng 7 loại thông tin. Nếu biểu diễn nhiều hơn 7 loại, thì có thể khiến người sử dụng không nhớ hết và gây ra các lỗi.
123
Các vấn đề khi thiết kế giao diện
§ Các nguyên tắc thiết kế giao diên:
sử dụng có thể hiểu được hơn là những khái niệm liên quan đến máy tính.
— Sự quen thuộc của người sử dụng: Dùng các thuật ngữ và các khái niệm mà người
nên sử dụng những khái niệm như thư mục, danh mục.
• Ví dụ: hệ thống văn phòng nên sử dụng các khái niệm như thư, tài liệu, cặp giấy … không
— Thống nhất: Hệ thống nên hiển thị ở mức thống nhất thích hợp.
• Ví dụ: các câu lệnh và menu nên có cùng định dạng.
người sử dụng có thể dự đoán các thao tác của những yêu cầu tương tư.
— Tối thiểu hoá sự bất ngờ: Nếu một yêu cầu được xử lý theo cách đã biết trước thì
124
Các vấn đề khi thiết kế giao diện
§ Các nguyên tắc thiết kế giao diện (t):
của người sử dụng và cho phép người sử dụng khôi phục lại từ chỗ bị lỗi.
Khả năng này bao gồm cho phép làm lại, hỏi lại những hành động như xoá,
huỷ …
— Khả năng phục hồi: Hệ thống nên cung cấp một số khả năng phục hồi từ lỗi
— Hướng dẫn người sử dụng như hệ thống trợ giúp, hướng dẫn trực tuyến …
nhau. Ví dụ: nên hiển thị phông chữ lớn với những người cận thị.
— Tính đa dạng: Hỗ trợ nhiều loại tương tác cho nhiều loại người sử dung khác
125
Quy trình thiết kế giao diện
§ Cần sự bàn luận giữa người dùng và nhà thiết kế
§ Phân tích người dùng
§ Làm bản mẫu
§ Đánh giá giao diện
— Người dùng sẽ làm gì với hệ thống
— Người dùng dùng thử để đánh giá hiệu quả
Tạo bản mẫu thiết kế giao diện
§ Mục tiêu của bản mẫu là cho phép người dùng có được trải nghiệm
trực tiếp đối với giao diện.
§ Nếu không có trải nghiệm trực tiếp, không thể đánh giá khả năng sử
dụng một giao diện.
§ Quy trình làm bản mẫu có thể có 2 bước: — Lúc đầu, có thể dùng bản mẫu trên giấy — Sau đó tinh chỉnh thiết kế, và phát triển các bản mẫu tự động hóa với
độ phức tạp ngày càng tăng.
Bản mẫu trên giấy
§ Dùng các bản vẽ nháp về giao diện để duyệt qua các kịch bản.
§ Dùng storyboard để trình bày một chuỗi tương tác với hệ thống.
§ Bản mẫu giấy là cách thu thập phản ứng của người dùng đối với một
đề xuất thiết kế.
Bản mẫu trên máy
§ Script-driven prototyping
Axure…
— Viết một loạt các script và màn hình bằng các công cụ như Macromedia Director,
§ Visual programming
— Khi người dùng tương tác, màn hình sẽ chuyển sang hiển thị màn hình tiếp theo.
§ Internet-based prototyping
— Dùng một ngôn ngữ chuyên dụng cho phát triển nhanh như Visual Basic.
— Dùng một trình duyệt web browser và các script kèm theo.
Đánh giá giao diện
§ Cần thực hiện một số đánh giá giao diện để đánh giá mức độ thích
hợp.
§ Đánh giá đầy đủ và toàn bộ thì quá đắt và không thực tế cho hầu hết
các hệ thống.
§ Về lí tưởng, một giao diện cần được đánh giá theo một đặc tả về khả
năng sử dụng. Tuy nhiên, người ta hiếm khi viết các đặc tả đó.
Đánh giá giao diện
§ Câu hỏi điều tra để lấy phản hồi của người dùng.
§ Quay video về việc sử dụng hệ thống rồi sau đó đánh giá nội dung.
§ Cài các đoạn mã thu thập thông tin về các tiện ích được sử dụng và
lỗi của người dùng.
§ Phần mềm có chức năng thu thập phản hồi trực tuyến của người
dùng.
Biểu diễn thông tin
§ Biểu diễn thông tin có liên quan tới việc hiển thị các thông tin
trong hệ thống tới người sử dụng. Thông tin có thể được biểu diễn
một cách trực tiếp hoặc có thể được chuyển thành nhiều dạng
hiển thị khác như: dạng đồ hoạ, âm thanh
132
Biểu diễn thông tin
§ Hai phần cần xem xét khi thiết kế giao diện:
— Người dùng đưa dữ liệu/thông tin vào hệ thống như thế nào
• Các kiểu tương tác để người dùng đưa dữ liệu vào
— Hệ thống cung cấp và biểu diễn dữ liệu ra cho người dùng như thế nào
• Cách biểu diễn thông tin ra cho người dùng
Một số kiểu tương tác
1. Thao tác trực tiếp 2. Lựa chọn bằng thực đơn 3. Điền biểu mẫu (form) 4. Ngôn ngữ dòng lệnh 5. Ngôn ngữ tự nhiên
Một số kiểu tương tác
Kiểu tương tác
Nhược điểm chính
Ví dụ ứng dụng
Ưu điểm chính
(Thao tác trực tiếp) Direct manipulation
Tương tác nhanh và trực quan, dễ học
Có thể khó cài đặt. Chỉ thích hợp khi có ẩn dụ hình ảnh cho các tác vụ và đối tượng.
Trò chơi điện tử Các hệ thống dùng drag-n-drop
Đa số các hệ thống thông dụng
(Lựa chọn bằng thực đơn) Menu selection
Tránh lỗi người dung, không phải gõ nhiều
Chậm chạp đối với người dùng nhiều kinh nghiệm. Có thể phức tạp nếu có nhiều lựa chọn menu.
Khai thuế, xử lý nợ cá nhân
(Điền biểu mẫu) Form fill-in
Nhập dữ liệu đơn giản, dễ học, kiểm tra được
Tốn không gian màn hình. Gây rắc rối khi các lựa chọn của người dùng không khớp với các trường của form.
hệ điều hành
Mạnh và linh động
Khó học xử lý lỗi kém
Information retrieval systems
(Ngôn ngữ dòng lệnh) Command language
(Ngôn ngữ tự nhiên) Natural language
Cần gõ nhiều. Các hệ thống hiểu ngôn ngữ tự nhiên không đáng tin cậy.
Đáp ứng được người dùng không chuyên Đễ mở rộng
Biểu diễn thông tin
§ Người dùng quan tâm đến giá trị hay mối quan hệ dữ liệu § Tốc độ thay đổi giá trị § Hiển thị dạng văn bản/ số hoặc đồ hoạ
Biểu diễn thông tin
§ Trình bày thông tin hệ thống như thế nào cho người dùng.
§ Thông tin có thể được trình bày trực tiếp (ví dụ text trong một trình
soạn thảo) hoặc được biến đổi thành một dạng biểu diễn khác (ví dụ
dạng đồ họa)
Presentation software
Information to be displayed
Display
Biểu diễn thông tin
§ Thông tin tĩnh
— Khởi tạo ở đầu phiên làm việc (session) Không thay đổi trong suốt session.
§ Thông tin động
— Có thể là số hoặc văn bản text.
— Thay đổi trong session và phải được thông báo với người dùng.
— Có thể là số hoặc văn bản text.
Biểu diễn thông tin
Jan 2 842
Feb 285 1
Mar 3 164
April 2 789
May 12 73
June 2 83 5
§ Biểu diễn số - Digital presentation
— Ngắn gọn
4000
— Chiếm ít không gian màn hình;
3000
— Cho biết giá trị chính xác.
2 000
§ Biểu diễn tương tự - Analogue presentation
— Nhanh chóng lấy được ấn tượng về một giá trị
1 000
— Có thể biểu diễn các giá trị tương đối;
0
Jan
Feb
Mar
April May
June
— Dễ thấy các giá trị dữ liệu đặc biệt.
Biểu diễn thông tin
1
0
10
20
4
2
3
Dial with needle
Pie char t
Ther mometer
Horizontal bar
Sử dụng màu sắc
§ Màu sắc bổ sung thêm một chiều cho một giao diện và giúp
người dùng hiểu các cấu trúc thông tin phức tạp.
§ Các lỗi thường gặp trong việc dùng màu sắc trong thiết kế giao
diện ?
Sử dụng màu sắc
§ Dùng kí hiệu màu để hỗ trợ công việc người dùng đang cố làm.
§ Dùng sự thay đổi màu để báo hiệu thay đổi trạng thái hệ thống. Dùng kí hiệu màu một cách cẩn
trọng và nhất quán.
— Làm nổi bật những điểm người dùng cần chú ý
dạng khác để tránh người dùng nhầm lẫn các thông báo màu đỏ là thông báo lỗi.
§ Hạn chế số màu và mức độ sặc sỡ. Cẩn thận về hiệu ứng cặp đôi của màu sắc.
— Nếu màu đỏ được dùng cho các thông báo lỗi không nên dùng màu đỏ cho các thông báo
xanh lam.
— Một số tổ hợp màu gây khó đọc. Ví dụ người ta không thể cùng lúc chú ý cả màu đỏ và màu
Thông báo lỗi
§ Thiết kế thông báo lỗi là phần việc quan trọng
§ Nội dung thông báo nên lịch sự, rõ ràng, nhất quán và có tính xây
dựng
§ Thiết kế thông báo lỗi sao cho phù hợp với kỹ năng và kinh nghiệm
của người dùng.
3.3.1. Khái niệm
§ Lập trình là quá trình chuyển đổi từ thiết kế chi tiết sang mã lệnh
§ Lựa chọn ngôn ngữ lập trình — Phụ thuộc vào cấu hình máy
— Phụ thuộc vào số lượng ngôn ngữ lập trình sẵn có
— Phụ thuộc vào thói quen sử dụng ngôn ngữ lập trình
— Phụ thuộc vào khách hàng
144
3.3.1. Khái niệm
§ Người lập trình cần xây dựng thông tin tối thiểu cho một mô-đun
chương trình, bao gồm: — Tên mô-đun — Mô tả vắn tắt các công việc mô-đun phải thực hiện — Tên lập trình viên — Ngày viết — Ngày chỉnh sửa — Danh sách các tham số — Danh sách các biến
145
3.3.2. Phương pháp lập trình
§ Lập trình tuyến tính
§ Lập trình cấu trúc
§ Lập trình Hướng đối tượng
146
Lập trình tuyến tính
§ Chương trình được viết tuần tự với các câu lệnh thực hiện từ đầu đến
cuối.
§ Khó biểu diễn cú pháp có cấu trúc (for, while..)
§ Thiếu khả năng khai báo biến cục bộ
§ Ngôn ngữ lập trình: assembly,..
147
Lập trình cấu trúc
§ Phương pháp lập trình thủ tục hay lập trình cấu trúc:
chức năng nhỏ này lại được chia tiếp thành các chức năng nhỏ hơn nữa
cho đến khi được các khối (hàm) chương trình đủ nhỏ.
— Hệ thống chia các chức năng (hàm) thành các chức năng nhỏ hơn. Các
— Việc phân tích này được thể hiện trực quan theo sơ đồ khối.
§ Chương trình = Cấu trúc dữ liệu + giải thuật
— Chương trình được tổ chức thành các chương trình con.
148
Lập trình cấu trúc
§ Lập trình có cấu trúc sử dụng các lệnh có cấu trúc, sử dụng chương trình con,
biến cục bộ.
§ Các ngôn ngữ hỗ trợ lập trình hướng cấu trúc phổ biến là Pascal, C,
Foxpro
§ Lập trình hướng cấu trúc đã trở nên rất phổ biến trong những năm 80 và đầu những năm 90, nhưng do những hạn chế và những nhược điểm rõ ràng khi lập trình hệ thống lớn, lập trình hướng cấu trúc đã dần bị thay thế bằng phương pháp lập trình hướng đối tượng.
149
Lập trình Hướng đối tượng
§ Dữ liệu + Hành vi thao tác với dữ liệu = Đối tượng
§ Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo, xử lý
dữ liệu (bên trong của nó), và gửi ra hay trả lời đến các đối tượng
khác hay đến môi trường.
§ Các ngôn ngữ hỗ trợ lập trình hướng đối tượng phổ biến là: C#, C++,
Java, Perl, PHP, Smalltalk..
150
3.3.3. Ngôn ngữ lập trình
§ Đối với từng dự án phần mềm khác nhau người ta sẽ lựa chọn ngôn ngữ lập trình phù hợp. Tuy nhiên, ngôn ngữ lập trình được lựa chọn cần có các đặc trưng sau:
— Dễ dịch thiết kế sang chương trình
— Có trình biên dịch hiệu quả
— Khả chuyển chương trình gốc
— Có sẵn công cụ phát triển
— Dễ bảo trì
151
Lựa chọn ngôn ngữ lập trình
§ Dựa vào:
— Đặc trưng của ngôn ngữ:
con trỏ, đệ qui, hỗ trợ hướng đối tượng, thư viện phong phú..
• Năng lực (kiểu biến, các cấu trúc): Có cấu trúc, câu lệnh phong phú, hỗ trợ nhiều kiểu dữ liệu, hỗ trợ
• Tính khả chuyển: khi thay đổi phần cứng, thay đổi OS
khả năng tối ưu cao, khả năng khai thác các tập lệnh, kiến trúc phần cứng mới.
• Mức độ hỗ trợ của các công cụ (editor, debugger, linker, make..): nhằm hỗ trợ biên dịch tốc độ cao,
— Miền ứng dụng của ngôn ngữ
— Năng lực, kinh nghiệm của nhóm phát triển
— Yêu cầu của khách hàng
152
Lựa chọn ngôn ngữ lập trình
§ Các đặc trưng của ngôn ngữ lập trình sẽ quyết định miền ứng dụng của ngôn ngữ. Miền ứng dụng là yếu tố chính để chúng ta lựa chọn ngôn ngữ cho một dự án phần mềm.
§ Ngôn ngữ FORTRAN: có khả năng tính toán với độ chính xác cao và thư viện toán học phong phú thường được sử dụng trong các dự án phần mềm trong lĩnh vực khoa học kỹ thuật.
§ COBOL: là ngôn ngữ cho ứng dụng kinh doanh và khai thác CSDL lớn. Tuy nhiên, hiện nay các ngôn ngữ thế hệ thứ tư đã dần dần chiếm ưu thế so với COBOL.
153
Lựa chọn ngôn ngữ lập trình
§ C: là ngôn ngữ hay được chọn cho việc phát triển phần mềm hệ
thống
§ LISP, PROLOG hay OPS5: là ngôn ngữ thường được dùng trong các ứng dụng trí tuệ nhân tạo thời trước, ngày nay đa phần là Python.
§ C++: Với đặc trưng hướng đối tượng, tính hiệu quả thực hiện cũng như có nhiều công cụ và thư viện, C++ hiện đang được sử dụng rộng rãi trong lĩnh vực phát triển các ứng dụng nghiệp vụ.
154
Lựa chọn ngôn ngữ lập trình
§ Java: là ngôn ngữ hướng đối tượng đang được sử dụng rộng rãi
cho phát triển các dịch vụ Web và phần mềm nhúng vì các lý do
độ an toàn cao, tính trong sáng, tính khả chuyển và hướng thành
phần.
§ ASP.NET, JavaScript: Các ngôn ngữ này hiện đang được sử dụng
rộng rãi trong lập trình Web.
155
3.3.4. Phong cách lập trình
§ Phong cách lập trình được coi là tốt khi:
§ Tuân theo chuẩn:
— Tuân theo các chuẩn thông dụng — Chú giải đầy đủ mỗi khi không tuân theo chuẩn
è Nhằm hướng tới phong cách làm cho mã nguồn: dễ hiểu, dễ sửa
— Cách đặt tên hàm và biến — Cách xây dựng câu lệnh, cấu trúc chương trình — Các viết chú thích — Cách xử lý lỗi
đổi, an toàn (ít lỗi)
156
Cách đặt tên hàm và biến
§ Đặt tên biến, tên hàm có nghĩa, gợi nhớ
§ Sử dụng các ký hiệu, từ tiếng Anh có nghĩa
§ Viết tên hàm dễ đọc: ví dụ viết DateOfBirth thay cho dateofbirth
§ Tránh đặt tên quá dài
§ Thống nhất cách dùng biến trong toàn bộ chương trình
157
Cách xây dựng cấu trúc chương trình
§ Chương trình cần được chia thành nhiều mô đun (hàm). Không viết
hàm quá dài:
— Không quá 25 dòng
— Tạo ra các hàm thứ cấp để giảm độ dài từng hàm
đồng thời hoạt động của nhiều biến (thông thường một mô đun không quá 7
biến cục bộ).
— Không dùng quá nhiều biến cục bộ: vì lập trình viên khó có thể theo dõi
158
Cách viết chú thích
§ Mọi thứ trong chương trình đều được chú thích
— Mục đích sử dụng của các biến
— Chức năng của khối lệnh, câu lệnh
• Các lệnh điều khiển
• Các lệnh phức tạp
— Chú thích các mô đun
Tham số, giá trị trả lại (giao diện) - các mô đun thuộc cấp
• Mục đích, chức năng của mô đun
•
• Cấu trúc, thuật toán
• Nhiệm vụ của các biến cục bộ - tác giả, người kiểm tra, thời gian
159
Cách xử lý lỗi
§ Nhất quán trong xử lý lỗi:
— Phân loại lỗi
§ Có thể phát hiện lỗi trong khi thực hiện, ví dụ lỗi chia cho 0. Các
hàm thư viện nên tránh việc tự đưa ra thông báo lỗi.
— Thống nhất định dạng thông báo lỗi,…
160

