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 2CÔ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 4LỜ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 5TÓ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 6LỜ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 7MỤ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 8CHƯƠ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 10CHƯƠ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 11Trong đề 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 12Ví 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 13Chỉ 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 142.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 15o 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 18xmi: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 19Mỗ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 21Lớ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 222.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 23JavaFile 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 24Lớ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 25public 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 26Lớ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 27Automa 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 31Hì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 323.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 33Hì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