Đặt vấn đề kỹ thuật sang một bên, mỗi đối tượng trong thiết kế đóng vai trò một khái niệm được mô tả trong mô hình. Có nhiều cách trừu tượng hóa một miền và cũng có nhiều cách thiết kế có thể giải quyết vấn đề của ứng dụng. Đây chính là thứ làm cho việc liên kết chặt chẽ mô hình và thiết kế trở nên thực tế. Liên kết này không khiến cho mô hình phân tích bị suy yếu, tổn hại bởi việc xem xét các yếu tố kỹ thuật; hay phải chấp nhận các thiết kế phản ánh ý tưởng miền vụng về nhưng không sử dụng các nguyên tắc thiết kế phần mềm.
Khi một mô hình dường như không phù hợp với thực tế cài đặt hoặc không thể hiện một cách trung thực các khái niệm thì mô hình đó nên được thay thế. Do đó, quy trình mô hình hóa và thiết kế trở thành một vòng lặp tiếp tục. Yêu cầu liên kết chặt chẽ giữa mô hình miền và thiết kế cung cấp thêm một tiêu chí cho việc lựa chọn các mô hình hữu ích trong vô số mô hình có thể có. Từ mô hình, thuật ngữ được sử dụng trong thiết kế và phân công công việc.
Mã nguồn trở thành sự thể hiện của mô hình, vì vậy, một sự thay đổi mã nguồn có thể là một thay đổi mô hình. Ảnh hưởng của nó chắc chắn sẽ lan ra hoạt động còn lại của dự án. Việc gắn cài đặt với mô hình thường yêu cầu các công cụ và ngôn ngữ phát triển phần mềm hỗ trợ mô hình hóa như lập trình hướng đối tượng. Thiết kế hướng mô hình là trái tim của thiết kế hướng miền [2].
mô tả các thành phần cơ bản cấu thành nên thiết kế hướng mô hình.1: Các thành phần cơ bản của thiết kế hướng mô hình [2] Trong các phần tiếp, các thành phần cơ bản này sẽ được trình bày một cách chi tiết. Cô lập miền Trong phần mềm, việc giải quyết các vấn đề cụ thể từ miền thường chỉ chiếm một phần nhỏ trong toàn bộ phần mềm mặc dù nó rất quan trọng. Các thành phần của mô hình cần được xem xét như một hệ thống và các đối tượng miền cần được tách biệt khỏi các chức năng khác của hệ thống để tránh gây nhầm lẫn khái niệm miền với khái niệm khác chỉ liên quan đến công nghệ phần mềm. Các kỹ thuật phức tạp cho sự cô lập này đã xuất hiện.
Đây là nền tảng vững chắc, quan trọng đối với việc áp dụng thành công các nguyên tắc mô hình hóa miền từ quan điểm hướng miền [2]. Có rất nhiều cách phân chia một hệ thống phần mềm, nhưng trong ngành công nghiệp phần mềm, kiến trúc phân tầng (layer) được sử dụng rộng rãi. Nguyên tắc cơ là bất kỳ thành phần nào của một layer chỉ phụ thuộc vào các thành phần khác trong cùng layer hoặc layer bên dưới. Mặc dù có nhiều biến thể nhưng hầu hết các kiến trúc thành công đều sử dụng một số phiên bản của bốn layer khái niệm sau: 7 Hình 1.2: Kiến trúc phân lớp [2] Tầng giao diện người dùng Chịu trách nhiệm cho việc hiển thị thông tin cho người dùng và diễn giải các lệnh của người dùng.
Tác nhân bên ngoài đôi khi có thể là một hệ thống khác chứ không phải con người. Tầng ứng dụng Định nghĩa các công việc mà phần mềm sẽ thực hiện và điều khiển các đối tượng miền giải quyết các vấn đề. Các nhiệm vụ của layer này là phối hợp các xử lý cho tương tác với các layer ứng dụng của các hệ thống khác. Tầng nghiệp vụ Chịu trách nhiệm cho việc biểu diễn các khái niệm, thông tin về nghiệp vụ trong hệ thống.
Logic nghiệp vụ được điều khiển và sử dụng ở đây, mặc dù các chi tiết kỹ thuật lưu trữ nó được giao cho cơ sở hạ tầng. Tầng cơ sở hạ tầng Cung cấp khả năng kỹ thuật chung hỗ trợ các layer cao hơn như: gửi các bản tin cho ứng dụng, sự tồn tại lâu bền cho miền, vẽ các widget cho UI, … Layer này cũng có thể hỗ trợ mô hình tương tác giữa bốn layer thông qua một nền tảng kiến trúc. Khi cơ sở hạ tầng được cung cấp dưới dạng các dịch vụ được gọi thông qua các giao diện thì nó khá trực quan (layer làm việc như thế nào và làm sao để duy trì liên kết lỏng lẻo giữa các layer). Nhưng một số vấn đề kỹ thuật đòi hỏi nhiều dạng cơ sở hạ tầng hơn nên các nền tảng tích hợp nhiều cơ sở hạ tầng thường được yêu cầu cho các layer khác.
Khi áp dụng một nền tảng, các mục tiêu phải cần được tập trung là xây dựng một cài đặt thể hiện cho một mô hình miền và sử dụng nó để giải quyết các vấn đề. Kiến trúc phân tầng được sử dụng trong hầu hết các hệ thống hiện nay theo các sơ đồ phân tầng khác nhau. Tuy nhiên, thiết kế hướng miền chỉ yêu cầu một tầng cụ thể phải tồn tại đó là tầng nghiệp vụ. 8 Mô hình miền là một tập hợp các khái niệm.
Tầng nghiệp vụ là sự thể hiện của mô hình đó và tất cả các thành phần thiết kế trực tiếp liên quan đến. Thiết kế và cài đặt logic nghiệp vụ tạo thành tầng nghiệp vụ. Trong thiết kế hướng mô hình, các cấu trúc phần mềm của tầng nghiệp vụ phản ánh các khái niệm mô hình. Nói cách khác, mô hình được tồn tại trong tầng nghiệp vụ.
Để thu được mô hình miền trong khi logic miền được trộn lẫn với các mối quan tâm khác của chương trình là không thực tế. Việc cô lập cài đặt miền là một điều kiện tiên quyết cho thiết kế hướng miền. Mô hình được thể hiện trong phần mềm Để hài hòa với cài đặt mà không làm mất điểm mạnh của một thiết kế hướng mô hình yêu cầu phải tập hợp lại các nền tảng cơ bản. Kết nối mô hình và cài đặt phải được thực hiện trong nhiều mức chi tiết.
Đầu tiên là những vấn đề liên quan đến thiết kế và tinh giảm các liên kết. Liên kết giữa các đối tượng rất đơn giản để tưởng tượng và vẽ ra, nhưng cài đặt chúng là một vũng lầy tiềm ẩn. Các liên kết minh họa các quyết định triển khai chi tiết, quan trọng đối với khả năng tồn tại của thiết kế hướng mô hình. Tự mình chuyển sang đối tượng, nhưng tiếp tục xem xét mối quan hệ giữa các lựa chọn mô hình chi tiết và các mối quan tâm đến cài đặt, ba mẫu của các thành phần mô hình được sử dụng để thể hiện mô hình: thực thể, đối tượng của giá trị và các dịch vụ [2].
Xác định các đối tượng nắm bắt các khái niệm miền dường như là rất trực quan bên ngoài, nhưng ẩn dấu nhiều thử thách nghiêm trọng bên trong sắc thái ý nghĩa. Một số khác biệt đã xuất hiện, làm rõ nghĩa của các thành phần mô hình và gắn vào khung của thiết kế để tạo ra các loại đối tượng cụ thể. Một đối tượng có đại diện cho một thứ gì đó có tính liên tục, có định danh và theo dõi được thông qua các trạng thái khác nhau hoặc thậm chí các cài đặt khác nhau; hay nó là một thuộc tính mô tả trạng thái của thứ gì khác. Đây là sự khác biệt cơ bản giữa thực thể và đối tượng của giá trị.
Việc xác định rõ ràng các đối tượng theo một pattern làm cho đối tượng ít mơ hồ hơn và đưa ra phương hướng cho việc lựa chọn một thiết kế tốt nhất. Sau đó, các khía cạnh của miền được thể hiện rõ ràng hơn dưới dạng hành động hoặc hoạt động chứ không chỉ là đối tượng. Mặc dù là một xuất phát nhỏ từ mô hình hướng đối tượng truyền thống, nhưng tốt nhất, thể hiện chúng dưới dạng các dịch vụ thay vì buộc phải gán trách nhiệm cho một hoạt động trên thực thể hay đối tượng của giá trị. Một dịch vụ là thứ gì đó được thực hiện do client theo yêu cầu.
Cuối cùng, mô-đun được sử dụng để dẫn đến quan điểm rằng mọi quyết định thiết kế nên được thúc đẩy bởi một số hiểu biết sâu sắc về miền. Ý tưởng về sự gắn kết chặt chẽ và gắn kết lỏng lẻo thường được coi là các tiêu chí kỹ thuật có thể được áp dụng cho chính các khái niệm đó. Trong thiết kế hướng mô hình, mô-đun là một phần của mô hình và chúng nên phản ánh các khái niệm trong mô hình. Các liên kết Sự tương tác giữa mô hình hóa và các cài đặt đặc biệt phức tạp do những liên kết 9 giữa các đối tượng.
Một mô hình cho thấy liên kết giữa một khách hàng và đại diện bán hàng tương ứng với hai thứ. Một là nó trừu tượng quan hệ giữa hai người thực, hai là nó tương ứng với một con trỏ giữa hai đối tượng Java; hoặc một sự đóng gói của tra cứu cơ sở dữ liệu. Ví dụ, một liên kết one-to-many có thể được cài đặt như một tập hợp các instance của đối tượng. Nhưng thiết kế không cần thiết quá rõ ràng.
Có thể không có tập hợp nào; một phương thức truy nhập truy vấn cơ sở dữ liệu để tìm các bản ghi phù hợp và khởi tạo các đối tượng dựa trên chúng. Tất cả thiết kế cùng phản ánh cùng mô hình. Thiết kế phải xác định một cơ chế truyền tải cụ thể mà hành vi của nó nhất quán với liên kết trong mô hình. Các thực thể Thực thể được biết đến là đối tượng tham chiếu.
Nhiều đối tượng không được xác định một cách cơ bản bởi các thuộc tính của chúng mà bởi một chuỗi liên tục và định danh. Ví dụ, một người có định danh kéo dài từ khi sinh ra đến khi chết đi và thậm chí sau đó. Các thuộc tính vật lý của người đó biến đổi và cuối cùng biến mất, thuộc tính của người có thể thay đổi nhưng danh tính luôn tồn tại. Mô hình hóa đối tượng có xu hướng tập trung các thuộc tính của một đối tượng nhưng khái niệm cơ bản của một thực thể là một chuỗi liên tục trừu tượng hóa qua một vòng đời và thậm chí đi qua nhiều trạng thái.
Đối tượng đại diện cho một chuỗi định danh qua thời gian. Đôi khi, một đối tượng phải được khớp với một đối tượng khác mặc dù thuộc tính của chúng khác nhau. Một đối tượng phải được phân biệt với đối tượng khác dù chúng có thể có cùng thuộc tính. Nhần lẫn định danh có thể dẫn tới những sai hỏng dữ liệu.