29
CHƯƠNG 4: THIẾT KẾ PHẦN MỀM GV: Hoàng Thị Hà Email: [email protected] 1

CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

GV: Hoàng Thị Hà

Email: [email protected]

1

Page 2: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Nội dung

1. Tổng quan về thiết kế phần mềm

2. Quá trình thiết kế và sản phẩm thiết kế

3. Thiết kế kiến trúc

4. Các phương pháp thiết kế

Page 3: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

1. Tổng quan về thiết kế phần mềm(1)

• Thiết kế phần mềm là quá trình thiết kế cấu trúc phần mềm dựa trên những tài liệu đặctả.

• Là tạo mô hình cài đặt cho phần mềm

• Nếu không có thiết kế hoặc thiết kế tồi:– Làm tăng công sức viết mã

– Làm tăng công sức bảo trì

– 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ỏ;

– Thiết kế tốt là chìa khoá cho công trình hữu hiệu

Page 4: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

1. Tổng quan về thiết kế phần mềm(2)

• Mục tiêu thiết kế là xác định

– Chức năng của các module

– Cách thức cài đặt các module

– Tương tác giữa các module

Page 5: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

1. Tổng quan về thiết kế phần mềm(3)

• Yêu cầu của thiết kế

– Làm cơ sở cho việc thực hiện chi tiết.

– Làm phương tiện liên lạc giữa các nhóm thiết

kế các hệ con.

– Cung cấp đầy đủ thông tin cho người bảo trì

hệ thống.

Page 6: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

2. Quá trình thiết kế và các sản phẩm thiết kế

Page 7: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

2. 1. Nội dung thiết kế

1. Thiết kế kiến trúc: Thành phần, cấu trúc

chính và mối quan hệ giữa chúng

2. Thiết kế giao diện: với mỗi hệ thống con, các giao diện của nó với những hệ thống con khác phải được thiết kế và tư liệu hoá.

3. Thiết kế dữ liệu: cấu trúc dữ liệu, cách lưu trữ dữ liệu.

4. Thiết kế thuật toán: Các thuật toán được sử dụng ứng với từng thành phần cấu trúc

Page 8: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

2. 2. Quá trình thiết kế và các sản phẩm thiết kế (2)

Page 9: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Các bước thiết kế

• Bước 1- Thiết kế sơ bộ: Quan tâm tới việc

chuyển hoá các yêu cầu thành kiến trúc

dữ liệu và các thành phần phần mềm.

• Bước 2- Thiết kế chi tiết: Tập trung vào

việc làm mịn biểu diễn kiến trúc để dẫn tới

cấu trúc dữ liệu chi tiết và biểu diễn các

quy trình tính toán và xử lý của phần mềm.

Page 10: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Các bước thiết kế

Page 11: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Thiết kế thường trợ giúp một vài

cách nhìn nhận hệ thống như sau:

• Nhìn nhận cấu trúc: Cho cái nhìn cấu trúc thông qua lược đồ cấu trúc.

• Nhìn nhận quan hệ thực thể: Mô tả cấu trúc dữ liệu logic thường dùng, đề cập đến đặc tả dữ liệu quan hệ thực thể.

• Nhìn nhận dòng dữ liệu: Về lược đồ dòng dữ liệu.

• Người ta còn dùng lược đồ chuyển trạng thái để bổ sung cho phương pháp trên.

Page 12: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Các phương pháp thiết kế

• Thiết kế hướng chức năng

• Thiết kế hướng đối tượng

Page 13: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

3. Thiết kế kiến trúc

• Khái niệm– Kiến trúc phần mềm (software architecture) là một

cấu trúc tổng thể của phần mềm, qua đó cung cấp sựtích hợp về mặt khái niệm của một hệ thống.

– Hiểu một cách đơn giản, kiến trúc là cấu trúc phân cấpcủa các thành phần chương trình, qua đó thể hiện sựtương tác giữa chúng với nhau và với cấu trúc dữ liệumà chúng sử dụng.

– Theo nghĩa rộng, kiến trúc biểu diễn các thành phầnlớn, cốt lõi của hệ thống và mối quan hệ giữa chúngvới nhau được nhìn theo những quan điểm khácnhau.

Page 14: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

3. Thiết kế kiến trúc (2)

• Vai trò và tầm quan trọng của kiến trúc

– Là công cụ giao tiếp giữa những người có liên quan (Stackeholder communication) quan trọng của kiến trúc

– Phân tích hệ thống (System Analysis)

– Tái sử dụng ở quy mô lớn (Large-scale reuse)

Page 15: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

3. Thiết kế kiến trúc (3)

• Kiến trúc và đặc điểm của hệ thống: Kiến trúc hệ thống ảnh hương tới sự thực thi, tính hiệu quả, tinh phân tán và bảo trì của hệ thống. Kiểu và cấu trúc được lựa chon cho một ứng dụng cung có thể phụ thuộc vào những yêu cầu phi chức năng của hệ thống:– Tính hiệu năng (Performance)– Tính bao mât (security)– Tính an toàn (safety)– Tính săn sàng (availability):– Tính bao tri (maintainability)

Page 16: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

3. Thiết kế kiến trúc (4)

• Tổ chức hệ thống: Ba kiểu tổ chức phổ biến nhất:

– Mô hình kho dữ liệu;

– Mô hình máy khách/máy chủ;

– Mô hình máy ảo hoặc phân tầng.

Page 17: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Mô hình kho dữ liệu(The repository model)

• Các hệ thống con phải trao đổi dữ liệu. Có thể thực hiện theo hai cách:– Dữ liệu dùng chung được đặt tại CSDL hoặc repository trung tâm và tất

cả các hệ thống con đều có thể truy cập;

– Mỗi hệ thống con giữ CSDL riêng và truyền dữ liệu một cách tường minh cho các hệ thống con khác.

• Khi cần chia sẻ lượng dữ liệu lớn, mô hình chia sẻ kiểu repository được dùng rộng rãi nhất.

17

Page 18: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

CASE toolset architecture

18

Project repository

Design editor

Code generator

Program editor

Design editor

Code generator

Design translator

Page 19: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Đặc điểm của mô hình repository

• Ưu điểm– Các hiệu quả để dùng chung lượng dữ liệu lớn;

– Các hệ thống con không cần quan tâm dữ liệu được tạo như thế nào

– Công việc quản lý như backup, bảo mật, .. được tập trung.

– Mô hình dùng chung được công bố dưới dạng repository schema.

• Nhược điểm– Các hệ thống con phải thống nhất về một mô hình dữ liệu repository.

Thỏa hiệp là tất yếu;

– Tiến hóa dữ liệu là khó khăn và chi phí cao;

– Không có phạm vi cho các chính sách quản lý cụ thể;

– Khó phân tán một cách có hiệu quả.

19

Page 20: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Mô hình khách chủ(Client-server model)

• Mô hình hệ thống phân tán trong đó dữ liệu và xử lý dữ liệu được phân bố cho nhiều component

• Một tập các server độc lập cung cấp các dịch vụ cụ thể, chẳng hạn in, quản lý dữ liệu, v.v..

• Một tập các client goi các dịch vụ đó

• Mạng máy tính cho phép client tương tác với các server

Server là "trinh phục vụ", không phai "máy chủ"!

20

Page 21: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Film and picture library

21

Internet

Client 1 Client 2

Web server

Film and photo info.

Video server

Film clip files

Picture server

Digitalized photos

Catalog server

Library catalog

Client 3

Page 22: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Đặc điểm mô hình client-server

• Ưu điểm– Dữ liệu được phân tán một cách rõ ràng dễ hiểu;

– Sử dụng hiệu quả các hệ thống nối mạng.

– Có thể đòi hỏi phần cứng rẻ hơn;

– Dễ bổ sung server mới hoặc nâng cấp các server cu.

• Nhược điểm– Không có mô hình dữ liệu dùng chung nên các hệ thống con phải dùng

các tổ chức dữ liệu riêng. Việc trao đổi dữ liệu có thể không hiệu quả;

– Quản lý dư thừa đặt tại mỗi server;

– Không có đăng kí trung tâm cho tên và dịch vụ - có thể khó tìm xem hiện có những server và dịch vụ nào.

22

Page 23: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Mô hình phân tầng(layered model)

• Dùng để mô hình giao diện giữa các hệ thống con.

• Tổ chức hệ thống thành tập các layer (hoặc abstract machines) mỗi layer cung cấp một tập các dịch vụ.

• Hỗ trợ phát triển tăng dần đối với các hệ thống con tại các layer khác nhau. Khi một layer thay đổi, chỉ có layer sát nó bị ảnh hương.

• Tuy nhiên việc cấu trúc các hệ thống theo kiểu này thường không tự nhiên.

23

Page 24: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Version management system

24

Version Management layer

Object management system layer

Database system layer

Operating System layer

Page 25: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

4. Các phương pháp thiết kế

• Thiết kế hướng chức năng

• Thiết kế hướng đối tượng

Page 26: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

4.1. Thiết kế hướng chức năng

• 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ác công việc gì?”

Page 27: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

4.2. Thiết kế hướng đối tượng

• Thiết kế hướng đối tượng (DOO) liên quan đến việc phát triển một mô hình hướng đối tượng cho một hệ thống phần mềm để thực hiện những yêu cầu đã đặt ra

• Hệ thống được nhìn nhận như một bộ các đối tượng (chứ không phải là một tập hợp các chức năng).

• Hệ thống được phân tán, mỗi đối tượng có thông tin và trạng thái của riêng nó. Đối tượng là một bộ các thuộc tính xác định trạng thái của đối tượng đó và các phép toán thực hiện trên đó.

• Mỗi đối tượng là một khách thể của một lớp mà lớp được xác định bởi thuộc tính và các phép toán của nó. Nó được thừa kế từ một vài lớp đối tượng cấp cao hơn, sao cho định nghĩa nó chỉ cần nêu đủ các khác nhau giữa nó và các lớp cao hơn nó. Các đối tượng liên lạc với nhau chỉ bằng trao đổi các thông báo. Trong thực tế, hầu hết các liên lạc được thực hiện giữa các đối tượng bằng cách nối đối tượng này với một thủ tục, mà thủ tục này kết hợp với một đối tượng khác.

Page 28: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

4.2. Thiết kế hướng đối tượng

• Ưu điểm:– Các hệ thống hướng đối tượng dễ thay đổi (bảo trì) hơn

các hệ thống được phát triển băng cách sử dụng các cách tiếp cận khác bơi các đối tượng là độc lập.

– Một cách tiềm năng, các đối tượng là những thành phần có thể được sử dụng lại bơi chúng là những thực thể độc lập trong đó ẩn chứa các thuộc tinh và phương thức. Những thiết kế có thể được phát triển sử dụng các đối tượng được tạo ra trong những bản thiết kế trước. Điều này giúp giảm chi phí cho thiết kế, lập trình và kiểm chứng.

– Đối với một số hệ thống, có thể có mối liên hệ rõ ràng giữa các thực thể trong thế giới thực với các đối tượng của hệ thống.

Page 29: CHƯƠNG : THIẾT KẾ PHẦN MỀMelearning.vnua.edu.vn/uploads/images/USERS_1341112/...Tổng quan về thiết kế phần mềm ~ í •Thiết kế phần mềm là quá trình

Câu hỏi chương 3

1. Hãy nêu khái niệm và vai trò của thiết kế trong phát triển phần mềm.2. Trình bày các bước và các sản phẩm trong giai đoạn thiết kế. Người ta có

thể sử dụng công cụ gì để biểu diễn các sản phẩm trong giai đoạn thiết kế.

3. Trình bày vai trò của thiết kế kiến trúc.4. Thiết kế kiến trúc ảnh hương thế nào tới các yêu cầu phi chức năng của

hệ thống?5. Có mấy kiểu mô hình kiến trúc cơ bản? Hãy nêu những nét chính, ưu

điểm và nhược điểm của từng mô hình. 6. Một hệ thống có thể áp dụng nhiều mô hình kiến trúc hay chỉ được lựa

chon một mô hình kiến trúc duy nhất?7. Hãy phân biệt hai khái niệm Đối tượng và Lớp đối tượng trong phát triển

phần mềm hướng đối tượng.8. Tại sao người ta lại nói phương pháp thiết kế hướng đối tượng dễ dàng

cải tiến và tái sử dụng các bản thiết kế