Chương 1 tập chung tìm hiểu khái niệm và lợi í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 thi miền chuyên biệt. 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ề vấn đề sinh code có thể được xử lý theo cách xử lý tương tự với các ngôn ngữ lập trình trước đây.
Bằ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 là code nhìn thấy được (visualize code), mà là mô hình mô tả mức trừu tượng cao hơn ngôn ngữ lập trình. Tương tự, như trước đây việc chuyển sang 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: code Assembler (visualizing Assembler code) Trong mô hình miền chuyên biệt (DSM: Domain-Specific Modeling), các thành phần mô hình đại diện mô tả các đặc trưng trong thế giới miền, không phải như trong thế giới code. Ngôn ngữ mô hình tuân theo mức trừu tượng và ngữ nghĩa miền, cho phép người thiết kế mô hình biết được họ đang làm việc trực tiếp với khái niệm miền nào.
Các quy tắc của miền có thể được đưa vào ngôn ngữ lập trình 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 đề 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 hơn: 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 ứng dụng và sản phẩm.
Mọi miền đều 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 nên, các ngôn ngữ mô 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 so sánh và mua các sản phẩm bảo hiểm, tại sao lại không sử dụ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‟ và „Dammage‟ phản ánh những 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 (LUAN.cuoc TIEU LUAN MOI download : skknchat@gmail.cuoc đả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. Nhữ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 cùng (assembler, 3GL, object-oriented etc.) có thể vẫn được sinh ra từ các mức đặ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.Một số ví dụ về miền chuyên biệt Chúng ta sẽ tiếp tục minh họa lợi ích của DSM qua việc sử dụng các ví dụ thực tế.
Chúng ta chỉ ra ở đâ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ộ vi điều khiển 8bit. Những ví dụ này tập trung vào tính logic và hành vi 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 được tạo ra dễ dàng hơn. Những ứng dụng điện thoại Symbian Series 60 Hỗ trợ bạn phát triển những ứng dụng doanh nghiệp cho di động. Sau đó, những phát triển viên của bạn sẽ tạo ra các ứng dụng như: kiểm tra trạng thái kiểm kê, thứ tự, đăng ký sự kiện,.
Trước khi xây dựng bất kể một ứng dụng mới nào, thì người phát triển cũng đều phải thiết kế chúng trong miền chuyên biệt “phone”. Điều này kéo theo việc áp dụng những thuật ngữ và quy tắc của chiếc điện thoại, như là danh bạ, phím nóng, views, tin nhắn văn bản, và các hành động của người sử dụng. DSM sẽ áp dụng trực tiếp những khái niệm tương tự này trong ngôn ngữ mô hình. Một ví dụ của ngôn ngữ mô hình miền chuyên biệt được mô tả trong Hình 1-1.
Nếu bạn đã quen với một số ứng dụng phone, giống như phone book hoặc lịch, thì bạn gần như đã hiểu hết ứng dụng này dùng để làm gì. Một người sử dụng có thể đăng ký cuộc họp bằng cách sử dụ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 dựa trên các khái niệm miền, như Note, Pop-up, Text Message, Form, và các truy vấn. DSM sử dụng những widgets và services của đ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ô 3 (LUAN.cuoc TIEU LUAN MOI download : skknchat@gmail.cuoc 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 cụ 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. DSM cho thiết kế ứng dụng điện thoại di động 4 (LUAN.cuoc TIEU LUAN MOI download : skknchat@gmail. Sinh code và thực thi 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 mất đi 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 thì 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ụ Ví dụ này minh họa: làm thế nào để 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 trình của 5 (LUAN.cuoc TIEU LUAN MOI download : skknchat@gmail.cuoc 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 và các ràng buộc quan hệ đã được kiểm tra. DSM cho tiến trình nghiệp vụ 6 (LUAN.cuoc TIEU LUAN MOI download : skknchat@gmail.
Sinh các luồng công việc trong file XML Voice menus for an 8-bit microcontroller Ví dụ này minh họa một DSM sử dụng để phát triển danh bạ giọng nói - voice menus cho hệ thống tự động gia đình. Bởi vì thiết bị này 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ệ thống voice menu. DSM 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 logic truyền thông như là „Menu‟, ‟Prompt‟, và „Voice entry‟ thì tự nhiên hơn là nghĩ nó như các thuật ghi nhớ Assembler.cuoc TIEU LUAN MOI download : skknchat@gmail.cuoc 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 dù 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 thuần, như là: menu item, voice message and menu selection. Vì thế, bằng cách thay đổi 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ự. DSM for voice menu design 8 (LUAN.cuoc TIEU LUAN MOI download : skknchat@gmail.
Generated 8-bit code to microcontroller 1. 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 trì 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 (implementation 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ì dễ 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 code để tạo ra code.cuoc TIEU LUAN MOI download : skknchat@gmail.cuoc Giữ các đặc tả ở mức trừu tượng hóa cao hơn đáng kể so với mã nguồn truyền thống. Bởi vì 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, DSM 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.
DSM giảm bớt sự cần thiết của việc học ngữ nghĩa mới. Các khái niệm miền vấn đề (Problem domain concepts) đã được sử dụng phổ biến, thì những ngữ nghĩa dễ 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 vì ngữ nghĩa miền cụ 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ụ UML) và ánh 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ễ dấn tới lỗi, và đượ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àm tốt hơn, nhưng thường thì mọi người làm khác nhau.
DSM dẫn tới hệ thống chất lượng tốt hơn, phần lớn bởi hai lý do.