Xác định các lớp đối tượng
Ở pha trước, giai đoạn phân tích các yêu cầu của hệ thống đã có các mô tả bài toán, đã xây dựng đặc tả các ca sử dụng và các kịch bản mô tả chi tiết những ca sử dụng phức tạp để hiểu rõ bài toán. Các danh từ trong các mô tả văn bản đó có thể là đại ...
Ở pha trước, giai đoạn phân tích các yêu cầu của hệ thống đã có các mô tả bài toán, đã xây dựng đặc tả các ca sử dụng và các kịch bản mô tả chi tiết những ca sử dụng phức tạp để hiểu rõ bài toán. Các danh từ trong các mô tả văn bản đó có thể là đại biểu của lớp hoặc thuộc tính của lớp. Do vậy, có thể gạch chân tất cả các danh từ chung trong văn bản mô tả bài toán. Ví dụ, gạch chân những danh từ chung trong đoạn văn mô tả hệ HBH:
“Một Công ty muốn xây dựng hệ thống phần mềm để phục vụ và quản lý các hoạt động kinh doanh . Công ty có nhiều điểm bán hàng đầu cuối (point- of sale terminal) đó là những cửa hàng siêu thị , do vậy hệ thống cần phải ghi nhận các hoạt động bán hàng và xử lý các công việc thanh toán với khách hàng , chủ yếu khách hàng mua lẻ. Ngoài ra hệ thống còn giúp giám đốc Công ty theo dõi được các hoạt động kinh doanh , tự động kiểm kê các mặt hàng tồn đọng trong kho, các mặt hàng bán chạy, v.v. để hỗ trợ ra quyết định trong các hoạt động kinh doanh của Công ty. Trong mỗi điểm bán hàng đầu cuối đều có các thiết bị phần cứng như: máy tính,máy đọc mã vạch ( bar code scanner) và phần mềm hệ thống để chạy hệ thống sẽ được xây dựng”.
- Không phải tất cả các danh từ đã gạch chân trong văn bản mô tả bài toán đều là đại biểu lớp. Ví dụ: cụm danh từ phần mềm hệ thống, máy tính, thiết bị phần cứng v.v. không phải là những thực thể mà chúng ta quan tâm trong hệ thống HBH
- Một số danh từ, cụm danh từ đồng nghĩa với nhau hay mô tả cho những thực thể có vai trò như nhau trong hệ thống thì có thể chọn một trong số chúng hoặc đặt tên khác cho những danh từ đó.
Hệ thống và hệ thống phầnmềm, hay hoạtđộngbánhàng và hoạt động kinh doanh ở đây là giống nhau, vậy nên có thể thay hệ thống và hệ thốngphần mềm bằng HBH, còn hoạt độngbánhàng và hoạtđộngkinhdoanh được gọi là giao dịch bán hàng (hay phiên bán hàng), v.v.
Tóm lại, dựa vào những danh từ, cụm danh từ đã được gạch chân, sau đó dựa vào kinh nghiệm, trình độ, kiến thức của mình mà loại bỏ đi những mục không phải là đại biểu của lớp. Danh sách các đại biểu có thể là lớp của hệ thống HBH do đó sẽ là:
HBH: đại diện cho hệ thống phần mềm, hệ thống,
CuaHang (cửa hàng): điểm bán hàng đầu cuối, cửa hàng siêu thị, v.v PhienBanHang (phiên bán hàng): đại diện cho hoạt động bán hàng, hoạt động kinh doanh, ThanhToan (thanh toán): đại diện cho công việc thanh toán, trả tiền
KhachHang (khách hàng): cho khách hàng, người mua hàng,
NguoiQL (Người quản lý): đại diện cho giám đốc Công ty,cửa hàng trưởng,
MatHang (Mặt hàng): đại diện cho mặt hàng, sản phẩm, v.v.
Tương tự, đối với các kịch bản.
Xét kịch bản mô tả ca sử dụng “Bán hàng”
Ngoài những đại biểu lớp đã nêu trên, có thể liệt kê thêm những danh từ là đại biểu lớp trong HBH:
NguoiBan (người bán): đại diện cho người bán, người bán hàng, người thu tiền,
MoTaMatHang (thông tin về mặt hàng): thông tin về sản phẩm, thông tin về mặt hàng, đặc tả sản phẩm, v.v.
PhieuBanHang (phiếu bán hàng): phiếu bán hàng, hoá đơn, v.v.
Bên cạnh những phương pháp nêu trên, chúng ta còn có thể dựa vào danh sách phân loại các phạm trù khái niệm để xác định thêm những đại biểu mới cho hệ thống hoặc loại đi những danh từ không thực sự là đại biểu của lớp.
Xét các phạm trù khái niệm (concept category) của hệ thống “bán hàng” và hệ thống “Đặt vé máy bay”.
Các phạm trù khái niệm |
Ví dụ |
Các đối tượng vật lý, hay hữu hình | Hệ HBH, NguoiBan, KhachHang MayBay (máy bay) |
Mô tả, đặc tả, tài liệu của sự vật | MoTaMatHang MoTaChuyenBay (mô tả chuyến bay) |
Địa điểm, nơi, chốn | CuaHang SanBay (sân bay) |
Các mục trên dòng giao dịch> (Transaction line items) |
DongHangBan (Sales Line Item) |
Các giao dịch (Transaction) | PhienBanHang (Sale), ThanhToan (Payment), DatCho (Reservation) |
Vai trò của con người | NguoiBan, KhachHang PhiCong |
Các vật chứa trong container (vật chứa) | MatHang KhachDiMB (Passenger) |
Vật chứa các vật khác (Container of other thing) | CuaHang SanBay |
Các tổ chức (Organizations) | PhòngBánHàng (SaleDepartment) PhòngBánVeMáyBay |
Các sự kiện (Events) | BanHang, ThanhToan CấtCánh, HạCánh |
Các danh mục (Catalogs) | DanhMucMatHang (ProceductCatalog) DanhMụcThiếtBị (PartsCatalog) |
Các bản ghi về tài chính, dòng công việc, hợp đồng, |
PhieuBan (Receipt), HoaDon PhiếuĐặtChỗ |
Trong các phạm trù nêu trên, ta thấy hệ HBH có thêm:
MoTaMatHang (Thông tin về các mặt hàng), và DanhMucMatHang (Danh mục về các mặt hàng).
Phiếu bán hàng được tạo lập từ thông tin ở MoTaMatHang và ThanhToan.
Tuy nhiên, những khái niệm như trên, nhiều khi cũng đóng những vai trò đặc biệt trong hệ thống thông tin quản lý, nó cần thiết để duy trì hệ thống.
Nếu khách hàng được phép trả lại những mặt hàng kém chất lượng cho cửa hàng chẳng hạn, khiđó phải lưu lại các phiếu bán hàng để làm căn cứ nhận lại những mặt hàng mà khách hàng trả lại. Trong những trường hợp như thế phải đưa phiếu bán hàng vào danh sách các lớp cần xây dựng.
Ngoài ra, ta còn có thể dựa vào các câu hỏi sau để tìm ra các lớp đối tượng:
- Những thông tin nào cần phân tích, cần lưu trữ?
- Những hệ thống ngoài nào cần thiết cho hệ thống và ngược lại?
- Những mẫu, thư viện lớp, thành phần nào được sử dụng trong hệ thống?
- Hệ thống quản lý những thiết bị ngoại vi nào?
- Vai trò của các tác nhân đối với hệ thống là gì?
Những câu trả lời cho các câu hỏi trên có thể là đại biểu của lớp.
Công việc chính trong quá trình phát triển phần mềm được hướng dẫn bởi ca sử dụng là ánh xạ từ biểu đồ ca sử dụng sang biểu đồ lớp. Hai cách tiếp cận nêu trên tập trung phân tích các văn bản mô tả các ca sử dụng và các phạm trù cơ sở, nghĩa là theo các tiếp cận mô hình đối tượng hướng danh từ để xác định các lớp.
Một vấn đề trở ngại chung của cả hai cách làm trên là một lúc có thể phát hiện quá nhiều các đại biểu lớp, ví dụ có thể xem mỗi danh từ là một đại biểu lớp. Ngoài ra theo kinh nghiệm của các nhà phân tích viên đã sử dụng UML thì hai cách tiếp cận trên còn có những vấn đề sau trong mô hình hoá đối tượng:
- Một mô tả của ca sử dụng có thể chỉ là một kịch bản. Nghĩa là, nó chỉ mô tả một cách thực hiện để đạt được mục đích của ca sử dụng đó, chứ không phải tất cả. Do vậy, các lớp được xác định theo cách này bị giới hạn bởi chính mô tả này. Bởi vì, một ca sử dụng có thể được mô tả với những câu khác nhau bởi nhiều người khác nhau, dẫn tới là một thực thể có thể được xác định tương ứng bởi nhiều tên lớp khác nhau. Ví dụ, người mua hàng có thể được gọi là khách hàng, nhân viên có thể được gọi là cán bộ, công chức, v.v. Như thế có thể dẫn đến trường hợp có quá nhiều danh từ để lựa chọn ra những tên lớp có nghĩa trong một hệ thống.
- Nhiều phân tích viên có thể sử dụng những kiểu phân loại phạm trù các sự vật khác nhau, đôi khi dẫn đến xung đột và do vậy, rất khó thoả thuận được với nhau. Trong một số hệ thống, có thể có quá nhiều phạm trù đóng những vai trò khác nhau trong những bộ phận khác nhau. Điều này cũng gây trở ngại cho các nhà phân tích khi phải lựa chọn trong số những phạm trù đó những phạm trù nào là lớp chính xác cần xác định.
Ngoài ra, từ yêu cầu của hệ thống chúng ta có thể phát hiện được cả các chức năng và các thực thể trong hệ thống. Nhưng, mô tả ca sử dụng chỉ nhấn mạnh vào mô tả chức năng, cách thực hiện công việc. Do đó, người phân tích khó phát hiện được các thực thể một cách hiệu quả. Nghĩa là, theo các cách trên thì có thể một số lớp được phát hiện không được chấp nhận bởi các tác nhân, không thật phù hợp với bài toán ứng dụng.
Để khắc phục những nhược điểm trên, chúng ta có thể thực hiện phân tích các mục đích của ca sử dụng để xác định lớp.
Các lớp đối tượng chính là các nhóm thực thể tham gia thực hiện để đạt được mục đích của hệ thống trong thế giới thực. Các thực thể và các mục đích phải được mô tả bởi các khách hàng (NSD), chứ không phải bởi các nhà phân tích. Theo cách tiếp cận này, chúng ta có thể tạo ra biểu đồ lớp từ biểu đồ ca sử dụng theo một thuật toán gồm năm bước.
Bước 1: Xác định mục đích của mỗi ca sử dụng
Ca sử dụng thể hiện những chức năng, nhiệm vụ của hệ thống mà NSD yêu cầu. Mục đích của NSD cũng chính là mục đích của ca sử dụng. Tác nhân của ca sử dụng có mục tiêu là sử dụng ca sử dụng để đạt được những điều mà họ muốn. Mục đích của ca sử dụng được xác định như sau:
Mục đích của ca sử dụng là những mục tiêu mà hệ thống cần thực hiện. Mục đích thường được thể hiện dưới dạng các giá trị (dữ liệu hoặc thông tin) mà ca sử dụng cung cấp cho tác nhân hoặc những đáp ứng của ca sử dụng đó. Như vậy, mục đích là duy nhất ứng với mỗi ca sử dụng.
Để xác định các mục đích, chúng ta phải tìm cách trả lời những câu hỏi sau:
- Mục tiêu của ca sử dụng là gì?
- Ca sử dụng này cung cấp những dịch vụ nào?
- Những giá trị hay những đáp ứng nào mà ca sử dụng có thể cung cấp.
Bước 2: Dựa vào các mục đích để xác định các thực thể
Để thực hiện được những mục đích của ca sử dụng thì bao giờ cũng phải có các thực thể tham gia. Thực thể là người nào đó, cái gì đó đóng một vai trò nhất định trong ca sử dụng để thực hiện được những mục đích của ca sử dụng. Một thực thể có thể tham gia vào nhiều ca sử dụng với những vai trò khác nhau. Nói chung, mỗi thực thể đều có những đặc tính (thuộc tính) và những hành vi ứng xử (phương thức xử lý) để phân biệt với những thực thể khác. Mặt khác, những thực thể này lại cộng tác với nhau để cùng nhau đạt được mục đích của ca sử dụng. Dựa vào các câu hỏi sau để xác định các thực thể (lớp) cho mỗi ca sử dụng:
- Những thực thể nào là cần thiết và quan trọng để thực hiện được mục đích của ca sử dụng?
- Những thuộc tính nào của thực thể là cần thiết và quan trọng để thực hiện được mục đích của ca sử dụng?
Để có phiếu đăng ký môn học thì phải có sự tham gia của các thực thể: môn học, sinh viên và phiếu ghi danh (trả lời câu hỏi thứ nhất). Môn học phải có thuộc tính: mã số của khoá học, tên môn học, sinh viên phải có thuộc tính: mã SV, họ tên, và phiếu ghi danh có: mã ghi danh, ngày ghi danh, v.v. (trả lời câu hỏi thứ hai). Từ các mục đích, chúng ta xác định được các lớp và các thuộc tính tương ứng như hình 1.
Ca sử dụng “Đăng ký môn học” và các thực thể liên quan
Bước 3: Xác định các mối quan hệ (chủ yếu kết hợp) giữa các lớp
Một ca sử dụng có thể liên quan tới nhiều thực thể như hình 4-2, những thực thể đó kết hợp với nhau để thực hiện được mục đích của ca sử dụng. Thông qua các câu hỏi tác nhân để xác định được mối liên quan giữa các lớp:
- Với mỗi thực thể, nó được sinh ra dựa vào hay bị phụ thuộc vào những thực thể khác? Nếu có, nó phải tham chiếu tới những thực thể đó.
- Với mỗi thực thể, nó có thể tác động vào hay bị tác động bởi những thực thể khác? Nếu có, nó phải tham chiếu tới những thực thể đó.
Hãy xét phiếu ghi danh ở hình 1, nó được sinh ra dựa vào sự lựa chọn môn học của sinh viên. Một sinh viên lại có thể ghi danh nhiều môn học, một môn học được nhiều sinh viên ghi danh. Sự tham chiếu giữa các lớp được biểu diễn bằng quan hệ kết hợp trong biểu đồ lớp như hình 2.
Mối quan hệ giữa các lớp
Bước 4: Xác định các hàm thành phần thể hiện sự cộng tác của các lớp trong ca sử dụng
Những thực thể liên quan đến một ca sử dụng thì chúng cộng tác với nhau để thực hiện một số công việc nhằm đạt được mục đích của ca sử dụng. Những công việc đó chính là các hàm thành phần của lớp. Có thể xác định được các hàm thành phần của lớp thông qua các câu hỏi các tác nhân như sau:
- Ca sử dụng này cần làm gì với mỗi thực thể liên quan với nó?
- Ca sử dụng này cần biết gì về mỗi thực thể liên quan với nó?
- Mỗi thực thể liên quan có thể đóng góp được gì trong ca sử dụng này?
Hãy xét các tác nhân ở hình 1.
(i) Ca sử dụng gán maSV cho sinh viên, nó cần biết về họ tên của sinh viên. Sinh viên phải cho ca sử dụng biết họ và tên.
(ii) Ca sử dụng cần phải biết mã số và tên môn học.
(iii) Ca sử dụng tạo lập phiếu ghi danh mới với ngày ghi danh của sinh viên và với số ghi danh duy nhất.
Từ những phân tích như trên chúng ta có biểu đồ lớp với các hàm thành phần được bổ sung như hình 3.
Biểu đồ lớp
Bước 5 : Kiểm tra các biểu đồ ca sử dụng.
Chúng ta có thể kiểm tra các biểu đồ được xây dựng theo các qui tắc sau:
- Kiểm tra các yêu cầu chức năng xem:
+ Tất cả các ca sử dụng có thực hiện được hết các yêu cầu chưa?
+ Mục đích của mỗi ca sử dụng có đúng như các tác nhân yêu cầu không?
- Kiểm tra các thực thể của các ca sử dụng:
+ Các thực thể trong biểu đồ lớp có cần và đủ để thực hiện các mục đích của mối ca sử dụng hay không?
+ Các thuộc tính của mỗi thực thể có phải là những cái mà ca sử dụng cần biết hay không?
+ Các hàm thành phần của lớp có cần và đủ để thực hiện các mục đích của mối ca sử dụng hay không?
Sau này, việc kiểm tra biểu đồ lớp được xây dựng tương ứng với một ca sử dụng sẽ đỡ phức tạp hơn là kiểm tra cả hệ thống.
Bằng các phương pháp nêu trên chúng ta có được danh sách các đại biểu lớp, nhưng không phải tất cả đều có thể là đại biểu lớp. Hãy loại bỏ những đại biểu dư thừa.
- Lớp dư thừa: khi có 2 lớp trở lên định nghĩa cho cùng một thực thể thì chỉ cần giữ lại một.
- Lớp biệt lập: những lớp không có quan hệ với các lớp khác trong hệ thống thì cần phải loại bỏ.
- Lớp mơ hồ: những lớp không có chức năng rõ ràng thì phải định nghĩa lại chính xác hoặc loại bỏ đi.
Bằng những cách nêu trên, hệ thống HBH có những lớp sau:
HBH (POST - Point Of Sale Terminal)
DongBanHang (SaleLineItem)
MatHang (Items)
ThanhToan (Thanh toán – Payment)
CuaHang (Store)
MoTaMatHang (Product Specification)
PhienBanHang (Sale)
KhachHang (Customer)
DanhMucMatHang (ProductCatalog)
NguoiBan (Cashier)
NguoiQL (Manager)