1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tự động hóa xây dựng giao diện người dùng dựa trên thiết kế chi tiết

67 11 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 67
Dung lượng 2,19 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong luận văn này đưa ra giải pháp hỗ trợ người dùng mô tả các sự kiện trên giao diện một cách tự động bằng việc đặc tả luồng hoạt động của giao diện trên sơ đồ hoạt động.. Đa số các mô

Trang 1

ĐẠI HỌC QUỐC GIA TP HCM

TRƯỜNG ĐẠI HỌC BÁCH KHOA

-

NGUYỄN KHẮC TRUNG

TỰ ĐỘNG HÓA XÂY DỰNG GIAO DIỆN NGƯỜI

DÙNG DỰA TRÊN THIẾT KẾ CHI TIẾT

Ngành : KHOA HỌC MÁY TÍNH

Mã số: 60.48.01

LUẬN VĂN THẠC SĨ

TP HỒ CHÍ MINH, tháng 11 năm 2017

Trang 2

CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA –ĐHQG -HCM

Cán bộ hướng dẫn khoa học : TS Lê Lam Sơn

(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Cán bộ chấm nhận xét 1 : TS Trần Tuấn Anh

(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Cán bộ chấm nhận xét 2 : TS Nguyễn Văn Vũ

(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày 28 tháng 12 năm 2017

Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: (Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ) 1 PGS.TS Phạm Trần Vũ

2 TS Trương Tuấn Anh

3 TS Trần Tuấn Anh

4 TS Nguyễn Văn Vũ

5 PGS.TS Trần Minh Triết

Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có)

CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOAKH&KTMT

Trang 3

ĐẠI HỌC QUỐC GIA TP.HCM

TRƯỜNG ĐẠI HỌC BÁCH KHOA

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆTNAM

Độc lập - Tự do - Hạnh phúc

NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: Nguyễn Khắc Trung MSHV: 7140839

Ngày, tháng, năm sinh: 27/12/1989 Nơi sinh: Dak Lak

Ngành: Khoa Học Máy Tính Mã số : 60.48.01

I TÊN ĐỀ TÀI: Tự động hóa xây dựng giao diện người dùng dựa trên thiết kế chi tiết

II NHIỆM VỤ VÀ NỘI DUNG: Đề tài tập trung nghiên cứu mô tả các mẫu sự kiện trên giao diện người dùng, xây dựng công cụ sinh mã nguồn Java cho giao diện người dùng trên các ứng dụng Desktop dựa trên kết quả đã nghiên cứu

III NGÀY GIAO NHIỆM VỤ : 10/07/2017

IV NGÀY HOÀN THÀNH NHIỆM VỤ: 03/12/2017

V CÁN BỘ HƯỚNG DẪN (Ghi rõ học hàm, học vị, họ, tên): TS Lê Lam Sơn

Tp HCM, ngày tháng năm 20

CÁN BỘ HƯỚNG DẪN

(Họ tên và chữ ký)

TRƯỞNG KHOA KH & KTMT

(Họ tên và chữ ký)

Trang 4

LỜI CẢM ƠN

Trước tiên tôi xin gửi lời cảm ơn sâu sắc tới thầy TS Lê Lam Sơn, Bộ môn Công nghệ phần mềm, khoa Khoa học và kỹ thuật máy tính, trường Đại học Bách Khoa Tp.HCM - người đã định hướng đề tài và tận tình hướng dẫn chỉ bảo tôi trong suốt quá trình thực hiện luận văn này

Tôi cũng xin chân thành cảm ơn thầy cô trong Khoa Khoa học và kỹ thuật máy tính đã tận tình giảng dạy và truyền đạt kiến thức quý báu trong suốt quá trình học tập tại Đại học Bách Khoa Tp.HCM

Trong quá trình thực hiện đề tài luận văn mặc dù rất nỗ lực, cố gắng song chắc chắn vẫn còn nhiều thiếu sót Tôi rất mong nhận được nhiều ý kiến đánh giá, phê bình của quý thầy cô, các anh chị và các bạn

Một lần nữa tôi xin chân thành cảm ơn

TP Hồ Chí Minh, tháng 11 năm 2017

Nguyễn Khắc Trung

Trang 5

TÓM TẮT LUẬN VĂN THẠC SỸ

Quy trình phát triển phần mềm bao gồm: nhận yêu cầu, phân tích, thiết kế, xây dựng, kiểm tra, khai thác và bảo trì phần mềm Trong đó giao diện người dùng đóng vai trò phi chức năng (tính thân thiện và tính khả dụng) của phần mềm Hệ thống phần mềm đòi hỏi tính tương tác cao, công sức và thời gian bỏ ra cho việc thiết kế và hiện thực giao diện người dùng chiếm một phần khá lớn của dự án

Do đó tự động hóa xây dựng giao diện người dùng trở thành nhu cầu tất yếu Trong luận văn này đưa ra giải pháp hỗ trợ người dùng mô tả các sự kiện trên giao diện một cách tự động bằng việc đặc tả luồng hoạt động của giao diện trên sơ đồ hoạt động Luận văn tập trung mô tả các mẫu sự kiện trên sơ đồ hoạt động sau:

• Mẫu sự kiện Close

• Mẫu sự kiện Submit

• Mẫu sự kiện Ajax

Đồng thời xây dựng công cụ sinh mã nguồn Java cho giao diện người dùng trên các ứng dụng Desktop dựa trên kết quả đã nghiên cứu

The development process includes as follows: requirement gathering, analyzing, designing, coding, testing, implementation and maintaining the software The graphical user interface plays the non-functional role (friendly and usability) of software Software systems require high interactivity that cost highly effort and time spent on designing and implementing graphical user interface of the project Generating graphical user interface source code becomes necessary The thesis gives a solution to build events automatically by describe the workflow of graphical user interface in Activity diagram The thesis focuses on build event pattern in Activity diagram

• The Close event pattern

• The Submit event pattern

• The Ajax event pattern

The thesis also build a tool which help to generate Java source code for graphical user interface applied for Desktop application based on the research results

Trang 6

LỜI CAM ĐOAN

Tôi xin cam đoan mọi kết quả của đề tài: “Tự động hóa xây dựng giao diện người

dùng dựa trên thiết kế chi tiết” là công trình nghiên cứu của cá nhân tôi và chưa

từng được công bố trong bất cứ công trình khoa học nào khác cho tới thời điểm này Tất cả tham khảo và kế thừa đều được trích dẫn và tham chiếu đầy đủ

TP Hồ Chí Minh, tháng 11 năm 2017

Nguyễn Khắc Trung

Trang 7

MỤC LỤC

CHƯƠNG 1: MỞ ĐẦU 1

1.1 Lý do chọn đề tài 1

1.2 Mục tiêu của đề tài 1

1.3 Đối tượng nghiên cứu 2

1.4 Phạm vi nghiên cứu 2

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 3

2.1 Ngôn ngữ mô hình hóa UML 3

2.2 Ngôn ngữ đánh dấu mở rộng (Extensible Markup Language) 7

2.3 Giao thức trao đổi dữ liệu trên XML (XML Metadata Interchange) 9

2.4 Thư viện ghi mã nguồn Java Poet 15

2.5 Gói thư viện Swing trong Java 19

CHƯƠNG 3: CÁC CÔNG TRÌNH NGHIÊN CỨU LIÊN QUAN 20

3.1 Bộ khung Automa 20

3.2 Bộ khung OpenXava 23

3.3 Bài nghiên cứu khoa học 25

CHƯƠNG 4: PHƯƠNG PHÁP NGHIÊN CỨU 27

4.1 Luật chuyển đổi sơ đồ lớp sang các đối tượng giao diện 27

4.2 Mô tả các mẫu sự kiện trên sơ đồ hoạt động 30

4.3 Giải thuật tìm kiếm mẫu sự kiện trên sơ đồ hoạt động 37

CHƯƠNG 5: THỰC NGHIỆM 42

5.1 Mô tả bài toán áp dụng 42

5.2 Mô hình lớp của bài toán 43

5.3 Mô hình hoạt động của bài toán 47

5.4 Kết quả 51

CHƯƠNG 6: KẾT LUẬN 59

DANH MỤC TÀI LIỆU THAM KHẢO 60

Trang 8

CHƯƠNG 1: MỞ ĐẦU

1.1 Lý do chọn đề tài

Hiện nay với sự phát triển như vũ bão của công nghệ thông tin tạo ra diện mạo mới cho xã hội hiện đại và được ứng dụng vào tất cả lĩnh vực đời sống xã hội Công nghệ phần mềm là phần không thể thiếu và tách rời khỏi công nghệ thông tin Phần mềm được xem như sản phẩm của ngành công nghệ phần mềm được phát triển theo quy trình theo các mô hình hiện đại

Quy trình phát triển phần mềm bao gồm: nhận yêu cầu, phân tích, thiết kế, xây dựng, kiểm tra, khai thác và bảo trì phần mềm Trong đó giao diện người dùng đóng vai trò phi chức năng (tính thân thiện và tính khả dụng) của phần mềm Hệ thống phần mềm đòi hỏi tính tương tác cao, công sức và thời gian bỏ ra cho việc thiết kế và hiện thực giao diện người dùng chiếm một phần khá lớn của dự án

Đa số các môi trường phát triển ứng dụng (IDE) như Eclipse, NetBean có đi kèm các hỗ trợ cho việc xây dựng giao diện người dùng trực quan nhưng không có tính tự động hóa Người dùng vẫn phải gõ vào từng đối tượng và thao tác trên các đối tượng này khi xử lý kiện trên giao diện

Do đó tự động hóa xây dựng giao diện người dùng trở thành một nhu cầu tất yếu, giúp giảm thời gian và công sức phát triển đồng thời đưa ra cái nhìn tổng quan hệ thống

Một số nghiên cứu liên quan đến tự động hóa xây dựng giao diện như: Automa [6] định nghĩa ra ngôn ngữ thao tác các đối tượng giao diện người dùng trên window, OpenXava [7] là một bộ khung tự động xây dựng các ứng dụng web ở dạng quản lý (quản lý môn học, quản lý đăng ký môn học) dựa trên các đối tượng nghiệp vụ, bài nghiên cứu khoa học [1] là một hướng tiếp cận xây dựng giao diện người dùng bán tự động từ thiết kế chi tiết (sơ đồ lớp)

1.2 Mục tiêu của đề tài

Trong bài nghiên cứu khoa học [1] đã xây dựng được giao diện giao diện người dùng từ sơ đồ lớp (Class diagram) Tuy nhiên kết quả mới dừng ở mức bán tự động, chưa hỗ trợ xử lý các sự kiện trên giao diện

Trang 9

Đề tài luận văn này là sự phát triển của bài nghiên cứu khoa học [1] nghiên cứu

mô tả các mẫu sự kiện trên sơ đồ hoạt động (Activity diagram) để giải quyết những hạn chế trên

Như vậy mục tiêu của đề tài luận văn là tập trung nghiên cứu, xây dựng hệ thống sinh mã nguồn cho giao diện người dùng trên Java một cách tự động từ thiết

kế chi tiết (sơ đồ hoạt động, sơ đồ lớp)

1.3 Đối tượng nghiên cứu

Đối tượng nghiên cứu của luận văn là các sự kiện trên giao diện người dùng

1.4 Phạm vi nghiên cứu

Giao diện người dùng là các giao diện trên các ứng dụng Desktop

Mã nguồn được sinh tự động từ các thiết kế trong luận văn là ngôn ngữ Java

Trang 10

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1 Ngôn ngữ mô hình hóa UML

Giới thiệu sơ lược UML

UML [1] - Unified Modeling Language là ngôn ngữ mô hình thống nhất giúp

mô hình hóa các ứng dụng trên máy tính Các tác giả chính là Jim Rumbaugh, Ivar Jacobson, Grady Booch ngoài ra còn có các tập đoàn lớn khác bảo trợ phát triển UML sử dụng một hệ thống ký hiệu thống nhất để biểu diễn các phần tử mô hình Tập hợp các ký hiệu và phần tử mô hình tạo nên một mô hình UML Trong UML 2.0 có hai loại sơ đồ cơ sở: sơ đồ cấu trúc và sơ đồ hành vi

 Sơ đồ giao tiếp

 Sơ đồ máy trạng thái

 Sơ đồ hoạt động

 Sơ đồ bao quát tương tác

Mục đích của sơ đồ cấu trúc là để cho thấy cấu trúc tĩnh của hệ thống đang được mô hình hóa Sơ đồ hành vi cho biết các hành vi động giữa các đối tượng trong hệ thống

Trang 11

Trong đề tài luận văn này chỉ trình bày sơ đồ lớp và sơ đồ hoạt động được sử dụng làm đầu vào cho nghiên cứu

Sơ đồ lớp (Class diagram)

Sơ đồ lớp thuộc nhóm sơ đồ cấu trúc dùng để miêu tả các thực thể khác nhau (người, các chủ đề và dữ liệu) và mối quan hệ giữa chúng

Trong sơ đồ lớp thành phần chính là class Class mô tả về nhóm đối tượng có cùng tính chất hành động trong hệ thống Class gồm ba thành phần sau

 Phần trên cùng là tên lớp

 Phần giữa là các thuộc tính

 Phần dưới cùng là các phương thức của lớp

Một ví dụ lớp User được biểu diễn như sau :

Hình 2.1: Ví dụ một lớp User

Tên của lớp thường là 1 danh từ Ví dụ : User

Thuộc tính của lớp được biểu diễn dưới dạng

 Tên : Kiểu của thuộc tính

Ví dụ username : String, password : String

Phương thức của lớp được biểu diễn dưới dạng

 Tên (Tham số) : Kiểu giá trị trả về

Trang 12

Ví dụ getUsername() : String, setUsername(String username) : void

Trong sơ đồ lớp có 2 mối quan hệ chính

 Mối quan hệ thừa kế

 Mối quan hệ liên kết

Mối quan hệ thừa kế

Đối tượng cụ thể sẽ thừa kế các thuộc tính và phương thức của đối tượng tổng quát

Hình 2.2: Lớp B thừa kế lớp A

Mối quan hệ liên kết

Mối quan hệ liên kết là mối quan hệ ngữ nghĩa giữa hai hay nhiều lớp chỉ ra sự liên kết giữa các thể hiện của chúng Mối quan hệ về mặt cấu trúc chỉ các đối tượng của lớp này có kết nối với các đối tượng của lớp khác

Hình 2.3: Mối quan hệ liên kết

Bội số quan hệ là thể hiện của một lớp liên quan tới một thực thể của lớp khác Với mỗi liên kết có hai bội số quan hệ cho hai đầu của liên kết

Trang 13

Chỉ báo Ý nghĩa

Hình 2.4: Bảng bội số trong quan hệ liên kết

Sơ đồ hoạt động (Activity diagram)

Sơ đồ hoạt động thuộc nhóm sơ đồ hành vi dùng để mô hình hóa các hoạt động trong một quy trình nghiệp vụ

Các thành phần của sơ đồ hoạt động

Thành phần Ý nghĩa Ký hiệu

Điểm bắt đầu Trạng thái bắt đầu của

một sơ đồ hoạt động

Hoạt động Mô tả hành vi của đối

tượng trong quy trình

Dòng điều khiển Mô tả sự chuyển đổi

trạng thái của các hoạt động

Điều kiện Mô tả điều kiện kích

hoạt việc chuyển trạng thái

Thanh bar Mô tả các dòng điều

khiển thực hiện song song

Điểm kết thúc Trạng thái kết thúc của

một sơ đồ hoạt động

sơ đồ hoạt động Một

sơ đồ hoạt động gồm một hoặc nhiều luồng

Hình 2.5: Các thành phần trong activity diagram

Trang 14

2.2 Ngôn ngữ đánh dấu mở rộng (Extensible Markup Language)

Giới thiệu XML

Ngôn ngữ đánh dấu mở rộng (XML): là một ngôn ngữ tổng quát dùng văn bản

để mô tả thông tin trên cấu trúc cây Mọi thông tin đều được biểu diễn dưới dạng văn bản, các thẻ đánh dấu được sử dụng để phân chia thông tin cũng như thứ bậc của thông tin dữ liệu được mô tả

Mục đích chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ thống được kết nối với internet

Một số đặc trưng cơ bản của XML

 Cho phép tổ chức lưu trữ dữ liệu theo cấu trúc theo ngữ nghĩa dễ dàng giao tiếp hay trao đổi

 Cho phép người dùng định nghĩa các thẻ mới phù hợp với quy định về

cú pháp (linh động trong định nghĩa tag mà không bị bó buộc theo các thẻ quy định sẵn)

 Nội dung được lưu trữ trong tập tin có phần mở rộng là XML

Trang 15

o Tên thẻ không được bắt đầu bằng số hay ký tự đặc biệt

o Tên thẻ không được bắt đầu bằng chuỗi xml

o Tên thẻ có phân biệt chữ hoa, chữ thường

 Quan hệ lồng nhau giữa các thẻ có nội dung: nội dung bên trong thẻ

có nội dung có thể là các thẻ khác (có nội dung hoặc rỗng) Khi thẻ A

có nội dung là thẻ B ta gọi thẻ A là thẻ cha của B, thẻ B là thẻ con của

A

 Thẻ đánh dấu gốc: tài liệu xml phải có duy nhất (một và chỉ một) thẻ chứa (trực tiếp hay gián tiếp) tất cả các thẻ còn lại

Thuộc tính của thẻ

 Thuộc tính của thẻ có dạng: Ten_thuoc_tinh=”Gia_tri”

 Thẻ có thuộc tính: <Ten Ten_thuoc_tinh=”Gia_tri”>

Các ký tự đặc biệt

Trang 16

Để biểu diễn các ký tự đặc biệt: >, <, &, ‘, ” ta phải dùng chuỗi các ký tự như sau

2.3 Giao thức trao đổi dữ liệu trên XML (XML Metadata Interchange)

Giới thiệu XMI

Giao thức trao đổi dữ liệu trên XML (XMI) là giao thức cho phép trao đổi dữ liệu đặc tả giữa các công cụ mô hình hóa dựa trên UML

XMI được dùng rộng rãi trong định dạng trao đổi XML, XMI định nghĩa các vấn đề sau trong việc mô tả các đối tượng trong XML

 Biểu diễn các đối tượng dưới dạng các phần tử và các thuộc tính XML

 Các cơ chế chuẩn cho các đối tượng trong cùng một tập tin hay nhiều tập tin

 Truy xuất đối tượng XMI bằng cách sử dụng mô hình XML

 Xác định đối tượng, cho phép cac đối tượng được tham chiếu từ các đối tượng khác dưới dạng các định danh (identifier - ID)

XMI dựa trên tiêu chuẩn XML, XMI bao gồm 2 phần: DTD (Document Type Definition) và tài liệu XML

Trang 17

 DTD: mỗi XML có một DTD riêng tùy theo mục đích của người viết Xác định các phần tử có thể xuất hiện trong văn bản, thứ tự chúng xuất hiện, cách chúng được xắp xếp trong cái khác, và các chi tiết cơ bản trong cấu trúc văn bản XML

 Tài liệu XML: chứa thông tin các thẻ XML trong XMI

• Ánh xạ sơ đồ lớp thành cấu trúc XMI

Tìm hiểu cấu trúc sơ đồ lớp và XMI ở trên ta thấy sơ đồ lớp có cấu trúc tương

tự như XMI và có thể chuyển đổi qua lại lẫn nhau

XMI biểu diễn các thuộc tính trong sơ đồ lớp dưới dạng các thẻ Mỗi thẻ thể hiện các thuộc tính và các mối quan hệ có trong sơ đồ lớp

Việc ánh xạ sơ đồ lớp sang tài liệu XMI giúp cho quá trình đọc đầu vào của bài luận văn trở nên dễ phân tích và quản lý dữ liệu của các lớp dễ dàng hơn

• Ánh xạ lớp của sơ đồ lớp sang XMI

Lớp packagedElement trong UMI chịu trách nhiệm mô tả một lớp trong sơ đồ lớp Là một trong các thành phần quan trọng trong sơ đồ lớp

Một ví dụ của packagedElement như sau:

<packagedElement xmi:type="uml:Class" name="Login"

xmi:id="_Cv2a0KbFEeehA8zHjyhv9Q" > </packagedElement>

xmi:type = “uml:Class” mô tả đây là một lớp của sơ đồ lớp

xmi: id cho biết id của lớp

name cho biết tên của lớp

Ngoài ra thành phần xmi:id giúp ích cho việc tìm các mối quan hệ thừa kế, kết hợp lúc đọc các tài liệu XMI bằng cách so sánh các ID của lớp

• Ánh xạ quan hệ thừa kế của sơ đồ lớp sang XMI

Lớp generalization trong XMI chịu trách nhiệm mô tả mối quan hệ thừa kế trong sơ đồ lớp Generalization là mối quan hệ quan trọng không chỉ trong sơ đồ lớp mà trong ngôn ngữ hướng đối tượng

Một ví dụ generalization như sau:

<generalization xmi:type="uml:Generalization"

Trang 18

xmi:id="_aA8CEKbNe" general=" N8LkKbKEeehA8zHjyhv9Q" />

xmi:type=”uml:Generalization” mô tả đây là quan hệ thừa kế của sơ đồ lớp

xmi:id cho biết id của Generalization

general cho biết id của lớp được kế thừa

• Ánh xạ thuộc tính của sơ đồ lớp sang XMI

Lớp ownedAttribute trong XMI chịu trách nhiệm mô tả thuộc tính của một lớp trong sơ đồ lớp

Một ví dụ ownedAttribute như sau:

<ownedAttribute name="address" visibility="private"

xmi:type="uml:Property" xmi:id="_58icAKbNEeehA8zHjyhv9Q" />

xmi:type="uml:Property" mô tả đây là thuộc tính của một lớp

xmi:id cho biết id của thuộc tính

visibility cho biết tầm vực của thuộc tính trong lớp

name cho biết tên thuộc tính trong lớp

• Ánh xạ mối quan hệ liên kết của sơ đồ lớp sang XMI

Lớp packagedElement trong UMI chịu trách nhiệm mô tả một mối quan hệ liên kết trong sơ đồ lớp Lớp này gồm 2 thành phần con ownedEnd chứa thông tin 2 lớp liên kết với nhau

Ví dụ một mối quan hệ liên kết trong XMI như sau:

Trang 19

Mỗi association có 2 thẻ ownedEnd chứa thông tin của 2 lớp liên kết nhau

Ánh xạ sơ đồ hoạt động thành cấu trúc XMI

Tương tự như sơ đồ lớp, từ sơ đồ hoạt động ta cũng có thể ánh xạ sang tài liệu XMI giúp cho quá trình đọc đầu vào của bài luận văn trở nên dễ dàng hơn

• Ánh xạ điểm bắt đầu của sơ đồ hoạt động sang XMI

Lớp node trong XMI mô tả một điểm bắt đầu trong sơ đồ hoạt động

Ví dụ điểm bắt đầu của sơ đồ hoạt động trong XMI như sau

name tên của điểm bắt đầu

outgoing cho biết id của phần tử tiếp theo trong sơ đồ hoạt động

inPartition cho biết id của luồng chứa điểm bắt đầu trong sơ đồ hoạt động

• Ánh xạ điểm kết thúc của sơ đồ hoạt động sang XMI

Lớp node trong xmi mô tả một điểm kết thúc của sơ đồ hoạt động

Ví dụ điểm kết thúc của sơ đồ hoạt động trong XMI như sau

<node xmi:type="uml:ActivityFinalNode"

xmi:id="_M80h0KhJEee3AJFsgdGTyw" name="ActivityFinalNode2" incoming="_ROkD0KhJEee3AJFsgdGTyw"

inPartition="_22ED8Kd1Eee3soLXlFlJzA"/>

xmi:type=”uml:ActivityFinalNode” mô tả đây là điểm kết thúc của sơ đồ hoạt động

xmi:id cho biết id của điểm kết thúc

name tên của điểm kết thúc

incoming cho biết id của phần tử trước phần tử kết thúc trong sơ đồ hoạt động inPartition cho biết id của luồng chứa điểm bắt đầu trong sơ đồ hoạt động

Trang 20

• Ánh xạ phần tử hoạt động của sơ đồ hoạt động sang XMI

Lớp node trong XMI mô tả một phần tử hoạt động

Ví dụ phần tử hoạt động trong XMI như sau

xmi:id cho biết id của phần tử hoạt động

name tên của phần tử hoạt động

incoming cho biết id của phần tử trước phần tử hoạt động trong sơ đồ hoạt động

outgoing cho biết id của phần tử tiếp theo trong sơ đồ hoạt động

inPartition cho biết id của luồng chứa phần tử hoạt động trong sơ đồ hoạt động

• Ánh xạ dòng điều khiển của sơ đồ hoạt động sang XMI

Lớp edge trong XMI mô tả dòng điều khiển của sơ đồ hoạt động

Ví dụ dòng điều khiển trong XMI như sau

xmi:id cho biết id của dòng điều khiển

target cho biết id của phần tử tiếp theo của dòng điều khiển trong sơ đồ hoạt động

source cho biết id của phần tử trước đó của dòng điều khiển trong sơ đồ hoạt động

• Ánh xạ phần tử điều kiện của sơ đồ hoạt động sang XMI

Trang 21

Lớp node trong XMI mô tả phần tử điều kiện của sơ đồ hoạt động

Ví dụ dòng điều khiển trong XMI như sau

xmi:id cho biết id của phần tử điều kiện

name cho biết tên của phần tử điều kiện

incoming cho biết id của phần tử trước đó của phần tử điều kiện trong sơ đồ hoạt động

outgoing cho biết danh sách id của những phần tử tiếp theo (cách nhau bởi khoảng trắng) của phần tử điều kiện trong sơ đồ hoạt động

inPartition cho biết id của luồng chứa phần tử điều kiện trong sơ đồ hoạt động

• Ánh xạ luồng của sơ đồ hoạt động sang XMI

Lớp group trong XMI mô tả một luồng của sơ đồ hoạt động

Ví dụ luồng trong XMI như sau

name tên của luồng

node cho biết danh sách id của các phần tử được chứa bởi luồng này trong sơ đồ hoạt động

Trang 22

2.4 Thư viện ghi mã nguồn Java Poet

Java Poet [8] là thư viện hỗ trợ sinh các tập tin đuôi java Thư việc cung cấp những phương thức để tạo các thành phần cơ bản trong một tập tin java như: tạo thuộc tính, tạo phương thức, tạo phương thức khởi tạo,

TypeSpec là đối tượng dùng khai báo một lớp trong Java Poet

addModifiers là phương thức để thêm tầm vực của lớp được khai báo

addMethod là phương thức để thêm các phương thức vào lớp được khai báo

Khai báo phương thức

MethodSpec main = MethodSpec.methodBuilder("main")

addParameter chỉ định tham số của phương thức

addStatement ghi các dòng lệnh vào thân của phương thức

$T chỉ định dòng lệnh xem xét tham số của addStatement là kiểu đối tượng

$S chỉ định dòng lệnh xem xét tham số của addStatement là chuỗi

Ghi một tập tin Java

Trang 23

JavaFile javaFile = JavaFile.builder("com.example.helloworld", helloWorld) build();

Kết quả lớp HelloWorld với hai khai báo lớp và hàm main như sau

package com.example.helloworld;

public final class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello, JavaPoet!");

}

}

Khai báo thuộc tính

FieldSpec android = FieldSpec.builder(String.class, "android")

.addModifiers(Modifier.PRIVATE, Modifier.FINAL)

.build();

FieldSpec là đối tượng dùng khai báo một thuộc tính trong Java Poet

addModifiers là phương thức để thêm tầm vực của thuộc tính được khai báo Xét ví dụ sau

FieldSpec android = FieldSpec.builder(String.class, "android")

Trang 24

Lớp Java tương ứng là

public class HelloWorld {

private final String android;

private final String robot;

}

Khai báo phương thức khởi tạo

Phương thức khởi tạo được khai báo tương tự như phương thức

MethodSpec flux = MethodSpec.constructorBuilder()

addParameter chỉ định tham số của phương thức

addStatement ghi các dòng lệnh vào thân của phương thức

$N tham chiếu đến thành phần đã khởi tạo khác Có thể là biến, kiểu dữ liệu, Xét ví dụ sau

MethodSpec flux = MethodSpec.constructorBuilder()

Trang 25

public class HelloWorld {

private final String greeting;

public HelloWorld(String greeting) {

this.greeting = greeting;

}

}

Khai báo Interface

Interfaced được khai báo tương tự như lớp

TypeSpec helloWorld = TypeSpec.interfaceBuilder("HelloWorld")

.addModifiers(Modifier.PUBLIC)

.addField(FieldSpec.builder(String.class, "NO_THING_IS_CONSTANT") addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL) initializer("$S", "change")

Trang 26

Lớp Java tương ứng là

public interface HelloWorld {

String NO_THING_IS_CONSTANT = "change";

void say();

}

2.5 Gói thư viện Swing trong Java

Swing là thư viện do Java cung cấp, dùng để thiết kế giao diện người dùng Tổng quan về cấu trúc theo thứ bậc của các lớp trong Java Swing như sau

Hình 2.8: Các lớp trong swing

Trang 27

Automa cung cấp thư viện automa.api gồm nhiều lệnh để thao tác với các đối tượng giao diện

Một ví dụ sử dụng automa để tự động hóa thao tác với notepad

Hình 3.1: Ví dụ thao tác với notepad

Khi chạy tập lệnh trên máy tính sẽ tự động thực hiện các thao tác sau

 Mở ứng dụng notepad

Hình 3.2: Mở ứng dụng notepad

Trang 28

 Viết dòng chữ “Hello World!”

Hình 3.3: Viết dòng chữ “Hello World!”

 Lưu tập tin notepad với 2 thao tác là nhấn menu “File” và chọn “Save”

Hình 3.4: Nhấn “File” chọn “Save”

 Tạo mới thư mục và nhập tên thư mục là “Automa test”

Hình 3.5 : Tạo mới thư mục và nhập tên thư mục

Trang 29

 Đổi tên thư mục là “Automa examples”

Hình 3.6: Đổi tên thư mục

 Nhập tên tập tin là “Notepad example.txt”

Hình 3.7: Nhập tên tập tin

Trang 30

 Thoát chương trình notepad

Hình 3.8: Nhấn file và chọn Exit

Ưu điểm

 Hỗ trợ tự động sử dụng các ứng dụng viết bằng java, python

 Hỗ trợ người dùng tự động hóa các ứng dụng cơ bản của window với tập các lệnh đơn giản

Khuyết điểm

 Automa không xây dựng được các ứng dụng nghiệp vụ trên window

 Automa không phải là mã nguồn mở, nó đòi hỏi người dùng mua bản quyền

Trang 31

Hình 3.9: Ví dụ áp dụng OpenXava

Hình 3.9 là ví dụ quản lý hóa đơn, trong ví dụ này người dùng chỉ cần tạo lớp Invoice.java đại diện cho đối tượng nghiệp vụ hóa đơn Giao diện người dùng và các chức năng như New, Save, Delete và Search được sinh ra tự động bởi OpenXava

Trang 32

3.3 Bài nghiên cứu khoa học

Bài nghiên cứu khoa học [1] tập trung nghiên cứu sinh mã giao diện người dùng cho các ứng dụng window viết bằng thư viện Swing của Java dựa trên sơ đồ class diagram

Hình 3.10: Hai lớp Falculty và User

Hình 3.10 người dùng xây dựng hai lớp Falculty và User

Giao diện người dùng xây dựng từ hai lớp trên như sau

Trang 33

Hình 3.11: Giao diện swing

Ưu điểm

 Hỗ trợ sinh giao diện người dùng ở mức bán tự động

Khuyết điểm

 Chưa hỗ trợ chọn cách thiết kế bố cục cho giao diện

 Chưa hỗ trợ khả năng xử lý các sự kiện trên giao diện

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w