Tổng quan nghiên cứu

Trong kỹ nghệ phần mềm hiện đại, khoảng 60% đến 70% chi phí phát triển và vận hành hệ thống bắt nguồn từ các giai đoạn bảo trì, sửa đổi mã nguồn do thiếu vắng thiết kế kiến trúc hoàn chỉnh từ ban đầu. Thực trạng phát triển tự phát, xem nhẹ giai đoạn thiết kế kiến trúc phần mềm (Software Architecture Design - SAD) và chỉ tập trung vào việc viết mã nguồn (coding) trực tiếp thường dẫn đến các khối chương trình rối rắm, hiệu năng kém và gần như không thể tái sử dụng khi phần cứng thay đổi. Vấn đề nghiên cứu trọng tâm của luận văn tập trung vào việc chuẩn hóa quy trình thiết kế kiến trúc phần mềm, giải quyết triệt để bài toán nâng cấp và xây mới các hệ thống công nghệ thông tin có quy mô lớn, phức tạp.

Mục tiêu cụ thể của đề tài là hệ thống hóa cơ sở lý luận về thiết kế kiến trúc phần mềm, đề xuất quy trình thiết kế lặp 5 bước chuẩn mực và áp dụng thực nghiệm vào việc xây dựng kiến trúc cho hệ thống quản lý, xử lý ảnh trong y tế. Về phạm vi nghiên cứu, đề tài được triển khai trong giai đoạn từ năm 2009 đến năm 2011 tại công ty phần mềm FPT và đã được bàn giao, ứng dụng thực tế tại nhiều bệnh viện lớn ở thủ đô Tokyo, Nhật Bản.

Nghiên cứu mang ý nghĩa thực tiễn to lớn khi giúp giảm thiểu hơn 40% chi phí bảo trì trọn đời của dự án, đồng thời rút ngắn từ 25% đến 30% thời gian chuyển tiếp từ bản vẽ kiến trúc sang tài liệu thiết kế chi tiết (Software Detailed Design - SDD). Kết quả nghiên cứu khẳng định thiết kế kiến trúc là chiếc cầu nối quyết định tính sống còn giữa đặc tả yêu cầu người dùng và mã nguồn thực thi.

Cơ sở lý thuyết và phương pháp nghiên cứu

Khung lý thuyết áp dụng

Luận văn vận dụng mô hình phát triển phần mềm hình chữ V (V-Model), trong đó giai đoạn thiết kế kiến trúc đóng vai trò chuyển hóa tài liệu đặc tả yêu cầu hệ thống (SRS) thành các mô hình kiến trúc tổng thể và định hướng cho thiết kế chi tiết. Khung lý thuyết cốt lõi của thiết kế kiến trúc phần mềm bao gồm 4 thành phần nền tảng:

  • Thành phần (Component): Tóm lược tập hợp các chức năng hoặc dữ liệu và giới hạn truy cập thông qua các giao diện định nghĩa trước.
  • Kết nối (Connector): Phương tiện trung gian ghép nối, hỗ trợ truyền điều khiển và dữ liệu giữa các thành phần, bao gồm 8 loại hình chính là thủ tục gọi kết nối, kết nối sự kiện, kết nối truy cập dữ liệu, kết hợp, luồng, phân xử, thích nghi (Adaptor) và phân tán.
  • Giao diện (Interface): Điểm giao tiếp phân định rõ đầu vào, đầu ra và giảm thiểu độ phụ thuộc giữa các khối xử lý.
  • Cấu hình (Configuration): Tập hợp các thiết lập quy định mối quan hệ vận hành giữa các thành phần và kết nối.

Nghiên cứu áp dụng khung kiến trúc 11 điểm nóng kỹ thuật (Architectural Framing Hotspots) bao gồm: Xác thực và ủy quyền, Bộ nhớ đệm và trạng thái, Truyền thông điệp, Cấu trúc thành phần, Đồng nhất và giao dịch, Quản lý cấu hình, Độ kết dính và ghép nối, Truy cập dữ liệu, Quản lý ngoại lệ, Ghi vết sự cố và Trải nghiệm người dùng. Đồng thời, nghiên cứu tích hợp 4 nguyên lý thiết kế hướng đối tượng nâng cao: Nguyên lý Đóng - Mở (OCP), Nguyên lý Thay thế Liskov (LSP), Nguyên lý Nghịch đảo Phụ thuộc (DIP) và Nguyên lý Phân tách Giao diện (ISP).

Phương pháp nghiên cứu

Nghiên cứu sử dụng phương pháp thực nghiệm kết hợp phân tích đối sánh hệ thống trên một cỡ mẫu gồm 4 phân hệ chính (Recept, Study, QA và ASSEMBLE) của hệ thống xử lý ảnh y tế lớn, được thực hiện bởi nhóm nghiên cứu gồm 10 kỹ sư phần mềm chuyên trách. Phương pháp chọn mẫu là chọn mẫu có chủ đích (Purposive Sampling), tập trung sâu vào các phân hệ nghiệp vụ có độ phức tạp cao nhất như chức năng chụp ảnh X-quang, nối ghép ảnh thành phần thủ công và tự động từ các file thô chất lượng cao (.hq) và cấu trúc dữ liệu DICOM (DDO).

Lý do lựa chọn phương pháp phân tích kiến trúc lặp 5 bước (Mục tiêu kiến trúc, Kịch bản chính, Tổng quan ứng dụng, Điểm nổi bật, Lựa chọn giải pháp) là vì phương pháp này cho phép nhận diện rủi ro kỹ thuật đa chiều, gắn kết các ràng buộc thực tế về phần cứng với các thuộc tính chất lượng phi chức năng trước khi tiến hành cài đặt mã nguồn. Timeline nghiên cứu được thực hiện xuyên suốt qua 3 chu kỳ lặp từ khảo sát phân tích yêu cầu (năm 2009), thiết kế mô hình hóa kiến trúc (năm 2010) cho đến triển khai kiểm thử thực địa (đầu năm 2011).

Kết quả nghiên cứu và thảo luận

Những phát hiện chính

Quá trình nghiên cứu và triển khai thực nghiệm đã mang lại 4 phát hiện cốt lõi mang tính đột phá:

Thứ nhất, việc chuyển đổi từ mô hình kiến trúc nguyên khối cũ sang kiểu kiến trúc truyền thông điệp (Message-bus) kết hợp công nghệ WCF (Windows Communication Foundation) giúp phân tách hoàn toàn 4 phân hệ độc lập (Study, Recept, QA, ASSEMBLE), giảm thiểu độ phụ thuộc giữa các khối xuống hơn 50%, cho phép các tiến trình trao đổi dữ liệu qua chuỗi định dạng XML đồng bộ và bất đồng bộ hiệu quả.

Thứ hai, việc áp dụng mô hình lai đa công nghệ giữa Visual C# (cho tầng giao diện người dùng, tùy biến linh hoạt trên nhiều kích thước màn hình y tế) và C++ (cho tầng xử lý ảnh nhị phân cấp thấp) thông qua kết nối Adaptor đã tối ưu hóa hiệu năng tính toán. Thời gian đọc, giải mã và hiển thị các tệp ảnh thô dung lượng lớn đạt tốc độ xử lý dưới 1,5 giây cho mỗi khung hình, nhanh hơn khoảng 40% so với nền tảng Visual Basic 6.0 cũ.

Thứ ba, việc áp dụng quy trình 5 bước SAD giúp phát hiện sớm hơn 80% xung đột luồng và lỗi thiết kế giao diện trước giai đoạn viết mã nguồn, giảm tỷ lệ lỗi phát sinh trong giai đoạn kiểm thử tích hợp xuống dưới mức 15%.

Thứ tư, giải pháp nạp trước toàn bộ cấu hình, biểu tượng (Icon) và hình ảnh Bitmap vào bộ nhớ đệm ngay khi khởi động chương trình giúp giảm thiểu độ trễ thao tác nghiệp vụ của bác sĩ trong các lần chụp và xử lý tiếp theo xuống dưới 200 mili-giây.

Thảo luận kết quả

Nguyên nhân chính dẫn đến sự thành công của kiến trúc mới là việc phân định ranh giới rõ ràng giữa các lớp trình diễn, nghiệp vụ và truy cập dữ liệu. Trong hệ thống cũ bằng VB6, sự pha trộn mã giao diện với thuật toán C++ dẫn đến tình trạng khóa chết tài nguyên khi nâng cấp phần cứng.

Dữ liệu thực nghiệm của nghiên cứu có thể được trực quan hóa rõ nét thông qua biểu đồ so sánh độ trễ xử lý đa nhiệm giữa kiến trúc cũ và mới, kết hợp bảng ma trận ánh xạ 4 thành phần từ SAD sang SDD:

  • Thành phần (Component) được ánh xạ trực tiếp sang Dự án (Project), Gói (Package) và Lớp (Class).
  • Kết nối (Connector) được ánh xạ sang các Lời gọi hàm và Cơ chế truyền thông điệp giữa các đối tượng.
  • Giao diện (Interface) được chuyển hóa thành các Khai báo giao diện cụ thể và Chữ ký phương thức (Method Signature).
  • Cấu hình (Configuration) được ánh xạ thành Logic xử lý trong biểu đồ tuần tự và Cấu trúc tệp cấu hình động.

So với các nghiên cứu kiến trúc truyền thống vốn chỉ dừng lại ở mức mô tả tĩnh, nghiên cứu này chứng minh tính khả thi vượt trội khi kết nối mượt mà giữa các hệ thống con hoạt động dưới dạng dịch vụ nền tảng.

Đề xuất và khuyến nghị

Dựa trên kết quả nghiên cứu, 4 khuyến nghị hành động cụ thể được đưa ra nhằm nâng cao chất lượng phát triển phần mềm:

Thứ nhất, chuẩn hóa quy trình thiết kế kiến trúc 5 bước mang tính lặp thành tiêu chuẩn bắt buộc cho mọi dự án phát triển phần mềm quy mô lớn, hướng đến mục tiêu giảm thiểu 30% thời gian thiết kế chi tiết trong lộ trình 6 tháng. Chủ thể thực hiện là Kiến trúc sư phần mềm trưởng và Ban điều hành kỹ thuật.

Thứ hai, áp dụng kiểu kiến trúc Message-bus và mẫu thiết kế Adaptor khi nâng cấp các hệ thống phần mềm kế thừa (legacy systems), nhằm tối ưu hóa 100% khả năng tái sử dụng các thuật toán lõi viết bằng C++ trong thời gian 12 tháng. Chủ thể thực hiện là Đội ngũ kỹ sư phát triển phần mềm.

Thứ ba, thiết lập cơ chế ghi lỗi và quản lý ngoại lệ 3 cấp độ (lỗi nghiêm trọng làm sập hệ thống, lỗi thiếu tài nguyên và cảnh báo nghiệp vụ) đồng bộ trực tiếp với Event Log hệ điều hành, giúp giảm 45% thời gian khoanh vùng sự cố trong vòng 3 tháng tới. Chủ thể thực hiện là Nhóm kỹ sư đảm bảo chất lượng (QA/QC) và Kỹ sư tích hợp hệ thống.

Thứ tư, triển khai các chương trình đào tạo chuyên sâu về 4 nguyên lý hướng đối tượng OCP, LSP, DIP, ISP cho ít nhất 80% lập trình viên trong doanh nghiệp trong thời hạn 9 tháng nhằm nâng cao năng lực thiết kế từ dưới lên. Chủ thể thực hiện là Phòng đào tạo và các Chuyên gia kiến trúc công nghệ.

Đối tượng nên tham khảo luận văn

Luận văn là tài liệu tham khảo học thuật và thực tiễn giá trị dành cho 4 nhóm đối tượng chính:

Thứ nhất, Kiến trúc sư phần mềm (Software Architects): Tiếp cận phương pháp luận thiết kế 5 bước và khung phân tích 11 điểm nóng để xây dựng cấu trúc hệ thống lớn, giải quyết các bài toán phân tán và xung đột đa luồng.

Thứ hai, Kỹ sư lập trình và thiết kế chi tiết (Software Developers): Nắm vững kỹ thuật ánh xạ trực tiếp từ tài liệu SAD sang SDD, áp dụng các nguyên lý SOLID và kỹ thuật giao tiếp liên ngôn ngữ C# và C++ qua mẫu Adaptor.

Thứ ba, Quản lý dự án CNTT (Project Managers): Sử dụng mô hình chữ V và các tiêu chí đánh giá SAD làm công cụ hoạch định tiến độ, phân bổ nguồn lực kỹ thuật và kiểm soát rủi ro dự án ngay từ giai đoạn đầu nhằm tối ưu hóa ngân sách.

Thứ tư, Học viên cao học và Nhà nghiên cứu ngành Công nghệ thông tin: Tìm kiếm một case study thực tế, chuẩn mực về việc áp dụng lý thuyết kiến trúc phần mềm vào hệ thống xử lý ảnh y tế chất lượng cao tại thị trường quốc tế.

Câu hỏi thường gặp

Tài liệu thiết kế kiến trúc phần mềm (SAD) khác tài liệu thiết kế chi tiết (SDD) như thế nào? SAD tập trung vào cấu trúc mức cao gồm 4 yếu tố: thành phần, kết nối, giao diện và cấu hình để định hướng toàn hệ thống dựa trên yêu cầu SRS. Ngược lại, SDD đi sâu vào cấu trúc mức thấp gồm các lớp, phương thức, biểu đồ tuần tự và logic thuật toán cụ thể phục vụ lập trình viên viết mã nguồn trực tiếp.

Tại sao hệ thống xử lý ảnh y tế lại chọn kiến trúc Message-bus và WCF? Hệ thống y tế gồm nhiều phân hệ lớn như Recept, Study, QA cần chạy thường trú độc lập dưới dạng dịch vụ. Kiến trúc Message-bus kết hợp công nghệ WCF cho phép truyền nhận dữ liệu định dạng XML bất đồng bộ, tốc độ cao, đảm bảo các phân hệ không bị khóa nghẽn khi một tác vụ chụp ảnh đang diễn ra.

Làm thế nào để kết nối hiệu quả giữa giao diện C# và module thuật toán C++? Hệ thống sử dụng mẫu kết nối Adaptor một chiều, trong đó các lớp giao diện C# gọi đến các phương thức mở của thư viện C++ để xử lý ảnh nhị phân. Cơ chế này tận dụng tối đa thế mạnh đồ họa của C# và tốc độ thao tác bộ nhớ tối ưu của C++ mà vẫn đảm bảo tính toàn vẹn dữ liệu.

Quy trình 5 bước thiết kế kiến trúc phần mềm gồm những giai đoạn nào? Quy trình gồm 5 bước lặp liên tục:

  1. Xác định mục tiêu kiến trúc;
  2. Xác định kịch bản chính và ca sử dụng trọng yếu;
  3. Xác định tổng quan ứng dụng và công nghệ;
  4. Phân tích các điểm nổi bật dựa trên khung 11 điểm nóng;
  5. Lựa chọn và kiểm chứng giải pháp thiết kế ứng viên.

Khi nào một dự án phần mềm có thể bỏ qua bước thiết kế chi tiết SDD? Đối với các hệ thống có quy mô nhỏ, cấu trúc đơn giản như các trang web thông dụng theo mô hình MVC, hoặc khi đội ngũ lập trình viên đã nắm vững mẫu kiến trúc và cách tổ chức mã nguồn, dự án có thể đi thẳng từ tài liệu SAD sang giai đoạn cài đặt mã nguồn nhằm tiết kiệm thời gian.

Kết luận

  • Luận văn đã hệ thống hóa toàn diện lý thuyết kiến trúc phần mềm, làm rõ 4 thành phần cốt lõi, 8 kiểu kết nối và 11 điểm nóng thiết kế trong kỹ nghệ phần mềm.
  • Đề xuất thành công quy trình thiết kế kiến trúc 5 bước mang tính lặp và kiểm chứng liên tục, giúp định hình giải pháp tối ưu cho hệ thống phức tạp.
  • Áp dụng thực nghiệm hoàn chỉnh vào hệ thống quản lý, xử lý ảnh y tế với 4 phân hệ chính, giải quyết triệt để bài toán xử lý ảnh X-quang đa nguồn.
  • Xây dựng ma trận ánh xạ khoa học từ các thành phần của SAD sang SDD dựa trên các nguyên lý hướng đối tượng OCP, LSP, DIP và ISP.
  • Kiểm chứng thực tế thành công tại nhiều bệnh viện lớn ở Tokyo, Nhật Bản từ năm 2011 với độ tin cậy và hiệu năng vượt trội.

Đóng góp lớn nhất của luận văn là thu hẹp khoảng cách giữa lý thuyết kiến trúc hàn lâm và thực tế phát triển phần mềm công nghiệp. Trong lộ trình 12 đến 24 tháng tới, hướng phát triển tiếp theo là mở rộng quy trình thiết kế sang kiến trúc vi dịch vụ (Microservices) trên nền tảng điện toán đám mây và tích hợp trí tuệ nhân tạo hỗ trợ chẩn đoán ảnh y tế tự động. Các tổ chức công nghệ và kỹ sư phần mềm hãy áp dụng ngay quy trình SAD 5 bước để nâng cao chất lượng và tối ưu hóa chi phí cho các dự án phần mềm quy mô lớn.