Giới thiệu:
DSL Tools và một phần của Visual Studio SDK, có thể download từ http://www.microsoft.com/downloads/details.aspx?familyid=51A5C65B-C020-4E08-8AC0-3EB9C06996F4&displaylang=en nếu bạn dùng Visual Studio 2005 và http://www.microsoft.com/downloads/details.aspx?familyid=30402623-93CA-479A-867C-04DC45164F5B&displaylang=en nếu bạn dùng Visual Studio 2008.
DSL Tools tích hợp trong Microsoft Visual Studio 2005 và Microsoft Visual Studio 2008 để hỗ trợ một hướng phát triển phần mềm có tên là Domain-Specifc Development.
Domain-Specific Development dựa trên sự quan sát rằng: nhiều
vấn đề phát triển phần mềm có thể được giải quyêt dễ dàng bằng cách
thiết kế một ngôn ngữ mục đích đặc biệt (special-purpose language).
Ví dụ, hãy nghĩ đến việc tìm kiếm tất cả sự xuất hiện của một mẫu (pattern) trong một file, và làm một cái gì đó với mỗi sự xuất hiện mà bạn tìm thấy?
· Cách 1: Sử dụng lớp .NET System.Text.RegularExpression.Regex, biểu thức chính qui (regular expression) (?<user>[^@]+)?<host>.+)
được áp dụng cho một chuỗi các kí tự sẽ tìm các địa chỉ email trong nó,
và cho mỗi địa chỉ tìm thấy, gán chuỗi con ngay trước dấu”@” cho biến
user, và chuỗi con ngay sau dấu “@” cho biến host.
· Cách 2: Nếu không có regular expresion, một developer sẽ phải viết
một chương trình đặc biệt để nhận ra các pattern (mẫu) và gán các giá
trị đúng cho các biến thích hợp. Đây là một nhiệm vụ khá nặng và sẽ gặp
nhiều lỗi.
Domain-Specific Development áp dụng cùng hướng tiếp cận trên cho nhiều vấn đề, đặc biệt là những vấn đề bao gồm việc quản lý sự phức tạp của các hệ thống phân tán hiện đại ( ví dụ như những thứ có thể được phát triển trên .NET platform ).
Thay vì chỉ sử dụng các ngôn ngữ lập trình mục đích chung
(general-purpose programming language) để giải quyết những vấn đề này mỗi cái tại một thời điểm, người sử dụng
Domain-Specific Development tạo và cài đặt các ngôn ngữ đặc biệt, mỗi
ngôn ngữ giải quyết một cách hiệu quả toàn bộ một lớp các vấn đề tương tự nhau.
Các
Domain-Specific Languaguage có thể là textual (text) hay graphical (đồ
họa). Các ngôn ngữ đồ họa có các thuận lợi quan trọng hơn các ngôn ngữ
text trên nhiều vấn đề, bởi vì chúng cho phép giải pháp được trực quan
hóa một cách rất trực tiếp trên các diagram. DSL Tools làm cho việc cài
đặt DSL đồ họa trở nên dễ dàng, và cho phép Domain-Specific Development được áp dụng cho một phạm vi rộng và cho nhiều vấn đề.
Domain-Specific Development
Domain-Specific
Development là một cách giải quyết các vấn đề mà bạn có thể áp dụng khi
một vấn đề cụ thể xuất hiện lặp đi lặp lại.
Mỗi sự xuất hiện
của vấn đề có nhiều khía cạnh giống nhau, và mỗi phần có thể được giải
quyết một lần và cho tất cả (xem Figure 1-1).
Các khía cạnh khác nhau của một vấn đề được thể hiện bởi một ngôn ngữ đặc biệt. Mỗi sự xuất hiện cụ thể đó được giải quyết bằng cách tạo ra một model hay biểu thức trong ngôn ngữ đặc biệt và gắn model này vào trong phần cố định của solution.
Phần cố định của solution được viết sử dụng các thiết kế, coding và testing truyền thống, phụ
thuộc vào kích thước và hình dạng của vấn đề, phần cố định này của
solution có thể được gọi là một framework, một platform, một trình thông
dịch, hay một Aplication Programming Interface (API). Phần cố định
capture các mẫu kiến trúc mà hình thành nên domain và đưa ra các điểm mở rộng cho phép nó được sử dụng trong nhiều solution.
What makes
the approach applicable is the fact that you create the variable part
of the solution by using a special-purpose language—a DSL.
DSL có thể là văn
bản hay đồ họa. Vì công nghệ cho domain-specific development đã hoàn
thiện, chúng ta mong đợi thấy các công cụ hổ trợ việc phát triển và tích
hợp của các DSL text và đồ họa. Con người có một dãy các cảm giác về loại
ngôn ngữ nào mà họ thích hơn. Ví dụ, nhiều người thích các ngôn ngữ
text cho input, bởi vì họ có thể gõ nhanh, nhưng các ngôn ngữ đồ họa cho
ouput, bởi vì có thể dàng xem “bức tranh lớn” (big picture) trong một
diagram. Các biểu thức text thì dễ tính toán sự khác biệt và dễ kết hợp hơn, trong khi các biểu thức đồ họa thì dễ thấy các mối quan hệ hơn.
Để tạo ra một giải pháp hoạt
động cho vấn đề được chỉ ra, phần cố định của giải pháp phải được tích
hợp với phần thay đổi được thể hiện bởi model. Có 2 hướng tiếp cận phổ
biến cho việc tích hợp này.
· Thứ nhất, là hướng tiếp cận trình diễn, mà phần cố định chứa một trình thông dịch cho DSL được sử dụng để thể hiện phần thay đổi. Một hướng tiếp cận như thế có thể linh hoạt, nhưng nó có thể có các bất lợi về việc thể hiện kém và khó khăn trong việc debug.
· Thứ
hai, một biểu thức đặc biệt hay diagram (biểu đồ) có thể được convert
một cách đầy đủ thành code và có thể được biên dịch cùng với phần còn
lại của giải pháp – đó là hướng tiếp cận phát sinh code. Đây là một thủ tục biến đổi phức tạp hơn, nhưng nó cung cấp các thuận lợi trong khả năng mở rộng, biểu diễn, và debug.
Các DSL đồ họa không chỉ là các diagram. Nếu bạn chỉ muốn tạo ra các diagram, bạn có thể sử dụng các chương trình vẽ diagram
nổi tiếng như Microsoft Visio để đạt được kết quả lớp thứ nhất
(first-class result). Thay vào đó, bạn đang thực sự tạo ra các model thể
hiện một cách khái niệm hệ thống mà bạn đang xây dựng, cùng với các sự
thể hiện bằng biểu đồ nội dung của chúng. Một model được thể hiện đồng
thời bởi một hay nhiều diagram, với mỗi diagram thể hiện một khía cạnh đặc biệt của model, xem Figure 1-2 để thấy rõ hơn
>>Phần 2
No comments:
Post a Comment