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

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 dữ liệu cước

98 1 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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 Dữ Liệu Cước
Tác giả Nguyễn Văn Dũng
Người hướng dẫn TS. Đặng Đức Hạnh
Trường học Trường Đại Học Công Nghệ Hà Nội
Chuyên ngành Công nghệ Thông Tin
Thể loại Luận văn Thạc sĩ
Năm xuất bản 2011
Thành phố Hà Nội
Định dạng
Số trang 98
Dung lượng 2,04 MB

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

Nội dung

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 3

Tà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 4

Tờ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 6

Danh 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 7

Danh 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 8

Hì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 9

MỞ ĐẦ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 10

Chươ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 12

hì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 13

index = 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 14

cá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 15

Ry 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 16

Bồ 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 17

n|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 18

Giữ 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 20

chú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 21

vậ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 22

DSM 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 23

Chươ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 26

immelude 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 31

trê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 34

tí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 35

fo) 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 38

Mộ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 39

Ví 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ữ

Ngày đăng: 21/05/2025, 19:59

HÌNH ẢNH LIÊN QUAN

Hình  1-2.  Sinh  code  vả  thực  thí  code  theo  mục  đích - 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 dữ liệu cước
nh 1-2. Sinh code vả thực thí code theo mục đích (Trang 13)
Hình  1-5.  DSM  for  voice  menu  design - 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 dữ liệu cước
nh 1-5. DSM for voice menu design (Trang 16)
Hình  2-2:  M6t  DSL  Solution - 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 dữ liệu cước
nh 2-2: M6t DSL Solution (Trang 24)
Hình  2-3:  Project  Debugging - 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 dữ liệu cước
nh 2-3: Project Debugging (Trang 26)
Hình  2-6:  Thể  hiện  của  một  model  trong  đesigner  kết  quả - 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 dữ liệu cước
nh 2-6: Thể hiện của một model trong đesigner kết quả (Trang 31)
Hình  2-7:  Dinh  nghia  diagram  cho  Issue  State  DSL. - 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 dữ liệu cước
nh 2-7: Dinh nghia diagram cho Issue State DSL (Trang 33)
Hình  2-8:  Định  nghĩa  của  editor  cho  Issue  State  DSL - 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 dữ liệu cước
nh 2-8: Định nghĩa của editor cho Issue State DSL (Trang 35)
Hình  3-11.  Luu tr@ va truyén  file  AMA. - 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 dữ liệu cước
nh 3-11. Luu tr@ va truyén file AMA (Trang 49)
Hình  3-13.  Đưa  dữ  liệu  ra  ngoài  theo  phương  pháp  giảm  bộ  đệm  động - 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 dữ liệu cước
nh 3-13. Đưa dữ liệu ra ngoài theo phương pháp giảm bộ đệm động (Trang 51)
Hình  3-17.  Thiết  lập  vùng  copy  trong  file  ghí  vòng. - 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 dữ liệu cước
nh 3-17. Thiết lập vùng copy trong file ghí vòng (Trang 55)
Hình  3-19.  Cấu  trúc  gói tin  AMA - 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 dữ liệu cước
nh 3-19. Cấu trúc gói tin AMA (Trang 56)
Hình  323.  Quy  trình  tổng  thể  rủa  hệ  thẳng  (hu  thập  và xử lý  số  liệu - 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 dữ liệu cước
nh 323. Quy trình tổng thể rủa hệ thẳng (hu thập và xử lý số liệu (Trang 67)
Hình  3-28.  Quy  trình  load  dữ  liệu. - 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 dữ liệu cước
nh 3-28. Quy trình load dữ liệu (Trang 83)
Hình  3-30.  Mô  hình  vật  lý  của  hệ  thống  thu  thập  và  xử  lý  dữ  liệu - 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 dữ liệu cước
nh 3-30. Mô hình vật lý của hệ thống thu thập và xử lý dữ liệu (Trang 86)
Hình  3-31.  Định  nghĩa  miền  định  đạng  file  cước  tổng  đài - 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 dữ liệu cước
nh 3-31. Định nghĩa miền định đạng file cước tổng đài (Trang 90)

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

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

w