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
- 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 đủ.
57 trang |
Chia sẻ: thanhle95 | Lượt xem: 568 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng Công nghệ phần mềm (Phần II), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Bài giảng Công nghệ phần mềm
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
Bài giảng Công nghệ phần mềm
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.
Bài giảng Công nghệ phần mềm
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
Bài giảng Công nghệ phần mềm
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
Bài giảng Công nghệ phần mềm
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 Kết quả Kết quả chi tiết
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ộ
nhớ phụ
Sơ đồ (cấu trúc lưu trữ)
Danh sách các thành phần lưu trữ
Mô tả chi tiết các thành phần
Danh sách các ràng buộc
3.1.4. Phương pháp thiết kế phần mềm
Tùy thuộc vào quy trình được chọn khi thực hiện phần mềm, việc thiết kế có thể
được tiến hành theo hai phương pháp chính:
- Phương pháp trực tiếp
- Phương pháp gián tiếp
a. Phương pháp trực tiếp
Được áp dụng khi thực hiện phần mềm không thông qua giai đoạn phân tích. Với
phương pháp này việc thiết kế sẽ nhận kết quả chuyển giao trực tiếp từ giai đoạn xác
định yêu cầu. Mô hình phần mềm sẽ được xây dựng trực tiếp từ các yêu cầu. Cách tiếp
cận này sẽ rất khó khăn cho người thực hiện với các phần mềm có quy mô lớn (nhiều
yêu cầu, yêu cầu phức tạp,)
Bài giảng Công nghệ phần mềm
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:
Bài giảng Công nghệ phần mềm
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
Bài giảng Công nghệ phần mềm
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.
Bài giảng Công nghệ phần mềm
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
từ khác
7. Kết dính chức năng: mỗi phần của module đều là cần thiết đề thi hành cùng một
chức năng nào đó
Các lớp kết dính này không được định nghĩa chặt chẽ và cùng không phải luôn
luôn xác định được.
Một đối tượng kết dính nếu nó thể hiện như một thực thể đơn: tất cả các phép
toán trên thực thể đó đều nằm trong thực thể đó. Vậy có thể xác định một lớp kết dính
nữa là:
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
Bài giảng Công nghệ phần mềm
67
moduun và các module trao đổi thông tin thông qua danh sách thao số (giao diện) xác
định. Có thể chia ghép nối thành các mức từ chặt chẽ đến lỏng lẻo như sau:
1. Ghép nối nội dung: hai hay nhiều module dùng lẫn dữ liệu của nhau, đây là mức
xấu nhất, thường xảy ra đối với các ngôn ngữ mức thấp dùng các dữ liệu toàn cục
hay lạm dụng lệnh GOTO
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?
Bài giảng Công nghệ phần mềm
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ì.
Bài giảng Công nghệ phần mềm
69
3.2. THIẾT KẾ DỮ LIỆU
3.2.1. Tổng quan
Mục tiêu chính của thiết kế dữ liệu là mô tả cách thức tổ chức lưu trữ các dữ liệu
của phần mềm. Có hai dạng lưu trữ chính mà người thiết kế cần phải cân nhắc và lựa
chọn.
- Lưu trữ dưới dạng tập tin
- Lưu trữ dưới dạng CSDL
Lưu trữ dưới dạng tập tin thường chỉ thích hợp với một số phần mềm đặc thù (cờ
tướng, trò chơi,), đặc điểm chung của các phần mềm này là chú trọng rất nhiều vào
xử lý, hình thức giao diện và không chú trọng nhiều đến lưu trữ lại các thông tin được
tiếp nhận trong quá trình sử dụng phần mềm (thông thường các thông tin này được tiếp
nhận và xử lý ngay).
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ữ
Bài giảng Công nghệ phần mềm
70
3.2.3. Quá trình thiết kế
Có hai cách tiếp cận chính để thiết kế dữ liệu: (bài giảng chọn CSDL quan hệ để
mô tả)
- Phương pháp trực tiếp
Từ các yêu cầu đã xác định, tạo lập trực tiếp lược đồ quan hệ cùng với bảng thuộc
tính, bảng miền giá trị. Cách tiếp cận này rất khó thực hiện đối với sơ đồ logic phức tạp.
- 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 tính đúng đắn
+ Đảm bảo đầy đủ và chính xác về mặt ngữ nghĩa các thông tin liên quan đến
các công việc trong yêu cầu
+ Các thông tin phục vụ cho các yêu cầu chất lượng sẽ không được xét đến trong
bước thiết kế này
- 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
Bài giảng Công ng