3t Xác định yêu cầu chức năng của hệ thống - mô hình hóa yêu cầu chức năng bằng sơ đồ use case Các thành phần trong sơ đồ use case − Actor: các tác nhân tương tác với hệ thống, actor
6t) Viết đặc tả use case – mô hình hóa bằng Activity
− Giúp sinh viên hiểu được vai trò của đặc tả use case
− Biết cách viết đặc tả use case
− Vận dụng sơ đồ activity để mô hình hóa đặc tả use case
1 Nội dung của đặc tả use case:
− Tên use case: là tên của use case trong sơ đồ use case
− Mô tả sơ lược: Mộ tả sơ lược chức năng của use case
− Actor chính: là actor kết hợp với use case trong sơ đồ use case
− Actor phụ: là actor hỗ trợ để thực hiện use case
Tiền điều kiện (Pre-condition) là những điều kiện tiên quyết bắt buộc của một use case, phản ánh trạng thái hệ thống cần thiết để bắt đầu thực hiện kịch bản Các điều kiện này đảm bảo rằng hệ thống đã sẵn sàng để thực thi use case, tuy nhiên, tiền điều kiện không được kiểm tra trong quá trình mô tả use case Việc xác định tiền điều kiện giúp đảm bảo tính khả thi và đúng đắn của các kịch bản sử dụng, đồng thời giúp người phát triển hiểu rõ các điều kiện cần thiết để hệ thống vận hành chính xác.
Hậu điều kiện (Post-condition) mô tả các trạng thái của hệ thống có thể xảy ra sau khi hoàn tất quá trình thực thi của use case Các hậu điều kiện này giúp xác định rõ các kết quả cuối cùng của hệ thống, đảm bảo rằng các mục tiêu của use case đã được đạt được Chúng được phân loại thành hai loại chính: Đảm bảo tối thiểu và Bảo đảm thành công, nhằm đảm bảo tính chính xác và độ tin cậy của hệ thống sau khi các tác vụ được thực hiện.
Luồng sự kiện chính (main flow) mô tả các bước thực hiện use case, gồm sự tương tác liên tiếp giữa actor và hệ thống từ khi bắt đầu đến khi kết thúc Mỗi bước trong luồng được đánh số thứ tự rõ ràng, trong đó actor thực hiện bước đầu tiên, hệ thống phản hồi và xử lý yêu cầu, tiếp theo actor thực hiện bước tiếp theo để tiến trình diễn ra suôn sẻ Việc xác định rõ các bước trong luồng sự kiện chính giúp đảm bảo tính logic và hiệu quả trong quá trình thiết kế hệ thống.
Luồng sự kiện thay thế (alternate flow) là các bước xử lý khác trong quá trình diễn ra sự kiện chính, yêu cầu actor chọn nhánh khác để tiếp tục hoặc quay lại một bước trước đó Các luồng thay thế được đánh số thứ tự dựa trên bước trong luồng chính nơi xảy ra nhánh rẽ, giúp dễ dàng theo dõi và xử lý các tình huống ngoại lệ, đảm bảo quy trình diễn ra suôn sẻ và linh hoạt hơn.
− Luồng sự kiện ngoại lệ (exception flow): một cách xử lý cho một trường hợp ngoại lệ
2 Các ký hiệu trong sơ đồ activity
Dựa trên case study xây dựng hệ thống đăng ký học phần trực tuyến, cần thiết lập đặc tả các use case chính như đăng nhập, tạo tài khoản, xem điểm và thay đổi lớp học phần Mỗi đặc tả này giúp xác định rõ các bước tương tác của người dùng với hệ thống, từ việc nhập thông tin đăng nhập, xác thực tài khoản, truy cập hệ thống để xem điểm số cho đến thao tác thay đổi lớp học phần phù hợp Để minh họa quá trình thực thi của các use case này, mô hình hóa bằng sơ đồ hoạt động (activity diagram) sẽ thể hiện rõ các trạng thái và luồng công việc diễn ra trong từng trường hợp, giúp tối ưu hóa quy trình và nâng cao trải nghiệm người dùng.
Đặc tả use case “Đăng ký học phần”
− Tên use case: Đăng ký học phần
− Mô tả sơ lược: chức năng Đăng ký học phần giúp sinh viên có thể đăng ký học phần trực tuyến
− Tiền điều kiện (Pre-condition): Đăng nhập thành công
− Hậu điều kiện (Post-condition): nếu đăng ký thành công thì sỉ số lớp được cập nhật và sinh viê sẽ có lịch học
− Luồng sự kiện chính (main flow):
1 Sinh viên chọn chức năng Đăng ký học phần
2 Hệ thống hiển thị trang đăng ký học phần
3 Sinh viên chọn học kỳ hiện tại 4 Hệ thống hiễn thị danh sách học phần trong học kỳ đó
5 Sinh viên chọn học phần muốn đăng ký
6 Hệ thống kiểm tra học phần tiên quyết
7 Hệ thống hiển thị danh sách lớp học phần
8 Sinh viên chọn 1 lớp học phần 9 Hệ thống kiểm tra sỉ số lớp
10 Hệ thống thông báo đăng ký thành công
− Luồng sự kiện thay thế (alternate flow):
6.1 Hệ thống hiển thị thông báo môn tiên quyết không thỏa
6.2 Sinh viên xác nhận 6.3 Hệ thống quay lại bước 4
9.1 Hệ thống hiển thị thông báo lớp đầy
9.2 Sinh viên xác nhận 9.3 Hệ thống quay lại bước 8
− Luồng sự kiện ngoại lệ (exception flow):
9.1.1 Hệ thống kiểm tra nếu là sinh viên năm cuối
9.1.2 Hệ thống hiển thị thông báo đăng ký thành công
9.1.3 Sinh viên xác nhận và kết thúc
Sơ đồ activity biểu diễn đặc tả use case “Đăng ký học phần”
Trong case study 2 về “Xây dựng website đặt tour du lịch trực tuyến”, sinh viên cần viết đặc tả use case cho các chức năng quan trọng như “Đặt tour trực tuyến” và “Tìm kiếm tour” Đặc tả “Đặt tour trực tuyến” mô tả quy trình người dùng chọn tour, điền thông tin và xác nhận đặt tour, giúp nâng cao trải nghiệm khách hàng và tối ưu hóa quy trình đặt chỗ Trong khi đó, đặc tả “Tìm kiếm tour” thể hiện khả năng người dùng dễ dàng lọc và tìm kiếm các tour phù hợp dựa trên các tiêu chí như địa điểm, ngày khởi hành, giá cả, góp phần cải thiện khả năng khám phá dịch vụ của khách hàng trên website Ngoài ra, việc vẽ sơ đồ activity cho từng use case giúp hình dung rõ các bước thực hiện và luồng hoạt động, từ đó tối ưu hóa thiết kế hệ thống, phù hợp với các tiêu chuẩn SEO để tăng khả năng hiển thị và tiếp cận khách hàng tiềm năng.
Trong case study 3 về xây dựng hệ thống quản lý thư viện của một trường đại học, sinh viên cần viết đặc tả use case cho chức năng “Đăng ký mượn sách” và vẽ sơ đồ hoạt động thể hiện quy trình này Đồng thời, sinh viên cũng phải mô tả trường hợp “Quản lý việc mượn sách” của thủ thư, kèm theo sơ đồ hoạt động miêu tả các bước thực hiện Các sơ đồ activity sẽ giúp hình dung rõ các bước và luồng công việc trong hệ thống quản lý thư viện nhằm nâng cao hiệu quả vận hành và kiểm soát mượn trả sách.
6t) Phân tích cấu trúc hệ thống - Mô hình hóa bằng Domain
− Xác định các lớp khái niệm dựa vào mô tả của hệ thống
− Xác định thuộc tính của các lớp đã xác định ở trên dựa vào mô tả của hệ thống
− Xác định mối quan hệ, lượng số, vai trò của mối quan hệ giữa các lớp
Lớp khái niệm bao gồm những ý tưởng, đối tượng hoặc sự kiện trong phạm vi hệ thống, giúp định hình cấu trúc và hiểu biết về các thành phần chính Các lớp khái niệm có thể là các đối tượng doanh nghiệp (Business objects), các đối tượng trong thế giới thực (Real world objects) hoặc các sự kiện diễn ra (Events that transpire) Việc xác định rõ lớp khái niệm giúp tối ưu hóa quá trình thiết kế hệ thống và nâng cao hiệu quả quản lý dữ liệu.
2 Cách tìm lớp khái niệm: a Dựa vào từ điển dữ liệu
Xác định các danh từ hoặc cụm danh từ :
− Nếu c ụm danh từ lưu thông tin trạng thái hoặc nó có nhiều hành vi , thì đó là một lớp
− Nếu ch ỉ là một số hoặc một chuỗi , thì đó có thể là một thu ộc tính
Trong một số trường hợp, khái niệm "lớp" có thể hiểu theo nghĩa khác nhau tùy vào ngữ cảnh, chẳng hạn như trong ngữ cảnh này, "lớp" biểu thị một khái niệm Tuy nhiên, ở ngữ cảnh khác, "lớp" có thể được xác định là thuộc tính b Do đó, việc sử dụng danh mục lớp khái niệm giúp làm rõ và phân biệt các ý nghĩa khác nhau của cùng một thuật ngữ, nâng cao tính chính xác và hiệu quả trong việc truyền đạt kiến thức.
3 Tìm mối quan hệ giữa các lớp khái niệm
Trong hệ thống, các đối tượng liên kết với nhau một cách trực tiếp hoặc gián tiếp, cho thấy mối quan hệ phụ thuộc lẫn nhau giữa chúng Các mối quan hệ này có thể mạnh hoặc yếu, thể hiện các thông tin quan trọng về hành vi và sự phụ thuộc của các đối tượng Có bốn loại quan hệ chính giữa các lớp trong hệ thống, bao gồm Association, Aggregation, và Composition, giúp xác định cách các đối tượng tương tác và liên kết với nhau một cách rõ ràng và hiệu quả.
Liên kết phản xạ thể hiện mối quan hệ giữa hai lớp có liên quan với nhau theo bất kỳ cách nào, trong đó các đối tượng không phụ thuộc lẫn nhau, giúp xây dựng các ứng dụng linh hoạt và mở rộng trong lập trình hướng đối tượng.
Ví dụ: Lớp Sách quan hệ với lớp độc giả , thể hiện hành vi Độc giả đọc
Sách b Aggregation mô tả lớp chứa (Whole) được hình thành từ sự kết hợp của các lớp thành phần khác (part), trong đó thời gian tồn tại của các lớp thành phần không hoàn toàn phụ thuộc vào vòng đời của lớp chứa Điều này cho thấy khả năng tái sử dụng và tính linh hoạt trong thiết kế phần mềm, giúp tối ưu hóa hoạt động của hệ thống.
Ví dụ về loại sách được tạo thành từ nhiều cuốn sách cho thấy tầm quan trọng của mối quan hệ composition trong lập trình hướng đối tượng Khi loại sách bị hủy, các thành phần của nó vẫn tồn tại độc lập, thể hiện rõ sự phụ thuộc của lớp thành phần vào vòng đời của lớp chứa Mối quan hệ này giống với aggregation, nhưng điểm khác biệt chính là ở chỗ composition nhấn mạnh tính phụ thuộc chặt chẽ giữa các đối tượng Cần hiểu rõ sự khác nhau này để xây dựng các hệ thống phần mềm linh hoạt, dễ bảo trì và tối ưu hoá hiệu năng.
Ví dụ về mối quan hệ giữa lớp Sách và Chương mục cho thấy nếu một cuốn sách bị hủy thì Chương mục liên quan cũng sẽ bị xóa theo, thể hiện sự phụ thuộc chặt chẽ giữa các thành phần trong hệ thống quản lý thư viện Trong lập trình hướng đối tượng, lớp Reflexive đề cập đến khả năng một lớp có thể có nhiều chức năng hoặc trách nhiệm liên quan chính nó, giúp tăng tính linh hoạt và mở rộng của mã nguồn Việc hiểu rõ mối liên hệ giữa các lớp, như mối quan hệ phụ thuộc giữa Sách và Chương mục, cũng như đặc điểm của lớp Reflexive, là yếu tố quan trọng để xây dựng hệ thống phần mềm tối ưu và hiệu quả.
4 Xác định vai trò (Roles) của mối quan hệ
Vai trò của mối quan hệ thể hiện ý nghĩa của mối quan hệ và số lượng đối tượng tham gia vào các lớp của mối quan hệ đó Vai trò gồm các thành phần quan trọng giúp xác định chức năng và vị trí của từng thành phần trong mối quan hệ, góp phần nâng cao hiểu biết về cấu trúc và sự tương tác giữa các đối tượng Việc phân tích vai trò trong mối quan hệ giúp cải thiện khả năng quản lý dữ liệu và tối ưu hóa các hệ thống liên quan trong lĩnh vực công nghệ thông tin và truyền thông.
Lượng số tham gia (multiplicity) đề cập đến số đối tượng của một lớp tham gia vào mối quan hệ trong hệ thống thông tin Việc xác định lượng số này dựa trên các quy tắc nghiệp vụ và các ràng buộc cần thiết, giúp đảm bảo thiết kế dữ liệu chính xác và nhất quán Tham khảo cách xác định lượng số tham gia là bước quan trọng để tối ưu hóa mô hình dữ liệu và nâng cao hiệu quả quản lý thông tin trong doanh nghiệp.
Tên của của quan hệ: chỉ ý nghĩa của mối quan hệ
Điều hướng (navigability): để chỉ lớp này có thể thấy lớp kia
Dựa trên case study "Xây dựng hệ thống đăng ký học phần trực tuyến," việc xác định các lớp khái niệm là bước quan trọng để tổ chức hệ thống, bao gồm các lớp như Sinh viên, Môn học, và Đăng ký Mỗi lớp cần được xác định các thuộc tính thiết yếu như mã sinh viên, tên sinh viên, mã môn học, tên môn học, ngày đăng ký, và trạng thái đăng ký để đảm bảo quản lý dữ liệu chính xác và đầy đủ Các mối quan hệ giữa các lớp như Sinh viên đăng ký nhiều Môn học (quan hệ nhiều nhiều), trong đó vai trò của Sinh viên là người thực hiện đăng ký và của Môn học là các môn học sinh viên đã đăng ký Sơ đồ Domain giúp hình dung rõ ràng các mối quan hệ và thuộc tính của từng lớp trong hệ thống, từ đó thiết kế cơ sở dữ liệu phù hợp, tối ưu hóa trải nghiệm người dùng và đảm bảo hoạt động hiệu quả của hệ thống đăng ký học phần trực tuyến.
Đối với case study 2, "Xây dựng website đặt tour du lịch trực tuyến", việc phát triển một nền tảng đặt tour du lịch trực tuyến giúp khách hàng dễ dàng tìm kiếm và đặt dịch vụ du lịch mọi lúc, mọi nơi Thêm vào đó, tối ưu hóa website với các từ khóa liên quan sẽ nâng cao khả năng tiếp cận và tăng lượng truy cập từ các công cụ tìm kiếm Đối với case study 3, "Xây dựng hệ thống quản lý thư viện của một trường đại học", việc phát triển hệ thống quản lý thư viện giúp tự động hóa quy trình mượn, trả sách, quản lý dữ liệu sách và người dùng hiệu quả hơn Việc tích hợp các chức năng tìm kiếm thông minh và tối ưu hóa hệ thống cho các công cụ tìm kiếm còn góp phần nâng cao trải nghiệm người dùng và tăng khả năng tiếp cận thông tin của sinh viên và cán bộ nhà trường.
1 Xác định các lớp khái niệm, tìm các thuộc tính cho mỗi lớp
Lớp khái niệm Thuộc tính
Học kỳ Mã học kỳ
2 Xác định loại mối quan hệ giữa các lớp, ứng với mỗi quan hệ, xác định lượng số
Quan hệ Loại quan hệ Giải thích
Học kỳ - Học phần Association
Một học kỳ bao gồm nhiều học phần, mỗi học phần thuộc 1 học kỳ
Học phần - lớp học phần Association
Một học phần gồm nhiều lớp học phần, một lớp học phần thuộc một học phần
Lớp học phần – Giảng viên Association
Một lớp học phần do một giảng viên phụ trách, một Giảng viên phụ trách nhiều lớp học phần
Sinh viên – lớp học phần Aggregation
Một sinh viên có thể đăng ký nhiều lớp học phần khác nhau để mở rộng kiến thức và kỹ năng của mình Mỗi lớp học phần yêu cầu tối thiểu 10 sinh viên để hoạt động hiệu quả, và tối đa không quá 30 sinh viên nhằm đảm bảo chất lượng giảng dạy và sự tham gia tích cực của từng sinh viên Mỗi sinh viên là thành phần quan trọng của lớp học phần, góp phần tạo nên môi trường học tập sôi động và hiệu quả.
Lớp kết hợp Sinh viên –
Lớp kết hợp giữa 2 lớp Sinh viên – lớp học phần có quan hệ * và *
6t) Thiết kế hệ thống - Sử dụng sơ đồ Sequence – Hiệu chỉnh sơ đồ
- Xác định các đối tượng, các tương tác giữa các đối tượng trong hệ thống để thực hiện chức năng của use case
- Vẽ sơ Sequence mức thiết kế sơ bộ (chưa theo kiến trúc phần mềm cụ thể)
- Phân bổ các phương thức vào các lớp liên quan đến chức năng của use case tương ứng
- Hiệu chỉnh (bổ sung lớp mới, thay đổi mối quan hệ) lại sơ đồ Domain để chuyển sơ đồ Domain thành sơ đồ Class
Sơ đồ sequence: biểu diện chi tiết quá trình tương tác của người dùng và hệ thống để thực hiện chức năng được biểu diễn bằng use case
Các ký hiệu trong sơ đồ sequence và cách vẽ sơ đồ sequence
Trong nội dung này, mũi tên đại diện cho sự tương tác giữa các đối tượng gửi và nhận thông điệp Nội dung của thông điệp được thể hiện rõ ràng trên mũi tên, giúp truyền tải chính xác thông điệp đến đối tượng nhận Điều này nhấn mạnh tầm quan trọng của việc thể hiện rõ ràng thông điệp để đảm bảo hiệu quả giao tiếp và truyền đạt thông tin một cách chính xác.
Fragment mô tả một đoạn tương tác phức tạp giữa các đối tượng trong hệ thống, bao gồm các luồng thay thế, cấu trúc lựa chọn và vòng lặp Nó thường được thể hiện với cú pháp attribute = message_name(arguments): return_type, giúp mô tả các hoạt động và giao tiếp của đối tượng trong hệ thống một cách rõ ràng và chính xác Việc hiểu rõ fragment đóng vai trò quan trọng trong việc phân tích và thiết kế hệ thống phần mềm, nâng cao hiệu quả lập trình và tối ưu hóa hoạt động của các thành phần trong hệ thống Đáp ứng các nguyên tắc SEO, bài viết giúp người đọc nắm bắt nhanh về cách thức biểu diễn các đoạn tương tác phức tạp trong mô hình đối tượng.
1 Dựa vào case study 1: Xây dựng hệ thống đăng ký học phần trực tuyến a Phân tích Use case “Đăng ký học phần”:
Luồng sự kiện cơ bản
Sau khi đăng nhập thành công vào hệ thống, sinh viên chọn học kỳ và học phần để bắt đầu quá trình đăng ký Hệ thống sẽ tự động kiểm tra các điều kiện tiên quyết của học phần trước khi hiển thị danh sách các lớp học phù hợp Sinh viên lựa chọn lớp học phần mong muốn, hệ thống kiểm tra sĩ số lớp để đảm bảo đáp ứng điều kiện đăng ký Khi các tiêu chuẩn được thỏa mãn, sinh viên xác nhận và hoàn tất hoạt động đăng ký Hệ thống sẽ thông báo đăng ký thành công và tự động in lịch học của sinh viên, giúp sinh viên nắm bắt lịch trình một cách dễ dàng.
Hệ thống gửi thông tin thanh toán cho sinh viên đến hệ thống thanh toán để xử lý
Luồng sự kiện thay thế
− Nếu học phần tiên quyết không thỏa thì hệ thống sẽ hiển thị thông báo và kết thúc quá trình đăng ký
Khi lớp học phần đã đủ sinh viên, hệ thống sẽ yêu cầu chọn lớp khác để đăng ký Trong quá trình thiết kế, cần vẽ sơ đồ Sequence ở mức độ sơ bộ cho Use case Đăng ký học phần để xác định luồng hoạt động chính Thêm vào đó, nếu có các lớp mới liên quan đến chức năng đăng ký học phần, cần bổ sung vào sơ đồ Domain phù hợp Các phương thức cần thiết cho chức năng này phải được phân bổ đúng vào các lớp trong sơ đồ Domain để đảm bảo hoạt động hiệu quả Cụ thể, để thực hiện chức năng "Đăng ký học phần," các lớp trong sơ đồ Domain phải có các phương thức phù hợp như kiểm tra số lượng học viên, xác nhận đăng ký và cập nhật dữ liệu khóa học.
− Lớp Học phần có các phương thức: o getDSHocPhan(HocKy): trả về danh sách học phần theo học kỳ, với tham số là học kỳ được chọn
− Lớp Ketqua có phương thức: o getKetquaHPtienquyet(MaSV): trả về kết quả của môn học tiên quyết của sinh viên đăng ký học phần, tham số là MaSV, MaHP
Lớp Lop_Hocphan có các phương thức quan trọng để quản lý thông tin lớp học phần, bao gồm getDS_LopHP(MaHP) giúp trả về danh sách các lớp học phần của mã học phần đã chọn, và getSiSo(MalopHP) cung cấp sỉ số của lớp học phần đó Phương thức AddNewSV(MaSV) cho phép thêm sinh viên mới vào lớp học phần, trong khi CapnhatSiSo(Malop) giúp cập nhật sỉ số lớp học phần Các chức năng này hoàn thiện sơ đồ lớp phù hợp với quy trình “Đăng ký học phần”, hỗ trợ cho việc quản lý và đăng ký lớp học một cách hiệu quả.
Ngoài các lớp entity, để thực hiện chức năng “Đăng ký học phần” còn có các lớp boundary và control
Lớp GD_DangkyHP (lớp Boundary) chứa các phương thức chính để quản lý đăng ký học phần, bao gồm showDSHP() giúp hiển thị danh sách học phần trong học kỳ đã chọn, showDSLopHP() hiển thị các lớp học phần của học phần đã chọn, Display_Classfull() cảnh báo khi lớp học đã đầy, và Message_DKthanhcong() thông báo đăng ký thành công.
Lớp Ctrl_DKHP (Lớp Control) cung cấp các phương thức quan trọng để quản lý đăng ký học phần, bao gồm TimDSHP(Hocky) giúp tìm danh sách lớp học phần theo học kỳ đã chọn, checkHPtienquyet(MaSV, MaHP) hỗ trợ kiểm tra sinh viên có đáp ứng yêu cầu học phần tiên quyết trước đó hay chưa, và checkSiSo(MaLopHP) để kiểm tra sỉ số lớp còn đủ chỗ cho việc đăng ký hay đã đạt giới hạn.
2 Dựa vào case study 1, Sinh viên thực hiện phân tích chức năng “xem điểm” của actor sinh viên, bao gồm các bước tương tự câu 1
3 Dựa vào case study 2, sinh viên phân tích chức năng “Đặt tour du lịch”
4 Dựa vào case study 3, sinh viên hãy phân tích chức năng “Đăng ký mượn sách”
3t) Thiết kế các thành phần của hệ thống
- Hiểu các khái niệm Subsystem và Package
- Cách xác định Subsystem và Package của hệ thống
Package là một nhóm các lớp hoặc phần tử mô hình có mối quan hệ logic chặt chẽ với nhau, giúp tổ chức mã nguồn một cách hiệu quả Nó xác định một không gian tên riêng cho nội dung, đảm bảo tính rõ ràng và tránh xung đột tên trong quá trình phát triển phần mềm Việc sử dụng package giúp tăng khả năng mở rộng, bảo trì và quản lý dự án một cách dễ dàng hơn.
Package diagram là biểu đồ thể hiện cấu trúc và tổ chức của hệ thống, đặc biệt phù hợp cho các dự án có quy mô trung bình và lớn Nó giúp hình dung rõ ràng các thành phần chính của hệ thống và cách chúng liên kết với nhau, từ đó nâng cao khả năng quản lý và phát triển phần mềm Trong các dự án phức tạp, package diagram đóng vai trò quan trọng trong việc tối ưu hóa kiến trúc hệ thống, đảm bảo tính mở rộng và bảo trì dễ dàng.
Tạo tổng quan về một tập hợp lớn các phần tử mô hình
Nhóm các lớp và các phần tử mô hình có quan hệ logic
Tách không gian tên của các thành phần trong hệ thống
Quan hệ giữa các package là quan hệ Dependency, gồm 2 loại:
: nội dung public của target package được thêm vào không gian tên của source package
: nội dung public của target package có sẵn không gian tên của source package
Tiêu chí để phân rã một hệ thống thành các package
Dựa vào Chủ sở hữu: Actor thực hiện chức năng trên sơ đồ
Dựa vào chức năng: mỗi vấn đề có phân vùng rõ ràng
Các lớp có mối liên kết mạnh được nhóm vào một package
Dựa vào mẫu kiến trúc: ví dụ kiến trúc MVC
Giảm sự phụ thuộc giữa các phần tử trong các package khác nhau
Subsystem: Một hệ thống là một tập hợp các phần tử có tổ chức có thể được phân tách đệ quy thành các hệ thống con nhỏ hơn (subsystem)
Subsystem GUI chịu trách nhiệm cung cấp giao diện người dùng giúp người dùng có thể tương tác với hệ thống
Subsystem Business processing: xử lý nghiệp vụ chịu trách nhiệm thực hiện chức năng nghiệp vụ
Subsystem Data: thực hiện chức năng lưu trữ dữ liệu
Các khía cạnh bên trong và bên ngoài Subsystem
Subsystem có hai khía cạnh chính: bên ngoài thể hiện các dịch vụ mà subsystem cung cấp, trong khi bên trong phản ánh quá trình hiện thực hóa của nó Một ánh xạ rõ ràng giữa hai khía cạnh này giúp đảm bảo sự liên kết và hiệu quả trong việc triển khai hệ thống.
1 Dựa vào case study 1: xây dựng hệ thống đăng ký học phần trực tuyến a Tổ chức các Class trong hệ thống thành các Package, giải thích
Hệ thống đăng ký học phần được phân rã thành các nhóm lớp có tính kết dính cao, tạo thành các package riêng biệt nhằm tối ưu hóa quá trình quản lý Việc tổ chức hệ thống theo tiêu chí nhóm các lớp thành các package giúp nâng cao khả năng duy trì và mở rộng của hệ thống Các package này đảm bảo sự liên kết chặt chẽ giữa các lớp liên quan, từ đó cải thiện hiệu quả hoạt động của hệ thống đăng ký học phần.
Package Người dùng: chứa các lớp liên quan đến người dùng hệ thống o Sinh viên o Giảng viên o Nhân viên
Package Học vụ: chứa các lớp liên quan đến học phần trong các học kỳ o Học kỳ o Học phần o Lớp học phần o Lịch học
Package Giao diện người dùng bao gồm tất cả các giao diện của hệ thống, đảm bảo trải nghiệm người dùng thân thiện và trực quan Các form chính gồm có Form giao diện chính, Form đăng ký học phần, Form quản lý học phần, Form quản lý thông tin giảng viên và Form quản lý thông tin sinh viên, giúp người dùng dễ dàng thao tác và quản lý dữ liệu Việc vẽ sơ đồ Package của hệ thống là bước quan trọng để trực quan hóa cấu trúc và mối quan hệ giữa các thành phần, từ đó tối ưu hóa quá trình phát triển và bảo trì hệ thống.
Phân rã h ệ thống theo kiến trúc thì Hệ thống đăng ký học phần có thể được tổ chức thành các package sau:
Package Giao diện người dùng: gồm tất cả các giao diện của hệ thống
Package Xử lý nghiệp vụ: chứa các lớp hiện thực các chức năng xử lý nghiệp vụ
Package Data: chứa các lớp hiện thực việc lưu trữ dữ liệu c Phân chia hệ thống đã xây dựng thành các Subsystem, giải thích
Mỗi Subsystem cung cấp dịch vụ cho các Subsystem khác Hệ thống đăng ký học phần có thể được tổ chức thành các Subsystem sau
Subsystem Xử lý nghiệp vụ: hiện thực các chức năng xử lý nghiệp vụ
Subsystem Data: chịu trách nhiệm thực hiện chức năng lưu trữ dữ liệu d Vẽ sơ đồ subsystem của hệ thống Giải thích
Subsystem Xử lý nghiệp vụ cung cấp interface được sử dụng bởi Package Giao diện người dùng
Subsystem Data: Cung cấp interface được sử dụng bởi subsystem Xử lý nghiệp vụ
Dựa vào Case study 2: “Xây dựng website đặt tour du lịch” và sơ đồ lớp đã được xây dựng trong module 3, chúng ta cần xác định các Package phù hợp để tối ưu hóa kiến trúc hệ thống Việc xây dựng các Package giúp phân chia rõ các thành phần như quản lý tour, đặt tour, thanh toán, và quản lý người dùng, từ đó nâng cao khả năng mở rộng và bảo trì hệ thống Vẽ sơ đồ Package cho hệ thống sẽ thể hiện rõ các mối liên hệ giữa các thành phần chức năng, đảm bảo hệ thống hoạt động hiệu quả và dễ dàng tích hợp các module mới trong tương lai.
Dựa vào Case study 2: “Xây dựng hệ thống quản lý thư viện”, từ sơ đồ lớp đã được xây dựng trong module 3, cần thiết lập các Package phù hợp để tổ chức hệ thống một cách rõ ràng và hiệu quả Việc xây dựng sơ đồ Package giúp phân chia các thành phần chính của hệ thống, đảm bảo khả năng mở rộng, bảo trì dễ dàng và tối ưu hóa cấu trúc phần mềm Trong quá trình thiết kế, cần xác định các Package chính như Quản lý Thư viện, Quản lý Sách, Quản lý Người dùng, Giao diện người dùng, và Các dịch vụ hệ thống, đồng thời vẽ sơ đồ Package thể hiện mối quan hệ và tổ chức các thành phần này một cách logic Việc sử dụng sơ đồ Package trong thiết kế hệ thống là bước quan trọng để nâng cao hiệu quả phát triển phần mềm và đáp ứng các yêu cầu của hệ thống quản lý thư viện một cách chuyên nghiệp.
3t) Thiết kế hệ thống theo kiến trúc
- Hiểu về kiến trúc phần mềm được chọn để áp dụng cho hệ thống (3 tầng)
- Xác định các thành phần của hệ thống ứng với kiến trúc đã chọn
- Vẽ lại các sơ đồ Sequence ở mức thiết kế cho từng Use case
- Thực hiện tinh chỉnh sơ đồ Class của hệ thống
Kiến trúc 3 tầng chia ứng dụng thành 3 độc lập:
Data layer (which manages data access)
Dựa vào case study 1: xây dựng hệ thống đăng ký học phần trực tuyến
Module 1 Đối với Use case “Đăng Ký học phần”, vẽ sơ đồ Sequence ở mức thiết kế chi tiết theo kiến trúc đã chọn
Module 2 Sinh viên tiếp tục thực hiện tương tự như câu 1 cho các Use case
Module 3 Thực hiện tinh chỉnh sơ đồ Class của hệ thống
3t)Thiết kế cơ sở dữ liệu
- Chuyển sơ đồ Class sang sơ đồ cơ sở dữ liệu quan hệ
Ánh xạ lớp thực thể sang lược đồ quan hệ là quá trình chuyển đổi mỗi lớp thực thể thành một bảng trong cơ sở dữ liệu, với tên trùng nhau Mỗi dòng trong bảng biểu diễn một đối tượng duy nhất của lớp thực thể, đảm bảo tính nhất quán và dễ quản lý dữ liệu Các thuộc tính của lớp thực thể được ánh xạ trực tiếp thành các cột trong bảng, phản ánh các đặc điểm của đối tượng Để đảm bảo tính duy nhất và dễ tìm kiếm, ta thêm một thuộc tính ID kiểu int làm khóa chính cho bảng quan hệ.
2 Ánh xạ các liên kết 1-1
Thêm một khóa ngoại vào một trong các quan hệ giúp thiết lập liên kết giữa các bảng trong cơ sở dữ liệu, bằng cách tham chiếu đến khóa chính của bảng khác Việc này tăng tính toàn vẹn dữ liệu và đảm bảo các mối quan hệ giữa các bảng diễn ra chính xác Ngoài ra, bạn cũng có thể gộp hai bảng thành một bảng để đơn giản hóa cấu trúc dữ liệu, giảm thiểu sự phức tạp trong truy vấn và quản lý dữ liệu Sử dụng các kỹ thuật này giúp tối ưu hóa hiệu suất và đảm bảo tính nhất quán của dữ liệu trong hệ thống quản trị cơ sở dữ liệu.
3 Ánh xạ các kết 1-n: thêm một khóa ngoại vào bảng “nhiều”
4 Ánh xạ các liên kết n-m: Lớp kết hợp được chuyển thành quan hệ kết hợp, chứa
2 khóa chính của 2 quan hệ tham gia
1 Case study 1: Dựa vào sơ đồ Class đã thiết kế ở module 5 chuyển sang sơ đồ cơ sở dữ liệu quan hệ
Chuyển các lớp thành các quan hệ:
Trong quá trình thiết kế hệ thống, các thành phần như Học phần, Lớp học phần, Giảng viên, Sinh viên và Học kỳ sẽ được chuyển đổi thành các quan hệ tương ứng, giúp tổ chức dữ liệu một cách rõ ràng và dễ quản lý Các thuộc tính của lớp, như thông tin về lớp học phần, sẽ trở thành các thuộc tính của các quan hệ này Đồng thời, một thuộc tính có giá trị duy nhất sẽ được chọn làm khóa chính, đảm bảo tính duy nhất và toàn vẹn của dữ liệu trong hệ thống Việc này giúp tối ưu hóa quá trình truy xuất và giữ gìn dữ liệu chính xác, phù hợp với các nguyên tắc của cơ sở dữ liệu quan hệ.
Trong bài viết này, chúng tôi trình bày về mối quan hệ giữa các bảng dữ liệu trong hệ thống quản lý học tập Lớp kết hợp kết quả trở thành quan hệ chính, trong đó, thuộc tính mã sinh viên và mã học phần đóng vai trò là khóa chính của hai quan hệ tham gia Đồng thời, mã sinh viên và mã học phần còn trở thành khóa ngoại của quan hệ kết quả, giúp đảm bảo tính toàn vẹn dữ liệu và liên kết chặt chẽ giữa các bảng Điều này cho thấy rằng, hai thuộc tính này đồng thời là khóa chính của quan hệ kết quả, phản ánh mối quan hệ trực tiếp giữa sinh viên và các học phần đã tham gia.
Lớp DSSV_LopHP là quan hệ trong cơ sở dữ liệu, được xác định bởi hai thuộc tính khóa ngoại Mã sinh viên và Mã lớp học phần Các thuộc tính này không chỉ là khóa ngoại mà còn cùng nhau tạo thành khóa chính của quan hệ DSSV_LopHP, đảm bảo tính duy nhất và toàn vẹn dữ liệu trong hệ thống quản lý học viên và lớp học phần.
− Học phần - Học kỳ: Quan hệ Học phần chứa khóa ngoại Mã học kỳ
− Học phần - Lớp học phần: Lớp học phần chứa khóa ngoại Mã học phần
− Lớp học phần – Giảng viên: Lớp học phần chứa khóa ngoại Mã Giảng viên
Từ phân tích trên ta có sơ đồ cơ sở dữ liệu quan hệ của hệ thống Đăng ký học phần như sau: