Thiết kế hệ thống và chương trình (C7+8)

7

THIẾT KẾ HỆ THỐNG

Nội dung

7.1 Thiết kế Hệ thống là gì?

7.2 Nguyên tắc và các khái niệm liên quan

7.3 Phương pháp thiết kế

7.4 Chuẩn chia mô đun

7.5 Đặc tả

7.1 Thiết kế hệ thống là gì?

7.1.1 Vai trò

Thiết kế là giai đoạn tiếp theo của phân tích, nhằm hiểu hệ thống hoạt động như thế nào. Thiết kế gồm 2 giai đoạn:

• Thiết kế tổng thể hay thiết kế ngoài

• Thiết kế chi tiết hay thiết kế trong, về các mặt:

- Giao diện,

- Cơ sở dữ liệu,

- Chương trình.

Chương này trình bày về thiết kế hệ thống hay thiết kế kiến trúc mà mục đích là thiết lập lưu đồ cấu trúc mô đun với đầu vào là các tài liệu đặc tả của giai đoạn phân tích. Chương tiếp sau trình bày về thiết kế trong hay thiết kế chi tiết hay thiết kế mô đun với mục đích là thiết kế cấu trúc dữ liệu, giải thuật nhằm thực hiện chức năng mà mô đun đảm nhiệm.

7.1.2 Qui trình

- Phân chia mô hình phân tích ra các hệ con

- Tìm ra sự tương tranh (concurrency) trong hệ thống

- Phân bố các hệ con cho các bộ xử lý hoặc các nhiệm vụ (tasks)

- Phát triển thiết kế giao diện

- Chọn chiến lược cài đặt quản trị dữ liệu

- Tìm ra nguồn tài nguyên chung và cơ chế điều khiển truy nhập chúng.

- Thiết kế cơ chế điều khiển thích hợp cho hệ thống, kể cả quản lý nhiệm vụ.

- Xem xét các điều kiện biên được xử lý như thế nào.

- Xét duyệt và xem xét các thỏa hiệp (trade-offs).

7.1.3 Những vấn đề của thiết kế

i) Có thể trích được luồng dữ liệu từ hệ thống: đó là phần nội dung đặc tả yêu cầu và giao diện.

ii) Xem xét tối ưu tài nguyên kiến trúc lên hệ thống rồi quyết định kiến trúc.

iii)Theo quá trình biến đổi dữ liệu, hãy xem những chức năng được kiến trúc như thế nào?

iv)Từ kiến trúc các chức năng theo (iii), hãy xem xét và chỉnh lại, từ đó chuyển sang kiến trúc chương trình và thiết kế chi tiết.

v) Quyết định các đơn vị chương trình theo các chức năng của hệ phần mềm có dựa theo luồng dữ liệu và phân chia ra các thành phần.

vi) Khi cấu trúc chương trình lớn quá, phải phân chia nhỏ hơn thành các môđun.

vii) Xem xét dữ liệu vào-ra và các tệp dùng chung của chương trình. Truy cập tệp tối ưu.

viii) Hãy nghĩ xem để có được những thiết kế trên thì nên dùng phương pháp luận và những kỹ thuật gì ?

 Thiết kế hệ thống

- Thiết kế hệ thống phần cứng [(i), (ii)]

- Thiết kế hệ thống phần mềm [(iii)-(vii)]

 Thiết kế hệ thống phần mềm

- Thiết kế tệp (vii)

- Thiết kế chức năng hệ thống (iii)-(vi)]

7.2 Nguyên tắc và các khái niệm liên quan

7.2.1 Nguyên tắc

7.2.2 Các khái niệm

• Mô đun là:

- Là một dãy các lệnh nhằm thực hiện một chức năng nào đó

- Mô đun có tính độc lập tương đối, được soạn thảo và biên dịch độc lập

- Môđun đã dịch có thể được môđun khác gọi tới.

- Giao diện giữa các môđun thông qua các biến tham số (arguments). Tham số có 2 loại: tham số điều khiển (flag) và tham số mang tính dữ liệu thuần tuý.

 Mô đun là một khái niệm quan trọng trong xây dựng phần mềm.

• Lưu đồ bong bóng (Bubble Chart): Là 1 loại ĐF thu gọn dùng để biểu thị luồng xử lý dữ liệu. Nó được biểu diễn như sau:

• Lưu đồ cấu trúc phân cấp hay lưu đồ mô đun: Là một cấu trúc phân cấp biểu diễn các mô đun của hệ thống phần mềm ở một mức nào đó và giao diện giữa chúng. Đây chính là kết quả của thiết kế hệ thống.

o Các quy ước:

- Không liên quan đến trình tự gọi các môđun, nhưng ngầm định là từ trái qua phải

- Mỗi môđun xuất hiện trong cấu trúc một lần, có thể được gọi nhiều lần

- Quan hệ trên dưới: không cần nêu số lần gọi

- Tên môđun biểu thị chức năng ("làm gì"), đặt tên sao cho các môđun ở phía dưới tổng hợp lại sẽ biểu thị đủ chức năng của môđun tương ứng phía trên.

- Biến số (arguments) biểu thị giao diện giữa các môđun, biến số ở các môđun gọi/bịgọi có thể khác nhau.

- Mũi tên với đuôi tròn trắng biểu thị dữ liệu, đuôi tròn đen (hồng) biểu thị flag .

- Chiều của mũi tên là hướng truyền tham số.

- Mỗi mô đun được biểu diễn bằng 1 hình chữ nhập trong chứa tên.

7.3 Phương pháp thiết kế

7.3.1 Phương pháp và công cụ

Có nhiều phương pháp khác nhau như thiết kế hướng cấu trúc, thiết kế tổng hợp, thiết kế hướng đối tượng,.... Chúng ta tập trung vào thiết kế cấu trúc do Constantine đề xuất. Nó có nguồn gốc từ thiết kế từ trên xuống (Top - Down Design) và cũng được gọi là thiết kế hướng luồng dữ liệu (Data flow-oriented design).

Quy trình TK6 bước:

- (1) tạo kiểu luồng thông tin;

- (2) chỉ ra biên của luồng;

- (3) ánh xạ DFD sang cấu trúc chương trình;

- (4) xác định phân cấp điều khiển;

- (5) tinh lọc cấu trúc;

- (6) chọn mô tả kiến trúc.

Công cụ: thường sử dụng các ký pháp đồ hoạ như mô tả trong phần 7.2.2. Sau đây, chúng ta sẽ xem xét 2 phương pháp phổ biến trong thiết kế hệ thống: Phương pháp dựa vào trung tâm biến đổi STS và phương pháp dựa vào giao dịch.

7.3.2 Phương pháp Trung tâm biến đổi STS (Source - Transform - Sink)

Phương pháp STS được áp dụng khi luồng dữ liệu chính là tuyến tính. Phương pháp này cũng áp dụng qui trình 6 bước trên song chia nhỏ thành 8 bước.

1) Chia đối tượng "bài toán" thành các chức năng thành phần

2) Tìm ra luồng dữ liệu chính đi qua các chức năng: từ đầu vào (Input) tới đầu ra (Output)

3) Theo luồng dữ liệu chính: thay từng chức năng bởi bong bóng và làm rõ dữ liệu giữa các bong bóng

4) Xác định vị trí trừu tượng hóa tối đa đầu vào và đầu ra

5) Chuyển sang sơ đồ phân cấp

6) Xác định các tham số giữa các môđun dựa theo quan hệ phụ thuộc

7) Với từng môđun (Source, Transform, Sink) lại áp dụng cách phân chia STS lặp lại các bước từ 1) đến 6). Đôi khi có trường hợp không chia thành 3 mô đun nhỏ mà thành 2 hoặc 1.

8) Tiếp tục chia đến mức cấu trúc lôgic khi môđun tương ứng với thuật toán đã biết thì dừng. Tổng hợp lại ta được cấu trúc phân cấp: mỗi nút là 1 môđun với số nhánh phía dưới không nhiều hơn 3.

7.3.2 Phương pháp dựa vào giao tác TR (Transaction)

• Khi không tồn tại luồng dữ liệu chính, mà dữ liệu vào có đặc thù khác nhau như những nguồn khác nhau xem như các Giao dịch thì ta áp dụng phương pháp Giao dịch.

• Nguyên tắc:

- Mỗi giao dịch ứng với 1 môđun xử lý nó

- Phân chia môđun có thể: theo kinh nghiệm; theo tính độc lập môđun; theo số bước tối đa trong 1 môđun (ví dụ < 50) và theo chuẩn.

• Các bước thực hiện

i) Xác định trung tâm giao dịch gồm một số chức năng phân loại và các chức năng tham gia vào quá trình xử lý:

- Vào: một số chức năng truyền dẫn thông tin từ nguồn và một số chức năng sơ chế.

- Ra: Một số chức năng dẫn thông tin ra từ các tình huống xử lý.

ii) Vẽ 2 mức cao nhất của lưu đồ cấu trúc:

- Một mô đun mức cao nhất (đỉnh): mức 1

- 1 cho vào, 1 mô đun xử lý cho mỗi trường hợp và 1 mô đun ra: mức 2.

Lưồng dữ liệu có 1 trung tâm Giao dịch

Chú ý: Trong thiết kế cấu trúc hoá việc áp dụng phương pháp nào là phụ thuộc vào đặc trưng của luồng dữ liệu. Luồng dữ liệu là tuyến tính thì ta dùng phương pháp STS, ngược lại ta dùng TR.

7.4 Chuẩn chia mô đun

Hai kỹ thuật triển khai kể trên tùy nơi, tuỳ lúc mà có thể vận dụng xen lẫn trong khi triển khai một Lưu đồ cấu trúc mô-đun. Kết quả sẽ là một Lưu đồ cấu trúc mô-đun chấp nhận được, chưa hẳn là đã tốt. Cần dựa theo các tiêu chuẩn chất lượng sau để điều chỉnh lại.

a) Sự tương liên

Đó là sự ảnh hưởng lẫn nhau giữa các mô đun. Có thể là:

• Tương liên nội dung, tức là sự can thiệp vào nội dung chương trình của nhau.

• Tương liên điều khiển, tức là mô đun này chuyển một thông tin điều khiển dùng trong một mô đun khác

• Tương liên dữ liệu, tức là mô đun này chuyển dữ liệu cho mô đun khác.

Sự tương liên phải càng đơn giản, càng lỏng lẻo càng tốt. Nói chung là chấp nhận tương liên dữ liệu, hạn chế tương liên điều khiển, loại trừ tương liên nội dung.

b) Sự cố kết

Đó là sự gắn bó giữa các phần bên trong một mô đun, thể hiện ở chỗ:

• mục tiêu xử lý là rành mạch (không mơ hồ);

• công việc là tập trung (không phân tán);

• không quá dấn sâu vào tiểu tiết (hãy giao cho các chương trình con).

Sự cố kết của mô đun phải càng cao càng tốt, vì như vậy sẽ dễ cài đặt, để sửa chữa.

c) Hình thái

Nhìn hình thái bên ngoài thì Lưu đồ cấu trúc mô-đun phải:

• Xoè dần ở các tầng trên, thu lại ở các tầng cuối;

• Các mô đun ở phía trên thì thiên nhiều về điều khiển, mà nhẹ về xử lý. Các mô đun ở phía dưới thì lại nhẹ về điều khiển mà nặng về xử lý (dịch vụ). Các mô đun dịch vụ càng được dùng chung nhiều càng tốt.

7.5 Đặc tả các mô đun

Lập xong Lưu đồ cấu trúc mô đun , ta cần phải đặc tả từng mô đun ở trong đó. Nói chung thì đặc tả mô đun chương trình sử dụng cùng những phương tiện đặc tả như với chức năng trong biểu đồ luồng dữ liệu , đặc biệt hay dùng là sơ đồ khối hay ngôn ngữ tự nhiên có cấu trúc. Sự khác biệt chỉ là ở mức độ diễn tả:

• Đặc tả chức năng trong biểu đồ luồng dữ liệu tập trung vào các xử lý nghiệp vụ phải thực hiện, mà bỏ qua các nhiệm vụ phụ trợ.

• Đặc tả các mô đun theo chương trình mô tả việc xử lý theo cung cách (hạn chế) của máy tính, có làm rõ các nhiệm vụ phù trợ như là: chuyển giao tham số, đối thoại với người dùng, xử lý lỗi, thực hiện vào/ ra, tra cứu cơ sở dữ liệu.

8

THIẾT KẾ CHƯƠNG TRÌNH

Nội dung

8.1 Thiết kế chương trình là gì?

8.2 Các phương pháp thiết kế chương trình

8.3 Một số điểm lưu ý khi mã hoá chương trình

8.1 Thiết kế chương trình là gì ?

 Là thiết kế chi tiết cấu trúc bên trong của phần mềm: thiết kế tính năng từng môđun và giao diện tương ứng. Thực tế bao gồm 2 nhiệm vụ cơ bản:

- Thiết kế giải thuật nhằm thực hiện chức năng mà mô đun đảm nhận

- Thiết kế cấu trúc dữ liệu: các dữ liệu dùng cho mô đun, đáp ứng yêu cầu xử lý

• Đầu vào là các đặc tả của giai đoạn phân tích và thiết kế hệ thống.

• Đầu ra là các mô tả giải thuật. Thường người ta hay dùng ký pháp đồ hoạ. Tuy nhiên không bắt buộc có thể dùng ngôn ngữ diễn tả giải thuật: giả mã, sơ đồ khối hay PDL (ngôn ngữ mô tả chương trình)

8.2 Các phương pháp thiết kế chương trình

Có nhiều kỹ thuật thiết kế chương trình:

- Hướng tiến trình (process) : Kỹ thuật thiết kế cấu trúc điều khiển.

- Hướng cấu trúc dữ liệu (data): Kỹ thuật thiết kế cấu trúc dữ liệu.

- Hướng sự vật / đối tượng (object): Kỹ thuật thiết kế hướng đối tượng.

Ở đây chúng ta tập trung vào phương pháp thiết kế cấu trúc hoá và sử dụng kỹ thuật thiết kế hướng tiến trình - dựa vào các cấu trúc điều khiển.

8.2.1 Thiết kế cấu trúc hóa

Nguyên tắc thiết kế cấu trúc hoá có nguồn gốc từ kỹ thuật lập trình cấu trúc mà bản chất là dựa vào các cấu trúc điều khiển cơ bản: tuần tự, rẽ nhánh và lặp. Lý thuyết đã chứng minh rằng mọi chương trình đều có thể xây dựng được chỉ dựa vào 3 cấu trúc cơ bản trên.

Thiết kế cấu trúc hoá tỏ rõ những ưu điểm:

- Tính độc lập của môđun: chỉ quan tâm vào-ra

- Làm cho chương trình dễ hiểu

- Dễ theo dõi chương trình thực hiện

- Hệ phức tạp sẽ dễ hiểu nhờ tiếp cận phân cấp

Một vấn đề quan trọng trong thiết kế cấu trúc là không được sử dụng cấu trúc nào khác ngoài 3 cấu trúc trên. Thí dụ, một số người có thói quen sử dụng GOTO. Vậy GOTO là gì và loại bỏ GOTO ra sao?

Người ta cho rằng:

- GOTO dùng để chuyển điều khiển (nhảy) đến một nhãn nhất định

- GOTO phá vỡ tính cấu trúc của lập trình cấu trúc hóa và không thể quản lý được

- GOTO có thể loại bỏ được

Tuy nhiên, để tạo điều kiện cho người lập trình không bị quá gò bó vào tính có cấu trúc, người ta vẫn cho phép dung GOTO song rất hạn chế.

Thí dụ dưới đây minh hoạ 1 chương trình Spagetti và chương trình sau sau loại bỏ GOTO.

8.2.2 Sơ đồ cấu trúc hóa Nassi, PAD,...

Lưu đồ Nassi do hãng IBM đề xuất để mô tả giải thuật theo hướng thiết kế cấu trúc. Lưu đồ này dùng 4 ký pháp cơ bản: tuần tự (nối), rẽ nhánh (if .. then ..elsse), rẽ nhiều nhánh và lặp.

Lưu đồ PAD do hãng Hitachi đề xuất. Nó cũng sử dụng 4 thành phần tương tự như trong lưu đồ Nassi, song có thêm 1 trục chính theo chiều thẳng đứng.

Các lưu đồ này được minh hoạ trong trang bên dưới.

a- Concatenation (Nối) b- selection (chọn)

Lưu đồ PAD của Hitachi

8.3.3 Phương pháp Giắc-sơn (Jackson)

Phương pháp Giắc sơn được sử dụng để miêu tả các cấu trúc phân cấp và được sử dụng trong nhiều lĩnh vực khác nhau. Phương pháp cũng sử dụng các cấu trúc điều khiển cơ bản như các phương pháp trên.

Ký pháp rẽ nhánh Ký pháp lặp

Thí dụ

8.3.4 Phương pháp Wa-ny (Warnier)

8.3 Một số lưu ý khi mã hoá chương trình

Khi mã hoá chương trình cần lưu ý một số điểm sau:

1. Cấu trúc dữ liệu dễ hiểu

• Nên xác định tất cả các cấu trúc dữ liệu và các thao tác cần thực hiện trên từng cấu trúc dữ liệu.

• Việc biểu diễn/khai báo các cấu trúc dữ liệu chỉ nên thực hiện ở những mô đun sử dụng trực tiếp dữ liệu.

• Nên thiết lập và sử dụng từ điển dữ liệu khi thiết dữ liệu.

2. Cấu trúc thuật toán dễ hiểu

• Tuân theo quy cách lập trình

• Một đầu vào, một đầu ra

• Tránh GOTO, trừ khi phải ra khỏi lặp và dừng

• Dùng chú giải hợp lý

- Ngắn gọn

- Gợi nhớ

- Vị trí phù hợp

• Dùng tên biến có nghĩa, gợi nhớ

• Cấu trúc lồng rõ ràng

• Tránh dùng CASE / switch nhiều hoặc lồng nhau

• Mã nguồn 1 chương trình / môđun nên viết trên 1 trang

• Tránh viết nhiều lệnh trên 1 dòng

Bạn đang đọc truyện trên: TruyenTop.Vip

Tags: