Tóm tắt Luận văn Thạc sĩ Công nghệ thông tin: Nghiên cứu và cài đặt một công cụ trên nền tảng Eclipse để hỗ trợ phát triển các ứng dụng Java

32 8 0
Tóm tắt Luận văn Thạc sĩ Công nghệ thông tin: Nghiên cứu và cài đặt một công cụ trên nền tảng Eclipse để hỗ trợ phát triển các ứng dụng Java

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Mục tiêu của luận văn là tạo ra một gói mở rộng plug-in cài trên công cụ hỗ trợ lập trình Eclipse cho DomainAppTool. Từ đó, các chức năng của nó sẽ được trực quan hóa, người dùng có thể sử dụng bất kỳ khi nào trong quá trình phát triển phần mềm. Điều này có ý nghĩa quan trọng giúp cho công cụ hỗ trợ phát triển phần mềm hướng miền được sử dụng rộng rãi hơn.

MỞ ĐẦU Một ứng ứng dụng phát triển với kiến trúc tốt, sử dụng công nghệ có giao diện tốt nhất, … khơng giải u cầu nghiệp vụ đề ứng dụng khơng thể xem hữu ích Do đó, thiết kế hướng miền DDD đưa Thiết kế hướng miền DDD nhằm phát triển phần mềm cách lặp lặp lại xung quanh mơ hình miền thực tế Cả phần mềm mơ hình miền nắm bắt triệt để yêu cầu miền khả thi để cài đặt xét mặt kỹ thuật [9] Ý tưởng DDD mơ hình hóa miền cho phát triển phần mềm [2] Về lý thuyết, đội phát triển cần tập trung chủ yếu vào xây dựng mơ hình miền, tuân thủ nguyên tắc DDD cài đặt Khi xương hệ thống rắn chắc, thứ trở nên dễ dàng việc triển khai tính tương tự việc lắp ghép viên gạch xếp hình Trên thực tế, việc xây dựng phần mềm hướng miền không đơn giản, nhiều cơng việc cần phải thực hiện: từ phân tích miền, xây dựng mơ hình miền, cài đặt dạng mã nguồn sử dụng ngơn ngữ lập trình định, đảm bảo nguyên tắc DDD gắn chặt cài đặt với mơ hình, lập lớp miền chứa thành phần cấu thành nên DDD Để tăng hiệu suất tạo phần mềm, công cụ Java hỗ trợ phát triển phần mềm hướng miền tên DomainAppTool, nhóm tác giả [7] đề xuất Công cụ sử dụng nghiên cứu gần DDD tập trung vào mở rộng ngôn ngữ lập trình hướng đối tượng dựa annotation để xây dựng mơ hình miền Mơ hình khơng sở cho ngôn ngữ chung thành viên nhóm phát triển mà cịn sử dụng đầu vào để sinh phần mềm [8] DomainAppTool tự động hóa tạo phần mềm từ tập lớp miền thiết kế với tính thiết kế hướng miền Lợi ích cơng cụ cho phép nhà phát triển tập chung vào thiết kế mơ hình miền để đưa tập lớp miền phần mềm, toàn phần mềm bao gồm giao diện đồ họa người dùng đối tượng lưu trữ tạo tự động vào thời gian chạy Một hạn chế công cụ chưa có giao diện người dùng, người sử dụng phải thực thủ công loạt lệnh command line để tạo phần mềm Phát triển phần mềm trình lặp lặp lại để sinh phần mềm cuối Trong vòng lặp phát triển, sử dụng cơng cụ người dùng lại phải thực lệnh đó, gây khơng khó khăn tốn nhiều thời gian Vì vậy, xin chọn đề tài “Nghiên cứu cài đặt công cụ tảng Eclipse để hỗ trợ phát triển ứng dụng Java” Mục tiêu luận văn tạo gói mở rộng plug-in cài cơng cụ hỗ trợ lập trình Eclipse cho DomainAppTool Từ đó, chức trực quan hóa, người dùng sử dụng trình phát triển phần mềm Điều có ý nghĩa quan trọng giúp cho cơng cụ hỗ trợ phát triển phần mềm hướng miền sử dụng rộng rãi Trong luận văn, tập trung vào trình bày chi tiết hai đóng góp xây dựng thuật tốn tạo cấu hình phần mềm xây dựng gói Eclipse plug-in; cuối cùng, bước thực thực nghiệm kết đạt Về phần bố cục, luận văn chia thành chương sau: Chương Kiến thức tảng : Trình bày sở lý thuyết cơng nghệ sử dụng luận văn Bao gồm: Thiết kế hướng miền, phương pháp phát triển phần mềm hướng miền, công cụ hỗ trợ phát triển phần mềm hướng miền thành phần mở rộng Eclipse Plug-in Chương Xây dựng Eclipse Plug-in cho phần mềm hướng miền : Trình bày mơ hình thiết kế Plugin cài đặt chi tiết thiết kế Các thuật toán tự động sinh phương thức cho lớp miền cấu hình mơ-đun phần mềm giới thiệu trọng tâm tập trung vào trình bày chi tiết thuật tốn sinh cấu hình phần mềm Chương Cài đặt thực nghiệm : Trình bày u cầu mơi trường cài đặt thực nghiệm, toán thực nghiệm cuối kết đạt CHƯƠNG KIẾN THỨC NỀN TẢNG 1.1 Giới thiệu chương Chương trình bày sở lý thuyết cơng nghệ sử dụng luận văn Bao gồm ba nội dung chính:     Thiết kế hướng miền DDD: khái niệm, ngôn ngữ chung, thiết kế hướng mơ hình kiến trúc ứng dụng sử dụng DDD Phương pháp phát triển phần mềm hướng miền DDSDM: khái niệm, pha phát triển nguyên mẫu phần mềm từ mơ hình miền Cơng cụ hỗ trợ phát triển phần mềm hướng miền: lịch sử phát triển, tổng quan kiến trúc, phát triển lớp miền bước xây dựng nguyên mẫu phần mềm từ lớp miền Thành phần mở rộng Eclipse Plug-in: Kiến trúc mở Eclipse môi trường phát triển Plug-in 1.2 Thiết kế hướng miền Thiết kế hướng miền cách tiếp cận để phát triển phần mềm có yêu cầu phức tạp việc liên kết cài đặt với mộ mơ hình phát triển Tiền đề thiết kế hướng miền là:    Đặt trọng tâm dự án tập trung vào miền lõi logic miền Các thiết kế phức tạp xây dựng dựa mơ hình miền Sự cộng tác chuyên gia miền chuyên gia phát triển để trau dồi lặp lặp lại mơ hình miền khái niệm giải vấn đề miền cụ thể Thiết kế hướng miền phát triển từ tiền đề coi trái tim phát triển phần mềm kiến thức vấn đề cần giải tìm cách hữu ích để hiểu vấn đề Sự phức tạp cần giải phức tạp miền kiến thức kỹ thuật, giao diện người dùng hay chí khơng phải chức cụ thể Điều có nghĩa thiết kế thứ xung quanh hiểu biết quan niệm hầu hết khái niệm cần thiết nghiệp vụ, chứng minh cho phát triển khác cách hỗ trợ miền lõi 1.2.1 Xử lý kiến thức Phát triển phần mềm quy trình xây dựng phần mềm để giải toán nghiệp vụ thực tế hay miền vấn đề Phần mềm bắt nguồn liên quan chặt chẽ với miền Mặt khác, phần mềm làm từ mã nguồn Nhà phát triển thường xa đà vào việc dành nhiều thời gian tạo mã nguồn nhìn phần mềm đối tượng phương thức đơn giản Xem xét ví dụ sản xuất ô tô Công nhân liên quan trực tiếp đến việc lắp ráp linh kiện tơ có góc nhìn hạn chế quy trình sản xuất tơ Họ coi ô tô tập khổng lồ linh kiện cần lắp ráp chúng với nhau; thực quy trình tạo tơ phức tạp nhiều Một xe tốt bắt nguồn từ tầm nhìn đặc tả cách chi tiết, thiết kế (rất, nhiều thiết kế) Sau nhiều tháng, chí vài năm; thiết kế lại thay đổi, cải tiến thiết kế trở nên hoàn hảo Q trình thiết kế khơng làm ln giấy, nhiều phần thiết kế bao gồm việc mô hình hóa kiểm thử điều kiện cụ thể để xem xe hoạt động hay khơng Sau đó, thiết kế thay đổi theo kết kiểm thử Cuối cùng, xe đưa vào sản xuất bao gồm sản xuất linh kiện lắp ráp chúng vào Việc phát triển phần mềm tương tự vậy, tạo phần mềm phức tạp mà ngồi viết mã nguồn Để tạo phần mềm tốt, nhà phát triển cần hiểu miền vấn đề mà phần mềm cần giải thông qua việc trao đổi với chuyên gia miền Những kiến thức thô nghiệp vụ khơng dễ dàng chuyển hóa thành cấu trúc phần mềm trừ miền “trừu tượng hóa” “Trừu tượng hóa” miền vấn đề việc xây dựng mơ hình miền Theo Eric Evans, mơ hình miền khơng phải giản đồ cụ thể, quan trọng ý tưởng mà giản đồ muốn truyền đạt; quan trọng kiến thức đầu chuyên gia miền mà trừu tượng hóa miền kết hợp chặt chẽ với kiến thức nhóm phát triển hiểu Mơ hình thể miền cần xem xét cần thiết suốt trình phát triển phần mềm Mơ hình hóa miền địi hỏi kiến thức xử lý theo cách tương tự nhà phân tích tài xử lý số để hiểu hiệu suất hàng quý công ty Khi làm việc với chuyên gia miền, người mơ hình hóa miền thử đưa số ý tưởng tổ chức tập khái niệm, sau đó, tạo mơ hình, dùng thử chúng, số mơ hình bị loại bỏ số khác bị biến đổi Phát triển lặp lặp lại, xử lý kiến thức liên tục suốt vòng đời dự án Các nỗ lực mơ hình hóa tạo vịng lặp thường hời hợt Sự trừu tượng hóa xuất theo thời gian phải tái cấu trúc sử dụng vào mơ hình Để đạt điều cần trì mối quan hệ chặt chẽ, liên tục với chuyên gia miền 1.2.2 Ngôn ngữ chung Yêu cầu cách tiếp cận DDD ngôn ngữ chung cho phép chuyên gia miền chuyên gia phần mềm hiểu cộng tác với Thơng thường, lập trình viên nghĩ tới lớp, phương thức, thuật toán khuynh hướng diễn đạt vấn đề dạng mã nguồn Khi nhìn vào đối tượng quan hệ mơ hình chúng, lập trình viên nghĩ đến kế thừa, đa hình, lập trình hướng đối tượng,… Tuy nhiên, chun gia miền thường khơng hiểu khái niệm Để vượt qua rào cản giao tiếp này, DDD khuyến khích xây dựng mơ hình, trao đổi ý tưởng mơ hình, thành phần liên quan đến mơ hình Giao tiếp tốt mức quan trọng cho thành công dự án Khi trao đổi mơ hình, có nhiều khái niệm chun ngành dễ bị hiểu sai với người ngồi ngành Vì vậy, cần có từ điển thuật ngữ dự án giải thích chi tiết khái niệm đó, đảm bảo tất bên liên quan đến dự án hiểu mơ hình Ngun tắc cốt lõi thiết kế hướng miền sử dụng ngôn ngữ dựa mơ hình Vì mơ hình xuất phát điểm chung, đầu vào cho phần mềm giải miền vấn đề Ngôn ngữ chung kết nối phần thiết kế hoạt động nhóm phát triển 1.2.3 Rằng buộc mơ hình cài đặt Đối tượng điển hình mơ hình có liên kết phức tạp với đối tượng khác mạng lưới liên kết có vài đường biên tự nhiên Khi nhà phát triển bắt đầu cài đặt ứng dụng, họ nhanh chóng phát mớ hỗn độn liên kết khơng chuyển thành đơn vị lữu trữ, phục hồi nhờ tính tồn vẹn liệu Nếu dự án sử dụng sở liệu đối tượng nhà phát triển chí phải đối mặt với thách thức việc ánh xạ đối tượng vào bảng quan hệ Ở mức độ bản, mơ hình khơng cung cấp hướng dẫn để cài đặt Mơ hình “chính xác” kết cộng tác chặt chẽ chuyên gia nghiệp vụ nhà phân tích kỹ thuật Tuy nhiên, nhà phát triển đến kết luận đối tượng dựa khái niệm tảng thiết họ Vì vậy, họ tiến hành phát triển thiết kế sử dụng vài tên lớp thuộc tính giống cho việc lưu trữ liệu, khơng dựa mơ hình tồn Dự án có mơ hình miền mơ hình tốt giấy trừ trực tiếp trợ giúp phát triển phần mềm Mơ hình đến từ nhiều nguồn phục vụ nhiều vai trị, chí vai trị giới hạn hoàn cảnh dự án phát triển phần mềm Thiết kế hướng miền đề xuất mơ hình khơng hỗ trợ phân tích sớm mà tảng thiết kế Việc liên kết chặt chẽ mã nguồn với mơ hình bên mang lại ý nghĩa lớn cho mã nguồn, đồng thời làm cho mơ hình trở nên thích hợp Nhiều dự án phức tạp áp dụng số mơ hình miền khơng trì kết nối chặt chẽ mơ hình mã nguồn Mơ hình phát triển hữu ích cơng cụ thăm dị ban đầu ngày trở nên khơng liên quan đến mã nguồn chí gây hiểu lầm mã nguồn ko gắn chặt với mơ hình Thiết kế hướng mơ hình Nhiều phương pháp thiết kế ủng họ mơ hình phân tích khác biệt so với thiết kế thường phát triển người khác Nó gọi mơ hình phân tích sản phẩm phân tích miền nghiệp vụ nhằm xếp khái niệm mà không quan tâm đến phần khác hệ thống phần mềm Một mơ hình phân có ý nghĩa công cụ để để hiểu miền vấn đề; việc kết hợp với cài đặt nhãng việc tập trung vào phân tích vấn đề Do đo, thiết kế tạo chưa tương ứng với mơ hình phân tích Một số kiến thức xem xét, nghiền ngẫm xảy mơ hình phân tích hầu hết laị bị qn lập trình, nhà phát triển buộc phải đưa trừu tượng hóa cho thiết kế Sau đó, khơng có đảm bảo thông tin chi tiết thu từ chun gia phân tích nhúng vào mơ hình, lưu lại tái sử dụng Tại thời điểm này, việc trì ánh xạ thiết kế mơ hình khơng hiệu chi phí Thậm chí, mơ hình phân tích túy cịn thiếu mục tiêu hiểu miền vấn đề khám phá quan trọng xuất trình thiết kế/cài đặt Kết mơ hình phân tích khơng sử dụng sau việc viết mã nguồn bắt đầu kiến thức tảng phải xem xét lại Nếu thiết kế số phần trung tâm khơng ánh xạ lên mơ hình miền mơ hình khơng mang lại giá trị lớn tính xác phần mềm bị nghi ngờ Đồng thời, ánh xạ phức tạp mơ hình chức thiết kế khó hiểu thực tế khơng thể trì thay đổi thiết kế Q trình phân tích phải nắm bắt khái niệm từ miền vấn đề theo cách dễ hiểu Thiết kế phải xác định tập thành phần xây dựng với cơng cụ lập trình sử dụng dự án, công cụ thực môi trường triển khai đích cách hiệu giải xác vấn đề đặt cho ứng dụng Mơ hình hướng mơ hình loại bỏ phân tách mơ hình phân tích mơ hình thiết kế để tìm mơ hình phục vụ hai mục đích Đặt vấn đề kỹ thuật sang bên, đối tượng thiết kế đóng vai trị khái niệm mơ tả mơ hình Có nhiều cách trừu tượng hóa miền có nhiều cách thiết kế giải vấn đề ứng dụng Đây thứ làm cho việc liên kết chặt chẽ mơ hình thiết kế trở nên thực tế Liên kết không khiến cho mơ hình phân tích bị suy yếu, tổn hại việc xem xét yêu tố kỹ thuật; hay phải chấp nhận thiết kế phản ánh ý tưởng miền vụng không sử dụng nguyên tắc thiết kế phần mềm Khi mơ hình dường không phù hợp với thực tế cài đặt cách trung thực khái niệm mơ hình khác nên tìm kiếm Do đó, quy trình mơ hình hóa thiết kế trở thành vòng lặp tiếp tục Yêu cầu liên kết chặt chẽ mơ hình miền thiết kế cung cấp thêm tiêu chí cho việc lựa chọn mơ hình hữu ích vơ số mơ hình có Từ mơ hình, thuật ngữ sử dụng thiết kế phân công công việc Mã nguồn trở thành thể mơ hình, vậy, thay đổi mã nguồn thay đổi mơ hình Ảnh hưởng chắn lan hoạt động lại dự án Việc gắn cài đặt với mơ hình thường u cầu công cụ ngôn ngữ phát triển phần mềm hỗ trợ mơ hình hóa lập trình hướng đối tượng Thiết kế hướng mơ hình trái tim thiết kế hướng miền Hình 1.1 mơ tả thành phần cấu thành nên thiết kế hướng mô hình Hình 1.1: Các thành phần thiết kế hướng mơ hình 1.3 Phương pháp phát triển phần mềm hướng miền DDSDM DDSDM phương pháp phát triển lặp cho việc phát triển nguyên mẫu phần mềm từ mơ hình miền Các ngun mẫu sử dụng theo hai cách: Cách sử dụng chủ yếu dành cho chuyên gia miền nhóm phát triển để phát triển mơ hình miền cách tăng dần, hợp tác tương tác Cách sử dụng thứ hai nguyên mẫu tái sử dụng giai đoạn sau để phát triển phần mềm thương mại Hình 1.4 mơ tả DDSDM bao gồm pha sau:     Pha 1: Phát triển mơ hình miền khái niệm Pha 2: Định nghĩa vòng lặp phát triển Pha 3: Thực vòng lặp để phát triển tập nguyên mẫu phần mềm Pha 4: Tích hợp nguyên mẫu phần mềm để tao nguyên mẫu cuối Hình 1.4: Tổng quan phương pháp phát triển phần mềm hướng miền 1.3.1 Phát triển mô hình miền khái niệm Đây mơ hình miền mức cao, sử dụng làm điểm khởi đầu cho q trình phát triển Mơ hình sử dụng để định nghĩa vòng lặp phát triển, hiệu suất phát triển làm phóng phú thêm mơ hình miền với tính chi tiết Mơ hình miền mức cao bảo gồm lớp miền lõi (có cấu trúc khơng hồn thiện) liên kết ban đầu lớp miền Các lớp miền liên kết xác định từ yêu cầu chức phần mềm Các u cầu thường mơ tả dạng ca sử dụng Về nguyên tắc, chức xác định từ tập lớp miền liên quan mơ hình gọi mơ hình Hình 1.4 mô tả yêu cầu chức sử dụng mô hình ca sử dụng Mỗi ca sử dụng kết nối tới mơ hình mơ hình miền Ranh giới mơ hình biểu diễn hình ơ-van có chứa nhiều lớp miền với liên kiết chúng (nếu có) Ví dụ, ca sử dụng F1 kết nối đến mơ hình chứa hai lớp miền (tên Cz Cw) với kết nối chúng Các mô hình hai chức chồng lên lớp miền chia sẻ và/hoặc liên kết hai lớp miền hai mơ hình Thông qua điểm chồng lẫn mà mô hình kết hợp để tạo thành tồn mơ hình miền Ví dụ, hình 1.4 cho thấy cách mơ F1 chồng lên mơt hình khác chứa hai lớp Cz Cx thông qua lớp Cz, mơ hình lại chồng lên mơ hình khác chứa lớp Cy thơng qua kết nối Cx Cy 1.3.2 Định nghĩa vịng lặp phát triển Khi mơ hình miền mức cao tạo, pha định nghĩa vòng lặp Cùng với nhau, vòng lặp xây dựng kết phát triển cho phần mềm Ý tưởng định nghĩa vịng lặp theo ranh giới mơ hình Đầu vòng lặp nguyên mẫu phần mềm cho mơ hình Một mơ hình mơ hình định nghĩa cho chức pha trước mơ hình nhỏ mơ hình Kích thước xác mơ hình phụ thuộc tài ngun phát triển (quan trọng nguồn tài nguyên người) sẵn có cho dự án Mỗi vịng lặp liên quan đến việc thực bốn hoạt động quy trình phát triển phần mềm điển hình phân tích, thiết kế, lập trình kiểm thử Sự khác biệt dây thực hoạt động để phát triển nguyên mẫu phần mềm cho mơ hình khơng phải tồn mơ hình miền Về mặt khái niệm, vịng lặp phát triển hình thành chu trình phát triển liên tục Hình 1.4 minh họa chu trình phát triển đường cong bên ngồi có mũi tên qua kết nối bốn hoạt động phát triển phần mềm 1.3.3 Thực vòng lặp phát triển Mỗi vòng lặp phát triển thực việc phân tích, thiết kế, lập trình kiểm thử để tạo ngun mẫu phần mềm mơ hình Thơng qua vịng lặp này, mơ hình trở nên phong phú với tính chi tiết bao gồm lớp miền mới, thuộc tính phương thức Thực tế vòng lặp thực lặp lặp lại mơ hình phần mềm (mơ hình chức mơ hình miền) cách đóng gói chu trình phát triển bao hàm mơ hình ca sử dụng mơ hình miền Tính chu trình phát triển DDSDM chỗ vòng lặp phát triển tổ chức để thực song song mơ hình CHƯƠNG XÂY DỰNG ELCIPSE PLUGIN CHO PHẦN MỀM HƯỚNG MIỀN 2.1 Giới thiệu chương Đầu tiên, yêu cầu xây dựng Plug-in mô tả, bao gồm yêu cầu đầu vào u cầu đầu Tiếp đến, mơ hình thiết kế Eclipse Plugin cho phần mềm hướng miền trình bày: từ mơ hình thiết kế UML đến thuật tốn sử dụng cho plug-in Có thuật tốn sử dụng: thuật toán tự động sinh phương thức Bspace, thuật tốn sinh cấu hình mơđun phần mềm MCC thuật tốn sinh cấu hình phần mềm SWC Cuối chi tiết bước thực cài đặt plug-in 2.2 Mơ tả u cầu cho Plug-in 2.3 Mơ hình thiết kế Eclipse Plugin cho phần mềm hướng miền 2.3.1 Mơ hình thiết kế UML cho Eclipse Plugin Class Diagram, Sequence Diagram, Statechart, Deployment Diagram, Component Diagram 2.3.2 Thuật toán sinh phương thức, Thuật tốn sinh mơ-đun phần mềm 2.3.3 Thuật tốn sinh cấu hình phần mềm SWC Input: c1,…cN: Module Configuration Classes (MCCs), m: ModuleMain.class, p: project name, i: iterator number Output: s: Softwaare Configuration Class let ns= “SWC” + i let s = Class (visibility = “public”, name = ns ) let dm = modules(c1,c2…,cN, m) let da = appName(p) let dlo = screenLogo(p + “logo.png” ) let dla =Language(Language.English) let = OrgDesc(name = “”, address = “”, logo = “”, url = “”) let dd = DSDesc(type = “postgresql”, dsUrl = “”, user = “”, password = “”, dsmType = DSM.class, domType = DOM.class, omsType = postgreSQL.class, connType = ConnectionType.client let dsp = SysSetUpDesc( setUpConfigType = setUpConfig.class) let dsc = SecurityDesc( isEnable = false) let ds = SystemDesc(s) : appName = da , screenLogo = dlo , language = dla , orgDesc = , dsDesc = dd , setUpDesc = dsp , securityDesc = dsc 2.4 Thiết kế chi tiết Plugin Các bước thực xây dựng plug-in sau: Hình 2.4: Các bước xây dựng Plug-in Bước 1: Tạo dự án plug-in Vào File > New > Other > Plug-in Development > Plug-in Project để tạo plug-in Tên dự án “DomainAppEclipsePlugin” nhấn Next Cuối cùng, nhấn Finish, dự án tạo sử dụng Template chọn Đối với mẫu “Hello, World Command”, eclipse mặc định import bốn plug-in khác yêu cầu cho Template mặc định tạo package có tên theo cú pháp “ID + handlers” Giao diện dự án sau: Hình 2.7: Màn hình dự án Plug-in tạo Bước 2: Thêm vào thư viện cần thiết cho plug-in   Tạo thư mục /lib import thư viện jar : dcsl.jar, mccl.jar, swcl.jar domainapp.jar javaparser-core-3.2.5.jar Khai báo thư viện tệp META-INF/MANIFEST.MF: Manifest-Version: 1.0 Bundle-ManifestVersion: Bundle-Name: MCCsGenerator Bundle-SymbolicName: DomainAppEclipsePlugin;singleton:=true Bundle-Version: 1.0.0.qualifier Require-Bundle: org.eclipse.ui, org.eclipse.jdt.core;bundle-version="3.13.50", org.eclipse.core.runtime;bundle-version="3.13.0", org.eclipse.core.resources;bundle-version="3.12.0", org.eclipse.core.expressions;bundle-version="3.6.0", org.eclipse.e4.core.di.annotations;bundle-version="1.6.0", org.eclipse.e4.core.services;bundle-version="2.1.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ClassPath: , lib/domainapp.jar, lib/javaparser-core-3.2.5.jar, lib/dcsl.jar, lib/mccl.jar, lib/swcl.jar Bước 3: Tạo ba lớp handlers tương ứng với ba item Context Menu “Source” Plug-in bổ sung ba item cho Menu “Source” là:    Generate Bspace: Khi người dùng chọn lớp miền > chuột phải nhấn Source > Generate Bspace Handler “GenerateBspace” sinh phương thức cho lớp miền chọn Generate MCC: Khi người dùng chọn lớp miền > chuột phải nhấn Source > Generate MCC Handler “GenerateMCC” sinh cấu hình mơ-đun phần mềm chứa lớp miền chọn Generate SWC: Khi người dùng chọn mơ đun cấu hình phần mềm > chuột phải nhấn Source > Generate SWC Handler “GenerateSWC” sinh cấu hình phần mềm chứa mơ đun cấu hình phần mềm chọn Ba lớp handers “GenerateBspace”, “GenerateMCC” “GenerateSWC” có cấu tạo tương tự nhau, khác gọi đến thư viện khác sinh tệp đâu Mã nguồn handlers “GenerateBspace” sau: public class GenerateBSpace extends AbstractHandler{ private String rootSrcPath=""; @Override public Object execute(ExecutionEvent event) { Shell shell = HandlerUtil.getActiveShell(event); IStructuredSelection selections = HandlerUtil.getCurrentStructuredSelection(event); ICompilationUnit firstCu = (ICompilationUnit) selections.getFirstElement(); Iterator selectedElements = selections.iterator(); Object selectedElement; while (selectedElements.hasNext()) { selectedElement= selectedElements.next(); generateBSpaces(shell, selectedElement); } try { firstCu.getJavaProject().getProject() refreshLocal(IResource.FOLDER, null); } catch (CoreException e) { e.printStackTrace(); } MessageDialog.openInformation(shell, "Info", "Finish !!!"); return null; } private void generateBSpaces(Shell shell, Object firstElement) { ICompilationUnit cu = (ICompilationUnit) firstElement; String[] domainClsNameStr = new String[]{cu.getElementName().split("\\.")[0]}; try { String pkgName = cu.getPackageDeclarations()[0].getElementName(); BSpaceGenTool bSpaceGenTool = new BSpaceGenTool(rootSrcPath, pkgName, domainClsNameStr) ; bSpaceGenTool.exec(); } catch (JavaModelException e) { e.printStackTrace(); } } Khi người dùng nhấn vào “Generate Bspace”, phương thức execute handler kích hoạt Đầu tiên, lớp HandlerUtil xác định lớp lựa chọn (chính lớp miền) cho kiện nhấn chuột vừa xảy Sau đó, vịng lặp sinh phương thức gọi đến hàm generateBSpaces cho lớp miền thực Hàm “generateBSpaces” đọc đường dẫn đến lớp miền sử dụng thư viện dcsl.jar để thực thi sinh phương thức cho lớp miền Các handler lại xây dựng cách tương tự Bước 4:Tạo điểm mở rộng plug-in.xml Mở tệp plug-in.xml > chọn tab Extensions > thị mặc định bốn điểm mở rộng cần thiết lập : Hình 2.7: Màn hình Extensions  Tạo command: Chọn org.eclipse.ui.commands > chuột phải chọn New > Generic > Sửa thơng tin: catagoryId, id, name Hình 2.8: Màn hình tạo command  Khai báo lớp hander: Chọn org.eclipse.ui.handlers > chuột phải chọn New > Generic > Sửa thơng tin: class,commandId Trong đó, thuốc tính class phải trỏ đến lớp handler tạo bước cịn commandId trỏ đến command tương ứng org.eclipse.ui.commands  Tạo bindings: Chọn org.eclipse.ui.bindings > chuột phải chọn New > Generic > Sửa thông tin: commandId, contextId sequence Trong đó, commandId khai báo với command tương ứng org.eclipse.ui.commands; contextId thể loại component sử dụng (context menu, menu, button,…), component có id mặc định khác tra cứu hướng dẫn PDE; cuối sequence hiển thị phím tắt cho component tạo Hình 2.10: Màn hình khai báo bindings  Thiết lập vị trí cho component mới: Chọn org.eclipse.ui.menu > chuột phải chọn New > Generic > Sửa thông tin locationURI “popup:org.eclipse.jdt.ui.source.menu?after=DPSeparator”: thêm thành phần vào contextmenu “Source” sau dòng ngăn cách Tiếp tục, nhấn chuột vào “popup:org.eclipse.jdt.ui.source.menu?after=DPSeparator” vừa tạo > > chuột phải chọn New > Generic > Sửa thơng tin: commandId, id, label Trong đó, commandId đến command tương ứng tạo org.eclipse.ui.commands label hiển thị tên item Hình 2.11: Màn hình khai báo vị trí item menu Bước 5: Chạy dự án Chọn dự án PDE tạo > chuột phải nhấn Run As > Eclipse Plugin 2.5 Tổng kết chương Chương mô tả chi tiết bước thực xây dựng plug-in từ thuật tốn sử dụng, mơ hình thiết kế plug-in cài đặt mã nguồn Plug-in tạo đáp ứng yêu cầu đầu vào, hứa hẹn giúp cho công cụ hỗ trợ phát triển phần mềm hướng miền nhóm tác giả [7] sử dụng rộng rãi Ở chương tiếp theo, plug-in cài đặt chạy thử nghiệm ví dụ thực nghiệm Từ đó, đánh giá điểm hạn chế đề xuất hướng phát triển CHƯƠNG CÀI ĐẶT VÀ THỰC NGHIỆM 3.1 Giới thiệu chương Tính thực tiễn hiệu plug-in đánh giá thơng qua việc sử dụng ví dụ phần mềm thực tế Cụ thể, mội dung chương bao gồm đưa mơ hình miền điển hình phần mềm thực tế để vận dụng plug-in vào việc sinh cấu hình phần mềm, kết thu phần mềm tự động sinh theo cấu hình phần mềm 3.2 Mơi trường cài đặt Plug-in tương thích với Java phiên 1.8 Eclipse phiên Oxygen.1a Release 4.7.1a 3.3 Bài toán quản lý khóa học CourseMan ví dụ điển hình sử dụng xuyên suốt để minh họa phương pháp thiết kế phần mềm hướng miền DDSDM ứng dụng công cụ DomainAppTool Trước đây, phần mềm tự động sinh nhờ việc thực loạt dịng lệnh command-line, gây khó khăn cho người dùng việc sử dụng công cụ DomainAppTool để thiết kế mô hình miền hồn chỉnh Trong chương này, luận văn xin sử dụng CourseMan làm ví dụ thực nghiệm nhờ có plug-in, việc tạo CourseMan trở nên dễ dàng Áp dụng phương pháp phát triển phần mềm hướng miền DDSDM để xây dựng phần mềm CourseMan: Phát triển mơ hình miền khái niệm Hình 3.2: Mơ hình miền khái niệm mơ hình CourseMan Bên phải hình 3.2 mơ hình miền khái niệm CourseMan Mơ hình tạo nên năm mơ hình Các mơ hình biểu diễn hình ơ-van điền đầy kết nối tới ca sử dụng phía bên trái Hai mơ hình chứa lớp miền Student Module tương ứng, mơ hình thứ ba chưa hai lớp miền Student, Module liên kết chúng Liên kết đại diện cho đăng ký sinh viên vào môn học Định nghĩa vịng lặp phát triển CourseMan có năm ca sử dụng tương ứng năm vòng lặp phát triển là: STT Ca sử dụng Các mơ hình Manage students Student Manage course modules CourseModule Manage enrollments Student, CourseModule Manage student classes SClass, Student Manage student-by-name StudentByNameReport, Student reports Thực vòng lặp phát triển Các hoạt động thực vòng lặp thứ : Hoạt động Mơ tả Kết Phân tích Phân tích ca sử dụng Mơ hình với hai lớp miền “Manage students” để Student Address phát lớp tên Address, đại diện cho địa Student Thiết kế Áp dụng quy luật thiết Một mơ hình thiết kế kế để thiết kế lớp miền thiết kế chi tiết Student Address Lập trình  Tự động sinh  Mã nguồn hoàn chỉnh phương thức cho lớp lớp miền Student miền Student Address sử dụng BspaceGen Address: đầy đủ thuộc tính phương thức  Tự động sinh cấu hình  Mã nguồn cho cấu hình mơ-đun phần mềm từ mơ-đun phần mềm lớp miền sử dụng ModuleStudent MCC ModuleAddress  Tự động sinh cấu hình  Mã nguồn cấu hình phần mềm từ mô-đun nguyên mẫu phần mềm ModuleMain cho vịng lặp thứ bao mơ-đun vừa sinh sử gồm ModuleMain, dụng SWC ModuleStudent ModuleAddress Kiểm thử  Sử dụng thư viện  Kiểm tra bảng liệu cho công cụ lớp bao gồm: testDomainAppTool với case, kết mong đợi cấu hình phần mềm kết quản thực tế sinh để tạo nguyên mẫu phần mềm Thực cách tương tự cho vòng lặp sau để thu nguyên mẫu phần mềm Tích hợp nguyên mẫu phần mềm Mặc dù mơ hình vịng lặp liên quan đến tập khác lớp miền lớp miền với tạo thành mã nguồn chung mơ hình miền CourseMan Khi làm việc lớp miền vịng lặp khác lớp miền cần nhận yêu cầu lần lặp Giả lần lặp không xung đột với xung đột giải mơ hình miền hoàn chỉnh CourseMan xây dựng Tuy nhiên phạm vi mình, luận văn tập trung vào việc xây dựng thuật toán tự động sinh cấu hình phần mềm cho vịng lặp phát triển cài đặt thuật tốn thành phần mở rộng EclipsePlugin Phần sau mô tả chi tiết bước thực sinh nguyên mẫu phần mềm CourseMan sử dụng plug-in đánh giá kết đạt 3.4 Kết thực nghiệm Bước 1: Chuẩn bị đầu vào Đầu vào thực nghiệm mơ hình miền CourseMan lớp ModuleMain Mơ hình miền mơ hình miền chưa hồn chỉnh, thơng qua việc thực vịng lặp phát triển, mơ hình miền làm phong phú hoàn thiện Bước 2: Sinh phương thức cho lớp miền nhờ BspaceGen Các phương thức lớp miền sinh cách thực hiện: Chọn lớp miền > chuột phải, chọn Source > chọn Generate BSpace Hình 3.4: Giao diện menu sinh phương thức cho lớp miền Bước 3: Sinh tập cấu hình mơ-đun phần mềm, xây dựng từ mơ hình lớp miền Cách thực hiện: chọn lớp miền sinh từ bước > chuột phải, chọn Source > chọn Generate MCC : Hình 3.5: Giao diện menu sinh cấu hình mơ-đun phần mềm Bước 4: Sinh tập cấu hình phần mềm từ tập cấu hình mơ-đun phần mềm Cách thực hiện: chọn ModuleMain cấu hình mô-đun phần mềm sinh từ bước > chuột phải, chọn Source > chọn Generate SWC Hình 3.7: Giao diện menu sinh cấu hình phần mềm Bước 5: Sinh phần mềm từ tập cấu hình phần mềm Chạy chương trình: chuột phải CourseMan > Run As > Run Configurations Màn hình Run Configurations > chọn cấu hình CourseMan vừa tạo > cuối chọn Run Giao diện phần mềm CourseMan sinh sau: Hình 3.11: Giao diện phần mềm CourseMan 3.5 Tổng kết chương Kết thực nghiệm chứng minh công cụ plug-in giúp cho việc phát triển phần mềm hướng miền trở nên dễ dàng Các vòng lặp phát triển thực đơn giản thơng qua nhấn chuột thay thực loạt lệnh command line Tuy nhiên, hệ thống cịn ba hạn chế chính: phần mềm thêm dừng lại chức thêm, sửa, xóa; hai việc thay đổi cấu hình mơ-đun phần mềm phải thực thủ công cách thay đổi trực tiếp mã nguồn mà số lượng thuộc tính nhiều, gây khơng khó khăn cho nhà phát triển; ba chưa có phương pháp kiểm tra tính đắn lớp miền, cấu hinh mô-đun phần mềm cấu hình phần mềm (hiện tại, chủ yếu thực kiểm thử phần mềm sinh có lỗi khơng) KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Trong phát triển phần mềm, phương phát tiếp cận phát triển hướng miền sử dụng cho nhu cầu phức tạp, kết nối cài đặt với mơ hình phát triển khái niệm nghiệp vụ DDD bao gồm ngôn ngữ chung, kỹ thuật mơ kiến trúc; tập trung vào mơ hình hóa vấn đề cần giải Với DDD, nhà phát triển có kỹ thuật giúp tối thiểu hóa phức tạp thúc đẩy cộng tác với chuyên gia miền Với ưu điểm vượt trội mình, DDD thực phương pháp phát triển phần mềm đại hữu ích Cơng cụ hỗ trợ phát triển phần mềm hướng miền thiết kế dựa nguyên tắc DDD, giúp tự động sinh phần mềm từ mơ hình lớp miền Nhờ đó, mà người dùng cần tập trung vào miền vấn đề mơ hình miền, tồn phần mềm (bao gồm giao diện lữu trữ đối tượng) sinh cách tự động Từ đó, nâng cao hiệu xuất sản xuất phần mềm Mặc dù, chức phần mềm tạo công cụ, cịn đơn giản cơng cụ giúp cho thiết kế hướng miền DDD lại gần với nhà phát triển phần mềm Một hạn chế cơng cụ khơng có giao diện trực quan, dẫn đến khó khăn cho người dùng tốn nhiều thời gian trình sử dụng Luận văn giải hạn chế việc xây dựng ứng dụng Eclipse plug-in Về mặt lý thuyết, ứng dụng xây dựng từ ba thuật toán thuật toán sinh phướng thức cho phần mềm, thuật tốn sinh cấu hình mơ-đun phần mềm cuối thuật tốn sinh cấu hình phần mềm phát triển Ứng dụng phần Eclipse tích hợp trực tiếp vào Eclipse Qua đó, người dùng sử dụng cơng cụ tải cài đặt vào Eclipse để sử dụng Điều có ý nghĩa quan trọng giúp cho công cụ hỗ trợ phát triển phần mềm hướng miền sử dụng rộng rãi Tuy nhiên, luận văn dừng lại việc xây dựng ứng dụng Eclipse plug-in giúp trực quan hóa việc sử dụng cơng cụ hỗ trợ phát triển phần mềm hướng miền Khi miền vấn đề lớn lên, mơ hình miền trở nên phức tạp hơn, biết mơ hình miền sinh cơng cụ Vì vậy, hướng phát triển luận văn xây dựng phương pháp kiểm tra tính đắn mơ hình miền Hy vọng, thời gian tới, tơi phát triển hoàn thiện nội dung TÀI LIỆU THAM KHẢO Tiếng Việt 1 Septeni Technology, 2015, “Domain-Driven Design Quickly tiếng Việt” dịch từ Abel Avram & Floyd Marinescu, (2006), “Domain-Driven Design Quickly” Tiếng Anh Eric Evans, (2013), “Domain-Driven Design: Tackling Complexity in the Heart of Software”, pp.4-99 Alex Blewitt, (2014), “Mastering Eclipse Plug-in Development”, pp 7-77 Eclipse, (2018), “https://help.eclipse.org/photon/index.jsp”, last visit was on 12/11/2018 K Czarnecki, (2004),“Overview of Generative Software Development,” in Unconventional Programming Paradigms 2004, no 3566, pp 326–341 M Fowler et al., (2010), “Domain-specific languages”, pp J Gosling et al., (2014), “The Java Language Specification, Java SE Edition” Duc Minh Le, Duc-Hanh Dang (2017), “DomainAppTool: A Domain-Driven Software Development Tool”, Hanoi University Duc Minh Le, Duc-Hanh Dang, Viet-Ha Nguyen (2018), “On Domain Driven Design Using Annotation-Based Domain Specific Language”, 10 Duc Minh Le, Duc-Hanh Dang, Viet-Ha Nguyen (2017), “Generative Software Module Development: A Domain-Driven Design Perspective”, in KSE 2017, pp.85-90 11 B.Liskov and J.Guttag, 2000, “Program development in Java: abstraction, specification, and object-oriented design”, Pearson Education ... tơi xin chọn đề tài ? ?Nghiên cứu cài đặt công cụ tảng Eclipse để hỗ trợ phát triển ứng dụng Java? ?? Mục tiêu luận văn tạo gói mở rộng plug-in cài cơng cụ hỗ trợ lập trình Eclipse cho DomainAppTool... phát triển Ứng dụng phần Eclipse tích hợp trực tiếp vào Eclipse Qua đó, người dùng sử dụng cơng cụ tải cài đặt vào Eclipse để sử dụng Điều có ý nghĩa quan trọng giúp cho công cụ hỗ trợ phát triển. .. phần mở rộng Eclipse Plug-in Eclipse công cụ hỗ trợ lập trình, mã nguồn mở, phát triển IBM Eclipse tảng thiết kế để xây dựng công cụ phát triển ứng dụng vào web Theo thiết kế, thân tảng không cung

Ngày đăng: 26/04/2021, 01:01

Tài liệu cùng người dùng

Tài liệu liên quan