Bài giảng Công nghệ phần mềm - Chương 4: Thiết kế phần mềm - Hoàng Thị Hà

pdf 29 trang Gia Huy 17/05/2022 2890
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm - Chương 4: Thiết kế phần mềm - Hoàng Thị Hà", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_cong_nghe_phan_mem_chuong_4_thiet_ke_phan_mem_hoan.pdf

Nội dung text: Bài giảng Công nghệ phần mềm - Chương 4: Thiết kế phần mềm - Hoàng Thị Hà

  1. CHƯƠNG 4: THIẾT KẾ PHẦN MỀM GV: Hoàng Thị Hà Email: htha@vnua.edu.vn 1
  2. 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ế
  3. 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 đặc tả. • 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
  4. 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
  5. 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.
  6. 2. Quá trình thiết kế và các sản phẩm thiết kế
  7. 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
  8. 2. 2. Quá trình thiết kế và các sản phẩm thiết kế (2)
  9. 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.
  10. Các bước thiết kế
  11. 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.
  12. 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
  13. 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ấp củ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ệu mà chúng sử dụng. – Theo nghĩa rộng, kiến trúc biểu diễn các thành phần lớn, cốt lõi của hệ thống và mối quan hệ giữa chúng với nhau được nhìn theo những quan điểm khác nhau.
  14. 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)
  15. 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ả, tính phân tán và bảo trì của hệ thống. Kiểu và cấu trúc được lựa chọn cho một ứng dụng cũng 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 bảo mật (security) – Tính an toàn (safety) – Tính sẵn sàng (availability): – Tính bảo trì (maintainability)
  16. 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.
  17. 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
  18. CASE toolset architecture Design Code editor generator Design Program Project repository translator editor Design Code editor generator 18
  19. Đặ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
  20. 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 gọi 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à "trình phục vụ", không phải "máy chủ"! 20
  21. Film and picture library Client 1 Client 2 Client 3 Internet Web Catalog Video Picture server server server server Film and Library Film clip Digitalized photo catalog files photos info. 21
  22. Đặ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 cũ. • 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
  23. 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
  24. Version management system Version Management layer Object management system layer Database system layer Operating System layer 24
  25. 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
  26. 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ì?”
  27. 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.
  28. 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 tính 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.
  29. 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 chọn 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ế