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)

• <> − always use

§ Thể hiện tương tác giữa hệ thống và các tác nhân (actor) bên ngoài

• <> − sometime use

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