nhom2 domain specific language development

22
1 ĐẠI HC QUC GIA HÀ NI TRƯỜNG ĐẠI HC CÔNG NGHBO CO NGHIÊN CU KHOA HỌC Đ TI: DOMAIN-SPECIFIC LANGUAGE DEVOLOPMENT Ging viên hưng dn : Đng Đc Hnh Thc hiện: Nguyn Mnh Hng Đon Việt Hưng Hà Ni, ngy …. tháng … năm 2015

Upload: hung-nguyen-manh

Post on 15-Feb-2016

41 views

Category:

Documents


2 download

DESCRIPTION

,

TRANSCRIPT

Page 1: Nhom2 Domain Specific Language Development

1

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

BAO CAO NGHIÊN CƯU KHOA HỌC

ĐÊ TAI: DOMAIN-SPECIFIC LANGUAGE DEVOLOPMENT

Giang viên hương dân : Đăng Đưc Hanh

Thưc hiện: Nguyên Manh Hung

Đoan Việt Hưng

Hà Nội, ngay …. tháng … năm 2015

Page 2: Nhom2 Domain Specific Language Development

2

MUC LUC I.Ngôn ngư la gi? Domain-Specific Language(DSL) va Genaral-purpose language(GPL) ................................................................................................... 3

1.Khái niệm ngôn ngư ................................................................................ 6 2.So sánh GPL và DSL ............................................................................... 6

a.Ví dụ về GPL ........................................................................................ 6 b.Ví dụ về DSL ........................................................................................ 7 c.So sánh GPL và DSL ............................................................................ 7

II. Domain-Specific Language – Ngôn ngư miền chuyên biệt ............................. 8 1.Định nghĩa ............................................................................................... 8 2.Lơi ich ..................................................................................................... 8 2.1. Hiệu suất ............................................................................................. 9 2.2. Giao tiêp .............................................................................................. 9 3. Han chê va chi phi .................................................................................. 9 4.Cấu truc DSL ......................................................................................... 10

4.1.Abstract Syntax(Cú pháp trừu tương) .............................................. 10 4.2.Concrete Syntax(Cú pháp cụ thể) .................................................... 10 4.3.Semantics(ngư nghĩa) ..................................................................... 10

5.Phân loai DSL ......................................................................................... 11 5.1.Định nghĩa EXTERNAL DSL – INTERNAL DSL ................................ 11 5.2.So sánh Internal và External ............................................................ 12

6.Mô hinh xư ly DSL ................................................................................. 13 III. Phat triển ngôn ngư miền chuyên biệt ......................................................... 14

Quá trình phát triển DSL ........................................................................... 14 a.Lưa chon ............................................................................................ 14 b.Nghiên cứu ......................................................................................... 14 c.Thiêt kê ............................................................................................... 14 d.Thưc hiện ........................................................................................... 14 e.Thâm định .......................................................................................... 15

IV.Các phần mềm phát triển DSL ...................................................................... 15 1.XTEXT ................................................................................................... 15

a.Định Nghĩa.......................................................................................... 15 b.Môt sô tinh năng: ................................................................................ 15

2.XTEND .................................................................................................. 17 3.EMFTEXT .............................................................................................. 21 4.GMF - Graphical Modeling Framework .................................................. 21

V.Tham khao..................................................................................................... 22

Page 3: Nhom2 Domain Specific Language Development

3

LỜI MƠ ĐÂU

DSLs đã xuất hiện 1 thời gian dai nhưng phai đên vai năm gần đây,DSLs

mới danh đươc nhiều sư quan tâm. Môt vai năm gần đây, Java la 1 trong

nhưng ngôn ngư của tương lai va ngay ca khi Microsoft đưa ra thach thức

với C #, nhưng no vẫn là môt ngôn ngư kha tương tư java. Có nhiều thông tin

logic không thể biểu diên bơi cac ngôn ngư đo,điều đo la cơ sơ cho sư gia

tăng nhanh chong của XML. Ho mong muôn có môt ngôn ngư cho phép ban

định nghĩa từ vưng của ban và cung cấp môt cấu trúc manh hơn.Nhưng

nhiều người phan nan cac dấu ngoặc lam kho chịu. Ho mong muôn co đươc

nhưng lơi ích của XML mà không cần tôn chi phí quá nhiều như. Lập trinh

viên không co đủ kỹ năng cung như kỹ thuật về DSL để sư dụng no môt cach

hơp ly. Đo la ly do ma nhom chung em quyêt định nghiên cứu đề tai nay.

Mặc du chung em đã co nhiều cô găng trong qua trinh nghiên cứu nhưng

do kiên thức con nhiều han chê va chưa co nhiều kinh nghiệm nên kho tranh

khoi nhưng thiêu sot. Chung em rất mong nhận đươc nhưng y kiên đong gop,

phê binh của quy thầy cô va cac ban. Đo se la hanh trang quy gia giup

chung em hoan thiện kiên thức của minh sau nay.

Page 4: Nhom2 Domain Specific Language Development

4

DANH MUC CAC CHƯ VIÊT TĂT

KY HIÊU VIÊT TĂT CHƯ VIÊT ĐÂY ĐU

DSL DOMAIN – SPECIFIC LANGUAGE

GPL GENERAL – PURPOSE LANGUAGE

Page 5: Nhom2 Domain Specific Language Development

5

DANH MUC HINH ANH

Hinh 1. Abtract Syntax ................................................................................. 10 Hinh 2.Vi dụ External DSL ............................................................................ 11 Hinh 3.Vi dụ Internal DSL ............................................................................ 12 Hinh 4.Mô hinh xư ly DSL............................................................................ 13 Hinh 5.Xtext ................................................................................................. 15 Hinh 6.Vi dụ sư dụng Xtext .......................................................................... 16 Hinh 7.Phân tich cu phap ............................................................................ 16 Hinh 8.Sinh cac thanh phần cơ ban của ngôn ngư ...................................... 19 Hinh 9.EMFText ........................................................................................... 21

Page 6: Nhom2 Domain Specific Language Development

6

I.Ngôn ngư la gi? Domain-Specific Language(DSL) va Genaral-purpose language(GPL)

1.Khái niệm ngôn ngư

Ngôn ngư là hệ thông kí hiệu bao gồm: âm, từ và nhưng quy tăc

kêt hơp các từ đươc sư dụng lam phương tiện để giao tiêp với nhau

trong môt công đồng.

Vi dụ: Tiêng Việt, tiêng Anh la hai ngôn ngư khác nhau

Ngư pháp là quy tăc chủ yêu trong cấu trúc ngôn ngư. Mỗi ngôn

ngư có môt ngư pháp riêng biệt của nó.

VD: Chủ ngư + Vị ngư.

Từ khái niệm ngôn ngư trên ta có thể chia ngôn ngư trong khoa

hoc máy tính ra làm 2 loai chính là ngôn ngư có mục đich chung(GPL)

và ngôn ngư miền chuyên biệt(DSL)

2.So sánh GPL và DSL

a.Ví dụ về GPL

GPL là ngôn ngư có mục đich chung, môt ngôn ngư lập trinh đươc thiêt kê

để đươc sư dụng cho việc viêt phần mềm trong môt loat cac lĩnh vưc ứng

dụng.Môt sô GPL rất phổ biên hiện nay như C,C++,Java,PHP…

- Java

class HelloWorldApp {

public static void main(String[] args) {

System.out.println("Hello World!"); }

}

- C

#include <stdio.h>

int main(void)

{

printf("hello, world\n");

Page 7: Nhom2 Domain Specific Language Development

7

}

b.Ví dụ về DSL

DSL là ngôn ngư miền chuyên biệt,1 sô DSL quen thuôc chúng ta có thể kể

đên như SQL,HTML…

- SQL

CREATE TABLE Employee (

id INT NOT NULL IDENTITY (1,1) PRIMARY KEY,

name VARCHAR(50),

surname VARCHAR(50),

address VARCHAR(255),

city VARCHAR(60),

telephone VARCHAR(15),

)

- HTML

<html>

<head>

<title>Example</title>

</head>

<body>

<p>Example</p>

</body>

</html>

c.So sánh GPL và DSL

GPL

DSL

Miền Rông và phức tap Nho và dê định nghĩa

Kich thước ngôn ngư Lớn Nho

Page 8: Nhom2 Domain Specific Language Development

8

Tuổi tho Vai năm đên vài chục

năm

Vai thang đên vai năm

Công đồng sư dụng Rông Nho

Sư phát triển Nhanh Chậm

II. Domain-Specific Language – Ngôn ngư miền chuyên biệt

1.Định nghĩa

Môt ngôn ngư miền chuyên biệt (DSL) là môt ngôn ngư lập trinh

máy tính chuyên vào môt miền ứng dụng cụ thể. Ngôn ngư nay co mục

đich đặc biệt trai ngươc với cac ngôn ngư co mục đich chung (GPL).

No mô ta vấn đề ơ mức trừu tương cao hơn. DSL giup giai quyêt môt

cách hiệu qua toàn bô môt lớp các vấn đề tương tư nhau. Ta co thể

biểu diên băng textual (văn ban) hay graphical (đồ hoa)

Ranh giới giưa GPL và DSL không thưc sư ro rang.Ví dụ như 1

giao diện lập trình ứng dung lưu loat (Fluent API) đươc viêt bơi GPL

như C#,Java cung co thể coi là môt DSL

2.Lơi ich

DSL đem lai rất nhiều lơi ich trong việc phat triển cac dư an phần mềm

như:

- Tăng hiệu suất

- Tang chất lương phần mềm

- Dê thâm định

- Dê kiểm định

- Tăng kha năng giao tiêp giưa người lập trinh,người sư dụng cung như

các chuyên gia về miền

- Chi phi thấp

- Ngôn ngư DSL có thể chay ơ nhiều nền tang khac nhau

Co 2 lơi ich chinh ma chung ta cần phai chu y va cân nhăc để sư dụng DSL

Page 9: Nhom2 Domain Specific Language Development

9

2.1. Hiệu suất

Nhờ việc sư dụng cac khai niệm ơ mức trừu tương cao hơn nên

no đem lai cai nhin ro hơn về vấn đề. Cac dong Code suc tich, dê đoc,

it lỗi, dê bao tri. Khi cần, co thể sưa đổi hệ thông môt cach dê dang.

Đồng thời cac lập trinh viên cung không con phai viêt nhưng dong code

lặp đi lặp lai nham chan nưa ma se tập trung vao cac phần thu vị hơn

va cung se tiêt kiệm thời gian để viêt nhưng phần code chung giông

nhau.

2.2. Giao tiêp

Nhiều y kiên cho răng phần kho nhất khi phat triển môt dư an

phần mềm đo la giao tiêp với khach hang va người sư dụng. Băng cach cung

cấp môt ngôn ngư chinh xac, ro rang , co thể sư dụng như môt phương thức

giao tiêp thi chung ta co hoan toan cai thiện vấn đề nay.

DSL giup tăng cường kha năng giao tiêp với cac chuyên gia về

miền. Nhưng chuyên gia nay không trưc tiêp viêt mã xây dưng DSL

nhưng ho co thể dê dang đoc va hinh dung đươc y nghĩa của cac câu

lệnh va hiểu hệ thông đang lam gi. Ho co thể dê dang chi ra nhưng lỗi,

giup cac lập trinh viên cai thiện hệ thông thậm chi la ca DSL. Nhiều

người thậm chi con xây dưng môt DSL chi để mô ta hệ thông miền,

dung như môt khuôn mẫu để giao tiêp ma không cần cai đặt. Đây la

môt lơi ich vô cung to lớn va thiêt thưc của DSL.

3. Han chê va chi phi

Lý do duy nhất để ban không sư dụng DSL là ban không thấy đc lơi ích

của DSL với ban hay ít nhất ban k thấy đc gia trị khi xây dưng DSL.Không dê

dang để lam quen với môt ngôn ngư mới. Moi người cung chưa quen thuôc

với cach xây dưng 1 DSL và làm thê nao để nó phù hơp vs việc phát triển

phần mềm hiện nay. Ngoai ra, nhiều vấn đề về dsl xuất phát từ việc nhầm lẫn

giưa dsl với model. Môt vấn đề nưa đo la việc kho tich hơp DSL với cac hệ

thông hoặc ngôn ngư khac(so với việc tích hơp với môt GPL).

Chi phi ơ đây bao gồm chi phi của việc thiêt kê, thưc hiện cai đặt va duy

tri, bao tri môt ngôn ngư miền cụ thể cung như yêu cầu các công cụ để phát

triển nó (IDE). Việc tìm kiêm, thiêt lập, duy trì pham vi thích hơp. Kho khăn

trong việc cân băng thương mai giưa dsl va gpl. Chi phi gia tăng từ việc hoc

dsl là khá nho so vs việc hiểu các model. Thật vây,ngôn ngư dsl giúp dê dãng

HTML

<html>

<head>

<title>Example</title>

</head>

<body>

<p>Example</p>

</body>

</html>

Page 10: Nhom2 Domain Specific Language Development

10

hơn để hiểu và thao tác các mô hình,có 1 dsl se làm giam chi phí hoc tập sư

dụng model. Nhưng chung ta cung cần cân nhăc giưa chi phi của việc hoc

môt ngôn ngư mới so với áp dụng nó

4.Cấu truc DSL

4.1.Abstract Syntax(Cú pháp trừu tương)

Mô ta cấu trúc của ngôn ngư và cách thức kêt hơp của cac thanh phần,

đôc lập không phụ thuôc vao bất cứ đai diện cụ thể nao

Hinh 1. Abtract Syntax

4.2.Concrete Syntax(Cú pháp cụ thể)

- Mô ta cụ thể môt đai diện của ngôn ngư mô hình

Ví dụ

Var x:int;

calc y: int = 1 + 2 * sqrt(x)

4.3.Semantics(ngư nghĩa)

- Mô ta y nghĩa của các yêu tô xac định trong ngôn ngư va y nghĩa của

cac cach khac nhau để kêt hơp chúng

Page 11: Nhom2 Domain Specific Language Development

11

5.Phân loai DSL

5.1.Định nghĩa EXTERNAL DSL – INTERNAL DSL

- Môt external DSL la DSL tach biệt hoan toan với ngôn ngư lập trinh

chinh với cu phap va môi trường riêng.

Hinh 2.Vi du External DSL

DSL

Grammar

DSL

Text

conforms to

DSL

Text

Internal DSL 1

Internal DSL 2

Host Language

Page 12: Nhom2 Domain Specific Language Development

12

- Môt internal DSL la môt DSL năm bên trong môt ngôn ngư co mục đich

chung (GPL). Sư dụng môt sô tinh năng của GPL theo môt cach đặc

biệt để xư ly môt vấn đề nho. Kiểu ngôn ngư nay bị giới han ca về cấu

truc lẫn cu phap quy định bơi ngôn ngư chủ.

Hinh 3.Vi du Internal DSL

Điều gì làm cho môt internal DSL khác môt API binh thường?

VD: Ruby cung đã phat triển ngôn ngư DSL kha manh: Nhiều thư

viện của Ruby đi theo phong cach của DSL. Đặc biệt, framework nổi

tiêng nhất của ruby, Rails, thường đươc xem như la môt bô sưu tập các

DSL.

5.2.So sánh Internal và External

Internal

- Lập trinh đơn gian hơn

- Nhưng sư dụng khá han chê

External

- Sư dụng linh hoat hơn

- Lập trình khá phưc tap

- Dê thich nghi với nhiều ứng dụng

Page 13: Nhom2 Domain Specific Language Development

13

6.Mô hinh xư ly DSL

Hinh 4.Mô hinh xư ly DSL

Để xư lý môt ngôn ngư DSL,đầu tiên phai xây dưng kịch ban DSL sau khi

phân tích cú pháp ta se đươc mô hình ngư nghĩa từ đo co thể dung để sinh

mã nguồn tư đông tuy thuôc mục đich sư dụng

Page 14: Nhom2 Domain Specific Language Development

14

III. Phat triển ngôn ngư miền chuyên biệt

Quá trình phát triển DSL

Hinh 5. Phân tich miên

a.Lưa chon

- Tao mới hoặc tái sư dụng miền đã co

- Cho phép người dùng không có kỹ thuật tham gia

b.Nghiên cưu

- Xac định miền của vấn đề

- Thu thập kiên thức về miền từ người dung.

- Mô hình hoa Domain: Pham vi, từ vưng, các khái niệm

c.Thiêt kê

- Xac định các thành phần DSL (cú pháp trừu tương và cụ thể, ngư

nghĩa)

- Quyêt định phương phap tôt nhất để cai đặt các ngôn ngư

d.Thưc hiện

- Phát triển các thành phần DSL (Xtext, EMFText, GMF,...)

- Nêu no đươc thưc thi, phát triển các trinh thông dịch hoặc trình biên

Page 15: Nhom2 Domain Specific Language Development

15

dịch tương ứng

e.Thâm định

- Kiểm tra ngôn ngư

- Thâm định ngôn ngư với người dùng cuôi

IV.Các phần mềm phát triển DSL

1.XTEXT

a.Định Nghĩa

- La môt Framework hỗ trơ phat triển DSL văn ban theo hướng ngư

phap.

- Là môt phần của dư án Eclipse Modeling

- Mô ta cu phap cụ thể

- Dưa trên bô phân tich cu phap.

b.Một sô tinh năng:

- Tuy chinh mau săc cu phap

- Hỗ trơ khi biên tập code

- Tìm và sưa lỗi nhanh

- Tương thich với JVM

- Tích hơp với các công cụ Eclipse khác

Hinh 5.Xtext

Môt ví dụ về xây dưng ngư pháp trong etext.

Xây dưng ngư pháp về 1 lời chào(greeting) bao gồm từ “Hello” va 1

tên(name) có kiểu dư liệu là ID và cuôi câu là 1 dấu chấm than (‘!’).

Page 16: Nhom2 Domain Specific Language Development

16

Hinh 6.Vi du sư dung Xtext

Trong file test,chung ta đã xây dưng đươc 2 câu chao đo la “Hello world!”

va “Hello Hung!”.Câu “Hello abc” bao lỗi do không thưc hiện đung ngư

pháp(thiêu dấu chấm than(‘!’)).

Hinh 7.Phân tich cu phap

Page 17: Nhom2 Domain Specific Language Development

17

2.XTEND

Có thể sư dụng để sinh mã java tư đông cho Xtext. Sau đây la môt vi

dụ sư dụng Xtend:

Bước 1: Xây dưng ngư phap cho ngôn ngư của ban

Ơ đây chung ta xây dưng môt ngư phap cho môt DSL mô hinh hoa

thưc thể va cac tinh của no

Luật đầu tiên luôn đươc sư dụng để mơ đầu

No quy định răng ‘Domainmodel’ chứa môt sô lương tuy y ‘Types’

đươc thêm vao tinh năng ‘elements’

Luật Type quy định type co thể la kiểu DataType hoặc môt thưc thể

Entity

Page 18: Nhom2 Domain Specific Language Development

18

Luật DataType băt đầu băng từ khoa ‘datatype’, theo sau la môt định

danh đươc phân tich cu phap bơi luật ID. Luật ID đươc định nghĩa

trong org.eclipse.xtext.common.Terminals. Gia trị tra về khi goi luật ID

đươc gan cho ‘name’

Luật Entity băt đầu băng từ khoa ‘entity’ theo sau bơi môt ‘name’ tương

tư như trên.

Tiêp theo đo, co môt mệnh đề mơ rông đươc đặt trong ngoặc đơn va

bên canh la dấu ‘?’ nghĩa la tuy chon không băt buôc. Khi ‘superType’ tham

chiêu tới môt ‘Entity’ thi luật nay không thưc sư đươc goi ơ đây, chi co luật

ID đươc thưc thi. Luật ‘Entity’ đươc tham chiêu chi thưc sư thưc thi trong

qua trinh liên kêt. Cuôi cung la ơ giưa hai dấu ngoặc nhon la môt sô tuy y cac

‘Features’ đươc định nghĩa sau đây

Từ khoa ‘many’ đươc sư dụng để thể hiện môt tinh năng đa trị. Toan tư

‘?=’ chi ra răng tinh năng ‘many’ thuôc kiểu boolean

Tom lai, ngư phap trên sư dụng gần như tất ca cac khai niệm quan

trong trong ngư phap của Xtext. Để sư dụng ngôn ngư trên ta phai tao ra cac

Page 19: Nhom2 Domain Specific Language Development

19

thanh phần cơ ban của no.

Hinh 8.Sinh cac thanh phân cơ ban cua ngôn ngư

Bước tiêp theo ta sư dụng IDE tich hơp vừa đươc tao ra cho ngôn ngư

của chung ta để biên tập code. Tao môt file mới với phần mơ rông la tên của

DSL ma chung ta vừa tao ơ trên sau đo sư dụng ngôn ngư mới để biểu diên

miền.

Page 20: Nhom2 Domain Specific Language Development

20

Cuôi cung la dung Xtend viêt môt công cụ sinh mã nguồn. Tim file

DomainmodelGenerator.xtend trong goi org.example.domainmodel.generator

va sưa nôi dung thanh như sau

Chi cần vao project viêt băng DSL phia trên va tao môt folder mới mang

tên ‘src-gen’ la Xtend se tư đông sinh cac file va nôi dung bên trong đươc quy

Page 21: Nhom2 Domain Specific Language Development

21

đinh trong file DomainmodelGenerator.xtend phia trên

Vi dụ: HasAuthor.java

3.EMFTEXT

- La môt framework hỗ trơ phat triển DSL dang văn ban theo hướng mô

hinh.

- Phat triển như môt trinh hỗ trơ tich hơp trong Eclipse

- Tinh năng chinh:

- Tuy chinh mau săc cu phap

- Hỗ trơ khi biên tập code

- Tìm và sưa lỗi nhanh

- Cơ chê sưa lỗi tham chiêu

Hinh 9.EMFText

4.GMF - Graphical Modeling Framework

- La môt framework phat triển trinh biên tập dang đồ hoa dưa trên EMF

va GEF theo hướng mô hinh

- La môt phần của dư an Mô hinh hoa Eclipse

Page 22: Nhom2 Domain Specific Language Development

22

- Công cấp bô công cụ sinh ra cac DSL tooling

- Tao môi trường thuận lơi cho việc phat triển DSL dang đồ hoa

V.Tham khao

[1] Martin Fowler. Domain Specific Languages, Addison-Wesley

Professional, 2010.

[2] Markus Voelter. DSL Engineering -- Designing, Implementing and

Using Domain-Specific Languages, 2013.

[3] Javier Luis Cánovas Izquierdo. Domain-specific Languages, 2013.

[4]XTEXT–Documentation

<https://eclipse.org/Xtext/documentation/index.html>