intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

THIẾT KẾ VÀ XÂY DỰNG PHẦN MỀM - Chương 2 Thiết kế phần mềm

Chia sẻ: Cao Tuấn | Ngày: | Loại File: PDF | Số trang:57

424
lượt xem
80
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Khái niệm: Thiết kế phần mềm được định nghĩa trong IEEE610.12-90 bao gồm: Quá trình xác định kiến trúc, các thành phần, giao diện và các đặc tính kỹ thuật của hệ thống hoặc thành phần . Thiết kế phần mềm sẽ là cơ sỏ cho giai đoạn tiếp theo là xây dựng phần mềm. Thiết kế phần mềm đóng vai trò quan trọng trong phát triển phần mềm: • Cho phép xem xét, so sánh các phương án kỹ thuật khác nhau trong thiết kế phần mềm • Cho phép xác định phương án phù hợp nhất với các...

Chủ đề:
Lưu

Nội dung Text: THIẾT KẾ VÀ XÂY DỰNG PHẦN MỀM - Chương 2 Thiết kế phần mềm

  1. THIẾT KẾ VÀ XÂY DỰNG PHẦN MỀM (SOFTWARE DESIGN AND CONSTRUCTION) Năm học 2008-2009 Giáo viên: PGS.Huỳnh Quyết Thắng BM Công nghệ phần mềm Khoa CNTT, ĐHBK HN 1
  2. Chương 2. Thiết kế phần mềm (Software Design) 1. Các khái niệm căn bản trong thiết kế phần mềm 2. Thiết kế kiến trúc phần mềm (Software Architectrure Design) 3. Các chiến thuật và phương pháp thiết kế phần mềm 4. Xây dựng các đặc tả thiết kế phần mềm (Software Design Specification) 5. Giới thiệu một số tài liệu liên quan đến nội dung chương 6. Câu hỏi và bài tập 2
  3. 2.1. Các khái niệm cơ bản trong thiết kế phần mềm • Khái niệm • Nhiệm vụ • Quy trình • Các kỹ thuật trong thiết kế phần mềm 3
  4. 2.1. Các khái niệm cơ bản trong thiết kế phần mềm • Khái niệm: Thiết kế phần mềm được định nghĩa trong IEEE610.12-90 bao gồm: Quá trình xác định kiến trúc, các thành phần, giao diện và các đặc tính kỹ thuật của hệ thống hoặc thành phần . • Thiết kế phần mềm sẽ là cơ sỏ cho giai đoạn tiếp theo là xây dựng phần mềm. • Thiết kế phần mềm đóng vai trò quan trọng trong phát triển phần mềm: • Cho phép xem xét, so sánh các phương án kỹ thuật khác nhau trong thiết kế phần mềm • Cho phép xác định phương án phù hợp nhất với các yêu cầu phần mềm • Cho phép lập các kế hoạch chi tiết cho giai đoạn xây dựng phần mềm 4
  5. 2.1. Các khái niệm cơ bản trong thiết kế phần mềm • Nhiệm vụ: Theo IEEE/EIA 12207 Software Life Cycle Processes và [IEEE12207.0-96], Thiết kế phần mềm có hai nhiệm vụ chính: • Thiết kế kiến trúc phần mềm - Software architectural design (Một số tài liệu phân tích thiết kế còn gọi nhiệm vụ này là Thiết kế phần mềm mức cao - Toplevel design): Xác định mô hình mức cao của phần mềm, xác định các thành phần của mô hình. • Thiết kế chi tiết phần mềm - Software detailed design: thiết kế chi tiết từng thành phần, xác định đầy đủ các thông tin tương ứng cho từng thành phần để có thể tiến hành xây dựng phần mềm. 5
  6. 2.1. Các khái niệm cơ bản trong thiết kế phần mềm • Quy trình: Thiết kế phần mềm được chia làm hai tiến trình công việc: • Thiết kế kiến trúc phần mềm - Architectural Design mục đích xác định mô hình kiến trúc và các thành phần trong kiến trúc IEEEP1471-00 • Thiết kế chi tiết - Detailed Design mục đích xác định các đặc tính kỹ thuật và đặc tả các thành phần của kiến trúc phần mềm. IEEE1016-98 6
  7. 2.1. Các khái niệm cơ bản trong thiết kế phần mềm • Các kỹ thuật trong thiết kế phần mềm: • Abstraction • Coupling and cohesion • Decomposition and modularization • Encapsulation/information hiding • Separation of interface and implementation • Sufficiency, completeness and primitiveness 7
  8. 2.1. Các khái niệm cơ bản trong thiết kế phần mềm • Các kỹ thuật trong thiết kế phần mềm: • Abstraction: is “the process of forgetting information so that things that are different can be treated as if they were the same”. [Lis01] In the context of software design, two key abstraction mechanisms are parameterization and specification. Abstraction by specification leads to three major kinds of abstraction: procedural abstraction, data abstraction and control (iteration) abstraction. 8
  9. 2.1. Các khái niệm cơ bản trong thiết kế phần mềm • Các kỹ thuật trong thiết kế phần mềm: • Coupling and cohesion: Coupling is defined as the strength of the relationships between modules, whereas cohesion is defined by how the elements making up a module are related. • Decomposition and modularization: Decomposing and modularizing large software into a number of smaller independent ones, usually with the goal of placing different functionalities or responsibilities in different components. 9
  10. 2.1. Các khái niệm cơ bản trong thiết kế phần mềm • Các kỹ thuật trong thiết kế phần mềm: • Separation of interface and implementation: Separating interface and implementation involves defining a component by specifying a public interface, known to the clients, separate from the details of how the component is realized. • Sufficiency, completeness and primitiveness: Achieving sufficiency, completeness, and primitiveness means ensuring that a software component captures all the important characteristics of an abstraction, and nothing more. 10
  11. Chương 2. Thiết kế phần mềm (Software Design) 1. Các khái niệm căn bản trong thiết kế phần mềm 2. Thiết kế kiến trúc phần mềm (Software Architectrure Design) 3. Các chiến thuật và phương pháp thiết kế phần mềm 4. Xây dựng các đặc tả thiết kế phần mềm (Software Design Specification) 5. Giới thiệu một số tài liệu liên quan đến nội dung chương 6. Câu hỏi và bài tập 11
  12. 2.2. Thiết kế kiến trúc phần mềm • Định nghĩa Kiến trúc phần mềm • Xác định các yêu cầu đối với kiến trúc phần mềm • Xây dựng kiến trúc phần mềm • Phần cứng • Phần mềm • Các phần mềm tiện ích trợ giúp • Một số kỹ thuật tiêu biểu thiết kế kiến trúc phần mềm • Đánh giá và kiểm thử kiến trúc phần mềm • Các phương pháp kiểm thử kiến trúc phần mềm • Các tiêu chí đánh giá chất lượng kiến trúc phần mềm 12
  13. 2.2. Thiết kế kiến trúc phần mềm • Định nghĩa Kiến trúc phần mềm • Một số kỹ thuật tiêu biểu thiết kế kiến trúc phần mềm • Đánh giá và kiểm thử kiến trúc phần mềm • Các phương pháp kiểm thử kiến trúc phần mềm • Các tiêu chí đánh giá chất lượng kiến trúc phần mềm 13
  14. 2.2. Thiết kế kiến trúc phần mềm • Định nghĩa Kiến trúc phần mềm: Kiến trúc phần mềm bao gồm hệ thống các thành phần (components) và các mối quan hệ (relations). Thuật ngữ thành phần có thể là hệ thống con (subsystems), các quy trình (processes), các mô đun phần mềm (software modules), các thành phần phần cứng (hardware components)… Các mối quan hệ gồm luồng dữ liệu (data flows), luồng điều khiển (control flows), các mối quan hệ triệu gọi (call-relation)… 14
  15. 2.2. Thiết kế kiến trúc phần mềm • Định nghĩa kiến trúc phần mềm: • "The logical and physical structure of a system, forged by all the strategic and tactical design decisions applied during development" [Booch 91] • The structure of the components of a program/system, their interrelationships, and principles and guidelines governing their design and evolution over time. [Garlan 95] • "The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them." [Bass 98] 15
  16. 2.2. Thiết kế kiến trúc phần mềm Prospectus Planning and Architecture Phase Requirements Discovery Review Architecture High-Level Design Source: Joe Maranzano Low-Level ATT Bell Labs Architecture Review Design 16
  17. 2.2. Thiết kế kiến trúc phần mềm Một số kỹ thuật tiêu biểu thiết kế kiến trúc phần mềm (Meta-Model for Architecture Design Approaches): Artifact-driven Architecture Design Use-Case driven Architecture Design Domain-driven Architecture Design Pattern-driven Architecture Design 17
  18. Meta-Model for Architecture Design Approaches(1/3) 18
  19. Meta-Model for Architecture Design Approaches(2/3) Client: những người được quan tâm trong phát triển của một thiết kế kiến trúc phần mềm gồm: khách hàng (customer), người sử dụng cuối (end-user), người phát triển hệ thống (system developer), người bảo trì hệ thống (system maintainer), người quản lý việc bán (sales manager) … Domain Knowledge: vùng kiến thức để giải quyết một vấn đề nào đó. Requirement Specification: xác định việc mô tả các yêu cầu cho kiến trúc được phát triển. Artifact: mô tả cho một phương thức nào đó (Class, Operation, Attribute ) … 19
  20. Meta-Model for Architecture Design Approaches(3/3) Domain Knowledge 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2