CÁC MẪU KIẾN TRÚC TRONG PHẦN MỀM


1. Tổng quan về mẫu kiến trúc phần mềm

1.1. Khái niệm

Mẫu kiến trúc phần mềm là những giải pháp tổ chức cấu trúc hệ thống đã được áp dụng và kiểm chứng trong thực tế, nhằm giải quyết các vấn đề thường gặp khi xây dựng phần mềm.

Một mẫu kiến trúc thường xác định:

  • Cách chia hệ thống thành các thành phần.
  • Vai trò và trách nhiệm của từng thành phần.
  • Cách các thành phần giao tiếp với nhau.
  • Ưu điểm, hạn chế và phạm vi áp dụng.

1.2. Vai trò của mẫu kiến trúc

  • Giúp tổ chức hệ thống rõ ràng, có cấu trúc.
  • Tăng khả năng bảo trì và mở rộng phần mềm.
  • Giảm sự phụ thuộc giữa các thành phần.
  • Tận dụng những giải pháp đã được kiểm chứng.
  • Hỗ trợ kiến trúc sư lựa chọn giải pháp phù hợp với yêu cầu hệ thống.

1.3. Phân biệt mẫu kiến trúc và mẫu thiết kế

Tiêu chí

Mẫu kiến trúc

Mẫu thiết kế

Phạm vi

Toàn hệ thống hoặc hệ thống con

Nhóm lớp hoặc đối tượng

Mục đích

Tổ chức cấu trúc tổng thể

Giải quyết vấn đề thiết kế cụ thể

Ví dụ

Phân lớp, vi dịch vụ, khách hàng – máy chủ

Đơn thể, nhà máy, quan sát

2. Các mẫu kiến trúc phần mềm phổ biến

2.1. Kiến trúc phân lớp

Khái niệm: Chia hệ thống thành nhiều lớp, mỗi lớp đảm nhiệm một nhóm chức năng riêng biệt.

Các lớp thường gặp:

  1. Lớp giao diện: Tiếp nhận thông tin và hiển thị kết quả.
  2. Lớp nghiệp vụ: Xử lý các quy tắc nghiệp vụ.
  3. Lớp truy cập dữ liệu: Thực hiện các thao tác với dữ liệu.
  4. Lớp cơ sở dữ liệu: Lưu trữ thông tin.

Ví dụ: Hệ thống quản lý sinh viên gồm giao diện quản lý, xử lý nghiệp vụ sinh viên, lớp truy cập dữ liệu và cơ sở dữ liệu.

Ưu điểm:

  • Phân chia chức năng rõ ràng.
  • Dễ bảo trì và kiểm thử.
  • Dễ thay đổi từng lớp.

Hạn chế:

  • Có thể làm tăng thời gian xử lý.
  • Các lớp có thể phụ thuộc lẫn nhau.
  • Thay đổi một lớp đôi khi ảnh hưởng đến lớp khác.

Ứng dụng: Hệ thống quản lý sinh viên, nhân sự, bán hàng và các ứng dụng quản lý doanh nghiệp.

2.2. Kiến trúc khách hàng – máy chủ

Khái niệm: Hệ thống gồm máy khách gửi yêu cầu và máy chủ tiếp nhận, xử lý rồi trả kết quả.

Nguyên tắc hoạt động:

  1. Máy khách gửi yêu cầu đến máy chủ.
  2. Máy chủ xử lý yêu cầu.
  3. Máy chủ truy xuất dữ liệu nếu cần.
  4. Kết quả được trả về máy khách.

Ví dụ: Trong hệ thống bán hàng trực tuyến, trình duyệt gửi yêu cầu xem sản phẩm đến máy chủ. Máy chủ truy vấn cơ sở dữ liệu và trả danh sách sản phẩm.

Ưu điểm:

  • Quản lý dữ liệu tập trung.
  • Dễ kiểm soát truy cập.
  • Một máy chủ có thể phục vụ nhiều máy khách.

Hạn chế:

  • Máy chủ có thể bị quá tải.
  • Máy chủ gặp sự cố có thể làm gián đoạn dịch vụ.
  • Phụ thuộc vào kết nối mạng.

Ứng dụng: Ngân hàng trực tuyến, thương mại điện tử và các hệ thống quản lý tập trung.

2.3. Kiến trúc mô hình – giao diện – điều khiển (MVC)

Khái niệm: Chia ứng dụng thành ba thành phần:

  • Mô hình: Quản lý dữ liệu và nghiệp vụ.
  • Giao diện: Hiển thị thông tin cho người dùng.
  • Điều khiển: Tiếp nhận yêu cầu và điều phối hoạt động giữa các thành phần.

Ví dụ: Chức năng đăng nhập:

  • Giao diện hiển thị biểu mẫu đăng nhập.
  • Điều khiển tiếp nhận tài khoản và mật khẩu.
  • Mô hình kiểm tra thông tin đăng nhập.
  • Giao diện hiển thị kết quả.

Ưu điểm:

  • Tách biệt giao diện và nghiệp vụ.
  • Dễ bảo trì, nâng cấp.
  • Thuận tiện cho nhiều người cùng phát triển.

Hạn chế:

  • Có thể phức tạp đối với ứng dụng nhỏ.
  • Thành phần điều khiển dễ chứa quá nhiều xử lý nếu thiết kế không tốt.

Ứng dụng: Các ứng dụng Web sử dụng ASP.NET MVC, Spring MVC.

2.4. Kiến trúc vi dịch vụ

Khái niệm: Chia một hệ thống lớn thành nhiều dịch vụ nhỏ, mỗi dịch vụ đảm nhiệm một chức năng nghiệp vụ và có thể phát triển, triển khai tương đối độc lập.

Ví dụ: Hệ thống thương mại điện tử có thể chia thành:

  • Dịch vụ quản lý người dùng.
  • Dịch vụ quản lý sản phẩm.
  • Dịch vụ quản lý đơn hàng.
  • Dịch vụ thanh toán.
  • Dịch vụ vận chuyển.

Các dịch vụ trao đổi dữ liệu thông qua những giao diện giao tiếp đã được quy định.

Ưu điểm:

  • Có thể triển khai từng dịch vụ độc lập.
  • Dễ mở rộng riêng từng chức năng.
  • Các nhóm phát triển có thể làm việc độc lập.
  • Có thể sử dụng công nghệ khác nhau cho từng dịch vụ.

Hạn chế:

  • Khó quản lý khi có nhiều dịch vụ.
  • Việc trao đổi dữ liệu phức tạp.
  • Khó đảm bảo tính nhất quán dữ liệu.
  • Cần hệ thống giám sát và quản lý tốt.

Ứng dụng: Thương mại điện tử quy mô lớn, ngân hàng số, nền tảng đặt xe.

2.5. Kiến trúc hướng sự kiện

Khái niệm: Các thành phần trong hệ thống giao tiếp với nhau thông qua những sự kiện phát sinh trong quá trình hoạt động.

Các thành phần chính:

  1. Thành phần phát sinh sự kiện.
  2. Bộ tiếp nhận và phân phối sự kiện.
  3. Thành phần tiếp nhận và xử lý sự kiện.

Ví dụ: Khi khách hàng đặt hàng:

  • Hệ thống phát sinh sự kiện đơn hàng mới.
  • Thành phần gửi thông báo nhận sự kiện và gửi email.
  • Thành phần quản lý kho cập nhật số lượng hàng.
  • Thành phần vận chuyển chuẩn bị giao hàng.

Ưu điểm:

  • Giảm sự phụ thuộc trực tiếp giữa các thành phần.
  • Hỗ trợ xử lý không đồng bộ.
  • Dễ bổ sung chức năng mới.

Hạn chế:

  • Khó theo dõi toàn bộ quá trình xử lý.
  • Có thể xảy ra xử lý sự kiện trùng lặp.
  • Khó kiểm soát thứ tự xử lý sự kiện.

Ứng dụng: Hệ thống thương mại điện tử, thông báo tự động, Internet vạn vật.

2.6. Kiến trúc kho dữ liệu tập trung

Khái niệm: Nhiều thành phần trong hệ thống cùng truy cập và chia sẻ dữ liệu thông qua một kho lưu trữ chung.

Nguyên tắc hoạt động:

  • Các thành phần ghi dữ liệu vào kho chung.
  • Các thành phần khác đọc dữ liệu từ kho.
  • Kho dữ liệu đóng vai trò trung tâm trong việc quản lý và chia sẻ thông tin.

Ví dụ: Hệ thống quản lý đào tạo có các chức năng quản lý sinh viên, học phần, đăng ký học và quản lý điểm. Tất cả cùng sử dụng một cơ sở dữ liệu chung.

Ưu điểm:

  • Dữ liệu được quản lý tập trung.
  • Dễ chia sẻ thông tin.
  • Hạn chế dữ liệu trùng lặp.
  • Dễ sao lưu và quản lý.

Hạn chế:

  • Kho dữ liệu có thể trở thành điểm nghẽn.
  • Nếu kho dữ liệu gặp sự cố, nhiều chức năng bị ảnh hưởng.
  • Thay đổi cấu trúc dữ liệu có thể ảnh hưởng đến nhiều thành phần.

Ứng dụng: Hệ thống quản lý đào tạo, quản lý doanh nghiệp và quản lý hồ sơ.

2.7. Kiến trúc đường ống – bộ lọc

Khái niệm: Chia quá trình xử lý thành nhiều bước độc lập. Mỗi bước thực hiện một nhiệm vụ và chuyển kết quả cho bước tiếp theo.

  • Bộ lọc: Thực hiện một nhiệm vụ xử lý dữ liệu.
  • Đường ống: Chuyển dữ liệu giữa các bộ lọc.

Ví dụ: Hệ thống xử lý danh sách sinh viên:

  1. Đọc dữ liệu từ tập tin Excel.
  2. Kiểm tra định dạng.
  3. Loại bỏ dữ liệu không hợp lệ.
  4. Tính điểm trung bình.
  5. Xuất kết quả.

Ưu điểm:

  • Các bước xử lý độc lập.
  • Dễ bổ sung hoặc thay đổi bước xử lý.
  • Có thể tái sử dụng các bộ lọc.

Hạn chế:

  • Không phù hợp với ứng dụng tương tác phức tạp.
  • Truyền dữ liệu giữa các bước có thể làm tăng chi phí xử lý.
  • Khó áp dụng khi các bước phụ thuộc nhiều vào trạng thái chung.

Ứng dụng: Xử lý dữ liệu, biên dịch chương trình, xử lý hình ảnh và phân tích nhật ký hệ thống.

2.8. Kiến trúc ngang hàng

Khái niệm: Các máy tính tham gia hệ thống có vai trò tương đương nhau. Mỗi máy tính vừa có thể cung cấp tài nguyên, vừa có thể sử dụng tài nguyên của các máy khác.

Nguyên tắc hoạt động:

  • Các máy tính giao tiếp trực tiếp với nhau.
  • Mỗi máy có thể gửi và nhận dữ liệu.
  • Tài nguyên được chia sẻ giữa các máy tham gia hệ thống.

Ví dụ: Trong hệ thống chia sẻ tập tin, máy A chia sẻ dữ liệu cho máy B. Sau khi tải dữ liệu, máy B có thể tiếp tục chia sẻ cho máy C.

Ưu điểm:

  • Không phụ thuộc hoàn toàn vào máy chủ trung tâm.
  • Có thể mở rộng số lượng máy tham gia.
  • Tận dụng tài nguyên của nhiều máy tính.

Hạn chế:

  • Khó quản lý và kiểm soát các máy tính.
  • Khó đảm bảo an toàn và tính nhất quán dữ liệu.
  • Các máy tính có thể ngừng hoạt động bất kỳ lúc nào.

Ứng dụng: Chia sẻ tập tin, mạng blockchain và các ứng dụng trao đổi dữ liệu ngang hàng.

3. Bảng tổng hợp các mẫu kiến trúc

Mẫu kiến trúc

Đặc điểm chính

Ứng dụng tiêu biểu

Phân lớp

Chia hệ thống thành các lớp chức năng

Hệ thống quản lý

Khách hàng – máy chủ

Máy khách gửi yêu cầu đến máy chủ

Ứng dụng Web

Mô hình – giao diện – điều khiển

Tách dữ liệu, giao diện và điều khiển

Ứng dụng Web

Vi dịch vụ

Chia hệ thống thành nhiều dịch vụ nhỏ

Thương mại điện tử lớn

Hướng sự kiện

Giao tiếp thông qua các sự kiện

Hệ thống thông báo

Kho dữ liệu tập trung

Các thành phần sử dụng chung kho dữ liệu

Quản lý đào tạo

Đường ống – bộ lọc

Xử lý dữ liệu qua nhiều bước

Xử lý tập tin

Ngang hàng

Các máy tính trao đổi tài nguyên trực tiếp

Chia sẻ tập tin

4. Lựa chọn mẫu kiến trúc dựa trên yêu cầu chất lượng

Không có mẫu kiến trúc nào phù hợp với tất cả hệ thống. Việc lựa chọn cần căn cứ vào yêu cầu thực tế, đặc biệt là các thuộc tính chất lượng.

Yêu cầu chất lượng

Mẫu kiến trúc có thể xem xét

Giải thích

Dễ thay đổi, bảo trì

Phân lớp, mô hình – giao diện – điều khiển

Phân chia trách nhiệm rõ ràng

Hiệu năng cao

Khách hàng – máy chủ, đường ống – bộ lọc

Có thể tổ chức và phân phối công việc phù hợp

Khả năng mở rộng

Vi dịch vụ, ngang hàng

Mở rộng từng dịch vụ hoặc từng máy

Tính sẵn sàng cao

Vi dịch vụ kết hợp dự phòng

Có thể triển khai các thành phần dự phòng

Bảo mật

Phân lớp, khách hàng – máy chủ

Có thể tổ chức các lớp kiểm soát truy cập

Dễ tích hợp

Vi dịch vụ, hướng sự kiện

Hỗ trợ trao đổi dữ liệu giữa các thành phần

Lưu ý: Một mẫu kiến trúc không tự động đảm bảo đạt được yêu cầu chất lượng. Kết quả còn phụ thuộc vào cách thiết kế, công nghệ triển khai và các giải pháp kỹ thuật đi kèm.

5. Bài tập vận dụng

Bài tập 1. Nhận diện mẫu kiến trúc

Với mỗi tình huống sau, hãy xác định mẫu kiến trúc phù hợp và giải thích lý do.

  1. Một hệ thống quản lý sinh viên được chia thành giao diện, xử lý nghiệp vụ và truy cập dữ liệu.
  2. Một hệ thống bán hàng có nhiều máy khách truy cập vào một máy chủ trung tâm.
  3. Một hệ thống thương mại điện tử được chia thành các dịch vụ quản lý người dùng, sản phẩm, đơn hàng và thanh toán.
  4. Một hệ thống xử lý tập tin thực hiện lần lượt các bước đọc dữ liệu, kiểm tra, lọc và xuất kết quả.
  5. Một hệ thống có nhiều thành phần cùng truy cập một cơ sở dữ liệu chung.
  6. Một hệ thống tự động gửi thông báo khi khách hàng đặt hàng hoặc thanh toán thành công.

Bài tập 2. Phân tích và lựa chọn kiến trúc

Một trường đại học cần xây dựng hệ thống quản lý đào tạo với các chức năng:

  • Quản lý sinh viên.
  • Quản lý giảng viên.
  • Quản lý học phần.
  • Đăng ký học phần.
  • Quản lý điểm.
  • Tra cứu kết quả học tập.

Hệ thống có các yêu cầu:

  1. Có thể sử dụng trên trình duyệt Web và ứng dụng di động.
  2. Dễ bảo trì và bổ sung chức năng mới.
  3. Bảo mật thông tin sinh viên.
  4. Có khả năng phục vụ nhiều người dùng đồng thời.
  5. Dữ liệu được quản lý thống nhất.

Yêu cầu:

a. Đề xuất mẫu kiến trúc phù hợp.

b. Giải thích cách tổ chức các thành phần trong hệ thống.

c. Phân tích ưu điểm và hạn chế của lựa chọn.

d. Có thể kết hợp nhiều mẫu kiến trúc hay không? Nếu có, hãy đề xuất cách kết hợp.

6. Kết luận

Các mẫu kiến trúc phần mềm cung cấp những cách tổ chức hệ thống khác nhau. Mỗi mẫu có ưu điểm, hạn chế và phạm vi áp dụng riêng. Khi thiết kế phần mềm, kiến trúc sư cần lựa chọn mẫu kiến trúc phù hợp với quy mô, mục tiêu và yêu cầu chất lượng của hệ thống. Trong thực tế, có thể kết hợp nhiều mẫu kiến trúc để tận dụng ưu điểm của từng mẫu và xây dựng hệ thống đáp ứng tốt hơn các yêu cầu đặt ra.