Tải bản đầy đủ (.pdf) (32 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.38 MB, 32 trang )

MỞ ĐẦU
Một ứng ứng dụng có thể được phát triển với kiến trúc tốt, sử dụng
công nghệ mới nhất và có giao diện tốt nhất, … nhưng nếu nó khơng giải
quyết được yêu cầu nghiệp vụ được đề ra thì ứng dụng đó khơng thể được
xem là hữu ích. Do đó, thiết kế hướng miền DDD được đưa ra. Thiết kế
hướng miền DDD nhằm phát triển phần mềm một cách lặp đi lặp lại xung
quanh một mơ hình miền thực tế. Cả phần mềm và mơ hình miền đều nắm
bắt triệt để các yêu cầu miền và khả thi để cài đặt xét về mặt kỹ thuật [9]. Ý
tưởng chính của DDD là 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 chỉ cần tập trung chủ yếu vào xây dựng mơ hình
miền, và tuân thủ các nguyên tắc DDD khi cài đặt. Khi bộ xương của hệ
thống rắn chắc, mọi thứ trở nên dễ dàng hơn và việc triển khai các tính
năng mới tương tự như việc lắp ghép các viên gạch xếp hình.
Trên thực tế, việc xây dựng một phần mềm hướng miền không hề đơn
giản, quá 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ưới dạng mã nguồn sử dụng ngôn ngữ lập trình nhất
định, đảm bảo các nguyên tắc của DDD là gắn chặt cài đặt với mơ hình, cơ
lập lớp miền và chứa các thành phần cơ bản cấu thành nên DDD. Để tăng
hiệu suất tạo ra phần mềm, một công cụ Java hỗ trợ phát triển phần mềm
hướng miền tên là DomainAppTool, đã được nhóm tác giả [7] đề xuất.
Công cụ này sử dụng các nghiên cứu gần đây trong DDD là tập trung vào
mở rộng các ngôn ngữ lập trình hướng đối tượng dựa trên annotation để
xây dựng mơ hình miền. Mơ hình này khơng chỉ là cơ sở cho ngơn ngữ
chung giữa các thành viên nhóm phát triển mà còn được sử dụng như đầu
vào để sinh ra phần mềm [8].
DomainAppTool tự động hóa tạo ra phần mềm từ một tập các lớp
miền được thiết kế với các tính năng thiết kế hướng miền. Lợi ích chính
của công cụ là cho phép các nhà phát triển chỉ tập chung vào thiết kế mơ
hình miền để đưa ra một tập các lớp miền của phần mềm, toàn bộ phần
mềm bao gồm giao diện đồ họa người dùng và đối tượng lưu trữ sẽ được
tạo ra tự động vào thời gian chạy. Một trong những hạn chế của công cụ là


chưa có giao diện người dùng, người sử dụng phải thực hiện thủ công một
loạt các lệnh command line để tạo ra phần mềm. Phát triển phần mềm là
một quá trình lặp đi lặp lại để sinh ra phần mềm cuối cùng. Trong mỗi vòng
lặp phát triển, nếu sử dụng cơng cụ thì người dùng lại phải thực hiện các


lệnh đó, gây ra khơng ít khó khăn và tốn nhiều thời gian. Vì vậy, tơi xin
chọn đề tài “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” . 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.
Trong luận văn, tơi tập trung vào trình bày chi tiết hai đóng góp của
mình là xây dựng thuật tốn tạo ra cấu hình phần mềm và xây dựng gói
Eclipse plug-in; cuối cùng, các bước thực hiện thực nghiệm và kết quả đạt
được. Về phần bố cục, luận văn được chia thành 3 chương chính như sau:
Chương 1. Kiến thức nền tảng : Trình bày cơ sở lý thuyết và các
cơng nghệ chính được sử dụng trong 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 và thành phần mở rộng Eclipse Plug-in.
Chương 2. 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 và cài đặt chi tiết của thiết kế.
Các thuật toán tự động sinh phương thức cho lớp miền và cấu hình mơ-đun
phần mềm cũng được giới thiệu nhưng 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 3. Cài đặt và thực nghiệm : Trình bày các u cầu về
mơi trường cài đặt thực nghiệm, bài tốn thực nghiệm và cuối cùng là các
kết quả đạt được.



CHƯƠNG 1. KIẾN THỨC NỀN TẢNG
1.1. Giới thiệu chương
Chương này sẽ trình bày cơ sở lý thuyết và các cơng nghệ chính
được sử dụng trong 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 và 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, các pha trong phát triển các 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 các lớp miền và các bước xây
dựng nguyên mẫu phần mềm từ các lớp miền.
Thành phần mở rộng Eclipse Plug-in: Kiến trúc mở của Eclipse và
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 là một cách tiếp cận để phát triển phần mềm
có các yêu cầu phức tạp về việc liên kết cài đặt với mộ mơ hình phát triển.
Tiền đề của thiết kế hướng miền là:





Đặt trọng tâm chính của dự án tập trung vào miền lõi và logic
miền.
Các thiết kế phức tạp được xây dựng dựa trên một mơ hình miền.
Sự cộng tác giữa chuyên gia miền và chuyên gia phát triển để trau
dồi lặp đi lặp lại một mô hình miền khái niệm giải quyết các vấn
đề miền cụ thể.

Thiết kế hướng miền phát triển từ tiền đề coi trái tim của phát triển
phần mềm là kiến thức về vấn đề cần giải quyết và tìm các cách hữu ích
nhất để hiểu vấn đề đó. Sự phức tạp cần giải quyết chính là sự phức tạp
của miền chứ khơng phải là kiến thức kỹ thuật, không phải là giao diện
người dùng hay thậm chí khơng phải chức năng cụ thể. Điều này có nghĩa
là thiết kế mọi thứ xung quanh hiểu biết và quan niệm về hầu hết các khái
niệm cần thiết của nghiệp vụ, chứng minh cho bất kỳ sự phát triển nào khác
bằng cách nó hỗ trợ miền lõi đó như thế nào.
1.2.1. Xử lý kiến thức


Phát triển phần mềm là quy trình xây dựng ra phần mềm để giải
quyết các bài toán nghiệp vụ thực tế hay miền vấn đề. Phần mềm bắt nguồn
và liên quan chặt chẽ với miền này. Mặt khác, phần mềm được 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 ra mã
nguồn và nhìn phần mềm như các đối tượng và 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ế về quy trình sản xuất một chiếc ô
tô. Họ coi ô tô là một tập khổng lồ những linh kiện và cần lắp ráp chúng
với nhau; thực ra quy trình tạo ra một chiếc ô tô phức tạp hơn thế nhiều.
Một chiếc xe tốt bắt nguồn từ một tầm nhìn và nó được đặc tả một cách chi

tiết, tiếp theo là thiết kế (rất, rất nhiều thiết kế). Sau nhiều tháng, thậm chí
có thể vài năm; thiết kế đó lại được thay đổi, cải tiến cho tới khi thiết kế trở
nên hoàn hảo nhất. Q trình thiết kế có thể khơng làm ln trên giấy,
nhiều phần thiết kế bao gồm việc mơ hình hóa và kiểm thử dưới điều kiện
cụ thể để xem xe hoạt động hay khơng. Sau đó, thiết kế được thay đổi theo
kết quả kiểm thử. Cuối cùng, chiếc xe được đưa vào sản xuất bao gồm sản
xuất linh kiện và lắp ráp chúng vào nhau. Việc phát triển phần mềm cũng
tương tự như vậy, không thể tạo ra phần mềm phức tạp mà chỉ ngồi viết mã
nguồn. Để tạo ra phần mềm tốt, nhà phát triển cần hiểu về miền vấn đề mà
phần mềm cần giải quyết thông qua việc trao đổi với chuyên gia miền.
Những kiến thức thô về nghiệp vụ khơng dễ dàng chuyển hóa thành cấu
trúc phần mềm trừ khi miền được “trừu tượng hóa”. “Trừu tượng hóa”
miền vấn đề là việc xây dựng một mơ hình miền. Theo Eric Evans, một mơ
hình miền khơng phải là một giản đồ cụ thể, quan trọng là ý tưởng mà giản
đồ đó muốn truyền đạt; quan trọng khơng phải là kiến thức trong đầu của
chuyên gia miền mà là sự trừu tượng hóa miền kết hợp chặt chẽ với kiến
thức đó và cả nhóm phát triển có thể hiểu được.
Mơ hình là một sự thể hiện của miền cần xem xét và rất cần thiết
trong suốt quá 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ự các nhà phân tích tài chính xử lý những con
số để hiểu hiệu suất hàng quý của một công ty. Khi làm việc với chun gia
miền, người mơ hình hóa miền sẽ thử đưa ra một số ý tưởng tổ chức tập các
khái niệm, sau đó, tạo các mơ hình, dùng thử chúng, một số mơ hình bị loại
bỏ trong khi một số khác bị biến đổi.


Phát triển là lặp đi lặp lại, xử lý kiến thức là liên tục trong suốt vòng
đời của dự án. Các nỗ lực mơ hình hóa được tạo ra trong các vòng lặp đầu
tiên thường hời hợt. Sự trừu tượng hóa xuất hiện theo thời gian và phải
được tái cấu trúc và sử dụng vào trong mơ hình. Để đạt được điều này cần

duy trì một mối quan hệ chặt chẽ, liên tục với các chuyên gia miền.
1.2.2. Ngôn ngữ chung
Yêu cầu đầu tiên của cách tiếp cận DDD là ngôn ngữ chung cho
phép chuyên gia miền và chuyên gia phần mềm có thể hiểu nhau và cộng
tác với nhau. Thơng thường, lập trình viên chỉ nghĩ tới lớp, phương thức,
thuật toán và khuynh hướng diễn đạt mọi vấn đề dưới dạng mã nguồn. Khi
nhìn vào các đối tượng nào đó và quan hệ mơ hình giữa 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,
chuyên gia miền thường không hiểu những 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
về mơ hình, về những thành phần liên quan đến mơ hình. Giao tiếp tốt ở
mức này rất quan trọng cho sự thành công của dự án. Khi trao đổi về mơ
hình, có nhiều khái niệm chun ngành rất dễ bị hiểu sai với người ngồi
ngành. Vì vậy, cần có một từ điển thuật ngữ dự án giải thích chi tiết các
khái niệm đó, đảm bảo tất cả các bên liên quan đến dự án đều hiểu đúng về
mơ hình.
Ngun tắc cốt lõi của thiết kế hướng miền là sử dụng ngơn ngữ
dựa trên mơ hình. Vì mơ hình là xuất phát điểm chung, là đầu vào cho phần
mềm giải quyết miền vấn đề. Ngôn ngữ chung kết nối mọi phần của thiết
kế cũng như hoạt động của nhóm phát triển.
1.2.3. Rằng buộc mơ hình và cài đặt
Đối tượng điển hình trong mơ hình có các liên kết phức tạp với các
đối tượng khác và mạng lưới liên kết này có một 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 hiện ra
rằng mớ hỗn độn các liên kết không chuyển thành các đơn vị có thể lữu trữ,
có thể phục hồi cùng nhờ tính tồn vẹn dữ liệu. Nếu dự án sử dụng cơ sở dữ
liệu đối tượng thì nhà phát triển thậm chí phải đối mặt với những thách
thức của việc ánh xạ các đối tượng vào các bảng quan hệ. Ở mức độ cơ
bản, mơ hình khơng cung cấp hướng dẫn để cài đặt.



Mơ hình là “chính xác” nếu là kết quả của sự cộng tác chặt chẽ
giữa chuyên gia nghiệp vụ và nhà phân tích kỹ thuật. Tuy nhiên, các nhà
phát triển đã đi đến kết luận rằng các đối tượng dựa trên khái niệm không
thể là nền tảng thiết của họ. Vì vậy, họ tiến hành phát triển thiết kế sử dụng
một vài tên lớp và thuộc tính giống nhau cho việc lưu trữ dữ liệu, nhưng nó
khơng dựa trên bất kì mơ hình đang tồn tại.
Dự án có một mơ hình miền nhưng mơ hình chỉ tốt trên giấy trừ khi
nó trực tiếp trợ giúp sự phát triển phần mềm. Mơ hình đến từ nhiều nguồn
và phục vụ nhiều vai trị, thậm chí những vai trị được giới hạn trong từng
hoàn cảnh của một dự án phát triển phần mềm. Thiết kế hướng miền đề
xuất một mơ hình khơng chỉ hỗ trợ phân tích sớm mà cịn là nền tảng của
thiết kế. Việc liên kết chặt chẽ mã nguồn với một mơ hình bên dưới 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 một số mơ hình miền nhưng khơng duy trì
kết nối chặt chẽ giữa mơ hình và mã nguồn. Mơ hình được phát triển có thể
hữu ích như một cơng cụ thăm dị ban đầu nhưng nó ngày càng trở nên
khơng liên quan đến mã nguồn và thậm chí gây hiểu lầm khi 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á khác
biệt so với thiết kế và thường được phát triển bởi những người khác nhau.
Nó được gọi là một mơ hình phân tích bởi vì nó là sản phẩm phân tích miền
nghiệp vụ nhằm sắp xếp các khái niệm mà không quan tâm đến các phần
khác trong hệ thống phần mềm. Một mơ hình phân có ý nghĩa như là một
công cụ để chỉ để hiểu miền vấn đề; việc kết hợp với cài đặt sẽ làm sao
nhãng việc tập trung vào phân tích vấn đề. Do đo, thiết kế được tạo ra có
thể chưa tương ứng với mơ hình phân tích.
Một số kiến thức được xem xét, nghiền ngẫm xảy ra trong mơ hình
phân tích nhưng hầu hết nó laị bị qn khi lập trình, khi nhà phát triển buộc

phải đưa ra các trừu tượng hóa cho thiết kế. Sau đó, khơng có gì đảm bảo
rằng các thông tin chi tiết thu được từ chuyên gia phân tích được nhúng vào
mơ hình, sẽ được lưu lại và tái sử dụng. Tại thời điểm này, việc duy trì bất
kì sự ánh xạ nào giữa thiết kế và mơ hình là khơng hiệu quả chi phí. Thậm
chí, mơ hình phân tích thuần túy cịn thiếu mục tiêu chính của nó là hiểu
miền vấn đề do những khám phá quan trọng ln xuất hiện trong q trình


thiết kế/cài đặt. Kết quả là mơ hình phân tích không được sử dụng ngay sau
khi việc viết mã nguồn bắt đầu và kiến thức nền tảng phải được xem xét lại.
Nếu thiết kế hoặc một số phần trung tâm của nó khơng ánh xạ lên
mơ hình miền thì mơ hình đó khơng mang lại giá trị lớn và tính chính xác
của phần mềm vẫn cịn bị nghi ngờ. Đồng thời, các ánh xạ phức tạp giữa
các mơ hình và các chức năng thiết kế rất khó hiểu và trên thực tế khơng
thể duy trì khi thay đổi thiết kế.
Q trình phân tích phải nắm bắt được các khái niệm cơ bản từ
miền vấn đề theo một cách dễ hiểu. Thiết kế phải xác định một tập các
thành phần có thể được xây dựng cùng với các công cụ lập trình được sử
dụng trong dự án, các cơng cụ này sẽ thực hiện trong mơi trường triển khai
đích một cách hiệu quả và giải quyết chính xác các vấn đề đặt ra cho ứng
dụng.
Mơ hình hướng mơ hình loại bỏ sự phân tách giữa mơ hình phân
tích và mơ hình thiết kế để tìm ra một mơ hình duy nhất phục vụ cả hai mục
đích. Đặt vấn đề kỹ thuật sang một bên, mỗi đối tượng trong thiết kế đóng
vai trị một khái niệm được mơ tả trong mơ hình.
Có nhiều cách trừu tượng hóa một miền và cũng có nhiều cách thiết
kế có thể giải quyết vấn đề của ứng dụng. Đây chính là thứ làm cho việc
liên kết chặt chẽ mơ hình và thiết kế trở nên thực tế. Liên kết này khơng
khiến cho mơ hình phân tích bị suy yếu, tổn hại bởi việc xem xét các yêu tố
kỹ thuật; hay phải chấp nhận các thiết kế phản ánh ý tưởng miền vụng về

nhưng không sử dụng các nguyên tắc thiết kế phần mềm. Khi một mô hình
dường như khơng phù hợp với thực tế cài đặt hoặc không thể hiện một cách
trung thực các khái niệm thì một mơ hình khác nên được tìm kiếm. Do đó,
quy trình mơ hình hóa và thiết kế trở thành một vòng lặp tiếp tục. Yêu cầu
liên kết chặt chẽ giữa mơ hình miền và thiết kế cung cấp thêm một tiêu chí
cho việc lựa chọn các mơ hình hữu ích trong vơ số mơ hình có thể có.
Từ mơ hình, thuật ngữ được sử dụng trong thiết kế và phân công
công việc. Mã nguồn trở thành sự thể hiện của mơ hình, vì vậy, một sự thay
đổi mã nguồn có thể là một thay đổi mơ hình. Ảnh hưởng của nó chắc chắn
sẽ lan ra hoạt động cịn lại của dự án. Việc gắn cài đặt với mơ hình thường
yêu cầu các công cụ và ngôn ngữ phát triển phần mềm hỗ trợ mơ hình hóa
như lập trình hướng đối tượng.


Thiết kế hướng mơ hình là trái tim của thiết kế hướng miền. Hình
1.1. mơ tả các thành phần cơ bả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 cơ bản của 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 là một phương pháp phát triển lặp cho việc phát triển các
ngun mẫu phần mềm từ mơ hình miền. Các nguyên mẫu này được sử
dụng theo hai cách: Cách sử dụng đầu tiên và cũng là chủ yếu dành cho các
chuyên gia miền và các nhóm phát triển để phát triển mơ hình miền một
cách tăng dần, hợp tác và tương tác. Cách sử dụng thứ hai là nguyên mẫu sẽ
được tái sử dụng trong giai đoạn sau để phát triển ra phần mềm thương mại.
Hình 1.4 mơ tả DDSDM bao gồm các pha sau:






Pha 1: Phát triển mơ hình miền khái niệm
Pha 2: Định nghĩa các vòng lặp phát triển
Pha 3: Thực hiện các vòng lặp để phát triển một tập các nguyên
mẫu phần mềm
Pha 4: Tích hợp các nguyên mẫu phần mềm để tao ra nguyên mẫu
cuối cùng.


Hình 1.4: Tổng quan về phương pháp phát triển phần mềm hướng miền
1.3.1. Phát triển một mơ hình miền khái niệm
Đây là một mơ hình miền ở mức cao, sẽ được sử dụng làm điểm
khởi đầu cho quá trình phát triển. Mơ hình này được sử dụng để định nghĩa
ra các vòng lặp phát triển, hiệu suất phát triển và dần dần làm phóng phú
thêm mơ hình miền với tính năng chi tiết mới.
Mơ hình miền ở mức cao chỉ bảo gồm các lớp miền lõi (có cấu trúc
khơng hồn thiện) và các liên kết ban đầu giữa các lớp miền đó. Các lớp
miền và liên kết này được xác định từ yêu cầu chức năng của phần mềm.
Các yêu cầu đó thường được mơ tả dưới dạng các ca sử dụng.
Về nguyên tắc, mỗi chức năng được xác định từ một tập các lớp
miền liên quan trong mơ hình gọi là mơ hình con. Hình 1.4 mơ tả các u
cầu chức năng sử dụng mơ hình ca sử dụng. Mỗi ca sử dụng được kết nối
tới một mơ hình con của mơ hình miền. Ranh giới của mỗi mơ hình con
được biểu diễn bởi một hình ơ-van đây có chứa một hoặc nhiều lớp miền
cùng với liên kiết giữa chúng (nếu có). Ví dụ, ca sử dụng F1 được kết nối
đến mơ hình con chứa hai lớp miền (tên là Cz và Cw) cùng với kết nối giữa
chúng. Các mơ hình con của hai chức năng chồng lên nhau ở một lớp miền
được chia sẻ và/hoặc một liên kết giữa các hai lớp miền của hai mơ hình
con. Thơng qua các điểm chồng lẫn này mà các mơ hình con được kết hợp
để tạo thành tồn bộ mơ hình miền. Ví dụ, hình 1.4 cho thấy cách mơ mình



con F1 chồng lên một mơt hình con khác chứa hai lớp là Cz và Cx thông
qua lớp Cz, mô hình con này lại chồng lên một mơ hình con khác chỉ chứa
lớp Cy thông qua kết nối giữa Cx và Cy.
1.3.2. Định nghĩa các vịng lặp phát triển
Khi mơ hình miền ở mức cao đã được tạo, pha tiếp theo là định
nghĩa ra các vòng lặp. Cùng với nhau, các vòng lặp này sẽ xây dựng kết
hoặc phát triển cho phần mềm.
Ý tưởng chính là định nghĩa ra mỗi vịng lặp theo ranh giới của một
mơ hình con. Đầu ra của mỗi vòng lặp là một nguyên mẫu phần mềm cho
mơ hình con đó. Một mơ hình con có thể là mơ hình con được định nghĩa
cho mỗi chức năng trong pha trước hoặc là mơ hình con nhỏ hơn trong mơ
hình con này. Kích thước chính xác của mơ hình con phụ thuộc tài ngun
phát triển (quan trọng nhất là nguồn tài nguyên con người) sẵn có cho dự
án.
Mỗi vòng lặp liên quan đến việc thực hiện bốn hoạt động của một
quy trình phát triển phần mềm điển hình là phân tích, thiết kế, lập trình và
kiểm thử. Sự khác biệt duy nhất ở dây là thực hiện các hoạt động này để
phát triển một nguyên mẫu phần mềm cho một mơ hình con chứ khơng
phải tồn bộ mơ hình miền.
Về mặt khái niệm, các vịng lặp phát triển hình thành một 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 này bằng một
đường cong bên ngồi có mũi tên đi qua và kết nối bốn hoạt động phát triển
phần mềm.
1.3.3. Thực hiện các vòng lặp phát triển
Mỗi vòng lặp phát triển được thực hiện bởi việc phân tích, thiết kế,
lập trình và kiểm thử để tạo ra một nguyên mẫu phần mềm của một mơ
hình con. Thơng qua các vịng lặp này, các mơ hình con trở nên phong phú
hơn với các tính năng chi tiết hơn bao gồm các lớp miền mới, các thuộc

tính và phương thức mới.
Thực tế là các vịng lặp được thực hiện lặp đi lặp lại trên các mơ
hình phần mềm (mơ hình chức năng và mơ hình miền) bằng cách đóng gói
chu trình phát triển bao hàm cả mơ hình ca sử dụng và mơ hình miền. Tính
năng chính của chu trình phát triển DDSDM là ở chỗ các vịng lặp phát
triển có thể được tổ chức để thực hiện song song do các mơ hình con của


chúng (mặc dù có chồng lên nhau) chủ yếu thực hiện các yêu cầu chức
năng khác nhau.
1.3.4. Tích hợp các nguyên mẫu phần mềm
Khi các vòng lặp phát triển được hoàn thành, tạo ra một tập các
nguyên mẫu cho các mơ hình con thì pha cuối cùng là tích hợp các nguyên
mẫu này. Mục tiêu của việc tính hợp này: thứ nhất, tạo ra mơ hình miền
cuối cùng ;và thứ hai, tạo ra một ngun mẫu hồn chình. Tích hợp phần
mềm thu được một cách dễ dàng trong DDSDM nhờ khả năng của công cụ
hỗ trợ phát triển phần mềm DomainAppTool do cùng các tác giả của
DDSDM xây dựng. Khi các mơ hình con được làm phong phú thêm nhờ
các vòng lặp, chúng sẽ hợp với nhau bằng cách sử dụng các lớp miền chia
sẻ và/hoặc thông qua việc xác định các liên kết mới kết nối các lớp miền
trong mơ hình con.
Bởi vì tất cả các chức năng phần mềm đã được tính tốn bằng các
vịng lặp nên khơng cần thiết thực hiện bất kỳ phân tích, thiết kế và lập
trình nào nữa trong pha này. Hoạt động duy nhất phải thực hiện trong pha
này là kiểm thử để đảm bảo toàn các chức năng của nguyên mẫu phần mềm
là chính xác (nghĩa là tất cả các phần của nó hoạt động với nhau một cách
chính xác).
1.4. Cơng cụ hỗ trợ phát triển phần mềm hướng miền
DomainAppTool là một công cụ phát triển phần mềm Java thuần
túy, được sử dụng để phát triển nhanh phần mềm phù hợp với các nguyên

tắc thiết kế phần mềm hướng miền.
1.4.2. Tổng quan kiến trúc
Công cụ được thiết kế dựa trên kiến trúc phần mềm MVC. Về mặt
khái niệm, kiến trúc của công cụ được xây dựng từ thành phần chính: quản
lý mơ hình, quản lý hiển thị và quản lý đối tượng.
Quản lý mơ hình
Thành phần này chịu trách nhiệm xử lý các lớp miền. Một lớp miền
là một lớp Java được thiết kế với các tính năng thiết kế hướng miền. Mỗi
lớp nắm giữ các yêu cầu miền của một khái niệm hoặc một thực thể quan
tâm đến phần mềm. Các lớp miền được xác định như đầu vào khi chạy
công cụ.


Một tính năng chính của cơng cụ là nó chỉ yêu cầu nhà phát triển
xác định tập các lớp miền của một phần mềm. Toàn bộ phần mềm bao gồm
giao diện đồ họa GUI và lưu trữ đối tượng sẽ được tạo ra một cách tự động
tại thời điểm chạy.
Quản lý hiển thị
Phần mềm do cơng cụ tạo ra có giao diện đồ họa GUI, giúp người
dùng dễ dàng thực hiện các chức năng của phần mềm. Giao diện GUI này
được tạo ra một cách tự động tại thời điểm chạy từ thông tin thiết kế được
nhúng trong các lớp miền của phần mềm và quản lý hiển thị là thành phần
chịu trách nhiệm cho nhiệm vụ này.
Về nguyên tắc, quản lý hiển thị cung cấp một desktop manager cho
việc quản lý các biểu mẫu đối tượng khác nhau, một thư viện các thành
phần dựa trên Java Swing được sử dụng để tạo ra các biểu mẫu đó. Biểu
mẫu đối tượng là thành phần then chốt trong việc cung cấp một giao diện
cho phép người dùng xem và thao tác trên các đối tượng miền của một lớp
miền.
Quản lý đối tượng

Thành phần này chịu trách nhiệm quản lý các đối tượng miền của
phần mềm. Quản lý đối tượng quản lý hiệu quả các đối tượng trong bộ nhớ
trong và cung cấp một cơ chế để lưu trữ các đối tượng trong bộ nhớ ngồi.
Hiện tại, cơng cụ DomainAppTool đã hỗ trợ hệ thống quản trị cơ
sở dữ liệu quan hệ Java DB, được cung cấp vởi nền tảng Java. Cơ sở dữ
liệu được tạo một cách tự động cho phần mềm trong lần chạy đầu tiên.
Schema của cơ sở dữ liệu được tạo từ các thông tin thiết kế nhúng trong các
lớp miền của phần mềm. Tại thời điểm chạy, các đối tượng miền của phần
mềm được chuyển đổi thành các bản ghi và được lưu trữ trong cơ sở dữ
liệu này.
1.4.4. Phát triển các lớp miền
Phần này sẽ giải thích cách phát triển các lớp miền sử dụng các tính
năng thiết kế hướng miền.
Tổng quan thiết kế
Lớp miền là lớp được thiết kế với thông tin chuyên biệt miền. Các
nền tảng ngơn ngữ hướng đối tượng hiện tại (ví dụ : .NET và Java) cung
cấp hỗ trợ đặc tả các thơng tin đó như một phần của thiết kế lớp. Ý tưởng là


mơ hình hóa thơng tin chun biệt miền như một tập các meta-attribute, có
thể được gắn vào lớp, vào các thành viên của lớp hoặc cả hai. Một metaattribute là một tập các thuộc tính có giá trị cụ thể khi thuộc tính được đính
kèm.
Trong DomainAppTool, năm meta-attribute cơ bản được sử dụng
để mơ hình hóa một lớp miền là DClass, Dattr, DAssoc, DOpt, AttrRef.
Trong đó, DClass được đính kèm vào lớp, cịn các thuộc tính khác được
đính kèm vào thành viên của lớp. Một meta-attribute được mơ hình hóa
như một lớp được gọi là lớp meta-attribute và tên bắt đầu bằng ký tự “@”.
Sự đính kèm của lớp này vào lớp miền hoặc một trong các thành viên của
lớp miền được mơ hình hóa như một liên kết. Để phân biệt liên kết này với
liên trên lớp thông thường, trong sơ đồ lớp sử dụng đường màu xám có chu

trình tại phía đối diện với lớp meta-attribute. Đường liên kết tới một lớp
được kết nối với một trong các cạnh của hình chữ nhật chứa lớp. Mặt khác,
đường liên kết tới một thành viên của lớp sẽ vượt qua ranh giới và đi vào
bên trong hình chữ nhật chứa lớp, cho đến vị trí ngồi cùng bên trái của
thành viên đó. Mỗi thuộc tính của meta-attribute được định nghĩa với một
giá trị mặc định. Khi cần tiết kiệm không gian, chỉ những thuộc tính có giá
trị khác với giá trị mặc định được hiển thị trong mơ hình thiết kế.
Meta-attribute DClass
Meta-attribute này có bốn thuộc tính cơ bản là schema,
serialisable, singleton, mutable. Các thuộc tính khác có thể được thêm vào
nếu cần thiết. Hình 1.5 biểu thị meta-attribute này được mơ hình hóa trong
sơ đồ lớp của phần mềm CourseMan. Các giá trị mặc định của bốn thuộc
tính cơ bản được liệt kê trong đặc tả meta-attribute của lớp SClass.
Meta-attribute DAttr
Các thuộc tính của một lớp miền được xác định cùng với metaatrribute DAttr. Meta-atrribute này có hai tập thuộc tính. Tập thứ nhất xác
định các thơng tin rằng buộc của một thuộc tính miền. Tập này có chính
thuộc tính : name, type, mutable, optional, length, min, max, defaultValue,
format. Tập thứ hai có bốn thuộc tính cơ bản: id, auto, serialisable, filter.
Meta-attribute DAssoc
Meta-atrribute này được sử dụng để xác định một đầu cuối của liên
kết nhị phân giữa hai lớp miền. Về mặt khái niệm, một liên kết là một tập


DAssoc được đặt tên, mỗi DAssoc xác định một đầu cuối của liên kết. Một
DAssoc được gắn cho thuộc tính miền thực hiện đầu cuối liên kết. Thuộc
tính này được gọi là thuộc tính kết hợp. DAssoc bao gồm các thuộc tính:
ascName, role, acsType, endType, associate, dependOn.

Hình 1.5 : Thiết kế cơ bản các lớp miền của phần mềm CourseMan
Các phương thức

Sau khi cấu trúc nền tảng của lớp miền được xây dựng sử dụng các
meta-attribute, cần định nghĩa các phương thức của lớp đó. Ở đây, các
thuộc tính miền cùng với các meta-attribute của chúng được sử dụng để
xác định các phương thức cần thiết bao gồm phương thức khởi tạo, getter,
setter và các phương mặc định khác.
Các phương thức được sinh ra một cách tự động sử dụng thuật toán
BspaceGen do các tác giả của DomainAppTool đề xuất.
1.4.5. Xây dựng nguyên mẫu phần mềm từ các lớp miền.
Công cụ DomainAppTool sử dụng phương pháp phát triển phần
mềm hướng miền DDSDM để xây dựng nguyên mẫu phần mềm từ các lớp
miền. Trong mỗi vòng lặp phát triển, đầu vào là các lớp miền chứa các


meta-attribute dưới dạng các annotation đặc tả dữ liệu cho một loại đối
tượng, thông tin cơ bản mô tả về đối tượng. Các lớp miền đầu vào hiện tại
chỉ chứa các thuộc tính mà chưa có phương thức. Ban đầu, công cụ cần tự
động sinh ra một số phương thức mặc định cho lớp miền. Tiếp theo, để sinh
ra được phần mềm thì cơng cụ cần một cấu hình phần mềm mơ tả chi tiết
hơn giao diện, thuộc tính (kiểu thuộc tính, các rằng buộc trên thuộc
tính,…), controller và lớp miền cần sử dụng. Tuy nhiên, mỗi lớp miền đầu
vào lại có cấu hình riêng cho thuộc tính, phương thức, giao diện của mình
được gọi là cấu hình mơ-đun phần mềm. Nếu sinh trực tiếp cấu hình phần
mềm từ lớp miền thì cấu hình này phải chứa tất cả các cấu hình mơ-đun
phần mềm. Trong mỗi vịng lặp phát triển, các lớp miền được sử dụng là
khác nhau nên thao tác sinh cấu hình mơ đun sẽ được thực hiện lại khi sinh
cấu hình phần mềm cuối cùng. Một cách đơn giản hơn, để tăng tính mơ-đun
hóa cho q trình xây dựng phần mềm hướng miền từ lớp miền: thay vì coi
lớp miền là đầu vào cho các vịng lặp phát triển, hãy xây dựng cấu hình
mơ-đun phần mềm cho từng lớp miền và lấy cấu hình mơ-đun đó là đầu
vào cho các vịng lặp phát triển.


Hình 1.7:Q trình xây dựng nguyên mẫu phần mềm từ lớp miền


Thuật toán Bspace được sử dụng để tự động sinh phương thức cho
lớp miền đầu vào. Tuy nhiên, các phương thức được sinh ra còn đơn giản:
getter/setter, tự động tăng id, thêm/xóa đối tượng trong danh sách. Thuật
tốn MCC được sử dụng để sinh cấu hình mơ-đun phần mềm từ lớp miền
hồn chỉnh và cấu hình phần mềm được sinh ra từ cấu hình mơ-đun phần
mềm nhờ thuật tốn SWC. Cuối cùng, cơng cụ DomainAppTool sẽ sử dụng
cấu hình phần mềm để tạo ra nguyên mẫu phần mềm. Trong mỗi vịng phát
triển, cấu hình mơ-đun phần mềm được sử dụng đầu vào của quá trình tạo
ra nguyên mẫu phần mềm. Tuy nhiên, khi mơ hình lớp miền thay đổi thì
cần cập nhật các thay đổi đó trên cấu hình mơ-đun phần mềm.
1.5. Thành phần mở rộng Eclipse Plug-in
Eclipse là một cơng cụ hỗ trợ lập trình, mã nguồn mở, được phát
triển bởi IBM. Eclipse là nền tảng được thiết kế để xây dựng công cụ phát
triển ứng dụng vào web. Theo thiết kế, bản thân nền tảng này không cung
cấp nhiều chức năng người dùng đầu cuối. Giá trị của nền tảng nằm ở chỗ
nó khuyến khích phát triển nhanh các tính năng tích hợp dựa trên mơ hình
plug-in.
Nền tảng Eclipse định nghĩa một kiến trúc mở để mỗi nhà phát triển plug-in
có thể tập trung vào nhiệm vụ cụ thể của họ thay vì lo lắng về các vấn đề
tích hợp. Nền tảng quản lý sự phức tạp của các môi trường chạy khác nhau
như hệ điều hành hay các mơi trường mày chủ làm việc nhóm. Nền tảng
được thiết kế tốt, các tính năng mới quan trọng và mức độ tích hợp có thể
được bổ xung mà khơng ảnh hưởng đến các công cụ khác.
Nền tảng Eclipse được xây dựng từ khái niệm plug-in. Plug-in là
các gói mã nguồn và/hoặc dữ liệu có cấu trúc đóng góp chức năng cho hệ
thống. Chức năng có thể được đóng góp dưới dạng thư viện mã nguồn (các

lớp Java với API công khai), các thành phần mở rộng của nền tảng hoặc
thậm chí là tài liệu. Plug-in có thể định nghĩa các điểm mở rộng để các
plug-in khác thêm chức năng nào.


Hình 1.8: Kiến trúc mở của Eclipse
Mỗi hệ thống con định nghĩa ra các điểm mở rộng cho việc bổ
xung các chức năng vào nền tảng.
1.6. Tổng kết chương
Chương này đã trình bày các kiến thức nền tảng được sử dụng
trong luận văn. Đầu tiên, các khái niệm về thiết kế hướng miền DDD được
giới thiệu. Mục tiêu của thiết kế hướng miền là …. Tiếp theo, phương pháp
phát triển phần mềm hướng miền DDSDM và công cụ hỗ trợ phát triển
phần mềm hướng miền DomainAppTool được trình bày một cách chi tiết.
DDSDM là một phương pháp phát triển lặp cho việc phát triển các nguyên
mẫu phần mềm từ mô hình miền và nhờ có sự hỗ trợ của cơng cụ
DomainAppTool mà nguyên mẫu phần mềm được sinh ra một cách nhanh
chóng, phù hợp với các nguyên tắc thiết kế phần mềm hướng miền. Cuối
cùng, thành phần mở rộng Eclipse Plug-in với kiến trúc mở cho phép mở
rộng nền tảng Eclipse theo mục đích cụ thể thơng qua việc xây dựng các
plug-in.
Hiện tại, việc sinh ra phần mềm từ mô hình đang được thực hiện
một cách thủ cơng bằng các dịng lệnh command line. Điều này gây khó
khăn cho người sử dụng khi muốn xem hoặc chỉnh lớp miền và các mô-đun
phần mềm được sinh ra. Chương tiếp theo của luận văn sẽ trình bày quá
trình xây dựng một Eclipse Plug-in cho phần mềm hướng miền.


CHƯƠNG 2. 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, các yêu cầu xây dựng Plug-in sẽ được mô tả, bao gồm
yêu cầu đầu vào và u cầu đầu ra. Tiếp đến, mơ hình thiết kế Eclipse Plugin cho phần mềm hướng miền được trình bày: từ mơ hình thiết kế UML đến
các thuật tốn được sử dụng cho plug-in. Có 3 thuật tốn được sử dụng:
thuật toán tự động sinh phương thức Bspace, thuật toán sinh cấu hình mơđun phần mềm MCC và thuật tốn sinh cấu hình phần mềm SWC. Cuối
cùng là chi tiết các bước thực hiện cài đặt plug-in.
2.2. Mô tả yê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 tố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 do = 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 = do , dsDesc = dd , setUpDesc = dsp ,
securityDesc = dsc
2.4. Thiết kế chi tiết Plugin
Các bước thực hiện xây dựng plug-in như sau:

Hình 2.4: Các bước xây dựng Plug-in
Bước 1: Tạo dự án plug-in mới
Vào File > New > Other > Plug-in Development > Plug-in Project để
tạo plug-in mới. Tên dự án “DomainAppEclipsePlugin” và nhấn Next.
Cuối cùng, nhấn Finish, dự án mới được tạo ra sử dụng Template đã chọn.
Đối với mẫu “Hello, World Command”, eclipse sẽ mặc định import bốn
plug-in khác được yêu cầu cho Template và mặc định tạo package có tên
theo cú pháp “ID + handlers”.
Giao diện dự án mới như sau:


Hình 2.7: Màn hình dự án Plug-in mới đã tạo
Bước 2: Thêm vào các thư viện cần thiết cho plug-in



Tạo thư mục /lib và import các thư viện .jar : dcsl.jar, mccl.jar,
swcl.jar domainapp.jar và javaparser-core-3.2.5.jar.
Khai báo các thư viện ngoài trong tệp META-INF/MANIFEST.MF:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
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 trên Context Menu
“Source”
Plug-in này sẽ bổ sung ba item mới cho Menu “Source” là:








Generate Bspace: Khi người dùng chọn các lớp miền > chuột phải
nhấn Source > Generate Bspace. Handler “GenerateBspace” sẽ sinh

ra các phương thức cho các lớp miền đã chọn.
Generate MCC: Khi người dùng chọn các lớp miền > chuột phải
nhấn Source > Generate MCC. Handler “GenerateMCC” sẽ sinh ra
các cấu hình mơ-đun phần mềm chứa các lớp miền đã chọn.
Generate SWC: Khi người dùng chọn các mơ đun cấu hình phần mềm
> chuột phải nhấn Source > Generate SWC. Handler “GenerateSWC”
sẽ sinh ra cấu hình phần mềm chứa các mơ đun cấu hình phần mềm đã
chọn.

Ba lớp handers “GenerateBspace”, “GenerateMCC” và “GenerateSWC”
có cấu tạo tương tự nhau, chỉ khác gọi đến các thư viện khác nhau khi sinh
ra các tệp đâu ra. Mã nguồn handlers “GenerateBspace” như 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 của
handler này được kích hoạt. Đầu tiên, lớp HandlerUtil sẽ xác định các lớp
được lựa chọn (chính là các lớp miền) cho sự kiện nhấn chuột vừa xảy ra là
gì. Sau đó, vịng lặp sinh phương thức gọi đến hàm generateBSpaces
cho mỗi lớp miền được thực hiện. Hàm “generateBSpaces” sẽ đọc
đường dẫn đến các lớp miền và sử dụng thư viện dcsl.jar để thực thi sinh
ra các phương thức cho các lớp miền.

Các handler còn lại được xây dựng một cách tương tự.
Bước 4:Tạo các điểm mở rộng trong plug-in.xml
Mở tệp plug-in.xml > chọn tab Extensions > hiện thị mặc định bốn
điểm mở rộng cần được thiết lập :

Hình 2.7: Màn hình Extensions


Tạo các command: Chọn org.eclipse.ui.commands > chuột phải chọn
New > Generic > Sửa các thông tin: catagoryId, id, name.


Hình 2.8: Màn hình tạo các command

 Khai báo các lớp hander: Chọn org.eclipse.ui.handlers > chuột phải
chọn New > Generic > Sửa các thơng tin: class,commandId. Trong đó,
thuốc tính class phải được trỏ đến lớp handler đã tạo ở bước 3 cịn
commandId thì trỏ đến command
tương ứng trong
org.eclipse.ui.commands.

 Tạo các bindings: Chọn org.eclipse.ui.bindings > chuột phải chọn New
> Generic > Sửa các thơng tin: commandId, contextId và sequence.
Trong đó, commandId được khai báo với command tương ứng trong
org.eclipse.ui.commands; contextId thể hiện loại component nào được
sử dụng (context menu, menu, button,…), mỗi component có id mặc
định khác nhau và được tra cứu trên các hướng dẫn của PDE; cuối cùng
sequence hiển thị phím tắt cho component đã tạo.

Hình 2.10: Màn hình khai báo các 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 các thông tin locationURI bằng
“popup:org.eclipse.jdt.ui.source.menu?after=DPSeparator”: thêm
thành phần mới này vào contextmenu “Source” sau một 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 các thơng tin: commandId,
id, label. Trong đó, commandId chỉ đến command tương ứng đã tạo
trong org.eclipse.ui.commands và label sẽ hiển thị tên item mới.

Hình 2.11: Màn hình khai báo vị trí của các item mới trên 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 này đã mô tả chi tiết các bước thực hiện xây dựng plug-in
từ thuật tốn sử dụng, mơ hình thiết kế plug-in cho đến cài đặt mã nguồn.
Plug-in được tạo ra đáp ứng các yêu cầu đầu vào, hứa hẹn sẽ giúp cho công
cụ hỗ trợ phát triển phần mềm hướng miền của nhóm tác giả [7] được sử
dụng rộng rãi. Ở chương tiếp theo, plug-in sẽ được cài đặt và chạy thử
nghiệm trên một ví dụ thực nghiệm. Từ đó, đánh giá được những điểm hạn
chế và đề xuất các hướng phát triển.



CHƯƠNG 3. CÀI ĐẶT VÀ THỰC NGHIỆM
3.1. Giới thiệu chương
Tính thực tiễn và hiệu quả của plug-in sẽ được đánh giá thơng qua
việc sử dụng một ví dụ phần mềm thực tế. Cụ thể, mội dung chính của
chương bao gồm đưa ra một mơ hình miền điển hình của một 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 quả thu
được là phần mềm tự động được sinh ra 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 bản 1.8 và Eclipse phiên bản
Oxygen.1a Release 4.7.1a .
3.3. Bài tốn quản lý khóa học
CourseMan là ví dụ điển hình được 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 cũng như ứng dụng
của công cụ DomainAppTool. Trước đây, phần mềm được tự động sinh ra
nhờ việc thực hiện một loạt các dòng lệnh command-line, gây khó khăn cho
người dùng trong 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 cũng xin sử dụng
CourseMan làm ví dụ thực nghiệm nhưng nhờ có plug-in, việc tạo ra
CourseMan trở nên dễ dàng hơn.
Á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ột mơ hình miền khái niệm

Hình 3.2: Mơ hình miền khái niệm và các mơ hình con của CourseMan


×