Khái niệm và giải pháp mồ hình miễn chuyên biệt Những thách thức vé van dé sinh code có thể được xử lý theo cách xứ lý lương tự với các ngôn ngữ lập trình trước đây.. DSM cung cấp các
Trang 1
ĐẠI HỌC QUÔC GIÁ HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYEN VAN DUNG
TIM HIEU MO HINH MIEN CHUYEN BIET
VA UNG DUNG VAO BAI TOAN CHUYEN
ĐÔI DỮ LIỆU CƯỚC
LUẬN VĂN THẠC SĨ
TH Nội - 2011
Trang 2
ĐẠI HỌC QUỐC GIA HÀ NỘI 'TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYEN VAN DUNG
TÌM HIẾU MÔ HÌNH MIÈN CHUYÊN BIỆT
VÀ ỨNG DỤNG VÀO BÀI TOÁN CHUYEN
ĐÔI DỮ LIỆU CƯỚC
Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ phân mềm
Trang 3Tài cam đoan
Téi xin cam đoan luận văn “Tìm hiểu mỏ hình miễn chuyên biệt và ứng dụng vào bài toán chuyển đổi đữ liệu cước” là do tôi tự nghiên cửu vá hoàn thành dưới sự hướng,
đân của T8 Đăng Đức Hạnh
Tôi xia chịu hoàn toàn trách nhiệm về lời cam doan nảy
TĨà nội, ngày 21 tháng Q6 năm 201 l
Nguyễn Văn Dũng
Trang 4Tời cảm on
Tôi xin iran lrọng gũi lời cảm ơn tới giáo viễn hướng dẫn - T8 Đặng Đức Hạnh
Là người hưởng dân để tài, TS Đặng Đức Hạnh đã tận tỉnh hướng dẫn tôi trong quả
trình hoàn thành để tài hiận vẫn này:
I
Trang 5
Lới cam đoan
Loi cam on
MUC LUC
Danh mye cic ky hidu, cde chit
Danh mục các hình về
MG DAU
Chương } TIM HIỂU MÔ HỈNH MIỄN CHUYỂN BIỆT
1.1 Khải niệm và giải pháp mô hình miễn chuyên biệt
1.2 Những lợi ich mô hình miễn chuyên biệt cho người phát triển
1.3 Dinh nghĩa ngôn ngữ mô tình cho một miễn chuyên viết
1.4 Phat trién sinh code
1.5 Cách thực thủ DSM
Chuong 2 - MOT TIEP CAN VOI MO HINH MIEN CHUYEN BIET
2.1 Đặc trung 1: Khả năng định nghĩa miễn chuyên biét
3.1.1 Tạo một DSL Solution trong Visual Studio
3.1.2 Dinh nghĩa một DSL
2.1.3 Định nghĩa mô lãnh miễn
2 + Đặc trưng 2: Khả năng dịnh nghĩa các ràng buộc
2.1 Định nghĩa các lưật
2.2.2 Định nghĩa các rang buộc
2.3 Đặc trưng 3: Khả năng phải sinh code
2.4 Đặc trưng 4: Khả năng Irình điển
2.5 Đặc trưng 5; Khả năng cài đặt
CHUYE NĐỖI DỮ LIỆU CƯỚC 33
3.1.2, Khảo sat mét số khudn dang dif Gu cU8¢ eeseseseesentciseneneee - 30
3.2 Thiết kế hệ thông chuyển đổi dữ liệu cước 55
3.2.1 Xây dựng ý tưởng về hệ thông chuyển đổi đữ liêu cước 55
3.2.2 M6 1a hé thong $7
3.2.3 Thiết kế hệ thông chuyền đổi dữ liệu cước 69
3.3 Cai đặt miễn chuyên bit định dạng dữ liệu cước để tạo ra cáo thư viện liên kết động 79 3.3 1 Định nghĩa miền chuyên biệt địh dạng dữ liệu đông đài 79
Trang 6Danh mục các ký hiệu, các chữ viết tắt
Ngôn ngữ miễn chuyên biệt
Xgôn ngữ mô hình höa đôi tương,
Mediation Systems 116 théng chuyén dot đữ liện cước
Than ghi chi Giét cude goi
Thư viện liên kết đông
Iv
Trang 7Danh mục các hình vẽ
Tình 1-1 D§M cho thiết kế ứng dụng điện thoại di động,
Tinh 1-2 Sinh code và thục thì code theo mục đích
Tình 1-3 D§M cho tiến trình nghiệp vụ
Tinh 1-4 Sinh các luỗng công việc trong file XML
Tình 1-5, DSM for voice mom desigi1 seo nenocc :
Hinh 1-6 Generated 8-bit code to microcontroller
Linh 2-1, Domain-Specific Language Designer Wizard «0
Finh 2-2: Mat DST Solution
Tinh 2-3: Project Debugging
FHinh 2
Tinh 2-6:
Nit “Transform All Templates” :
Thể hiện của một model trong designer két quả Tình 2-7, Dinh nghĩa diagratn cho Ïsaue 8tzte DR,
e cuộc gọi VOID Tiên tĩnh rong VNPT
8ơ đỗ kết nổi các cuộc goi đi dòng qua VTN
Cáo cuộc gọi di động không qua VTN
nói cuộc gọi VOIP liên tính có qua POP
Sơ đỗ kết nối cuộc gọi VOIP quốc tế đi không qua VIN
Luu trữ và buyén file AMA -
Hộ đệm chứa các bản ghí AMA
Bua dit Bua dif ligu ra ngoai theo phuong pháp điều chỉnh động
Quá trình ghi dữ liệu gước on sneeerre
Thiết lập vừng copy trong file ghỉ vòng
'Yêu cầu truyền FTAM bị ngắt
Câu trúc gói tin AMA
Ý tưởng hệ thống chuyển đổi dữ
Sơ để khối của hệ thông thu thập và xử lý dữ li Quy trình tổng thể của hệ thống thu thập và xứ
Sơ đỗ hoạt động của hệ thông thu thập và
Quy trình hoạt động của khối điều khiển
Cân trúc thư mục của giai đoạn chuyến đổi Quy trình xứ lý của quả trình chuyển đồi
Quy trình load đữ liệu Quy trình xử lý dữ liệu
Mô hình vật lý của hệ thông thu thập và xử lý dữ liệu
Định nghĩa miễn định dạng file cước tổng dai Ứng dụng thiết kế trên miễn định dạng ñile cước tổng đâi
Trang 8Hình 3-33 Định nghĩa ràng buộc rong miễn dịnh dạng file cước tổng đải
VI
Trang 9MỞ ĐẦU
Các mỗ hình sinh code hoạt dộng như là những cỗ máy giúp cho việc hiểu và ghỉ
lại tài hiệu code tốt hơn, ngoài ra chủng cũng có thể được sử dụng để sinh code hoàn
thiện và khả dụng Sinh code hoán thiện từ các mô hình đá trổ thành mục liêu của
ngành công nghệ trong nhiều năm Việc phát triển tự ding này giúp cải thiện hiệu năng, chất lượt và tránh được các vấn để phức tạp
Không may là nhiều ngôn ngữ mô hình hóa hiện nay dụa lrên code cơ bên và chỉ
cùng cấp chút it khả năng để nông cao mức trừu tượng trong thiết kế và dễ lưu trừ bộ
sinh code hoàn thiện Ví dụ, LMIL sử dụng khải niệm lập trình trực tiếp (Lớp, giá trị trả lại, .) như là các cấu trúc mô hình Có biểu tượng hình chữ nhật để minh họa lớp
trong biểu đồ nhưng mô tả bằng text tương đương trong ngôn ngữ lập trình lại không,
cung cấp khả năng sinh code thựo - Mũte trừu trợng trong mô hình và trang code 1a như nhau! Do đó, lập trình viên dễ dàng thấy rằng họ đã tự tạo mô hình mà mô tả chúc
năng vả hảnh vi cé thé dé dang viết trực tiếp như code Giới bạn về khả năng sinh code
tuộc người phát triển phải bắt đâu lập trình thủ công sau khi thiết kế Nó cũng dẫn đến
vẫn để vòng luân quấn: Có cùng một thông tím lại hai vị trì, lại code và lại các mô
hình, là một sự rắc rồi
Mô hình chuyên biệt miễn nâng mức độ trừu tượng hơn cả lập trinh bằng cách chỉ
ra giải pháp sử dụng trực khải mệm miễn (domain) San phim cudi cimg duce
sinh ra bởi các đặc tả mức cao Quá trình tự động nảy là khá thí bởi ví cả ngôn ngữ và
bộ sinh cođe đêu chỉ cẩn thỏa mãn yêu câu của công ty và miễn (domain) Tuiện văn
tp trang tim hiểu mô hình chuyên biệt miễn và vận dụng vào thiết kế bài toán chuyên
Luan van được bố cục thành 5 chương Chương 1 tập chung tim hiểu khái niệm
và lợi ích khi sử dụng mô hình miền chuyén biệt.Chương, 2 trình bày vẻ một tiếp cận
mô hình chuyên biệt miễn bằng công cụ Microsoft DSL Chương 3 minh hoa việc ứng đụng mô hình chuyên biệt miễn trong thiệt kế bài toán chuyển đối đứ liệu cước
Trang 10Chương 1 — TÌM HIỂU MÔ HÌNH MIỄN CHUYÊN BIỆT
Chương 1 tập chung tim hiểu khái niệm và loi ích khi sử dụng mỏ hình miễn chuyên biệt Nội dung của chương được bổ cục thánh 5 mục Mục 1 trình bảy tổng,
quan về khái niệm vả giải pháp mô hình miễn chuyên biệt Mục 2 nêu ra những lợi ích
khi sử dụng miễn chuyên biệt, Mục 3 trình bảy vẻ định nghĩa mô hình cho một miễn
chuyên biệt Mục 4 mỏ tả chức năng phát sinh code Mục 5 mô tá vẻ cách thực thứ miển chuyên biệt
1.4 Khái niệm và giải pháp mồ hình miễn chuyên biệt
Những thách thức vé van dé sinh code có thể được xử lý theo cách xứ lý lương tự
với các ngôn ngữ lập trình trước đây lằng cách tiếp tục nâng dẫn mức trờu tượng Các mô hình không nên 14 code nhìn thây được (visualize code), má là mô bình mô tả
nức trưu lượng cao hơn ngôn nựết lập trình Tương tự, nh trước đây vài
sử dụng ngôn ngữ C để nâng mức trữu tượng thì tất hơn lả ngôn ngữ hình tượng hóa
đầu tiên: cođe Assembler (visualizing Assembler code)
Trong mô hình nuền chuyên biệt (DSM: Domain-Speeiic Modcling), các thành
phân mô hình đại điện mô tả các đặc trưng trong thế giới miễn, khéng phát như trong thể giới code Ngôn ngữ mô hình tuân theo mức rừu tượng và ngữ nghữa miễn, cho phép người thiết kế mô hình biết được ho dang làm việc trực tiếp với khải niệm miễn
tảo Các quy tắc của miễn có thể được đưa vào ngôn ngữ lập trinh như các ràng buộc,
ý tưởng là kiểm tra và ngăn chân những mô hình thiết kế không hợp lệ hoặc không
như mong muốn Sự liên kết chặt chế của ngôn ngữ vả vẫn dẻ miền mang lại nhiều lợi ích Những điều đó là cách phô biến để chuyển ngôn ngữ lập trình lên các mức trùu
tượng cao hen: cãi tiễn hiệu năng, giâm đi sự phức tạp, vả chất lượng hệ thống tốt hơn
Mặc dù sự trừu tượng ở mức cao sẽ thay đổi giữa các ime dung vả sắn phẩm Mọt
mién đến chứa đụng những khái niệm chuyên biệt cửa nó và các rằng buộc chính xác
Cho niên, các ngôn ngữ tnõ hình cần là chuyên biệt cho mỗi một miền Ta lẫy một ví
dụ Nếu chúng ta đang phát triển một cổng thông tin sơ sảnh và mua các sẵn phẩm bảo hiểm tại sao lại không sử đụng trực tiếp thuật ngữ bảo hiếm trong ngôn ngữ thiết kê?
Các khái niệm ngôn ngữ như ‘Risk’,”Bonus’ va ‘Dammage" phin anh ning bản chất
của báo hiểm hơn lả các lớp Java Một ngôn ngữ chuyên biệt vẻ bảo hiểm cũng có thé
2
Trang 11đảm bão rằng các sản phẩm thuộc mỗ hình hợp lệ: bảo hiểm má không có phí tổn thì không phải là một sản phẩm tốt Khững khái niệm miễn chuyên biệt này được biết đến
và sử dựng chủng một cách tự nhiên để phân ánh các mô hình thiết kế sản phẩm Code sau clung (assembler, 3GL, object-oriented etc.) co thé van dirge sinh ra tt cdc mic đặc
tả cao Nên tảng cho việc sinh code tự động từ các mô hình là cả ngôn ngữ và bộ sinh code cần phủ hợp với các yêu cầu của công ty
a.Một sẽ ví dụ về miễn chuyên biệt
Chúng ta sẽ tiếp tục mình họa lợi ích của DSM qua việc sử đụng các ví dụ thực
tổ Chúng tø chỉ ra ở dây ba trường hợp từ các miễn ứng dụng khác nhau: ứng dụng
điện thoại di động, luỗng xứ lý nghiệp vụ vả voice menus (danh mục giọng nói) trong,
bộ vị điều khiến 8bi Những ví dụ này tập trung vào lính log
b và hành vì của ứng dụng, chứ không chỉ tập trung vào các cấu trúc tỉnh má thường dược tạo ra để đảng
hơn
Những ứng dụng điện thoại Symbian Series 60
Hỗ trợ bạn phát triển nlưững ung dung doanh nghiệp cho di động, Sau do, những, phat triển viên của bạn sẽ tạo ra các ứng dụng rửnữ: kiểm tra trạng thái kiểm kê, thứ bự, đăng ký sự kiên, Trước khi xây đựng bắt kế một ứng đụng mới nao, thi ngudi phat triển cũng đều phái thiết kế chủng trong, miễn chuyên biệt “phone” Điều nay kéo theo
việc áp đụng những thuật ngữ và quy tắc của chiếc điện thoại, như lä danh bạ, phím
views, lin nhắn văn bản, và các hành động eta nguéi sé dung DSM sé 4p dung
trực tiếp những khải niệm tương tự này trong ngởn ngữ mô hình
Một vi đụ của ngôn ngữ mô hình miễn chuyên biệt được mô tả trong Linh 1-1
Nếu bạn đã quen với một số ứng dung phone, giống như phone book hoặc lịch, thì bạn gân như đã hiểu hết ứng dụng nay dime dé lam gì Một người sử dụng có thé ding ky
cuộc họp bằng cách sử đụng tin nhắn văn bản, lựa chạn một phương thức thanh toán, hiển thị chương trình và dữ liệu giọng nói, duyệt chương trình hội thâo qua web hoặc
cũng có thể hủy đăng ký
Mö hình thiết kế trục tiếp đựa trên các khái riệm mm
, như Nole, Pop-up, Texi
Message, Form, va cde truy vin DSM sir dung nhimg widgets va services cila điện
thoại như là những khải niệm mô hình và đảm bảo các điểu kiện rảng buộc má mô
Trang 12hình lập trình phone được tuân thủ Nỏ cũng ngăn chăn rất nhiều những thiết kế không
hợp lệ hoặc không mong muôn - Như là: dẫn đến giảm hiệu năng hệ thông Sau đỏ, bộ
sinh code cu thé sé sinh ra code hoàn thiện từ mô hình thiết kẻ, được gọi là các dịch vụ
nên của phone (phone`s platform services), và thực thi kết quả trong bộ giả lập hoặc thiết bị cuối (Hình 1-2)
Trang 13index = appuitw.selection_list(choices3_6396)
ifindex <> None Payment = choices3_S396jindex}
ifindex == None return ((call_stack pop(), Falsa)
messaging sms_send("+358400548606", string) return (Note3_537, False)
Hình 1-2 Sinh code vả thực thí code theo mục đích
Ở đây, DSM cho phép tăng mức độ trừu tượng một cách đáng kể mà không làm
mat di tính linh động Ngay cả trong trường hợp thay đổi nguyên tắc cơ bản trong kiển trúc hoặc dịch vụ nên xảy ra thi cũng chỉ tương ứng với việc chỉ thay đổi bỏ sinh code
hay ngôn ngữ mô hình
'Mô hình tiến trình nghiệp vụ
Vi dụ nay minh hoa: lam thé nao de phần mềm có thể được sinh ra dựa trên mô
hình tiền trình nghiệp vụ Những người quản lý nghiệp vụ cỏ thể tập trung vào việc tìm kiểm giải pháp cho tiền trình nghiệp vụ của công ty sử dụng những khái niệm tự nhiên
hoặc phỏ biển Họ vẽ ra những mô hình sử dụng những khái niệm như lả quy trinh của
5
Trang 14các loại khác nhau, sự kiện, tiền trình con, các đơn vị trong một tổ chức như được
mô tả trong Hình 1-3 DSM cung cấp các khái niệm mô hình cơ bản theo các quy tắc: làm cách nào đề định nghĩa các tiền trình
DSM cũng được tạo với mục địch sinh code đề sinh ra các mô tả luỗng công việc
theo một định dạng mả một workflow engine cỏ thể thực hiện được Tạo ra bộ sinh
code cũng trở nên dé dàng hơn như đặc tả: không cân phải xác thực — vì ngồn ngữ
DSM va cac rang buộc quan hệ đã được kiểm tra
Trang 15Ry aun ume eso ae yet)
Hình 1-4 Sinh các luỗng công việc trong file XML,
Voice menus for an 8-bit microcontroller
Vi du nay minh hoa mét DSM sir dung đề phát triển danh bạ giọng nỏi - voice
menus cho hé thong tu déng gia dinh Béi vi thiet bi nay có bộ nhớ vả các tải nguyên
khác giới hạn nén DSM giúp tối ưu code Hình 1-5 minh họa luông thực thi của một hệ
thong voice menu
D§M cung cấp những trừu tượng được định nghĩa trước, thích hợp với nhu cầu
phát triển cụ thể Với các nhả phát triển, nghĩ về chuỗi logie truyền thông như là
‘Menu’, ‘Prompt’, va ‘Voice entry’ thi tự nhiên hơn là nghĩ nó như các thuật ghi nhớ
Assembler.
Trang 16Bồ sinh mã tạo ra code assembler với chức năng cần thiết đẻ đánh địa chỉ bộ nhớ,
tỉnh toán (Hình 1-6) Cân lưu ý rằng, mặc đủ nên đích và mã lả ở mức thấp, nhưng
ngôn ngữ DSM vẫn có thẻ thao tác trên các khái niệm mién thuan, nhu la: menu item,
voice message and menu selection Vi the, bang cach thay doi trình sinh code chúng ta
cỏ thê sinh ra cho các đôi tượng C từ các thiết kể tương tự
Trang 17n|a| e| || |
Golo 3_266
3450
Speak 0x0) 5 (Pause lor 0.5 sec)
Speak Ox02 5 (the )
Speak 0x15 10 (Welcome to the other manu)
Speak 0x18 12 (Press 1 lorthe main manu)
Clear Menu Butler
Hinh 1-6, Generated 8-bit code to microcontroller
1.2 Những lợi ích mô hình miễn chuyên biệt cho người phát triển
Các ví dụ ở trên mô tả: DSM như thế nào và có thẻ giúp gì cho các nhà phát triển
Mức trừu tượng cao thì thường tạo ra năng suất cao hơn Điều nảy có nghĩa lả không chỉ tiết kiệm thời gian và tài nguyên đề thiết kế phần mềm ban đầu, mà còn tiết kiệm
được cả trong quá trình bảo tri sản phẩm
Những thay đổi yêu câu thường do miền vẫn đề (problem domain) chứ không, phải do miền thực thi (mplementation domain), cho nên việc tạo ra những sự thay đôi trong ngôn ngữ mô hình, mà sử dụng thuật ngữ miễn, thì để hơn Thêm vào đỏ, trong một số miền, không cản có lập trình viên cũng có thể tạo ra đặc tả hoản chỉnh vả chạy
bộ sinh eode đề tạo ra code.
Trang 18Giữ các đặc tả ở mức trùu tượng hóa cao hơn đáng kể sơ với mã nguồn truyền
thống Bởi vi một ngôn ngữ cân phủ hợp với chỉ một miễn cụ thể, thường, miễn đó là
nghiệp vụ của một công ty, D8M có thể rất nhẹ, Nó không bao gồm nhiều kỹ thuật hay
cầu trúc mà tạo thêm nhiều công việc không cần thiết cho người phát triển
Tiiệm Tiện van
D§M giảm bớt sự cần thiết của việc học ngữ nghĩa mới Các
đề (Problem đơmain conccpts) đã dược sử dụng phỏ biến, thì những ngữ nghĩa đễ xác định đã tổn tại và được coi là tư nhiên như là bản chất của nó Bởi vi ngữ nghĩa miền
cu thé luôn phải được quản lý, vậy tại sao lại không đặt trạng thái lớp đầu tiên cho
chủng? Người phát triển không cần phải học ngữ nghĩa bổ sung (ví dụ UMIL) và anh
xạ trước sau giữa miễn và các ngữ nghĩa UML Việc ảnh xạ không cân thiết này là tốn thời gian và tài nguyên, dé din tới lỗi, và duợc thục hiện bởi tắt cả những người thiết
kế - một số người có thể làrn tốt hơn, nhưng thường thì mọi người lám khác nhau
DSM din tới hệ thông chất lượng tốt hơn, phần lớn bởi hai lý do Tha nhat, DSM
có thể chứa những luật của miễn làm cho nỏ chính xác hơn, và thường không thể tạo ra những điều không hợp lệ hoặc những đặc tả không mong muốn Dây cũng là một cách
giảm chỉ phí đề loại trừ gỡ lỗi: càng phát hiện lỗi sớm càng tốt hơn Thứ hai, người
sinh code cung cấp ánh xa tdi mét mire ti tượng thấp hơn Sau cùng, dặc tá dược tạo với thuật ngữ miễn thường để đọc hơn, đế hiểu, để nhớ, hợp lệ và để giao tiếp với nó
a.Sử dụng DSM
M6 hinh miễn đắc biết cho phép phát wién nhanh hơn, dựa trên nên tảng các mô
hình của mô hình bải toán hơn là trên các mô hình của code Kinh nghiệm của DDSM
chỉ ra rằng mục tiêu chính là cậi tạo hiện năng sản phẩm, giâm thấp công sức phát triển
và chất lượng tốt hơn Các nhân tổ cốt lõi dò dòng góp các diễu sau:
« _ Vân để được xử lý một lân tại mức trừu tượng cao nhất và code cuối cing duoc
sinh ra ngay từ giải pháp này
'p trung của người phát triển chuyển từ code tới thiết kế, xử ly van dé D6
phức tạp và sự triển khai chỉ tiết có thể được ẫn đi, và quen thuậc với người sử
dung
Trang 19« _ Tình bền vững của sản phẩm vả it gặp lỗi đã đạt dược tinh dơn trị tốt hơn của môi trường phát triển và giảm đi sự chuyển đổi giữa các mức thiết kẻ và triển
khai
+ Kiển thừc về miễn được tạo ra rõ ràng cho nhỏm phảt triển, vả được nắm bắt
trong ngôn ngĩt mỏ hình và hỗ trợ các tiện ích
Sự cài dặt DSM không phải dầu Lư bổ sung thêm nễu người thiết kế quan tầm đến tất cả chu trình từ thiết kế đến sinh mã, Hơn nữa, nỏ lưu các tải nguyên phát triển: Thông lường lất cả các người phát Iriển đều làm việc với các khái niệm miền van dé
xử lý và ảnh xa chúng tới các khái niệm thực thủ một cách thủ công Và giữa các nhà
phát triển, có một sự khác nhau lớn Một số thì làm tốt, nhưng không phái là ai cũng
Jam tốt Vi thể để những người phát triển cá kinh nghiệm định nghĩa ra các các khái
niệm và anh xa chung, và những người còn lại không cần lam điều dõ nữa Nếu hảm sinh code đặc biệt chuyên nghiệp, nó sẽ cho ra những những dụng chất lượng tốt hơn
so với việc phát triển tlrủ công
1.3 Định nghĩa ngôn ngữ' mö hình cho một miễn chuyên biệt
Định nghĩa một ngôn ngữ mô hình bao gồm ba dạng: các khái niệm miễn, ký hiệu
đỗ họa sử dụng dé dai diện cho các mô hình, và các luật dé hướng, dần tiên trình của
mô hình Định nghĩa một ngôn ngữ hoàn chính là một công việc khó nhưng đó là điểu
cẩn thiết nếu bạn muốn xây dựng một ngôn ngữ chuyên biệt cho tit ca Cong vide dé
để hơn đảng kế nếu bạn tạo nó duy nhật cho một miễn bài toàn trong một công ty,
Chia khóa cho việc tìm kiếm những khái niệm miễn là sự cung cấp kinh nghiệm bởi các chuyên gia miền Điền hình, chuyên gia là những người phát triển có kink nghiệm phát triển một vải sắn phẩm trong miễn đó, Lọ có thể thiết kế kiến trúc ding sau các sản phẩm, hoặc phải chịu trách nhiệm cho việc tạo ra các thư viện đổi hượng, Anh †a có thể dé dang nhận ra những khải niệm miễn từ các mô tả hệ thống va déi
tượng địch vụ
Trong ví dụ ứng đụng phone, các khái niệm miễn đến từ các thành phan Ul (ví dụ: Form,Popnp), menu và cau true cae button (các khỏa người sử đụng có thể định:
nghĩa) và các địch vụ ngầm (vi đự: text messages, web browsing) Bang những khái
niệm được gắn cho ngôn ngữ mỗ hình và có thể định ngk8a lại chúng trong tương Tai,
ll
Trang 20chúng ta có thể tạo một phan khái niệm của ngôn ngữ mỏ hình Mục tiêu ở dây lả tạo
ra sự lựa chon các khái niệm ánh xạ chính xác tới ngữ nghĩa của miễn
Tuy nhiên, các khái niệm miễn đơn ban đầu không tạo ra ngôn ngit mé hình: chúng ta cần kiến thức về miền: lam cách nào để ghép nổi chúng với nhau Với miễn
này, chứng ta chọn luồng ting đụng giống như mỏ hình cơ bản của sự tính toán Sự mô
tả các khải niệm miễn tuong lac nhs thé nao trong suốt qua wink ứng dụng thực thả (nhìn Hình 1-1 để mình chứng), Chúng ta giới thiệu các khái niệm của sự bắt dầu và kết thúc các luồng trực tiếp-có hoặc không có điểu kiện Các điều kiện được sử đựng khi người sử dụng có thể lựa chợn một trong những sự lựa chọn có thể, ví dụ thông
qua list hoặc một menu Chúng cũng thêm khải niệm cho code thư viện, tạo ra nó cỏ
khả năng liên kết trong một đổi tượng mở rộng trung gian và gọi chúng với các tham
số
'Tiếp theo, những khái niệm co ban thì được bổ sung với các luật của miễn Đặc
trưng, các luật ràng buộc sự sử đụng của ngôn ngũ bằng cáo định nghĩa các loại kết nổi
giữa các khải niệm là hợp lê.Chúng ta có thẻ dặc biệt hóa làm thể nào dễ chắc chân các khái niệm có thể được tái sử dựng va lam cách náo để các mô hình có thể được tổ
chức Trong vi đụ phone, các luật định nghĩa khi các phan tt UI có thế có sở hữu các
menus, cai ma co thé dinh nghữa các buttons bởi người sử dụng, và lâm cách nảo dễ các địch vụ phone khác nhau có thể được gọi trong quả trình thực thi ứng đụng Các
luật cừng với các khái niệm được đánh mã và cách điệu hỏa vào trong sự đặc tả ngôn
ngữ cái trả thường xuyên dược gọi như là tuột metsmodel Một metamodel mé td ngén
ngữ mô hình hóa, giống nhìm cách mô tả ngôn ngữ của một ứng đụng
Cung cấp phần chú thích cửa ngôn ngữ mô hình, chúng ta định nghĩa các biểu tượng dại điện cho giao diện đổ họa của các khái niệm miễn Giống như miễn ví dụ
của chúng ta dé 14 mdi quan hệ giao điện người đùng, chúng ta có thẻ đựa trên một số
biểu tượng đồ trên giao điện của phong
a.Định nghĩa domain trameworlc
Domain framework cung cap giao điện giữa quá trình sinh code và tắng nên đưới
Trong một số trường hợp, code ramework mở rộng không cần thiết: sự sinh cođk có
thể trực tiếp gọi các đối tượng nên vả các địch vụ của họ là đủ, Cho dù thể, định nghĩa
những code tiện ích amework mở rộng để tạo cho việc sinh code nhanh hơn Như
12
Trang 21vậy các dối tượng cĩ thể dã tồn tại từ kết quá của sự phát triển trước vả các sản phim mới được tạo tạo ra chỉ cần một ít sự tác động lên các đổi tượng đã cĩ
Trong ví dụ của chúng ta, tamework ứng dựng chuyên nghiệp Symbian/Series
60 đã đưa ra một tập các dịch vụ tốt, ở mức cao hon so voi nén Series 60.domain
#ramework như vậy chỉ thêm hai chức năng: một bộ điều phỏi đề thực hiện luồng logic
cửa ứng dụng, và hiển thự sự quản lý cho các ứng dụng rhiểu khung nhỉn
1.4 Phát triển sinh code
Sau cùng, chúng ta muốn dĩng khoảng trống giữa mơ hình và code bởi dinh
nghĩa cách sinh code Những vẫn để đặc biệt khi sinh eode là lắm cách nào các thơng
tì được đua ra từ cáo mơ bình và chuyển chúng vào trong cộc Code đĩ số được liên
kết với framework va bién dich thành cĩ khả năng thực thị cuối củng mà khơng càn bổ sung thêm các điều kiện một cách thủ cơng Code được sinh ra don giản lả một trung, gian Lừ sân phẩm trơng quả trình tới khi kết thúc sân phẩm giống như các file o trong
quả trình biển dịch C-
Chia khéa dua ra trong việc xây dựng một bộ sinh code là các khái niệm rơ hình
được ánh xa với code vhu thé nao Domain framework và thư viện đối lượng cĩ thế tạo ra các nhiệm vụ một cách dé dàng bằng cách tăng dần các mức trừu tượng phía
code Trong trường hợp đơn giản nhất, mỗi một biểu tượng mơ hình sản sinh ra oode
cố đỉnh, bao gồm các giả trị được nhập vào các biểu Lượng như lâ các tham số Hàn sinh cĩ thể sinh ra các code khác nhau phụ thuộc vào các giả trị trong các biểu tượng, các mỗi quan hệ nĩ cĩ củng với các biểu tượng khác, hoặc các thơng tin khác trong mơ
hình
1.8 Cách thực thi DSM
Để cĩ dược lợi ch DSM cải tiền về năng suất, chất lượng vả giảm di dộ phức tạp,
chúng ta cần một ngơn ngữ miễn chuyên biệt mơ tà miễn và bộ sinh code, Trước đây,
người thiết kế vẫn phải cần một cơng cụ hỗ trợ cải đặt, thực thí DSM hỗ trợ tắt cả các
tính năng đỏ
Ngày nay, cơng việc cân được giảm xuống để chỉ phải định nghĩa ngơn ngữ và
sinh ra code, từ khi các cơng cụ mơ hình cơ bản cho việc mơ hình hĩa và sinh ra code
được hình thành Các cơng cụ đỏ cho phép tạo ra một mỗi trường làm việc sẵn sang
13
Trang 22DSM trong nhiều ngày thay vi hàng tháng, các công cụ đó yêu cầu thêm vào lập trinh thủ công IIơn nữa điều quyết định là giữ được mỗi trường phát triển đáp ứng tới việc thay đối miễn: các công cụ có thế bảo trì các mô hình trong sự đẳng bộ với sự tiền hóa của ngôn ngữ và bộ sinh nên việc thiết kế công việc an toàn trong các điều kiện công, việc thật
14
Trang 23Chương 2—~ MỘT TIEP CAN VOI MO HINH MIEN CHUYEN BIET
Chuong 2 trinh bay một tiếp cân mô hình miền chuyên biệt bằng công, cụ thiết kế DSL của Microsoft Bồ cục của chương gồm 5 mục Mục 1 hướng dẫn định nghĩa một miễn chuyên biệt Mục 2 hướng dẫn tạo ra các luật trong miền Mục 3 hướng dan cach sinh mã Mục 4 hướng dan cách tạo giao diện hiển thị cho miền chuyên biết Mục 5
hướng dân cách tạo bộ cải đặt
2.1 Đặc trưng 1: Khả năng định nghĩa miền chuyên biệt
Đặc trưng nảy cho phép người sử dụng định nghĩa miền chuyên biệt bởi ngôn ngữ miền chuyên biệt bằng công cu Microsoft DSL Tools
2.1.1.Tạo một DSL Solution trong Visual Studio
New Project ->Nếu có cải Visual Studio SDK, trong phản Extensibility ->
Domain-Specific Language Designer
Domain:Specifïc | anpuage Desipner Wizar.i
Bey? Select Domain-Specific Lonauage Options
‘This ward yall walk youthrough the stops of creating a domatn-specfc language schon
Then crane enon mecel et nud Serf ew gate
Hinh 2-1 Domain-Specific Language Designer Wizard
Cac template bao gồm:
© Minimal Languages: Chi di thé hién m6t loai box va m6t loai line
15
Trang 24© Components Models: Cac box véi cae port
© Classes Diagrams: Tuong tự như lược đồ lớp UML (UML class
diagram)
© Task Flows: Tuong tự như lược dé hoat déng UML (UML activity
diagram)
Các mục tiếp theo là đặt tên cho ngôn ngữ và namespace ctia source code cho
trình thiết kế (đesigner) và các công cụ phát sinh (generation tools), ta cũng đặt tên cho
phân mở rộng tên file mả sẽ được sử dụng đẻ chứa các model (mô hình)
nit amen ecient khác wapeaan Te2M9AEbl
Code trong 2 project bao g6m 3 phan chinh:
© Trinh thiét ké (Designer) (hay ngén ngit ma ta dang định nghia) — Trinh
soan thao ma DSL user sé vé cac model
Trang 25+ _ Trình phát sinh mã (Code generators) — sẽ nhận lầy các model (mô hình)
và text Icmplale
* Trinh xuất bản (Serializer) — được thiết kế để lưu các model và trong các
file có phần mở rộng mà ta đặt tên lúc dầu và tải chúng lên một lan mia
Trinh Serializer duge sử dang trong trinh designer va trong trinh code
generator, va cé thé duoc str dung trong bat ctr img dung tách biệt nào
ma tac gia DSL chon dé vidt
a-Các thành phần trong DSL Solution:
Hai project duge lao lie ban diu bai DST creation wizard 14 Dsl va DsIPackage
Project Ds! cung cap
« Một scrializcr/descrialrzer (bộ xuất bãn/hủy xuất bản) dé dọc và ghi các thể hiện J2SL của bạn xuống le
«Những dinh nghia lop (class) để xử lý DSL và các lược đỗ của nó trong,
một ứng dụng
« Một bộ xử lý chỉ dẫn(chỉ huy directive processor) cho phép ban cé thé viết các text template mà sẽ xử lý DSL của bạn
+ _ Các thánh phản thiết yên của trình thiết kế mà sẽ biên tập (eđit) DSL này
trong Visual Studio
Project DslPackage cung cấp code cho phép 23L dược biên tập (edit) trong,
Visual Studio (Có thể viết một ứng dung stand-alone (dimg mét minh — riéng 1é) ma
xit ly DST chi si dung assembly digc tao béi project Dsl ) Những file này tương tự nhau nhu tong cdc 261 (pagkage) Visual Studio SDK khic
«Tài liệu (document) xử lý code nhận biết dược phần mỡ rộng file cha
DSL và mỏ trình thiết kế thích hợp
é DSL
+ Các menu lệnh (menu command) kết hợp với trình thiết
* Cac file ile template tir dé cde thé hién moi eda DSL 06 thé duce lao
ra
Trong di project, có một thư muc cé tén 1a GeneratedCode Thi mục mày chứa
cae file text template (phan mở rộng là tt), mỗi file có một le dược phát sinh (generated file) nhur 14 phan phu tro ctia nd Trong solution explorer click: vào dâu [ !]
đề thấy gencraled file Hau hét ede file text template có nhiều tham chiéu dén các
17
Trang 26immelude file (các file nảy được chửa trong thư mục cải đất DSL Tool cỏ tên là
Dé chạy được solution ta nhắn F5 (sẽ build solution và chạy trong ché dé debugging),
viée tuong duong vi menu lénh “Debug> Start Debugging” Ching ta sé xem DSL
trong 1 trinh thiét kế (trình biên tập đỏ họa) chạy chung với Visual Studio Khi nhân
F5 sẽ xuất hiện 1 thể hiện khác của Visual Studio, được khởi tạo để thể hiện 1 ví dụ
của D§L
Thể hiện mới của Visual Studio sẽ mở một project mẫu tên là Debugging, ta mé file
mö hinh là cỏ tên là Sample.* (vi du Sample.iss)
Hình 2-3: Project Debugging
Cita sé lớn nhất là màn hình thiệt kẻ, phần trình bảy chính của 1 thẻ hiện
DSL Ta phải biên tập lại việc định nghĩa DSL (trong the hién Visual
Studio chỉnh) đề cỏ thê thêm các định nghĩa của các thành phản Khi
toàn bộ DSL, làm việc và được triển khai, ngưởi sử dụng D§L sẽ về các
lược đồ của họ ở đây,
18
Trang 27* Bén trai 14 toolbox Dé thém một phản tử mới, ta đrag từ toolbox và kéo
vào diapram (lược đổ), Để lạo 1 mỗi kết nổi mới (comeeter) mới, la
click vao công cụ liên quan, click trên phần tử souree, sau dó lả phản tử đích trên lược đỏ Ta phải biên tập DSL đefiniien để mà có thể thay đổi
tên cửa công cụ vỏ nđử thêm Iool
+ Bên phai la model explorer Né hién thi model didi dang cây Nó hiến thị các phân tử (element) và các mối quan hệ nhủng của chủng, Trong,
một vai DSL, có nhiều phản tử không xuất hiện treng man hình thiết kế
chỉnh nhưng sẽ luôn xuất hiện trong model explorer
+ Solution explorer hiên thị project Debupging chứa file mẫu Ta có thế
dỗi tên project Khi nó được triển khai, các bản sao của project nay sẽ chạy củng với mã của ứng dụng mà ta viết cho Thêm các text template file mà sẽ đọc các thể hiện DSL của người sử đụng vả tạo ra code
+ Bên đưới là properties window đứng để thay đổi các thuộc tính của các phan tir duge chon,
2.1.2.Dinh nghia mit DSL
Để định nghĩa DSL ta m6 file DslDefinition.ds] trong project Dsl, sẽ mở ra trình thiết
ké DSL Trinh thiét ké trong giống như trình thiết kế của Minimal language hay bat ky DSL cu thé khac
Cửa số chính gồm 2 swimlane bay cột bên tay trải, lá mỏ hình miền là các domain
class va relationship, bén tay phai là oác shape và các oonnector mà thẻ hiện chứng lên
ác phản lử bằng cách sử dụng các công cụ ương inh thiết kế duy trì mốt sự trinh bảy dạng cây các phần tứ và các mỗi quan
man hink Ta có thể thêm mới
toolbox |
hệ của chúng, Cliek phai lén domain class, sẽ tìm được lệnh sắp xếp lại cây
Ta cửit tên của đomain class, shape, conneetor, đỉagram, role name (nhấn trên 2 cảnh
tay của mỗi relationship), và tên của relationslip Tắt cá co thẻ edit trực tiếp trên
diagram, ngoai tir role name
Dé thay đổi nhân xual bién wén 1 relationship role, edit tén eda role dé: dién
Để đổi tên của các công cụ sẽ xuất hiện trong †oolbox Những tên nảy không hiển thị
trong main diagram cia vie dink nghia DST — thay vao dé nhin vae DST explorer; sur
19
Trang 28định nghĩa các tool có thê dược tìm thây trong node Hditor, Tên của chúng có thể dược edit trong properties window cing vdi cac tooltip va tiéu dé ma sẽ hiển thị cho người
sử dung,
2.1.3.Định nghĩa mỗ hình miễn
Phần nảy mô tả làm thế nào để định rghữa mô lành miễn và một mô hình tuyển có
nghĩa gi trong vai trò của một công cu DSL duge phat sinh (generated DSL tool)
Tất cả các DSE, đều có một tô hình miền ö nhân của nó Nó định nghĩa các khai niém
được trinh bảy (đại diện — miễu tã) bởi ngôn ngữ, các thuộc tính của chúng, và các môi
quan hệ của chúng Tắt cá cáo người sử dụng 25L phải có kiến về những cải nảy tới một vài phàm vi, bởi vì tốt cả cáo phần tử họ lạo ra và thao tác trong khi sc dung DST
sẽ dược mô tả bỡi mỗ hình miễn Mô hình miễn giống như một ngữ pháp cho DSL, no định nghĩa các phân tử mà câu thành một raodel và đưa ra các luật để làm thể nào các phân tử này có thẻ được kết nổi với nhau
Mô hình miễn cũng cũng cấp các nên tăng cho việc xây dựng các khia cạnh khác cửa ngôn ngũ Việc định nghĩa cáo ký hiệu, toalbox, explarer, cửa số thuộc tính, việo xác đình tính hợp lê, sự xuất bản, và sự triển khai, tất cä đều đuợc xây đựng trên rõ hình Tiền Nó cũng được dùng đề phát sinh API có thể lập trình, ma bạn có thể sử đựng dé
tủy biến và mở rộng ngôn ngữ, và có thế truy cập từ các template đẻ phát sinh code và
cae arlifact nguyễn bấm khán,
Các thành phân cơ bán của mô hình miềnng khá đơn gián nếu bạn quen thuộc với thiết kế hướng đổi tượng hay lập trinh hướng đổi tượng,
2.2 Đặc trưng 2: Khả nàng định ngiữa các ràng buộc
3.2.1.Định nghĩa các leit
Một khải niệm quan trọng khác khi làm việc với các model trong store là các luật
Ghững ta sẽ gặp các luật này khi viết các tùy biến Mới luật được định ngiữa khi tác
giá DSL can lan truyền các thay dồi tới các phan tr trong store dé ma cdc phan nt khác cũng bị ảnh hưởng Vì đụ, các luật được sử dựng đỗ sữa các điagram một cách tự động bất cứ khi nào model thay đổi Bây giờ chúng ta sẽ chủ ý một vài điểu thiết yếu
sau:
Trang 29+ Luật là một class mà kể thừa từ AddRule, ChangeRtle, DeleteRule,
RolePlayerChangcdRule, hay một trong nhiều mục khác Phương hức
cỏ thể override này cung cấp một dối số má mang lại các chỉ tiết của sự
thay đối
+ Luật có một thuộc tính RuleOn chỉ ra lớp nào nỏ áp dụng trên đó,
«_ Luật dược thực thi với giao tác trong dó sự thay đối xuất hiện Nó có thể tạo ra các thay đối đề luật được áp dụng (được đưa vào hang đời để được
thực tủ)
Phái đăng kỷ custom rule nay rong lớp DomainModel
public partial class IssueStateMode!sDomainModel
+ Thay đối trên mô hình
* Tạo I ñle C# tong 1 thư mục tách biệt sát cạnh mã được phát sinh
(generated sodc), Ble nảy sẽ chứa † phẩn định nghữa class, thêm các phương thức xác nhận tình hợp lệ váo trong cáo class được phát sinh
(generated class)
2.3 Dac trung 3: Kha nang phat sinh code
Code (ma) cho trình thiết kế của DSL dược phát sinh từ file dink nghia D8L Đẻ thực
ign, vao solution explorer( trong, Visual Stadio chính) cliek vào mút “Iransfomm All
Templates” Tat ca cdc file ma sẽ được phát sinh.
Trang 30‘Hinh 2-5; Nut “Transform All Templates”
Sau khi biên tập việc định nghĩa DSL, luôn luôn nhân nút *Transform All Templates”
Thư mục “GeneratedCode” chứa các file text template với phân mở rộng là tt Mỗi
file có cỏ một file phụ trợ đó là kết quả được phát sinh Click dâu [+] để xem Các file
được phát sinh bao gồm cả C# và resource file Đừng thay đổi các file được phát sinh
(generated file)
Nhan F5 dé qua experimental Visual Studio (Debugging project) Thêm file mới vào project Debugging (menu lệnh “Add new item”), thêm vào nỏ các phan tử và môi
quan hệ
2.4 Đặc trưng 4: Khả năng trình diễn
Mục nảy mô tả cách làm thẻ nào dé dinh nghia presentation aspect — giao diện Đó là
lam thế nảo thông tin được mã hóa trong các model element bên dưới được hiển thị thông qua giao diện người dùng của trình thiết kể
Có 3 cửa số trong giao điện người dùng mà các thông tin được hiển thị: vàng thiết kế, model explorer, và cửa số thuộc tính
Việc định nghĩa khia canh trinh bay (presentation aspect — giao diện) bao gồm việc định nghĩa các ký hiệu đô họa trên vùng thiết kế, việc tủy biển sự xuất hiện của trình
explorer, và sự tùy biên sự xuất hiện của cửa số thuộc tỉnh
Phân phức tạp nhất là việc định nghĩa các kỷ hiệu đỏ họa, vì thể hằu hết chương nảy sẽ giải thích vẻ khia cạnh nảy Trinh explorer và cửa số thuộc tính sẽ giải quyết sau củng
Ký hiệu Dé hoa (Graphical Notation) — Téng quan
Một trình thiết kế đồ họa trình bảy (hiển thị) một vải element của một model trên ving
thiết kế thông qua một kí hiệu đỏ hoa ma str dung các shape (hinh) va cac connector (mối kết nối) Tất cả các phân tử (element) được tạo ra thông qua các menu mặc định
22
Trang 31trên explorer, vả các hình (shape) duoc tao ra trên điagram một cách tự động Nói
chung, việc tạo ra một model element (phần tử của mô hình) sẽ tự động tạo ra phân tử giao điện tương ứng (shape hay connector — hinh hay mỗi kết nổi)
File Edit View Project) Build Debug ste Teck Test Window Community Help
Basicawessh iSouire Contr mtores|
teModel (cue State Model) States:
‘Closed tssue State) Raised (seve State) Reiolved (isue Sute)
‘StatBlementd (Start Element)
Trem S8toœonE- Ñeuefne
ch CoWusevettedtdelseStaneDiagia +
(laa
|B Mw
(atabose Mame — My[Astabsse
Inst Type Mame Siteltode!
Namesrace Nome OKW.Stater
Hình 2-6: Thể hiện của một model trong đesigner kết quả
Các hình (shape) trên lược đỏ (điagram) được anh xa téi cac phan tir (element) trong
mô hình (model)
Cac hinh (shape) va môi kết nổi (conneetor) trong dinh nghia DSL (DSL definition)
có nhiều thuộc tính cho phép tủy bién mau sic va kiéu (style), kích thước ban đầu khi
shape được tạo ra lân đầu tiên, hình dáng hình học của shape, và v.v Bạn có thẻ
dinh nghia b6 trang tri van ban (text va iocn decorator) va icon cho các shape va moi
kết nồi Một text decorator (bộ trang trí text) được sử dụng đề hiện thị text, thường là
gia trị của một vải domain property bên dưới, với hay liên kể với một shape
Để cac model element trong DSL co thẻ được trực quan hỏa (visualize) trên diagram
(diagram surface) Ta cân phải định nghĩa:
© Loại (kind) và vẻ bề ngoải (appearance — sự xuất hiện) của các hình
(shape) mà sẽ được sử dụng để thẻ hiện (present) những phần tử (element) do
23
Trang 32® Một ánh xạ tù định nghĩa hinh (shape definition) toi domain class cia
các phần tử, mà sẽ điều khiển hành động sắp dil (placement behavior)
của một hinh (sbape) và điện mạo (appeareance) của trinh trang trí (đeecrator) bị ảnh hướng như thế nào khi dữ liệu thay đối
ét néi (connector) ma sé được sử dụng đẻ thể hiện
«- Môi ảnh xạ từ dịnh nghĩa conmeetor tới đomain relalionship cho các link,
sẽ xác định cách hảnh xứ kết nổi của một connector và diện mạo cửa
decorator bị ảnh hưởng như thể nào khi dữ liệu thay đối
Có nhiều loại shapc (vi dụ shape hình học và shapc hình ảnh) Shape hình ảnh biên thị
một hình ảnh cụ thể Một shape hình học hiển thị một shape với đường nét hình học bên ngoài như hình chữ nhật (người sử đựng DSL có thế resize)
Diagram va Editor
Việc định nghia ki kigu dé hoa được thực hiện trong ngữ cảnh của một diagram, sau
đó được tham chiếu bởi việc định nghĩa editor
Định nghĩa diagram và cdor xuất hiện như là các node trong DST explorer CA 2 node nay trong dinh nghia DSL due tao ra khi tao mét project DSL str dung project
template DST designer Néu bạn xéa no, c6 thé Lao lại nó
cao nhất (Dsl) trong DSL explorer va chon “Add Diagram” hay chon “Add Custom
Editor” /“Add Designer” tit menu nai cảnh
fing cach click én node cap
Diagram
Việc dịnh nghĩa diapram là một vật chửa (container) cho các shape map vá conector znap Lĩnh bên dưới trình bảy định nghĩa của địagram cho Issue State DSL,
Trang 33&-&> Connector Maps FillCetor CO waite
© Custom Type Descriptor (empty) Text Color man
© Domain Properties I Code
~% Element Merge Directives Access Modifier public
tị Dornain Classes Genemtes Double Derive False
& © Domain Relationships Hax Custom Constructo False
eS Dorinin Tyner Inheritance Modifier none
@ &,, Xml Serialization Behavior Nasa 'EoeSti4sDkore
Namespace €IKW.losueStatelModelz
II Documentation Notes
IB) Exposed Style Properties
Fill Color As Pro False
elar At Pr Fale
Description Description for CiKWassueStateMo
Display Nome TesueStateDiagram
Help Keyword lass Represented
Le) The cts of element represented by a diagram
(ap Team ,|EYSoluti [ROSE BZ Chass
Hình 2-7: Dinh nghia diagram cho Issue State DSL
Ciia s6 bén tay trai trinh bảy các phân tử con (sub-element) của định nghĩa diagram
trong DSL explorer, vả cửa số bên tay phải là các thuộc tính của định nghĩa DSL Các
thiết đặt thuộc tính được tôm tắt trong bảng sau
Appearance Các thiết đặt định nghĩa điện mạo trực quan ctia diagram,
nhu mau background
Code Các thiết đặt ảnh hưởng tới hình thức của code được phát
sinh cho diagram Tat cả các thiết đặt này được kẻ thừa từ
domain class, béi vi một định nghĩa diagram cũng lả một domain class
Definition Các thiết dat nay tương tư như của domain class(name,
namespace, base diagram), voi su bo sung thêm một thuộc
25
Trang 34tính đe chỉ rõ lớp của clemem được the hiện bởi một
liêu định nghĩa một thuộc tỉnh chứa các note (phi chú) về thiểt kế của DSI
Exposed Style | Đây là các thuộc tính chỉ dec va chi ra ting ed hay không
Propertics một thiết đặt kiểu trong muc appearance (nhu fill color)
có thể được thiết lập bỏi người sử dụng trình thiết kế đích trong cửa số thuộc tỉnh
Resources Các thuộc tính này cung cấp các tài nguyễn dang text
được sử dụng với giao diện của trình thiết kế đích Tải
nguyên được phát sinh trong le resx để mã chúng có thé
dược cục bộ hỏa cho các văn hóa khác nhau Một tử khỏa
để đrive T1 Telp trong trình thiết kế đích có thẻ được
cùng cấp
Editor
Bang 0-1: Cae mc thiét dai thuộc tính cho điagram
C6 2 loai editor: mot trinh thiét ké dé hoa (giao dién — graphical designer) va một trình
soạn thảo tùy biến Định nghĩa của một cditor xuất hiện trong node “Editor” trong,
JSL explorer Dữ liệu được định nghĩa ở đây được sử dụng để phát sinh ra các cái đặt
(implementation) của lớp EditorFactory, toolbox, và cáo hành động xác nhận tính hợp
lệ Mặc dịnh khi bạn tao ra một DSL authoring project ma str dung DSL designer project template, dinh nghĩa DSL định nghĩa một trình thiết kế (đesigner) như là một
trình soạn thảo của nó (editer)
Trình soạn thảo (một phần cla dinh ghia DST.) chứa định nghĩa cửa Ioolbox và hành
động xáo định tỉnh hợp lệ
Vi du: Dink nghia cia editor cho Tssue State DST dizgc chỉ ra trong hành sau
Trang 35fo) IssuestateModels (Dst) Microsoft VirualStudio Modeling DsiDefinition Designer +
tỳ ® Connectisn Ballderz wie
4) © Donain Refationships Editor Guid '660B836d-b23f-ea5-8de3-di
tạ-'Ê Domain Types Root Class IssveStateModel
{2} Validation (Validation) {6 Resources
9) 22] Bplorer Behavior | Filefstension iss
© Shapes
wb &, Xml Serialization Behavior == 1
Diagram
Diagram definition used for the designer
tem (SJseut E8 p4 E [E2 Cao:
Hình 2-8: Định nghĩa của editor cho Issue State DSL Các thuộc tỉnh của editor bao gỏm một tham chiếu tới *Root Class” mả liên kết với
đesigner (trình thiết kế) (ví đụ xuất hiện như là phân tử trên củng trong editor's
explorer được phát sinh) “Editor Guid” duoc sit dung trong code cho lép
EditorFactory duoc phat sinh
Trong mụe “Resources”, có các thiết đặt để định nghĩa phần mở rộng của file được sử
dụng để chứa các model cho DSL vả định nghĩa ieon liên đới với nhứng file đỏ (vi du,
trong Windows Explorer hay Visual Studio solution explorer)
Designer (Trình thiết kế)
Khi trinh soan thao (editor) la m6t trinh thiet ke (designer), co một entry bên dưới mục
định nghĩa trong cửa số thuộc tỉnh tham chiều tới lớp Diagram được sử dụng bởi trinh thiết kế (ví dụ, IssueStateDiagram) Root class liên đới với trình thiết kẻ vả lớp ma referenced diagram represent phải giỏng nhau Nếu chủng không giống nhau, một lỗi
xác định tỉnh hợp lệ trong DSL designer sẽ xuất hiện
Custom Editor(trinh soan thảo tùy biến)
Ta có the định nghĩa một trình soạn thảo tủy biển (là một trình soạn thảo không cỏ
diagram) Ta sé chon cach nảy nêu ving thiet ké dé hoa (graphical design surface)
khéng thich hop dé present (trinh bay) théng tin ma ban muén capture (dua vao) trong DSL của bạn Trong trường hợp nảy, ban phải tạo ra một control Windows Form dé
cung cap sw trinh bay tuy bién (custom presentation) ctia đữ liệu từ mô hình
27
Trang 36Để làm dược diễu này, xóa trình thiết kế dang dòng vai là một trình soạn tháo (chọn node Iđitor trong DSL explorer và nhẫn đelete) Và sau đó thêm vào một trình soạn
thảo tủy biến (với root node trong explorer được chọn, chọn “Add Custame Editor” va
thiết đặt các thuộc tính của nó,
Tất cứ khi nào bạn thay đổi định nghĩa DSL, click nit “Transform All Templates”
trong header của soluHien explorer Việc này sẽ tạo lại nội dưng của các [hư mục GencratedCode Sau dỏ sử dụng phím F5 dé complile lai code va chay trinh designer
để xem tác đụng của cáo thay đổi
Double click trên lỗ ế dẫn bạn tới đoạn code với những chỉ dẫn trên cái bạn phải
lam
Shapes(hinh)
Shape là những node của một kí hiệu đồ họa và duợc sử dụng đẻ trục quan hóa các
phân tử của một model Phản nay đi sau vào chỉ tiết của việc định nghĩa shape va
shape map
Kind of Shapes (Cc loai Shape)
Có 5 loại shape khác nhau: geometry shape (shape hinh hec) , compartment shape (shape ngăn ra từng phân), impae shape (shape hình ảnh), port (cống), và swirlane
Các thiết lập (categories of setting) áp dụng cho tất cả các shape tương bự như của Diagram, céng thém muc “Layout” Ching được tóm tắt trong bang sau:
Appearance Các thiết đặt định nghĩa giao diện trực quan của hình, như màu
sắc, đô đây của đường kể, v.v
Code Các thiết dại ảnh hưởng tới hình thức của code được phát sinh
của shape Tất cả các thiết đặt được kể thừa từ domaim class,
bởi vi các định nghĩa shape cing là định nghĩa domain olass
Definition Cáo thiết đặt nay tuong ty nh domain olasss (name,
namespace, base gcometry shape), véi viée thém mét thude tính tooltip định nghĩa các hành xử của tooltip khi hover trên một shape trong trình thiết kế đích
Documentation Như với nhiều phần tử khác trong mdt dinh nghia DSL, phar
documentation (tai ligu) dinh nghia một thuộc tình dễ chứa các
ncte về thiết ké cia DSL
28
Trang 37
Exposed Style | Tat c4 các thuộc tinh nay đến là chỉ dee (read-only) và chỉ ra Properties yang một thuộc tính kiểu trong muc appearance co thé dược
thiết đặt bởi người sử đụng của trình designer đích trong cửa số
thuộc tỉnh hay không (ví dụ f1 eolor), Phần này dược thảo luận
trong phân trước trong phần “Diagram”
Layout Các thuộc tính táo động đến layout (cach bổ trị) và kích thước
của shape
‘Resources Các thuộc lĩnh nảy cưng cấp các tải nguyên lexI và mage được
sử dụng với giao điện của trình designer đích Các tài nguyên
được phát sinh trong iile resx để mả chúng có thể đượ địa phương hóa cho nhiều nên văn hóa khác nhau
Thằng 0-2: Cúc calogorius selling cia shape
Geometry Shapes
Tinh 3-5 bén dui mé ta mét geometry shape Chon mat thiét đặt và các mô tả hiện ra
trong Chanh bén duit cia cửa số thuộc tỉnh
Image Shapes
Một image shape là một shape đừng để display một image hơn là mắt outine (đường,
niết bên ngoài) Một decorater (bộ trang tí) có thể là tủy chọn hay có nhiều decorator Jlinh sau thể hiện chỉ tiết một image shape duoc dinh nghĩa trong Task low DSL
template
Các thiết đất về outline và [NI area không ảnh hương đến về bễ ngoài của tmgae shape
Tuy nhiên có 2 setting liên qua tới image shape:
có các điểm kết nối (connection poin) Bắc-Nam-Đông-Tây Nếu là
True thì các giá trị mặc định, nếu là Ealse thì các rối nổi sẽ nói ở bất kì đầu dọc theo một hình chữ nhật vỡ hình
Trang 38Một port là một shape dinh kèm vào dường viên bẻn ngoài của một shape xả chỉ có thé di chuyển xung quanh đường viễn đó Dinh nghĩa của nó giếng như của geometry
shape.Hình sau minh họa một port
Swinlanes
Swimlane được sử dụng đẻ phân chia một diagram thánh các đông hay cột
Tình sau định ngÌữa một swimlane thẳng đứng,
Có các thiết đặt dễ thay dỏi về bể ngoài của swimlane header và scparator, cũng nlưư
thuc tính “Layout” xác định swimlane phan chia diagram thea chiéu doc hay chiéu
ngang Chiều rộng của horiomlal swimlane được lờ đã, chiều cao cia verueal
swimlane thường bị bố qua
Shape Inheritance
Cho phép kế thừa giữa các hình, với một bạn chế là một shape thuộc một loại chỉ có thể kế thừa từ một shape củng loại Một shape con sẽ kể thừa các decorator và
compartment (néu thich hợp) của base shape nhưng phải override cáo thuộc tính
appcaranoc, layout và rcsơurce với dữ liệu của nó Nếu bạn muốn nó giống basc shape thú phải set bằng tay
Shape Maps
Shape map dược sử dụng két hep shape class voi domain class Co compartment
shape, swimlane map va shape map cho geometry, port, va image shape
Mot khi duoc tao, m6t shape map duoc view va edit qua DSL detail window théng qua việc chọn nó, xơm tong “Diagram/Shape Map”
Mapping Definition Common fo All Shapes
compartment Thit hai la thong tứn hiện tại sẽ được địsplay cho méi clement Hép chon
“Lse custom element collection” thi generated code khéng được build, vả lỗi sẽ dẫn
bạn tới nơi có lỗi để xử lý.
Trang 39Ví dụ:
retum BilterlementsPromProjeotForMilestones(resull);
Phuong thức này được thêm vào một partial class viết tay của shape trong shape map
Mapping Ports
“Mapping port giéng nhu mapping geometry va image shape, parent element phai chi ra
m6 element duce map ma chap whan port (d6 la: geometry, compartment, hay mot
port shap khac (“Has custom parent clement” duge sct Truc), Néu khdug phải sẽ gặp
lỗi
Một Pơit không thế được xác định cho trên Điagram Trong ShapeMnp ánh xạn TuPorL
tới laPortShape, thi parent elenent path dân tới Component-Model, mả mapped shape
Ja ComponentDiagram
Thi mapping swimlanc, parenl path nén chi ra clement duge map li diagram (“Has
custom parent element” duge set la True) Nều không, sẽ c6 validation error
2.5 Đặc trưng 5: Kha nang cai dat
Một khi DSL và framework nó phát sinh đã được phát trên, chúng có thể được đóng gói trong 1 trình cải đặt và được phân phối dưới dang chuan 1a file msi (Windows installer), ‘Trinh cai dat bao gdm:
«Một trinh thiét ké, su phat hanh va cdc thanh phan xi ly text template
cho DSL
+ _ Một item template cho lệnh “Add new item” của Visual Studio, cho phép người sử dụng DSL tạo ra một thế hiện file mới của DSL trong một
project Visual Studio
+ Mét project template che lệnh "New Projeet" cho phép người sử dụng
D§UL tạo một thể hiện project mới trong đó DSL dược sử dụng bao g6m
tất cả các template phát sinh eode cho ứng dụng
* Cae assembly được biên dich ma can thiết cho ứng dụng dược phát sinh Điền hình các phan được phát sinh của một ứng dung có thế được tách biệt khôi các phần chưng không thay dỗi; cái sau có Hiể dược biển địch
trong dạng đó hơn là như là souree
Trang 40+ File readrme và license agreernent mà được hiến thị khi trình cải đặt được chạy
Với D§L Tool ta dé dang tao ra mét installer Mét project template “Domain-Speciic Language Setup” thi cling vi tri voi template “Domain-Specific Language Designer”,
ta 86 sir dung odi nay dé thém méi setup project vao trong solution, khi build sé lao ra
một file mãi Ta có thể tủy biến cái gì được chứa trong installer cũng như giao diện
hién thi khi file tsi duoc thực thị, bằng cách biển tập một ñile XMI (nó thực sự là
mot DSL file với củ pháp XML), và sau đó xử lý các tt trong project Sctup
Nếu máy tính khác chí có standard Visual Studio, không có Visual Studio SDK thì trình cài đặt sẽ tự động cái DSL Teol runtime và sau đó là cai DSL, Bay gid ta có thế
tạo, hiệu chinh, và sử dụng, các thê hiện của ngôn ngữ