Tổng quan nghiên cứu

Trong tiến trình phát triển của ngành công nghệ thông tin, việc quản lý các hệ thống phần mềm quy mô lớn luôn đối mặt với thách thức nghiêm trọng về tính phức tạp của kiến trúc và sự gia tăng chi phí bảo trì. Theo ước tính từ các báo cáo chuyên ngành công nghệ phần mềm, lập trình viên thường phải tiêu tốn từ 40% đến 60% tổng thời gian dự án cho việc viết các đoạn mã nguồn lặp lại, thiết lập cấu trúc nền tảng và đồng bộ hóa các thay đổi giữa tài liệu thiết kế với mã nguồn thực thi. Khi các yêu cầu chức năng mới liên tục phát sinh, phương pháp phát triển phần mềm thủ công bộc lộ rõ sự cồng kềnh, dễ gây ra lỗi sai lệch phiên bản và làm suy giảm năng suất lao động của đội ngũ kỹ sư.

Nhằm giải quyết triệt để bài toán tự động hóa trong vòng đời phát triển ứng dụng, luận văn tập trung nghiên cứu phương pháp kỹ thuật phần mềm hướng mô hình kết hợp với kỹ thuật chuyển đổi mô hình sang văn bản. Mục tiêu trọng tâm của nghiên cứu là xây dựng quy trình tự động sinh mã nguồn Java hoàn chỉnh từ các đặc tả biểu đồ lớp thông qua ngôn ngữ chuyển đổi chuyên dụng.

Phạm vi nghiên cứu được thực hiện tại Trường Đại học Công nghệ thuộc Đại học Quốc gia Hà Nội vào năm 2020, tập trung thực nghiệm trên bài toán quản lý điểm bán hàng với phân hệ chức năng chọn món ăn. Về mặt ý nghĩa thực tiễn, công trình nghiên cứu mang lại giải pháp công nghệ giúp rút ngắn khoảng 65% thời gian sinh mã nền tảng, loại bỏ 100% lỗi cú pháp cơ bản trong quá trình khởi tạo cấu trúc lớp và đảm bảo tính nhất quán tuyệt đối giữa mô hình thiết kế với sản phẩm mã nguồn cuối cùng.

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

Khung lý thuyết áp dụng

Nghiên cứu được xây dựng vững chắc trên nền tảng kỹ thuật phát triển phần mềm hướng mô hình và kiến trúc hướng mô hình do Tổ chức Quản lý Đối tượng chuẩn hóa. Trọng tâm của phương pháp luận này là dịch chuyển sự tập trung từ việc viết mã nguồn thủ công sang việc xây dựng các mô hình trừu tượng ở cấp độ cao, tuân thủ nguyên lý mọi thành phần trong hệ thống đều có thể mô hình hóa.

Hệ thống lý thuyết phân tầng siêu mô hình được áp dụng triệt để qua 4 cấp độ định nghĩa: cấp độ M0 biểu diễn các thực thể dữ liệu cụ thể trong thế giới thực; cấp độ M1 là mô hình hệ thống được biểu diễn bằng ngôn ngữ mô hình hóa thống nhất; cấp độ M2 là siêu mô hình định nghĩa các khái niệm cấu trúc như lớp, thuộc tính và thao tác; cấp độ M3 là siêu siêu mô hình định chuẩn quy tắc xây dựng ngôn ngữ.

Trong không gian kỹ thuật này, nghiên cứu tích hợp 3 khái niệm cốt lõi bao gồm: mô hình hóa cấu trúc tĩnh bằng biểu đồ lớp trên công cụ Papyrus thuộc nền tảng Eclipse Modeling Framework, chuẩn chuyển đổi mô hình sang văn bản của Tổ chức Quản lý Đối tượng, và ngôn ngữ chuyển đổi dựa trên khuôn mẫu Acceleo có hỗ trợ ngôn ngữ ràng buộc đối tượng. Ngoài ra, cơ chế vùng bảo vệ được vận dụng để phân tách rõ ràng giữa phần mã nguồn tĩnh sinh tự động và phần mã logic nghiệp vụ do lập trình viên bổ sung thủ công.

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

Nguồn dữ liệu phục vụ nghiên cứu là tập hợp các tệp mô hình ngôn ngữ mô hình hóa thống nhất được trích xuất dưới định dạng trao đổi siêu dữ liệu chuẩn hóa từ công cụ thiết kế đồ họa. Cỡ mẫu thực nghiệm bao gồm 1 mô hình phân hệ bán hàng hoàn chỉnh với 4 lớp đối tượng cốt lõi, tích hợp 8 phương thức nghiệp vụ trọng yếu cùng hơn 15 thuộc tính định danh và quan hệ dữ liệu phức tạp.

Phương pháp chọn mẫu là chọn mẫu có chủ đích điển hình, đại diện chính xác cho các bài toán quản lý dịch vụ bán lẻ với đầy đủ các dạng liên kết cấu trúc từ quan hệ 1-nhiều đến quan hệ nhiều-nhiều giữa các thực thể. Lý do lựa chọn phương pháp phân tích dựa trên khuôn mẫu của Acceleo kết hợp truy vấn ngôn ngữ ràng buộc đối tượng xuất phát từ khả năng định hướng cấu trúc đầu ra rõ ràng, tách bạch hoàn toàn phần mã tĩnh định dạng sẵn và phần mã động phụ thuộc vào ngữ cảnh dữ liệu của mô hình.

Khác với cách tiếp cận viết trình sinh mã bằng ngôn ngữ lập trình truyền thống vốn gây phân mảnh mã nguồn, phương pháp này cho phép duyệt cây cú pháp trừu tượng một cách mạch lạc, đảm bảo tính toàn vẹn ngữ nghĩa và khả năng tái sử dụng cao. Toàn bộ quy trình từ khâu xây dựng quy tắc chuyển đổi, cấu hình môi trường Eclipse cho đến đánh giá thực nghiệm được triển khai đồng bộ trong khoảng thời gian từ năm 2019 đến cuối năm 2020.

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

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

Quá trình thực nghiệm đã chứng minh tính khả thi và hiệu quả vượt trội của việc áp dụng Acceleo trong việc tự động hóa sinh mã nguồn Java từ biểu đồ lớp:

Thứ nhất, nghiên cứu đã thiết lập thành công hệ thống quy tắc ánh xạ toàn diện, chuyển đổi chính xác 100% các thành phần cấu trúc từ 4 lớp đối tượng mô hình hóa bao gồm hệ thống bán hàng, bàn ăn, danh mục và món ăn sang các tệp mã nguồn Java độc lập. Các thuộc tính đi kèm phạm vi truy cập công khai, riêng tư hay bảo vệ đều được chuyển đổi chuẩn xác cùng với hệ thống phương thức truy xuất và cập nhật tương ứng.

Thứ hai, các cấu trúc quan hệ phức tạp như quan hệ 1-nhiều giữa danh mục và món ăn, cũng như quan hệ nhiều-nhiều giữa bàn ăn và danh mục đã được tự động hóa chuyển đổi thành các cấu trúc tập hợp dữ liệu danh sách trong Java với độ chính xác cú pháp tuyệt đối. Việc tích hợp thư viện hỗ trợ kiểu dữ liệu nguyên thủy đã triệt tiêu hoàn toàn 0% nguy cơ phát sinh lỗi không tương thích kiểu trong quá trình biên dịch.

Thứ ba, cơ chế vùng bảo vệ trong khuôn mẫu Acceleo đã chứng minh hiệu quả bảo toàn 100% nội dung mã nguồn do lập trình viên viết thêm bên trong thân 8 phương thức xử lý nghiệp vụ như hiển thị danh sách, lựa chọn thực đơn và ghi nhận đơn hàng qua nhiều lần tái sinh mã liên tiếp.

Thứ tư, hiệu suất xây dựng cấu trúc nền tảng cho hệ thống phần mềm tăng lên rõ rệt, giúp tiết kiệm khoảng 65% thời gian và công sức lập trình viên so với việc tạo lập thủ công toàn bộ các lớp thực thể và giao diện điều khiển.

Thảo luận kết quả

Nguyên nhân cốt lõi dẫn đến kết quả khả quan này là do Acceleo sở hữu công cụ phân tích cú pháp mạnh mẽ, hỗ trợ biểu thức truy vấn OCL trực tiếp trên cây mô hình XMI, giúp loại bỏ hoàn toàn việc phải viết các vòng lặp kiểm tra thủ công phức tạp. Khi so sánh với phương pháp sinh mã nguồn bằng ngôn ngữ lập trình đa năng truyền thống, phương pháp M2T dựa trên Acceleo thể hiện sự vượt trội về tính trong sáng của mã nguồn, giảm tải hơn 50% độ dài văn bản đặc tả bộ chuyển đổi và cho phép lập trình viên kiểm soát trực quan định dạng tệp đầu ra.

Kết quả thực nghiệm này có thể được biểu diễn một cách trực quan thông qua bảng đối sánh ánh xạ giữa các phần tử biểu đồ lớp với mã nguồn đích, kết hợp cùng biểu đồ cột so sánh thời gian phát triển phần mềm: trục tung thể hiện số giờ công lao động giảm từ 100% xuống mức khoảng 35%, và trục hoành thể hiện các giai đoạn khởi tạo cấu trúc, khai báo thuộc tính và sinh khung phương thức nghiệp vụ. Ý nghĩa quan trọng của phát hiện này khẳng định tính ứng dụng cao của mô hình hóa trong việc rút ngắn chu kỳ phát triển ứng dụng thương mại, mở ra hướng đi tự động hóa linh hoạt cho các dự án phần mềm hướng đối tượng hiện đại.

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

Dựa trên kết quả đạt được từ việc nghiên cứu kỹ thuật chuyển đổi mô hình sang văn bản, bốn giải pháp mang tính chiến lược được đề xuất nhằm nâng cao hiệu quả ứng dụng thực tế:

Thứ nhất, mở rộng bộ quy tắc chuyển đổi hành vi để tự động hóa sinh mã nguồn cho các thuật toán phức tạp. Các nhóm nghiên cứu công nghệ phần mềm tại các viện và trường đại học cần tích hợp thêm việc chuyển đổi từ biểu đồ trình tự và biểu đồ hoạt động của UML sang mã nguồn Java, hướng tới mục tiêu nâng tỷ lệ tự động hóa mã nguồn toàn diện của hệ thống lên trên 80% trong lộ trình 12 tháng tới.

Thứ hai, phát triển các tiện ích bổ sung tương thích đa nền tảng phát triển tích hợp. Đội ngũ kỹ sư phần mềm cần tiến hành đóng gói các bộ template Acceleo thành các plugin cài đặt trực tiếp trên các môi trường phát triển phổ biến như IntelliJ IDEA và Eclipse, đặt mục tiêu giảm 50% thời gian thiết lập môi trường cho các dự án mới trong thời hạn 6 tháng.

Thứ ba, chuẩn hóa quy trình kỹ thuật phần mềm hướng mô hình tại các doanh nghiệp công nghệ thông tin. Các doanh nghiệp phát triển phần mềm cần áp dụng quy trình sinh mã tự động cho các tầng kiến trúc truy xuất dữ liệu và mô hình thực thể nghiệp vụ, nhằm mục tiêu cắt giảm ít nhất 30% chi phí kiểm thử cú pháp và rút ngắn 25% thời gian bàn giao sản phẩm trong kế hoạch sản xuất kinh doanh hàng năm.

Thứ tư, đổi mới chương trình đào tạo kỹ thuật mô hình hóa chuyên sâu. Các cơ sở giáo dục đại học chuyên ngành công nghệ thông tin cần đưa các học phần thực hành về Papyrus, EMF và Acceleo vào chương trình đào tạo thạc sĩ và kỹ sư kỹ thuật phần mềm, với mục tiêu cung cấp hơn 1000 nhân lực chất lượng cao am hiểu tự động hóa phần mềm mỗi năm.

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

Nội dung và kết quả nghiên cứu của luận văn mang lại giá trị học thuật và ứng dụng thực tiễn cao cho bốn nhóm đối tượng chuyên môn:

Nhóm thứ nhất là các nhà nghiên cứu, giảng viên và học viên cao học chuyên ngành Công nghệ thông tin và Kỹ thuật phần mềm. Luận văn cung cấp khung lý thuyết hoàn chỉnh về MDSE, phân cấp siêu mô hình MOF và tài liệu tham khảo chuẩn xác để tiếp tục mở rộng các hướng nghiên cứu về biến đổi mô hình nâng cao.

Nhóm thứ hai là các kiến trúc sư phần mềm tại các công ty công nghệ. Nhóm đối tượng này có thể sử dụng các nguyên tắc thiết kế mô hình trong luận văn để chuẩn hóa quy trình chuyển giao kiến trúc kỹ thuật xuống các đội ngũ phát triển, đảm bảo mã nguồn thực tế luôn bám sát 100% thiết kế gốc.

Nhóm thứ ba là các lập trình viên Java và kỹ sư phát triển ứng dụng. Tài liệu mang lại bộ quy tắc khuôn mẫu mẫu mực bằng Acceleo, giúp lập trình viên tự xây dựng các công cụ sinh mã tự động cho các tác vụ lặp lại, từ đó tối ưu hóa hiệu suất làm việc hàng ngày trong các dự án bán hàng, quản trị doanh nghiệp.

Nhóm thứ tư là các nhà quản lý dự án công nghệ thông tin. Luận văn cung cấp luận cứ thực nghiệm rõ ràng về việc cắt giảm thời gian và chi phí dự án khi áp dụng tự động hóa, giúp nhà quản lý hoạch định chiến lược đầu tư công nghệ và phân bổ nguồn lực kỹ thuật hiệu quả hơn.

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

Kỹ thuật chuyển đổi mô hình sang văn bản là gì và đóng vai trò gì trong phát triển phần mềm? Chuyển đổi mô hình sang văn bản là kỹ thuật trích xuất thông tin cấu trúc từ mô hình trừu tượng để sinh ra văn bản hoặc mã nguồn thực thi. Trong thực tế, kỹ thuật này đóng vai trò cầu nối then chốt giúp tự động hóa quá trình sinh mã nguồn, tài liệu kỹ thuật và kịch bản triển khai, giúp tiết kiệm hơn 50% thời gian lập trình thủ công.

Tại sao ngôn ngữ Acceleo lại được ưu tiên lựa chọn thay vì viết mã Java tự sinh mã Java truyền thống? Acceleo được xây dựng dựa trên chuẩn MOFM2T của OMG, cho phép kết hợp trực quan giữa văn bản tĩnh và các điểm đánh dấu động thông qua OCL. Trong khi phương pháp Java truyền thống làm mã nguồn bị phân mảnh và khó bảo trì, Acceleo giúp cấu trúc tệp đầu ra rõ ràng, hỗ trợ kiểm tra lỗi cú pháp và tái sử dụng khuôn mẫu dễ dàng gấp 2 lần.

Vùng bảo vệ trong Acceleo hoạt động như thế nào để tránh mất mã nguồn khi cập nhật mô hình? Vùng bảo vệ là các khối mã được đánh dấu bằng thẻ đặc biệt trong template Acceleo. Khi hệ thống tiến hành sinh lại mã nguồn từ mô hình UML đã chỉnh sửa, toàn bộ các đoạn mã logic nghiệp vụ do lập trình viên viết thủ công bên trong vùng này sẽ được bảo lưu nguyên vẹn 100%, không bị ghi đè hay xóa bỏ.

Hệ thống bán hàng thực nghiệm trong luận văn bao gồm những thành phần mô hình hóa nào? Phân hệ chọn món ăn của hệ thống bán hàng gồm 4 lớp đối tượng: lớp điều khiển trung tâm PosSystem, lớp quản lý bàn ăn Table, lớp phân loại Category và lớp hàng hóa Item. Mô hình bao quát 8 phương thức nghiệp vụ trọng yếu và các liên kết đa dạng từ 1-nhiều đến nhiều-nhiều phục vụ hoạt động bán lẻ.

Làm thế nào để xử lý các mối quan hệ liên kết dữ liệu phức tạp từ biểu đồ lớp sang Java? Thông qua các quy tắc ánh xạ mở rộng và truy vấn OCL trong Acceleo, quan hệ 1-nhiều được chuyển đổi thành các thuộc tính danh sách List chứa kiểu đối tượng tương ứng. Quan hệ nhiều-nhiều giữa bàn và danh mục được tự động sinh thành các tập hợp tương hỗ ở cả hai lớp, kết hợp phương thức thêm và xóa phần tử chuẩn xác.

Kết luận

Công trình nghiên cứu đã hoàn thành xuất sắc các mục tiêu đề ra, mang lại những giá trị then chốt sau:

  • Hệ thống hóa toàn diện cơ sở lý thuyết về kỹ thuật phát triển phần mềm hướng mô hình và kiến trúc hướng mô hình theo tiêu chuẩn quốc tế.
  • Phân tích và làm rõ các kỹ thuật biến đổi mô hình, khẳng định ưu thế vượt trội của phương pháp chuyển đổi mô hình sang văn bản dựa trên khuôn mẫu.
  • Xây dựng thành công bộ quy tắc chuyển đổi tĩnh và mở rộng trên ngôn ngữ Acceleo, tự động hóa sinh mã nguồn Java hoàn chỉnh từ biểu đồ lớp UML.
  • Triển khai thực nghiệm thành công trên phân hệ quản lý bán hàng với độ chính xác cú pháp đạt 100% và bảo toàn toàn vẹn mã logic nghiệp vụ.
  • Đóng góp giải pháp thiết thực giúp rút ngắn khoảng 65% thời gian khởi tạo mã nguồn nền tảng trong các dự án công nghệ thông tin.

Đóng góp quan trọng nhất của luận văn là chứng minh tính khả thi của việc ứng dụng kỹ thuật mô hình hóa vào công đoạn sinh mã nguồn trong thực tiễn phát triển phần mềm hiện đại. Trong giai đoạn 12 đến 24 tháng tiếp theo, hướng nghiên cứu sẽ mở rộng sang việc tích hợp biểu đồ hành vi để sinh mã tự động cho toàn bộ logic hệ thống và phát triển các plugin thông minh trên môi trường đám mây. Các kỹ sư và nhà nghiên cứu phần mềm hãy bắt đầu áp dụng ngay phương pháp phát triển hướng mô hình để chuẩn hóa kiến trúc và nâng tầm hiệu suất dự án của mình.