1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Công nghệ phần mềm: Phần 2 - ĐH Phạm Văn Đồng

57 26 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 57
Dung lượng 1,2 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

(NB) Tiếp nội dung phần 1 Bài giảng Công nghệ phần mềm: Phần 2 cung cấp các nội dung chính như: Thiết kế phần mềm, cài đặt, kiểm thử và bảo trì phần mềm. Mời các bạn cùng tham khảo để nắm chi tiết nội dung của bài giảng.

Trang 1

58

Chương 3 THIẾT KẾ PHẦN MỀM

Thời lượng: 08 tiết lý thuyết

Kết thúc chương này, sinh viên có thể:

- Hiểu được tại sao phải thiết kế phần mềm

- Biết các kiến thức cơ bản về 3 phần thiết kế: dữ liệu, xử lý, giao diện

- Biết các phương pháp thiết kế phần mềm

- Biết được khi nào thiết kế có chất lượng tốt

3.1 TỔNG QUAN

3.1.1 Khái niệm thiết kế phần mềm

Trong thiết kế, chúng ta định hình hệ thống và tìm dạng thức của nó (kể cả kiến trúc) mà đáp ứng được mọi yêu cầu, cả yêu cầu phi chức năng và các ràng buộc khác – được đặt ra cho hệ thống đó

Bản chất 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ế Từ những mô tả quan niệm về toàn bộ phần mềm, việc làm mịn liên tục dẫn đến một biểu diễn thiết kế rất gần với cách biểu diễn của chương trình nguồn để có thể ánh xạ vào một ngôn ngữ lập trình cụ thể

Xét một cách chi tiết mục tiêu của thiết kế là:

- Thu được sự hiểu biết sâu về các yêu cầu phi chức năng và các ràng buộc có liên quan tới ngôn ngữ lập trình, sử dụng lại thành phần, các hệ điều hành, các công nghệ phân tán, các công nghệ CSDL, các công nghệ giao diện người dùng, các công nghệ quản lý các giao dịch

- Tạo ra một đầu vào thích hợp và xuất phát điểm cho các hoạt động cài đặt tiếp theo sau bằng cách nắm bắt các yêu cầu về mỗi hệ thống cụ thể, các giao diện và các lớp

- Có khả năng phân rã việc cài đặt thành các mẫu nhỏ dễ quản lý hơn được nhiều đội phát triển khác nhau xử lý và có thể tiến hành đồng thời Điều này sẽ có ích trong các trường hợp khi mà không thể tiến hành sự phân rã giữa các kết quả thu được từ nắm bắt các yêu cầu hoặc phân tích

Trang 2

59

- Nắm bắt sớm các giao diện chủ yếu giữa các hệ thống con trong vòng đời của phần mềm Điều này sẽ có ích khi chúng ta suy luận về kiến trúc và khi chúng ta

sử dụng các giao diện như những công cụ đồng bộ các phát triển khác nhau

- Trực quan hóa và suy luận thiết kế bằng cách sử dụng một hệ thống các ký pháp chung

- Tạo ra một sự trừu tượng hóa liên tục của việc cài đặt của hệ thống, tức là cài đặt

sự làm mịn dần thiết kế bằng cách đắp thịt vào khung xương nhưng không thay đổi cấu trúc của nó

Hoạt động thiết kế là một hoạt động đặc biệt:

- Là quá trình sáng tạo, đòi hỏi có kinh nghiệm và sự nhanh nhạy, sáng tạo

- Cần phải được thực hành và học bằng kinh nghiệm, bằng khảo sát các hệ thống tồn tại, chỉ học bằng sách vở là không đủ

3.1.2 Tầm quan trọng

Tầm quan trọng của thiết kế có thể được phát biểu bằng một từ “chất lượng” Thiết kế là nơi chất lượng phần mềm được nuôi dưỡng trong quá trình phát triển: cung cấp cách biểu diễn phần mềm có thể được xác nhận về chất lượng, là cách duy nhất mà chúng ta 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ùng

Trang 3

60

Hình 3 1: Luồng thông tin trong thiết kế

Thiết kế phần mềm là công cụ giao tiếp làm cơ sở để có thể mô tả một cách đầy

đủ các dịch vụ của hệ thống, để quản lý các rủi ro và lựa chọn giải pháp thích hợp Thiết

kế phần mềm phục vụ như một nền tảng cho mọi bước kỹ nghệ phần mềm và bảo trì: Không có thiết kế, ta có nguy cơ dựng lên một hệ thống không ổn định – một hệ thống

sẽ thất bại khi có một thay đổi nhỏ; một hệ thống khó có thể mà thử được; một hệ thống không thể nào xác định được chất lượng chừng nào chưa đến cuối tiến trình kiểm thử; khi thời gian con rất ngắn mà không ít tiền đã phải chi ra

Thiết kế tốt là bước quan trọng đầu tiên để đảm bảo chất lượng phần mềm

3.1.3 Kết quả thiết kế phần mềm

Kết quả của việc thiết kế sản phẩm nói chung là các bản vẽ: bản vẽ nhà, bản vẽ máy bay, “bản vẽ phần mềm”,…Các bản vẽ này cung cấp các thông tin chi tiết về cấu trúc của sản phẩm tương ứng Trong lĩnh vưc tin học, thuật ngũ “bản vẽ phần mềm” không được sử dụng mà thay vào đó là thuật ngữ mô hình phần mềm với cùng ý nghĩa

Mô hình phần mềm cung cấp các thông tin chi tiết về 3 thành phần phần mềm:

- Thành phần giao diện

Trang 4

61

- Thành phần xử lý

- Thành phần dữ liệu

Thông tin về thành phần giao diện bao gồm các thông tin sau:

- Nội dung và hình thức trình bày các màn hình giao tiếp của phẩn mềm

- Hệ thống các thao tác mà người dùng có thể thực hiện trên một màn hình giao tiếp và xử lý tương ứng của phẩn mềm

Thông tin về thành phần xử lý bao gồm các thông tin sau:

- Hệ thống các kiểu dữ liệu được sử dụng trong phần mềm Các kiểu dữ liệu này

mô tả cách tổ chức lưu trữ dữ liệu trong bộ nhớ chính của phần mềm

- Hệ thống các hàm được sử dụng trong phần mềm Các hàm này sẽ thể hiện tương ứng việc thực hiện một công việc nào đó của thế giới thực trên máy tính (kiểm tra tính hợp lệ việc cho mượn sách, ghi vào sổ việc cho mượn sách,…)

Thông tin về thành phần dữ liệu bao gồm các thông tin liên quan đến cách thức

tổ chức lưu trữ các dữ liệu (nội dung của công việc ghi chép vào sổ sach trong thế giới thực) trên bộ nhớ phụ

- Dạng lưu trữ được sử dụng của phần mềm

- Hệ thống các thành phần lưu trữ cùng với quan hệ giữa chúng

Bảng sau mô tả tóm tắt các kết quả cần có khi thiết kế các thành phần phần mềm

Trang 5

62

Bảng 3 1: Các kết quả cần có khi thiết kế các thành phần phần mềm

Thành phần giao diện Hệ thống các màn hình

giao diện

Sơ đồ các màn hình Danh sách các màn hình Nội dung từng màn hình Biến cố và xử lý trên từng màn hình

Thành phần xử lý Hệ thống các hàm cùng

với cấu trúc dữ liệu tương ứng

Danh sách các hàm Danh sách các kiểu dữ liệu

Mô tả chi tiết từng hàm

Mô tả chi tiết các kiểu dữ liệu Thành phần dữ liệu Tổ chức lưu trữ trên bộ

Trang 6

63

Với phương pháp trực tiếp, thiết kế phần mềm là quá trình cho phép chuyển đổi

từ các yêu cầu (kết quả giai đoạn xác định yêu cầu) đến mô hình phần mềm tương ứng

Mục tiêu chính của việc thiết kế là mô tả các thành phần của phần mềm (thành phần giao diện, thành phần xử lý, thành phần dữ liệu) tương ứng với các yêu cầu của phần mềm (yêu cầu chức năng nghiệp vụ, yêu cầu chức năng hệ thống, yêu cầu phi chức năng)

b Phương pháp gián tiếp

Được áp dụng với các quy trình có giai đoạn phân tích Với phương pháp này việc thiết kế chỉ nhận một phần các kết quả chuyển giao trực tiếp từ giai đoạn xác định yêu cầu, phần chính yếu sẽ được nhận gián tiếp qua giai đoạn phân tích

Mô hình phần mềm sẽ được xây dựng tương ứng theo các mô hình trong giai đoạn phân tích Cách tiếp cận này sẽ thuận lơi trong đa số trường hợp với các phần mềm quy mô lớn Với phương pháp gián tiếp, thiết kế phần mềm là quá trình cho phép chuyển

từ mô hình thế giới thực (kết quả giai đoạn phân tích) đến mô hình phần mềm tương ứng

Mục tiêu chính của việc thiết kế là mô tả các thành phần của phần mềm (thành phần giao diện, thành phần xử lý, thành phần dữ liệu) tương ứng với các mô hình của thế giới thực (mô hình xử lý, mô hình dữ liệu)

3.1.5 Thiết kế phần mềm và các yêu cầu chất lượng

Khi thực hiện thiết kế, mỗi yêu cầu chất lượng có những yêu cầu riêng trên các thành phần: dữ liệu, xử lý, giao diện Các yêu cầu này được mô tả trong các bảng bên dưới:

Trang 7

64

Bảng 3 2: Thiết kế dữ liệu và yêu cầu chất lượng

Yêu cầu chất

lượng

Yêu cầu trên thành phần dữ liệu của phần mềm

Tính đúng đắn Phù hợp với mô hình dữ liệu (giai đoạn phân tích) hoặc theo

đúng yêu cầu (giai đoạn xác định yêu cầu) nếu bỏ qua giai đoạn phân tích

Tính tiến hóa Có dự kiến về các thay đổi trên nội dung dữ liệu cần lưu trữ và

các ràng buộc tương ứng Tính hiệu quả Lưu trữ ít tốn chỗ, truy xuất nhanh

Bảng 3 3: Thiết kế xử lý và yêu cầu chất lượng

Yêu cầu chất

lượng

Yêu cầu trên thành phần xử lý của phần mềm

Tính đúng đắn Phù hợp với mô hình xử lý (giai đoạn phân tích) hoặc theo đúng

yêu cầu (giai đoạn xác định yêu cầu) nếu bỏ qua giai đoạn phân tích

Tính tiến hóa Có dự kiến về các thay đổi trên các quy định, quy tắc tính toán Tính hiệu quả Tốc độ thực hiện nhanh

Tính tương thích Cho phép chuyển đổi dữ liệu với các phần mềm khác

Trang 8

65

Bảng 3 4: Thiết kế giao diện và yêu cầu chất lượng

Yêu cầu chất

lượng

Yêu cầu trên thành phần giao diện của phần mềm

Tính đúng đắn Phù hợp với mô hình xử lý (nếu có thực hiện giai đoạn phân

tích) hoặc theo đúng yêu cầu (giai đoạn xác định yêu cầu) nếu

bỏ qua giai đoạn phân tích Tính tiến hóa Có dự kiến về các thay đổi trên thành phần dữ liệu và xử lý Tính tiện dụng Tự nhiên, dễ học, dễ sử dụng, đầy đủ thông tin

Tính hiệu quả Thao tác thực hiện nhanh, sử dụng tối ưu các không gian

Tính tương thích Sự nhất quán giữa các màn hình

3.1.6 Chất lượng thiết kế

Không có cách nào hay để xác định được thể nào là thiết kế tốt Tiêu chuẩn dễ bảo trì là tiêu chuẩn tốt cho người dùng Một thiết kế dễ bảo trì có thể thích nghi với việc cải biên các chức năng và việc thêm các chức năng mới Một thiết kế như thế phải

dễ hiểu và việc sửa đổi chỉ có hiệu ứng cục bộ Các thành phần thiết kế phải kết dính (cohesive) theo nghĩa là tất cả các bộ phận trong thành phần phải có một quan hệ logic chặt chẽ, các thành phần ghép nối (coupling) với nhau là lỏng lẻo Ghép nối càng lỏng lẻo thì càng dễ thích nghi, nghĩa là càng dễ sửa đổi để phù hợp với hoàn cảnh mới

Để xem một thiết kế có tốt hay không, người ta tiến hành thiết lập một số độ đo chất lượng thiết kế:

a Sự kết dính (Cohesion)

Sự kết dính của một module là độ đo về tính khớp lại với nhau của các thành phần trong module đó Nếu một module chỉ thực hiện một chức năng logic hoặc là một thực thể logic, tức là tất cả các bộ phận của module đó đều tham gia vào việc thực hiện một công việc thì đọ kết dính là cao Nếu một hoặc nhiều bộ phận không tham gia trực tiếp vào việc chức năng logic đó thì mức độ kết dính của nó là thấp Thiết kế là tốt khi

độ kết dính cao Khi đó chúng ta sẽ dễ dàng hiểu được từng module và việc sửa chữa một module sẽ không (ít) ảnh hưởng tới các module khác

Trang 9

66

Constantine và Yourdon định ra 7 mức kết dính theo thứ tự tăng dần như sau:

1 Kết dính gom góp: các công việc không liên quan với nhau, song lại 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, chẳng hạn: vào/ra, xử lý lỗi,… được đặt vào cùng một 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, chẳng hạn như các thao tác khởi tạo được bó lại với nhau

4 Kết dính thủ tục: các phần tử trong module được ghép lại trong một dãy điều khiển

5 Kết dính truyền thông: tất cả các phần tử của module cùng thao tác trên một dữ liệu vào và đưa ra cùng một dữ liệu ra

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

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

b Sự ghép nối (Coupling)

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

HỆ thống có nối ghép cao thì các module phụ thuộc lẫn nhau lớn Hệ thống nối ghép lỏng lẻo thì các module là độc lập hoặc là tương đối độc lập với nhau và chúng ta sẽ dễ bảo trì nó

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 chung nhau và ghép nối đ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 giấu trong các

Trang 10

2 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

3 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

4 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 đó

5 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

6 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

Ưu điểm của thiết kế hướng đối tượng là do bản chất che giấu thông tin của đối tượng dẫn tới việc tạo ra các hệ ghép nối lỏng lẻo

Việc thừa kế trong hệ thống hướng đối tượng lại dẫn tới một dạng khác của ghép nối, ghép nối giữa các đối tượng mức cao và đối tượng kế thừa nó

c Sự hiểu được (Understandability)

Sự hiểu được của thiết kế liên quan tới một số đặc trưng sau đây:

- 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? Tên

có nghĩa là những tên phản ánh tên của thực thể trong thế giới thực được mô hình bởi thành phần đó

- 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?

Trang 11

68

Độ phức tap cao ám chỉ nhiều quan hệ giữa các thành phần khác nhau của thành phần thiết kế đó và một cấu trúc logic phức tạp mà nó dính líu đến độ sâu lồng nhàu của cấu trúc if-then-else Các thành phần phức tạp là khó hiểu, vì thế người thiết kế nên làm cho thiết kế thành phần càng đơn giản càng tốt

Đa số công việc về đo chất lượng thiết kế được tập trung vào cố gắng đo độ phức tạp của thành phần và từ đo thu được một vài độ đo về sự dễ hiểu của thành phần Độ phức tạp phản ánh độ dễ hiểu, những cùng có một số nhân tố khác ảnh hưởng đến độ dễ hiểu, chẳng hạn như tổ chức dữ liệu và kiểu cách mô tả thiết kế Các số đo độ phức tạp

có thể chỉ cung cấp một chỉ số cho độ dễ hiểu của một thành phần

d Sự thích nghi được (Adaptability)

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 Một thành phần có thể là ghép nối lỏng lẻo theo nghĩa là chỉ hợp tác với các thành phần khác thông qua việc truyền các thông bá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

Để có độ thích nghi thì hệ thống còn cần phải tự chứa Muốn là tự chứa một cách hoàn toàn thì một hệ thống không nên dùng các thành phần khác được xác định ngoại lai Tuy nhiên, điều đó lại mâu thuẫn với kinh nghiệm nói rằng các thành phần hiện có nên là dùng lai được Vậy là cần có một cân bằng giữa tính ưu việt của sự dùng lại các thành phần và sự mất mát tính thích nghi được của hệ thống

Một trong những ưu điểm chính của kế thừa trong thiết kế hướng đối tượng là các thành phần này có thể sẵn sàng thích nghi được Cơ cấu thích nghi được này không dựa trên việc cải biên thành phần đã có mà dựa trên việc tạo ra một thành phần mới thừa

kế các thuộc tính và các chức năng của thành phần đó Chúng ta chỉ cần thêm các thuộc tính và chức năng cần thiết cho thành phần mới Các thành phần khác dựa trên thành phần cơ bản đó sẽ không bị ảnh hưởng gì

Trang 12

- Lưu trữ dưới dạng tập tin

Cách tiếp cận dùng CSDL rất thông dụng cho các phần mềm chú trọng nhiều đến việc lưu trữ các thông tin được tiếp nhận trong quá trình sử dụng phần mềm

3.2.2 Kết quả của thiết kế dữ liệu

Cách thức tổ chức lưu trữ dữ liệu của phần mềm được mô tả thông qua hai loại thông tin sau:

- Thông tin tổng quát

Cung cấp góc nhìn tổng quan về các thành phần lưu trữ

+ Danh sách các bảng dữ liệu: Việc lưu trữ cần sử dụng bao nhiêu bảng dữ liệu

và đó là các bảng nào?

+ Danh sách các mối quan hệ: Các bảng dữ liệu có quan hệ, có mối liên kết giữa chúng ra sao?

- Thông tin chi tiết

+ Danh sách các thuộc tính của từng thành phần: Các thông tin cần lưu trữ của thành phần

+ Danh sách các miền giá trị toàn vẹn: Các quy định về tính hợp lệ của các thông tin được lưu trữ

Trang 13

- Phương pháp gián tiếp

Từ các yêu cầu đã xác định, tạo lập mô hình quan niệm dữ liệu, sau đó dựa vào

mô hình này để tạo lập lược đồ quan hệ, bảng thuộc tính, bảng miền giá trị Cách tiếp cận này dễ thực hiện hơn vì mô hình quan niệm dữ liệu thường đơn gian (chứa các thành phần dữ liệu bản chất nhất của phần mềm)

Tương ứng với ba yêu cầu của phần mềm, quá trình thiết kế dữ liệu bao gồm ba bước lớn:

- Thiết kế với yêu cầu chất lượng

+ Vẫn đảm bảo tính đúng đắn nhưng thỏa mãn thêm các yêu cầu chất lượng khác (Tiến hóa, tốc độ nhanh, lưu trữ, tối ưu)

+ Cần chú ý đảm bảo tính đúng đắn khi cải tiến lược đồ quan hệ

- Thiết kế với yêu cầu hệ thống

+ Vẫn đảm bảo tính đúng đắn và các yêu cầu chất lượng khác nhưng thỏa mãn thêm các yêu cầu hệ thống (phân quyền, cấu hình phần cứng, môi trường phần mềm,…)

3.2.4 Thiết kế dữ liệu và yêu cầu về chất lượng

Mục tiêu: Xem xét đánh giá lược đồ quan hệ theo các yêu cầu về chất lượng và

tiến hành cập nhật lại sơ đồ để bảo đảm các tiêu chuần về chất lượng Ngoài tính đúng

Trang 14

Chỉ giới hạn xem xét trên hai loại thay đổi chính

+ Các tham số trong các quy định, biểu mẫu:

Ví dụ: Tuổi tối thiểu, tuổi tối đa của độc giả; Đơn giá phạt khi trả sách trễ hạn + Thuộc tính có giá trị rời rạc là các thuộc tính mà miền giá trị chỉ bao gồm một

số giá trị nhất định Các giá trị này thông thường thuộc về một tập hợp có độ biến động rất ít trong quá trình sử dụng phần mềm

Ví dụ: Thư viện chỉ có 3 loại độc giả: A, B, C

Cách thực hiện thay đổi

 Thay đổi các hằng số

Bổ sung bảng THAM_SO dùng lưu trữ các hằng Có 3 phương pháp để thực hiện:

- Sử dụng một bảng THAM_SO với cấu trúc cố định như sau:

THAM_SO(MTS, GiaTri, GhiChu)

+ Với phương pháp này, mỗi hằng được lưu trữ trong một dòng của bảng và có chung một kiểu dữ liệu (thông thường kiểu chuỗi được chọn)

+ Khuyết điểm của phương pháp này là xử lý liên qua có sử dụng tham số sẽ phải chuyển đổi tham số về kiểm thích hợp trước khi sử dụng

- Sử dung nhiều bảng THAM_SO tương ứng với nhiều kiểu khác nhau (các bảng vẫn có cấu trúc cố định)

THAM_SO_SO(MTS, GiaTri, GhiChu)

THAM_SO_CHUOI(MTS, GiaTri, GhiChu)

THAM_SO_NGAY(MTS, GiaTri, GhiChu)

+ Phương pháp này hạn chế được khuyết điểm của phương pháp trên, tuy nhiên việc đọc/ghi sẽ phức tạp hơn phương pháp trên (tùy thuộc vào kiểu để chọn bảng thích hợp)

Trang 15

 Thay đổi miền giá trị

Tách các thuộc tính có giá trị rời rạc thành một quan hệ trong lược đồ quan hệ Khi đó người dùng trong quá trình sử dụng hoàn toàn có thể cập nhật lại tập hợp các giá trị này tương ứng với các biến động thực tế trong thế giới thực

Xét phần mềm quản lý học sinh cấp 3 với 2 yêu cầu sau:

- Tiếp nhận hồ sơ học sinh: chỉ tiếp nhận các học sinh có độ tuổi từ 15 đến 20

- Xếp lớp: xếp học sinh vào khối, lớp tương ứng Trường có 3 khối, mỗi khối có 5 lớp, mỗi lớp tối đa 40 học sinh

Khi đó, kết quả của thiết kế dữ liệu với tính tiến hóa như sau:

KHOI(MaKhoi, TenKhoi)

LOP(MaLop, MaKhoi, TenLop)

HOC_SINH(MaHS, HoTen, NgaySinh, GioiTinh, MaLop)

THAM_SO(MTS, GiaTri, GhiChu)

Nội dung bảng THAM_SO:

Trang 16

73

TS1 15 Tuổi tối thiểu của học sinh TS2 20 Tuổi tối đa của học sinh TS3 40 Sĩ số tối đa của lớp

b Tính hiệu quả (tốc độ)

Phạm vi xem xét

- Chỉ giới hạn xem xét việc tăng tốc độ thực hiện của phần mềm bằng cách bổ sung thêm các thuộc tính vào bảng dùng lưu trữ các thông tin đã tính toán trước (theo quy tắc nào đó từ các thông tin gốc đã được lưu trữ)

Ví dụ: số sách đang mượn của độc giả

- Các thông tin này phải được tự động cập nhật khi có bất kỳ thay đổi thông tin gốc liên quan

Ví dụ: độc giả mượn thêm hoặc trả sách

Các bước tiến hành

- Bước 1: Chọn một yêu cầu và xem xét cần bổ sung thông tin gì trên bộ nhớ phụ

để tăng tốc độ thực hiện của xử lý liên quan (các thông tin xử lý phải đọc mà không cần thực hiện việc tính toán)

- Bước 2: Quay lại Bước 1 cho đến khi đã xem xét đầy đủ các yêu cầu

c Tính hiệu quả (lưu trữ)

Phạm vi xem xét

- Chỉ giới hạn xem xét việc tối ưu hóa lưu trữ của phần mềm thông qua việc tổ chức lại CSDL Các kỹ thuật tối ưu khác: nén, mã hóa,… sẽ không được trình bày

- Tổ chức lại CSDL sẽ chú trọng đến các bảng sau:

+ Các bảng có khối lượng dữ liệu lưu trữ lớn và đặc biệt dữ liệu lưu trữ được phát sinh thường xuyên theo chu kỳ thời gian ngắn (tuần lễ, ngày, giờ,…) Các bảng này nếu không lưu trữ tối ưu sẽ dẫn đến hao phí rất nhiều dung lượng bộ nhớ phụ

Trang 17

+ Xem xét các bảng mà khóa của bảng bao gồm nhiều thuộc tính và bổ sung bảng này vào danh sách được chọn

- Bước 2: Tối ưu hóa việc lưu trữ các bảng có khối lượng dữ liệu lưu trữ lớn thông qua việc tối ưu hóa lưu trữ từng thuộc tính trong bảng

+ Xác định các thuộc tính mà việc lưu trữ chưa tối ưu Ưu tiên xem xét các thuộc tính có kiểu chuỗi

+ Tối ưu hóa việc lưu trữ tùy theo từng trường hợp cụ thể

+ Một trong các trường hợp thông dụng nhất là chuỗi có kích thước lớn và giá trị được sử dụng nhiều lần trong các mẫu tin khác nhau (ví dụ: thuộc tính TacGia, NhaXB trong bảng SACH của phần mềm quản lý sách)

+ Với trường hợp trên việc tối ưu hóa có thể thực hiện thông qua việc bổ sung các bảng mới (bảng TAC_GIA, NHA_XB) và tổ chức lại cấu trúc bảng SACH (thay thuộc tính TacGia bằng MaTG, NhaXB bằng MaNhaXB)

- Bước 3: Tối ưu hóa các bảng mà khóa của bảng bao gồm nhiều thuộc tính Phân rã bảng đang xét A thành 2 bảng B, C

+ B: Chứa các thuộc tính mà giá trị được lặp lại nhiều lần trong cùng một lần thực hiện công việc tương ứng trong thế giới thực B cần có khóa riêng (sẽ được C sử dụng để tham chiếu đến)

+ C: Chứa các thuộc tính còn lại và khóa của B

Ví dụ: MUON_SACH(MaDG, MaSach, NgMuon, NgTra) được phân rã thành: MUON(MaMuon, MaDG, NgMuon)

CT_MUON(MaMuon, MaSach, NgTra)

Trang 18

Tầm quan trọng của giao diện còn được xem xét trên hai yếu tố:

- Khía cạnh nghiệp vụ: Người dùng thông qua giao diện để tương tác với hệ thống, đây là khâu nghiệp vụ thủ công duy nhất do đó nếu được thiết kế tốt sẽ nâng cao tốc độ xử lý công việc và dẫn tới hiệu quả kinh tế cao

- Khía cạnh thương mại: đối với các sản phẩm bán hàng loạt, giao diện được thiết

kế tốt (dễ sử dụng, đẹp) sẽ gây ấn tượng với khách hàng và là yếu tố chính khi khách hàng chọn mua sản phẩm

Ngoài các yếu tố hiệu quả công việc, đẹp, dễ học, dễ sử dụng, một thiết kế giao diện hiện đại nên có tính độc lập cao với khối chương trình xử lý dữ liệu

Đối với nhiều hệ thống, giao diện là bộ phận có tầm quan trọng chủ chốt và có yêu cầu sửa đổi thường xuyên Do đó, để tiện cho việc sửa đổi, giao diện nên được thiết

kế có tính module hóa cao và nên có độ độc lập tối đa với khối chương trình xử lý dữ liệu Điều này cũng dẫn đến khả năng chúng ta có thể xây dựng nhiều giao diện khác nhau cho các đối tượng sử dụng khác nhau hay chạy trên các hệ thống khác nhau

Có hai dòng giao diện chính là:

- Giao diện dòng lệnh: là loại giao diện đơn giản nhất, thường được thiết kế gắn chặt với chương trình và có tính di chuyển cao (tương đương với chương trình) Giao diện dòng lệnh phù hợp với các ứng dụng thuần túy xử lý dữ liệu, nhất là đối với các chương trình mà đầu ra là đầu vào của chương trình khác Giao diện dòng lệnh gọn nhẹ, dễ xây dựng nhưng thường khó học, khó sử dụng và chỉ phù hợp với người dùng chuyên nghiệp trong các ứng dụng đặc thù

Trang 19

76

- Giao diện đồ họa: sử dụng các cửa sổ, menu, icon,… cho phép người dùng có thể truy cập song song đến nhiều thông tin khác nhau; người dùng thường tương tác bằng cách phối hợp cả bàn phím và con chuột; giao diện đồ họa dễ học, dễ sử dụng và trở nên thông dụng, có độ chuẩn hóa cao

Các thông tin liên quan đến công việc đang xét như sau:

 Thông tin nhập liệu: loại thông tin người dùng chịu trách nhiệm cung cấp giá trị (ngày lập, hóa đơn, hàng bán,…) có thể là nhập liệu trực tiếp, nhập liệu với giá trị định sẵn (có thể sửa nếu muốn) hoặc chọn trong danh sách cho trước

 Thông tin kết xuất: loại thông tin này phần mềm chịu trách nhiệm cung cấp giá trị (ví dụ: lượng hàng tồn hiện nay, tổng tiền trả,…)

 Thành phần xử lý: Các nút điều khiển cho phép người dùng yêu cầu phần mềm thực hiện một xử lý nào đó

+ Hình thức trình bày

Cách thức bố trí sắp xếp các thành phần trong màn hình (vị trí, màu sắc, kích thước,…)

Với màn hình có biểu mẫu liên quan, tốt nhất là trình bày đúng với biểu mẫu tương ứng hoặc trình bày đúng như yêu cầu của khách hàng Tuy nhiên cần lưu ý trong trường hợp biểu mẫu liên quan chỉ là kết quả cuối cùng cần ghi nhận, trước khi đạt đến kết quả đó cần phải thực hiện một số công việc trung gian không có biểu mẫu rõ ràng

Trang 20

3.3.3 Phân loại màn hình giao diện

Quá trình sử dụng phần mềm bao gồm các bước sau:

- Chọn công việc muốn thực hiện trên máy tính

- Cung cấp các thông tin cần thiết tương ứng với công việc được chọn

- Yêu cầu phần mềm thực hiện

- Xem xét kết quả thực hiện

Dựa vào quá trình trên các màn hình giao diện có thể được chia thành nhiều loại tùy theo ý nghĩa sử dụng Sau đây là một số loại màn hình:

3.3.4 Quá trình thiết kế

Quy trình chung: Dựa trên yêu cầu chức năng, đầu tiên người thiết kế sẽ xem xét thiết kế các giao diện từ tính đúng đắn, đến tính tiện dụng thỏa yêu cầu về tiện dụng, và xét đến tính hiệu quả nếu yêu cầu về hiệu quả được đưa ra và một số thiết kế theo yêu cầu khác

3.3.5 Nguyên tắc thiết kế giao diện người dùng của Jakob Nielsen

Năm 1995, Jakob Nielsen – tiến sĩ trong lĩnh vực tương tác người-máy và là chuyên gia nổi tiếng về lĩnh vực web – giới thiệu một tập các nguyên tắ mà ông đã nghiên cứu và chứng minh rằng sẽ tốt cho một giao diện khi thiết kế theo các quy chuẩn này Sau đây là 10 nguyên tắc thiết kế giao diện người dùng của Jakob Nielsen

Nguyên tắc 1: Hiển thị trạng thái hệ thống

Hệ thống nên luôn luôn thông báo cho người dùng biết hệ thống đang làm gì, trạng thái như thế nào, công việc diễn tiến ra sao thông qua các phản hồi thích hợp trong thời gian hợp lý

Trang 21

78

Hình 3 2: Màn hình hiển thị kết quả thực hiện công việc

Nguyên tắc 2: Kết nối hệ thống với thế giới thực

Hệ thống nên nói bằng ngôn ngữ người dùng, với các từ ngữ, cụm từ và khái niệm quen thuộc với người dùng, hơn là những thuật ngữ hướng hệ thống

Tương tự, các tác vụ phải được thực hiện theo đúng trình tự mà người dùng kỳ vọng trong đời sống

Nguyên tắc 3: Sự kiểm soát và sự tự do của người dùng (User control and freedom)

Người dùng thường chọn các chức năng hệ thống bởi sự nhầm lẫn và sẽ cần một

“lối thoát khẩn” để thoát khỏi trạng thái không mong muốn Chính vì vậy, trên màn hình giao diện nên hỗ trợ Undo và Redo

Nguyên tắc 4: Sự nhất quán và các tiêu chuẩn (Consistency and standards)

Các màn hình nên được thiết kế một cách nhất quán với nhau về từ ngữ, màu sắc, hành động thực hiện,…

Nguyên tắc 5: Ngăn chặn lỗi (Error prevetion)

Ngăn chặn lỗi thì tốt hơn là các thông báo lỗi tốt Một thiết kế tốt nên ngăn chặn lỗi ngay lần xuất hiện đầu tiên Loại bỏ hay kiểm tra các điều kiện dễ phát sinh lỗi và hiển thị cho người dùng biết với một lựa chọn xác nhận trước khi họ hoàn thành hành động của mình

Nguyên tắc 6: Nhận biết tốt hơn là gọi lại

Tối thiểu việc tải bộ nhớ của người dùng bằng cách hiện các đối tượng, hành động và lựa chọn

Trang 22

79

Hỗ trợ về mặt tâm lý: giúp người dùng cảm thấy bớt "hoảng sợ" khi nhìn vào giao diện

Một ví dụ dễ thấy đó là combobox - tức một nút mà bạn nhấn vào nó sẽ xuất hiện một

số tùy chọn trong đó cho bạn Ví dụ: Lập trình viên có thể xài combobox để cho bạn chọn mã vùng nếu cần nhập số điện thoại

Giảm tải những gì mà người dùng phải nhớ Ví dụ: Khi bạn cần nhập liệu về thời

gian, một ô nhỏ với ngày tháng năm, nói chung là cả bộ lịch, sẽ xuất hiện cho bạn chọn ngày Bạn không cần phải nhớ cụ thể ngày đó là thứ mấy, tuần nào, tháng nào nữa

Hình 3 3: Minh họa DateTimePicker

Tự động hóa: đây là thứ mà chúng ta rất hay gặp Ví dụ: Khi bạn đăng kí tài khoản mới

trên Yahoo hay Google, hai trang web này sẽ tự xác định vị trí, quốc gia của bạn dựa vào địa chỉ IP

Thay đổi bản chất của tác vụ: trên các trình duyệt cũ, ô tìm kiếm sẽ nằm tách biệt với

ô địa chỉ Sau này, Chrome, Firefox, Safari, IE đều xài chung một ô cho cả hai tác vụ,

dễ dàng hơn và bạn sẽ không cần phải suy nghĩ nên nhập liệu vào đâu

Nguyên tắc 7: Tính linh hoạt và sự hiệu quả của cách dùng (Flexibility and efficiency

Trang 23

80

Nguyên tắc 8: Thiết kế thẩm mỹ và tối giản (Aesthetic and minimalist design)

Với những tính năng chính, hãy đem nó ra giao diện chính, nơi người dùng dễ thấy nhất Đừng cố "tỏ ra nguy hiểm" và giấu nó vào những menu ẩn sâu trong ứng dụng, điều đó không giúp gì cho người dùng cả Nó còn làm người dùng rối và cảm thấy bực mình nữa Việc làm mọi thứ trở nên rõ ràng cũng là một cách nhắc cho người dùng biết những tính năng nào hệ thống của chúng ta có hỗ trợ, và cách dùng chúng như thế nào

Nguyên tắc 9: Giúp người dùng nhận biết, chẩn đoán, và phục hồi từ lỗi (Help users recognize, diagnose, and recover from errors)

Thông báo lỗi nên được thể hiện bằng ngôn ngữ đơn giản (không có mã số), chính xác chỉ ra vấn đề, và cách xây dựng đề nghị một giải pháp

Nguyên tắc 10: Giúp đỡ và tài liệu (Help and documentation)

Mặc dù hệ thống có thể được sử dụng mà không có tài liệu hướng dẫn, nó có thể cần thiết để cung cấp trợ giúp và tài liệu Bất kỳ thông tin nào trong hệ thống phải được

dễ dàng tìm kiếm, kết quả nên tập trung vào nhiệm vụ của người dùng, danh sách các bước cụ thể để thực hiện, và không được quá lớn

Hệ thống được thiết kế theo quan điểm chức năng, bắt đầu ở mức cao nhất, sau

đó tinh chế dần dần thành thiết kế chi tiết hơn Trạng thái của hệ thống là tập trung và được chia sẽ cho các chức năng thao tác trên trạng thái đó

Ban đầu, ta coi yêu cầu mức cao nhất của hệ thống là một chức năng duy nhất cần phải thực hiện Sau đó, ta trả lời cho câu hỏi “Để thực hiện chức năng trên thì cần

phải làm công việc gì?” Từ công việc trong câu hỏi trên được coi là chức năng con của chức năng trên Thực hiện xong các chức năng con cũng là thực hiện xong chức năng

cha Hệ thống được phân rã dần dần, và được làm mịn

3.5 THIẾT KẾ HƯỚNG ĐỐI TƯỢNG

Trang 24

và các phép toán trên trạng thái đó Thiết kế biểu thị các dịch vụ được yêu cầu cùng với những hỗ trợ mà các đối tượng có tương tác với nó cung cấp

3.5.2 Các đặc trưng

Thiết kế hướng đối tượng gồm ba đặc trưng chính sau:

- 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ách trao đổi thông báo

- Các đối tượng là các thực thể độc lập, dễ thay đổi vì rằng tất cả các trạng thái và các thông tin biểu diễn chỉ ảnh hưởng trong phạm vi chính đối tượng nào đó thôi Các thay đổi về biểu diễn thông tin có thể được thực hiện không cần sự tham khảo tới các đối tượng khác

- Các đối tượng có thể phân tán và có thể hoạt động tuần tự hoặc song song Đây

là một trong những lý do khiến cho thiết kế hướng đối tượng được sử dụng rộng rãi trong các hệ thống nhúng

3.5.3 Cơ sở của thiết kế hướng đối tượng

Cơ sở của thiết kế hướng đối tượng là các lớp Lớp là một trừu tượng mô tả cho một nhóm sự vật Đối tượng của một lớp là một thực thể (cụ thể hóa) của lớp đó

Thiết kế của một lớp bao gồm:

- Cấu trúc dữ liệu (thuộc tính)

- Hàm, thủ tục (chức năng)

- Giao diện (cung cấp khả năng trao đổi dữ liệu đối với các lớp khác, về bản chất

là các chức năng của đối tượng)

Việc cài đặt các giao diện là một yếu tố quan trọng để đảm bảo che giấu cấu trúc

dữ liệu Tức là thiết kế nội tại của đối tượng độc lập với giao diện do đó chúng ta có thể sửa đổi thiết kế mà không sợ ảnh hưởng tới các đối tượng khác

Trang 25

82

Các đối tượng trao đổi với nhau bằng cách truyền các thông báo Tức là một đối tượng yêu cầu một đối tượng khác thực hiện một chức năng nào đó Thông báo bao gồm: tên đối tượng, tên phương thức, và các tham số

Vòng đời của một đối tượng khi hệ thống hoạt động như sau:

- Khởi tạo: hệ thống tạo ra đối tượng bằng cách xác lập vùng dữ liệu đồng thời tự động thực hiện các chức năng liên quan đến khởi tạo đối tượng

- Hoạt động: đối tượng nhận các thông báo và thực hiện các chức năng được yêu cầu

- Phá hủy: hệ thống giải phóng vùng nhớ đã được cấp phát sau khi thực hiện tự động các thao tác cần thiết để hủy đối tượng

Nhờ có chức năng khởi tạo và phá hủy được gọi tự động, chúng ta có thể tự động hóa được một số công việc và tránh được nhiều sai sót trong lập trình như quên khởi tạo

dữ liệu, quên cấp phát hay quên giải phóng vùng nhớ động

Trang 26

83

5 Áp dụng tính kế thừa: xây dựng các lớp trừu tượng có các thuộc tính chung, đây

là một khâu đặc trưng của thiết kế hướng đối tượng

3.5.5 Ưu, nhược điểm của thiết kế hướng đối tượng

Thiết kế hướng đối tượng có các ưu điểm chính sau:

- Dễ bảo trì vì các đối tượng là độc lập Các đối tượng có thể hiểu và cải biên như

là một thực thể độc lập Thay đổi trong thực hiện một đối tượng hoặc thêm các dịch vụ sẽ không làm ảnh hưởng tới các đối tượng hệ thống khác

- Các đối tượng là các thành phần dùng lại được thích hợp do tính độc lập của chúng và khả năng kế thừa cao

- Có một vài lớp hệ thống thể hiện phả ánh quan hệ rõ ràng giữa các thực thể có thực (chẳng hạn như các thành phần phần cứng) với các đối tượng điều khiển nó trong hệ thống Điều này đạt được tính dễ hiểu của thiết kế

Nhược điểm chính của thiết kế hướng đối tượng là sự khó nhận ra các đối tượng của một hệ thống Cách nhìn tự nhiên đối với nhiều hệ thống là cách nhìn chức năng

3.6 CÂU HỎI TRẮC NGHIỆM, BÀI TẬP THẢO LUẬN

1 Chọn câu trả lời đúng nhất:

Câu 1: Mức kết dính nào sau đây là xấu nhất

(a) Kết dính truyền thông (b) Kết dính tuần tự

(c) Kết dính gom góp (d) Kết dính chức năng

Câu 2: Mức ghép nối nào sau đây là tốt nhất

(a) Ghép nối nội dung (b) Ghép nối dư thừa

(c) Ghép nối chung (d) Ghép nối dữ liệu

Câu 3: Thiết kế hướng đối tượng gồm mấy đặc trưng chính

2 Theo anh/chị, vấn đề gì xảy ra khi hai module có độ kết dính lỏng lẻo?

3 Theo anh/chị, vấn đề gì xảy ra khi hai module có độ ghép nối chặt chẽ?

Trang 27

84

Chương 4 CÀI ĐẶT, KIỂM THỬ VÀ BẢO TRÌ PHẦN MỀM

Thời lượng: 08 tiết lý thuyết

Kết thúc chương này, sinh viên có thể:

- Biết những kiến thức cơ bản về lập trình, bảo trì phần mềm

- Hiểu được tại sao phải kiểm thử phần mềm

- Biết các kỹ thuật kiểm thử phần mềm

Tính đồng nhất là cách sử dụng ký hiệu nhất quán trong cả ngôn ngữ Một ví dụ

của sự không nhất quán trong Focus là việc sử dụng dấu ngoặc đơn cho tiêu đề bản báo cáo do người sử dụng tạo ra và dấu ngoặc kép của trang bản báo cáo Ngôn ngữ không nhất quán cản trở người sử dụng học và dễ gây lỗi

Tính sáng sủa đề cập đến mức độ con người và chương trình dịch bất đồng trong

việc dịch các câu lệnh của ngôn ngữ Lý tưởng nhất là ý nghĩa của con người tương tự với sự biên dịch của trình dịch và chương trình dịch ra giống sự nhận thức của con người Thật không may, tính sáng sủa có những vấn đề cố hữu của mình, như các ứng dụng trí tuệ nhân tạo (ứng dụng suy luận trong cả tiến trình), khi thêm luật, cơ chế mới vào, sự thông dịch của dữ liệu, luật đó có lẽ cũng thay đổi

Trang 28

85

Tính cô đọng của ngôn ngữ nằm ở sự ngắn gọn Các đặc trưng của chương trình

bao gồm sự kết cấu có cấu trúc, từ khoá và viết tắt, hàm có sẵn, đã đơn giản hoá việc lập trình Tương phản với hai ngôn ngữ thế hệ bốn SQL và Focus là Cobol, ngôn ngữ thế

hệ ba Thực tế cho thấy 3 đến 5 dòng lệnh 4GLs tương đương với 50 đến 150 dòng lệnh trong ngôn ngữ Cobol Thời gian học Focus ngắn hơn Cobol một phần là bởi tính cô động của ngôn ngữ

Tính cô đọng bao hàm tính cục bộ trong việc cung cấp sự phân đoạn tự nhiên

của mã lệnh, làm đơn giản hoá việc học, trực quan hoá từng phần của vấn đề và có thể

mô phỏng các giải pháp Tính cục bộ được cung cấp thông qua khối case, hoặc những

cơ chế phân đoạn (chunks) Sự phân đoạn có lẽ được thực hiện thông qua thực thi đoạn

mã trong ngôn ngữ Cobol, cấu trúc case trong ngôn ngữ Focus, hoặc định nghĩa đối tượng trong ngôn ngữ Smalltalk

Tính tuyến tính đề cập đến mức độ có thể đọc mã một cách liên tiếp (tuần tự)

Ngôn ngữ càng tuyến tính (tuần tự) thì càng dễ phân đoạn và hiểu đoạn mã Tính tuyến tính đơn giản hoá việc hiểu và bảo trì Trong ví dụ đoạn mã Cobol được chặt thành các đoạn và thực hiện

Trong lựa chọn ngôn ngữ độ khó khi biên dịch cũng đóng một vai trò quan trọng Nói chung, nhiều ngôn ngữ mô tả, ví dụ như SQL, đang được xem xét, cân nhắc trên cơ

sở dễ dàng hơn khi dịch ra mã ngữ so với các ngôn ngữ thủ tục như Fortran Mặc dù vậy, Prolog và các ngôn ngữ suy diễn khác tuy đơn giản trong việc mô tả và phát triển các luật đơn nhưng không tầm thường trong việc quyết định kết hợp các luật để tạo ra

các tri thức đúng mới Tính hiệu quả của trình biên dịch nằm ở tính hiệu quả của mã

assembler nhận được sau khi dịch Tính hiệu quả đó thay đổi tuỳ theo ngôn ngữ và nhà sản xuất Tính hiệu quả của trình biên dịch đặc biệt quan trọng khi lập trình một hệ thống máy bay hay các ứng dụng thường trú tương tác với các thành phần hệ thống như là một phần của hệ thống lớn

Cùng với tính hiệu quả, tính khả chuyển của mã cũng rất quan trọng Tính khả

chuyển là khả năng đáp ứng của mã trên các cơ sở thực hiện khác nhau Các cơ sở thực hiện bao gồm cả phần cứng, hệ điều hành, hay môi trường thực hiện phần mềm Khi các ứng dụng dùng chung và phân tán càng phổ biến thì sự cần thiết đối với tính khả chuyển

Ngày đăng: 28/10/2020, 10:57

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm