CHƯƠNG 1: TỔNG QUAN VỀ PHÂN TÍCH THIẾT KẾHƯỚNG ĐỐI TƯỢNG 1. Cơ bản về phân tích, thiết kế hướng đối tượng. Khái niệm về Phân tích và thiết kế hướng đối tượng (Object Oriented Analysis and Design: OOAD) Trong kỹ nghệ phần mềm để sản xuất được một sản phẩm phần mềm người ta chia quá trình phát triển sản phẩm ra nhiều giai đoạn như: thu thập và phân tích yêu cầu, phân tích và thiết kế hệ thống, phát triển, kiểm thử, triển khai và bảo trì. Trong đó, giai đoạn phân tích, thiết kế bao giờ cũng là giai đoạn khó khăn và phức tạp nhất.
Giai đoạn này giúp chúng ta hiểu rõ yêu cầu đặt ra, xác định giải pháp, mô tả chi tiết giải pháp. Nó trả lời 2 câu hỏi What (phần mềm này làm cái gì?) và How (làm nó như thế nào?). Để phân tích và thiết kế một phần mềm thì có nhiều cách làm, một trong những cách làm đó là xem hệ thống gồm những đối tượng sống trong đó và tương tác với nhau. Việc mô tả được tất cả các đối tượng và sự tương tác của chúng sẽ giúp chúng ta hiểu rõ hệ thống và cài đặt được nó.
Phương thức này gọi là Phân tích thiết kế hướng đối tượng (OOAD) 1. Giới thiệuvề UML (Unified Modeling Language) UML là ngôn ngữ mô hình hóa hợp nhất dùng để biểu diễn hệ thống. Nói một cách đơn giản là nó dùng để tạo ra các bản vẽ nhằm mô tả thiết kế hệ thống. Các bản vẽ này được sử dụng để các nhóm thiết kế trao đổi với nhau cũng như dùng để thi công hệ thống (phát triển), thuyết phục khách hàng, các nhà đầu tư v.
(Giống như trong xây dựng người ta dùng các bản vẽ thiết kế để hướng dẫn và kiểm soát thi công, bán hàng căn hộ v. Tại sao phải sử dụng OOAD và UML? OOAD cần các bản vẽ để mô tả hệ thống được thiết kế, còn UML là ngôn ngữ mô tả các bản vẽ nên cần nội dung thể hiện. Do vậy, chúng ta phân tích,thiết kế theo hướng đối tượng và sử dụng UML để biểu diễn các thiết kế đó nên chúng thường đi đôi với nhau. OOAD sử dụng UML Trang 3 UML sử dụng để vẽ cho nhiều lĩnh vực khác nhau như phần mềm, cơ khí, xây dựng v.
Phân tích thiết kế hướng đối tượng sử dụng UML bao gồm các thành phần sau: – View (góc nhìn) – Diagram (bản vẽ) – Notations (ký hiệu) – Mechanisms (qui tắc, cơ chế) 1. Mục đích của mô hình hướng đối tượng Mô hình được các hệ thống (không chỉ hệ thống phần mềm) và sử dụng được tất cả các khái niệm hướng đối tượng một cách thống nhất. Cho phép đặc tả, hỗ trợ để đặc tả tường minh (trực quan) mối quan hệ giữa các khái niệm cơ bản trong hệ thống, đồng thời mô tả được mọi trạng thái hoạt động của hệ thống đối tượng. Nghĩa là cho phép mô tả được cả mô hình tĩnh lẫn mô hình động một cách đầy đủ và trực quan.
Tận dụng được những khả năng sử dụng lại và kế thừa ở phạm vi diện rộng để xây dựng được những hệ thống phức tạp và nhạy cảm như: các hệ thống động, hệ thống thời gian thực, hệ thống nhúng thời gian thực, v. Tóm lại,UMLsử dụng vẽ các biểu đồ trên là ngôn ngữ mô hình hoá, ngôn ngữ đặc tả và ngôn ngữ xây dựng mô hình trong quá trình phát triển phần mềm, đặc biệt là trong phân tích và thiết kế hệ thống hướng đối tượng. UML là ngôn ngữ hình thức, thống nhất và chuẩn hoá mô hìnhhệ thống một cách trực quan. Nghĩa là các thành phần trong mô hình được thể hiện bởicác ký hiệu đồ hoạ, biểu đồ và thể hiện đầy đủ mối quan hệ giữa chúng một cách thống nhất và có logic chặt chẽ.
Sử dụng UML để phát triển phần mềm thống nhất UML được phát triển để đặc tả quá trình phát triển phần mềm, nhằm mô hình hoá hệ thống. Quá trình phát triển phần mềm này gọi là quá trình phát triển phần mềm hợp nhất (USPD) hay quá trình hợp nhất Rational, gọi tắt là quá trình hợp nhất (UP). RUP là tập các qui tắc hướng dẫn về phương diện kỹ thuật và tổ chức để phát triển phần mềm, nhấn mạnh chủ yếu vào các bước phân tích và thiết kế. RUP được cấu trúc theo hai chiều: Trang 4 1.
Chiều thời gian: chia quá trình thành các pha thực hiện và các bước lặp. Chiều thành phần: các sản phẩm cùng với các hoạt động được xác định đầy đủ. Cấu trúc dự án theo chiều thời gianbao gồm các pha thực hiện: (i)Khởi động (Inception): xác định dự án tổng thể (ii) Soạn thảo dự án tỉ mỉ (Elaboration): + Lập kế hoặch cho những hoạt động cần thiết + Xác định những tài nguyên cần để thực hiện dự án + Xác định các tính chất, đặc trưng của dự án + Xây dựng kiến trúc cho hệ thống. (iii) Xác định những sản phẩm ở mỗi pha thực hiện.
(iv) Chuyển giao: cung cấp sản phẩm cho cộng đồng người sử dụng. Cấu trúc dự án theo chiều thành phần bao gồm các hoạt động: Mô hình hoá nghiệp vụ: thiết lập các khả năng của hệ thống cần xây dựng và nhu cầu của người sử dụng. Phân tích các yêu cầu: chi tiết các yêu cầu chức năng và phi chức năng của hệ thống. Phân tích thiết kế hệ thống: mô tả hệ thống thực hiện các yêu cầu và hỗ trợ cài đặt.
Cài đặt chương trình: lập trình những kết quả thiết kế nêu trên để hệ thống hoạt động đúng theo yêu cầu. Kiểm thử, kiểm chứng các thành phần và toàn bộ hệ thống. Triển khai hệ thống: khai thác hệ thống và huấn luyện người sử dụng. UP bao gồm con người, dự án, sản phẩm, qui trình và công cụ.
Con người là những người tham gia dự án để tạo ra sản phẩm phần mềm theo một quá trình với sự hỗ trợ của công cụ được cung cấp. UP là quá trình phát triển phần mềm được hướng dẫn bởi các ca sử dụng. Nghĩa là các yêu cầu của người sử dụng được mô tả trong các ca sử dụng, là chuỗi các hành động được thực hiện bởi hệ thống nhằm cung cấp các dịch vụ, các thông tin cho khách hàng. Các ca sử dụng bao gồm chuỗi các công việc được xem là nền tảng để tạo ra mô hình thiết kế và cài đặt hệ thống.
UP cũng là qui trình tập trung vào kiến trúc, được lặp và phát triển tăng trưởng liên tục. Kiến trúc của hệ thống phải được thiết kế nhằm đáp ứng các yêu cầu của cácca sử Trang 5 dụng chính, trong giới hạn của chuẩn phần cứng mà hệ thống sẽ chạy và của cấu trúc cả hệ thống lẫn các hệ thống con. Tính lặp của quá trình phát triển phần mềm được thể hiện ở chỗ là một dự án được chia thành các dự án nhỏ và được thực hiện lặplại trong từng bước thực hiện. Mỗi dự án nhỏ đều thực hiện phân tích, thiết kế, cài đặtvà kiểm thử, v.
Mỗi phần việc đó được phát triển tăng trưởng và cả dự án cũng được thực hiện theo sự tăng trưởng này. UP không chỉ tạo ra một hệ thống phần mềm hoàn chỉnh mà còn tạo ra một số sản phẩm trung gian như các mô hình. Các mô hình chính trong UP là mô hình nghiệp vụ (ca sử dụng), mô hình khái niệm, mô hình thiết kế, mô hình triển khai và mô hình trắc nghiệm. Các mô hình này có sự phụ thuộc theo vết phát triển, nghĩa là có thể lần theo từng mô hình để đến được mô hình trước.
Các biểu đồ (Diagram): Diagram các bạn có thể dịch là sơ đồ. Tuy nhiên ở đây chúng ta sử dụng từ bản vẽ cho dễ hình dung. Các bản vẽ được dùng để thể hiện các góc nhìn của hệ thống.1: Các bản vẽ trong OOAD sử dụng UML Trong đó, – Biểu đồ ca sử dụng ( Use Case Diagram): bản vẽ mô tả về ca sử dụng của hệ thống. Bản vẽ này sẽ giúp chúng ta biết được ai sử dụng hệ thống, hệ thống có những chức năng gì.
Lập được bản vẽ này bạn sẽ hiểu được yêu cầu của hệ thống cần xây dựng. Trang 6 – Biểu đồ lớp (Class Diagram): bản vẽ này mô tả cấu trúc của hệ thống, tức hệ thống được cấu tạo từ những thành phần nào. Nó mô tả khía cạnh tĩnh của hệ thống. – Biểu đồ đối tượng(Object Diagram): Tương tự như Class Diagram nhưng nó mô tả đến đối tượng thay vì lớp (Class).
– Biểu đồ trình tự (Sequence Diagarm): là bản vẽ mô tả sự tương tác của các đối tượng trong hệ thống với nhau được mô tả tuần tự các bước tương tác theo thời gian. – Biểu đồ cộng tác (Collaboration Diagram): tương tự như sequence Diagram nhưng nhấn mạnh về sự tương tác thay vì tuần tự theo thời gian. – Biểu đồ trạng thái (State Diagram): bản vẽ mô tả sự thay đổi trạng thái của một đối tượng. Nó được dùng để theo dõi các đối tượng có trạng thái thay đổi nhiều trong hệ thống.
– Biểu đồ hoạt động (Activity Diagram): bản vẽ mô tả các hoạt động của đối tượng, thường được sử dụng để hiểu về nghiệp vụ của hệ thống. – Biểu đồ thành phần (Component Diagram): bản vẽ mô tả về việc bố trí các thành phần của hệ thống cũng như việc sử dụng các thành phần đó. – Biểu đồ triển khai (Deployment Diagram): bản vẽ mô tả việc triển khai của hệ thống như việc kết nối, cài đặt, hiệu năng của hệ thống v.v… Các quan sát ( Các kiểu xem) Khi xem xét một hệ thống, chúng ta cần xây dựng mô hình từ những hướng nhìn (View- khía cạnh) khác nhau, xuất phát từ thực tế là những người làm việc với hệ thống, với các vai trò khác nhau sẽ nhìn hệ thống từ những khía cạnh khác nhau. UML xét hệ thống trên 5 khía cạnh: Trang 7 Hình 1.2: Các View trong OOAD sử dụng UML Trong đó, – Use Case View: cung cấp góc nhìn về các ca sử dụng giúp chúng ta hiểu hệ thống có gì? ai dùng và dùng nó như thế nào.
– Logical View: cung cấp góc nhìn về cấu trúc hệ thống, xem nó được tổ chức như thế nào. – Process View: cung cấp góc nhìn động về hệ thống, xem các thành phần trong hệ thống tương tác với nhau như thế nào. – Component View: Cũng là một góc nhìn về cấu trúc giúp chúng ta hiểu cách phân bổ và sử dụng lại các thành phần trong hệ thống ra sao. – Deployment View: cung cấp góc nhìn về triển khai hệ thống, nó cũng ảnh hưởng lớn đến kiến trúc hệ thống.
Tập hợp các góc nhìn này sẽ giúp chúng ta hiểu rõ hệ thống cần phân tích, thiết kế.