Tổng quan nghiên cứu

Trong kỹ nghệ phần mềm hiện đại, các phương pháp phát triển truyền thống thường đối mặt với thách thức lớn khi chi phí bảo trì và sửa đổi yêu cầu chiếm tới khoảng 60% đến 70% tổng ngân sách vòng đời dự án. Theo ước tính từ các báo cáo công nghiệp phần mềm, có hơn 45% dự án gặp khó khăn hoặc thất bại do sự sai lệch giữa tài liệu phân tích thiết kế và mã nguồn thực thi. Phương pháp phát triển phần mềm truyền thống dựa trên mô hình thác nước bộc lộ sự phụ thuộc nặng nề vào nền tảng công nghệ cụ thể, khiến việc chuyển đổi hệ thống khi thay đổi hạ tầng kỹ thuật đòi hỏi phải tái xây dựng gần như toàn bộ từ đầu.

Trước thực trạng đó, luận văn thạc sĩ chuyên ngành Kỹ thuật phần mềm của tác giả Nguyễn Huy Hoàng, dưới sự hướng dẫn khoa học của Tiến sĩ Đặng Đức Hạnh tại Trường Đại học Công nghệ – Đại học Quốc gia Hà Nội, đã tập trung giải quyết bài toán tự động hóa quy trình sản xuất phần mềm thông qua đề tài nghiên cứu về thao tác mô hình trong phát triển hướng mô hình. Mục tiêu cụ thể của luận văn là làm chủ cơ sở lý luận về Kiến trúc hướng mô hình, nghiên cứu sâu kỹ thuật chuyển đổi từ mô hình sang văn bản và cài đặt mở rộng bộ công cụ Acceleo M2T nhằm tự động sinh mã nguồn cho các ứng dụng web doanh nghiệp.

Nghiên cứu được triển khai và hoàn thành vào tháng 10 năm 2014 trong khuôn khổ đề tài nghiên cứu khoa học cấp Đại học Quốc gia Hà Nội. Kết quả nghiên cứu mang lại giá trị thực tiễn cao khi chứng minh khả năng tự động hóa hơn 75% khối lượng mã nguồn khung, lớp truy xuất dữ liệu và giao diện người dùng, giúp rút ngắn khoảng 40% đến 50% thời gian lập trình ban đầu, đồng thời triệt tiêu hoàn toàn các lỗi sai sót cú pháp trong quá trình chuyển giao từ thiết kế sang mã lệnh.

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 dựa trên nền tảng lý thuyết cốt lõi của Kiến trúc hướng mô hình do Tổ chức Quản lý Đối tượng quốc tế ban hành từ năm 2001, kết hợp cùng khung mô hình hóa tiêu chuẩn của nền tảng Eclipse. Hệ thống lý thuyết phân cấp kiến trúc siêu dữ liệu thành 4 tầng trừu tượng rõ rệt: tầng dữ liệu thực thi M0, tầng mô hình hệ thống M1, tầng siêu mô hình M2 và tầng siêu-siêu mô hình M3 được quy chuẩn bởi Meta-Object Facility.

Trong không gian phát triển hướng mô hình, hệ thống được biểu diễn qua 3 mức nhìn chính: Mô hình độc lập tính toán phản ánh yêu cầu nghiệp vụ, Mô hình độc lập nền tảng đặc tả kiến trúc không phụ thuộc công nghệ, và Mô hình phụ thuộc nền tảng gắn liền với môi trường triển khai cụ thể. Luận văn khai thác sâu các khái niệm then chốt bao gồm: Siêu mô hình Ecore trong khung Eclipse Modeling Framework, Ngôn ngữ ràng buộc đối tượng OCL 2.0 dùng để định vị và lọc dữ liệu mô hình, cùng tiêu chuẩn ngôn ngữ chuyển đổi mô hình sang văn bản MOFM2T. Các công cụ chuyển đổi mô hình được phân loại thành 2 hướng tiếp cận chính: chuyển đổi mô hình sang mô hình bằng ngôn ngữ Atlas Transformation Language hoặc QVT, và chuyển đổi mô hình sang mã nguồn dựa trên kỹ thuật khuôn mẫu kết hợp siêu mô hình.

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 đối sánh định lượng trên một ca nghiên cứu điển hình là Hệ thống Công báo điện tử. Dữ liệu thực nghiệm được thu thập từ quá trình mô hình hóa toàn diện hệ thống với quy mô gồm 3 khối thực thể dữ liệu chính (Văn bản, Người dùng, Danh mục), 12 bảng thực thể liên kết và 10 luồng xử lý giao diện trải rộng từ cổng thông tin người dùng đến hệ thống quản trị chuyên sâu.

Phương pháp chọn mẫu có chủ đích được áp dụng nhằm lựa chọn một hệ thống quản lý hành chính nhà nước có cấu trúc dữ liệu quan hệ phức tạp và yêu cầu điều hướng luồng người dùng đa dạng. Lý do lựa chọn phương pháp phân tích dựa trên khuôn mẫu Acceleo M2T là nhờ khả năng phân tách độc lập giữa logic trích xuất dữ liệu mô hình bằng OCL và định dạng mã nguồn đầu ra, vượt trội hơn hẳn so với cơ chế duyệt cây truyền thống. Toàn bộ quá trình nghiên cứu lý thuyết, xây dựng bộ chuyển đổi, thiết kế mô hình thực thể bằng Entity Designer, thiết kế luồng bằng Cinematic Designer và kiểm thử hiệu năng sinh mã trên nền tảng JavaEE (kết hợp Struts, Hibernate và cơ sở dữ liệu Microsoft SQL Server) được tiến hành đồng bộ trong khoảng thời gian 12 tháng.

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 và kiểm thử bộ công cụ Acceleo JavaEE Generator đã ghi nhận 4 phát hiện khoa học và kỹ thuật nổi bật:

Thứ nhất, việc bổ sung và hiệu chỉnh khuôn mẫu đã mở rộng thành công 100% khả năng hỗ trợ hệ quản trị cơ sở dữ liệu Microsoft SQL Server. Thông qua việc thiết kế mới khuôn mẫu sqlCreate.mtl với dung lượng khoảng 80 dòng lệnh mẫu, hệ thống đã trích xuất chính xác 100% các định nghĩa bảng, khóa chính, khóa ngoại và kiểu dữ liệu từ mô hình thực thể sang các script tạo bảng DDL hoàn chỉnh.

Thứ hai, các khuôn mẫu truy xuất dữ liệu Hibernate (daoHibernateDirect.mtldaoHibernateCfg.mtl) sau khi cập nhật đã sinh ra chính xác toàn bộ các lớp DAO, tệp cấu hình ánh xạ và kết nối cơ sở dữ liệu. Tỷ lệ ánh xạ đúng giữa các thuộc tính trong mô hình thực thể và cấu trúc bảng quan hệ đạt mức tuyệt đối 100%, không phát sinh bất kỳ xung đột kiểu dữ liệu nào.

Thứ ba, hiệu năng sinh mã của bộ công cụ đạt tốc độ vượt trội. Toàn bộ mã nguồn ứng dụng Công báo điện tử bao gồm hàng chục lớp điều khiển Struts Action, các tệp biểu diễn JSP và cấu hình luồng điều hướng được hoàn thành tự động trong thời gian chỉ từ 5 đến 10 giây. So với việc viết mã thủ công truyền thống, phương pháp này tiết kiệm khoảng 80% thời gian thiết lập hạ tầng mã nguồn ban đầu.

Thứ tư, kiến trúc mã nguồn sinh ra tuân thủ nghiêm ngặt mô hình Model-View-Controller 3 lớp. Cơ chế phân tách vùng bảo vệ của Acceleo cho phép nhà phát triển bổ sung logic nghiệp vụ tùy biến mà không bị mất mã khi thực hiện sinh lại mô hình ở các lần cập nhật tiếp theo.

Thảo luận kết quả

Hiệu quả vượt bậc của Acceleo M2T bắt nguồn từ cơ chế kết hợp chặt chẽ giữa đặc tả ngôn ngữ MOFM2T và khả năng điều hướng siêu dữ liệu chính xác của OCL. Trong khi phương pháp lập trình truyền thống dễ gặp lỗi do lập trình viên hiểu sai tài liệu phân tích, thì việc chuyển đổi tự động từ mô hình PIM và PSM bảo đảm tính nhất quán hoàn hảo giữa thiết kế và mã nguồn thực tế.

So với các công cụ cùng thời kỳ như Java Emitter Templates vốn chỉ hỗ trợ Java đơn thuần và khó quản lý siêu mô hình, Acceleo thể hiện tính linh hoạt vượt trội nhờ khả năng tiếp nhận đa dạng các siêu mô hình chuẩn Ecore và UML.

Dữ liệu đánh giá hiệu quả có thể được biểu diễn trực quan qua biểu đồ cột so sánh thời gian phát triển giữa phương pháp thủ công và phương pháp hướng mô hình qua 3 tầng kiến trúc: Cơ sở dữ liệu SQL, Tầng truy xuất dữ liệu Hibernate, và Tầng giao diện Struts. Ngoài ra, bảng thống kê chi tiết số lượng tệp tin sinh ra minh chứng rằng với 12 thực thể đầu vào, hệ thống tự động tạo ra 24 tệp mã nguồn DAO, 12 lớp thực thể Java, 10 lớp điều khiển luồng và 1 tập lệnh SQL tổng thể chỉ trong một lần bấm máy.

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

Dựa trên kết quả nghiên cứu và thực nghiệm đạt được, luận văn đưa ra 4 khuyến nghị và giải pháp hành động cụ thể nhằm thúc đẩy ứng dụng công nghệ hướng mô hình trong sản xuất phần mềm:

  1. Chuẩn hóa quy trình mô hình hóa doanh nghiệp: Các bộ phận kiến trúc phần mềm cần xây dựng bộ thư viện siêu mô hình chuẩn hóa cho từng miền nghiệp vụ trong vòng 6 tháng tới, đặt mục tiêu tái sử dụng tối thiểu 70% các mô hình thực thể và mô hình dịch vụ giữa các dự án có cùng lĩnh vực.
  2. Mở rộng thư viện khuôn mẫu sinh mã đa nền tảng: Nhóm nghiên cứu và phát triển công nghệ cần tiếp tục xây dựng thêm các module khuôn mẫu Acceleo cho các nền tảng công nghệ hiện đại như Spring Boot, Angular, React và cơ sở dữ liệu NoSQL trong thời gian 9 tháng, nâng tỷ lệ tự động hóa sinh mã nguồn khung lên trên mức 85%.
  3. Tích hợp kiểm thử tự động vào quy trình sinh mã: Các kỹ sư đảm bảo chất lượng phần mềm cần phát triển các khuôn mẫu sinh tự động các bộ kiểm thử đơn vị và kịch bản kiểm thử tích hợp song song với mã nguồn ứng dụng, triển khai trong lộ trình 3 tháng để đạt độ bao phủ kiểm thử tự động ban đầu tối thiểu 80%.
  4. Đào tạo và chuyển giao công nghệ kỹ nghệ hướng mô hình: Các cơ sở giáo dục đại học và trung tâm đào tạo công nghệ thông tin cần đưa chuyên đề phát triển phần mềm hướng mô hình, công cụ Eclipse Modeling Framework và Acceleo vào chương trình đào tạo kỹ sư trong vòng 12 tháng, hướng tới mục tiêu trang bị kỹ năng mô hình hóa chuyên sâu cho ít nhất 500 kỹ sư phần mềm mỗi năm.

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

Công trình nghiên cứu này cung cấp nguồn tri thức chuyên sâu và giải pháp kỹ thuật giá trị cho 4 nhóm đối tượng cụ thể:

  • Kiến trúc sư phần mềm: Nắm vững phương pháp luận phân tách hệ thống theo chuẩn MDA, thiết lập các mô hình độc lập nền tảng và thiết kế khung kiến trúc tự động hóa cho các dự án quy mô lớn.
  • Kỹ sư phát triển phần mềm và lập trình viên: Học hỏi kỹ thuật viết khuôn mẫu chuyển đổi mô hình sang văn bản bằng ngôn ngữ MOFM2T, tùy biến công cụ Acceleo để sinh mã tự động cho các framework hướng đối tượng, giảm tải công việc viết mã lặp lại.
  • Học viên cao học và nghiên cứu sinh ngành Công nghệ thông tin: Sử dụng tài liệu như một tài liệu tham khảo chuẩn mực về kỹ nghệ hướng mô hình, nắm bắt cách thức vận hành của Eclipse Modeling Framework, Ecore, OCL và các thuật toán chuyển đổi mô hình.
  • Giám đốc công nghệ và Quản lý dự án phần mềm: Tham khảo các số liệu định lượng về năng suất lao động và tính nhất quán của sản phẩm để xây dựng chiến lược áp dụng công cụ tự động hóa, tối ưu hóa chi phí sản xuất và rút ngắn thời gian đưa sản phẩm ra thị trường.

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

Phát triển phần mềm hướng mô hình khác biệt cơ bản như thế nào so với phương pháp truyền thống?
Trong phương pháp truyền thống, mô hình chỉ đóng vai trò tài liệu tham khảo và mã nguồn được viết thủ công, dẫn đến nguy cơ sai lệch thiết kế lên tới hơn 40%. Ngược lại, trong phương pháp hướng mô hình, mô hình là trung tâm của toàn bộ vòng đời phát triển và mã nguồn được sinh tự động thông qua các luật chuyển đổi định nghĩa trước.

Acceleo M2T đóng vai trò gì trong kiến trúc hướng mô hình?
Acceleo M2T là công cụ mã nguồn mở chạy trên nền tảng Eclipse, hiện thực hóa tiêu chuẩn MOFM2T của tổ chức OMG. Công cụ đóng vai trò chuyển đổi từ mô hình phụ thuộc nền tảng sang văn bản, tự động đọc các phần tử siêu dữ liệu và điền vào các khuôn mẫu để tạo ra mã nguồn chương trình hoàn chỉnh.

Làm thế nào để tùy biến Acceleo sinh mã cho một hệ quản trị cơ sở dữ liệu mới?
Nhà phát triển chỉ cần tạo mới hoặc chỉnh sửa tệp khuôn mẫu có đuôi mở rộng .mtl, định nghĩa cú pháp DDL tương ứng của hệ quản trị cơ sở dữ liệu đích và sử dụng các câu truy vấn OCL để duyệt qua các thuộc tính của mô hình thực thể, như cách luận văn đã cài đặt thành công khuôn mẫu sqlCreate.mtl.

Mô hình Cinematic Designer giải quyết bài toán nào trong thiết kế phần mềm?
Cinematic Designer là công cụ chuyên biệt miền dùng để mô hình hóa cấu trúc giao diện người dùng, các trạng thái hiển thị và luồng chuyển đổi giữa các màn hình. Trong luận văn, 10 luồng xử lý trên Cinematic Designer đã được chuyển đổi tự động thành toàn bộ các tệp cấu hình và Action của Struts Framework.

Đâu là thách thức lớn nhất khi doanh nghiệp triển khai kỹ nghệ hướng mô hình?
Thách thức lớn nhất nằm ở chi phí thời gian ban đầu để đào tạo nhân lực làm chủ các chuẩn trừu tượng như MOF, EMF và OCL, thường mất khoảng 3 đến 6 tháng. Ngoài ra, việc thiết kế bộ khuôn mẫu chuyển đổi chuẩn mực đòi hỏi chuyên gia phải có kinh nghiệm sâu sắc về cả miền nghiệp vụ lẫn công nghệ đích.

Kết luận

  • Hệ thống hóa toàn diện cơ sở lý thuyết về Phát triển hướng mô hình, Kiến trúc hướng mô hình MDA và các tiêu chuẩn quốc tế liên quan như MOF, UML, XMI và OCL.
  • Phân tích chuyên sâu phương pháp luận chuyển đổi mô hình sang văn bản và làm chủ công nghệ sinh mã dựa trên khuôn mẫu của Acceleo M2T.
  • Cải tiến và bổ sung thành công các khuôn mẫu sinh mã cho Acceleo JavaEE Generator, hỗ trợ toàn diện hệ quản trị cơ sở dữ liệu Microsoft SQL Server và tối ưu hóa tầng Hibernate ORM.
  • Kiểm chứng thực nghiệm thành công trên hệ thống Công báo điện tử với 3 phân hệ chính và 10 luồng nghiệp vụ phức tạp, đạt độ chính xác cấu trúc 100%.
  • Khẳng định tính ưu việt của phương pháp với khả năng tự động hóa hơn 75% mã nguồn khung và rút ngắn từ 40% đến 50% thời gian phát triển hệ thống.

Đóng góp lớn nhất của luận văn là đã hoàn thiện cầu nối công nghệ từ mô hình phân tích thiết kế đến mã nguồn thực thi trên nền tảng JavaEE. Trong giai đoạn 12 đến 24 tháng tới, hướng nghiên cứu tiếp theo sẽ tập trung mở rộng bộ khuôn mẫu sang kiến trúc vi dịch vụ và các nền tảng đám mây. Các kỹ sư phần mềm và nhà nghiên cứu được khuyến khích tải về, trải nghiệm và ứng dụng bộ công cụ Acceleo M2T vào quy trình phát triển thực tế để nâng cao năng suất sản xuất phần mềm.