Xác định các thành phần logic của ứng dụng và các đối tượng mô tả từng vấn đề, Các thành phần này sẽ được sử dụng để đánh giá xem các mẫu nào là phù hợp cho thiết kế ứng dụng.
a. Tiến trình
Tìm các thành phần: Khi sử dụng các yêu cầu phân tích của ứng dụng như đầu vào để bắt đầu phân tích các yêu cầu này nhằm xác định các vấn đề cần giải quyết. Người ta tìm kiếm các chức năng mà ứng dụng cần cung cấp, và sau đó khái quát thành vấn đề cần phải hướng đến. Trong bước này, sẽ rất hữu ích nếu xem xét đến các ca sử dụng và phát triển một biểu đồ ca sử dụng mà trong đó cho ta ngữ cảnh của hệ thống cần được thiết lập. Biểu đồ ca sử dụng này sẽ chỉ ra các ca sử dụng chính để nắm bắt được các yêu cầu chức năng, các mối quan hệ và sự tương tác giữa chúng với các tác nhân ngoài. Các ca sử dụng được làm tài liệu bằng cách sử dụng tài liệu văn bản và các biểu đồ tương tác đã thu được mà trong đó các thành phần logic và các đối tượng đã được xác định. Đặc biệt, một ca sử dụng được thực hiện bằng một biểu đồ tương tác chỉ ra luồng các sự kiện chính và và các luồng sự kiện phụ của biểu đồ để đặc tả các các luồng sự kiện thay thế và luồng ngoại lệ. Biểu đồ này cũng chỉ ra các đối tượng bên trong và các sự kiện bên trong cần thiết cho việc thực thi ca sử dụng này.
Gán trách nhiệm cho các thành phần: cho mỗi ca sử dụng hay mỗi chức năng mà hệ thống trợ giúp.
Mối quan hệ với kiến trúc phần mềm: Có một sự tương tự giữa hoạt động này với tiến trình xác định một kiến trúc ứng dụng trong bất kỳ một phương pháp luận phát triển nào. Kỹ thuật mô tả kiến trúc phần mềm bao gồm một vài hoạt động sau:
Xác định tập các thành phần của ứng dụng cùng với các trách nhiệm chức năng của chúng.
Xác định các kết nối và các mối quan hệ giữa các thành phần ứng dụng.
Phân tích các hành vi của hệ thống như sự tương tác giữa các thành phần. Trong giai đoạn phân tích của POAD chúng ta quan tâm nhiều hơn đến nhiệm vụ đầu tiên là xác định các thành phần và trách nhiệm chức năng của chúng.
Lặp lại với các hoạt động phân tích khác: Trong suốt tiến trình phân tích của POAD những định nghĩa không rõ ràng của thành phần khái niệm thường không được sử dụng vì rất khó tìm được các mẫu. Phương án tốt nhất là chia hệ thống thành các hệ thống con, sau đó với mỗi hệ thống con thì tập các thành phần khái niệm được xác định dựa trên các vấn đề cần giải quyết và các chức năng cần hỗ trợ
b. Sản phẩm
Sản phẩm của bước này là tập các thành phần khái niệm (package), ca sử dụng của chúng và các trách nhiệm của chúng.
2.2.3.4 Làm quen bước đầu
Mục đích của hoạt động này là để các nhà phân tích làm quen bước đầu với các giải pháp đang tồn tại trong lĩnh vực ứng dụng này. Đối tượng này giúp các nhà phân tích định danh được tập có thực các thành phần có thể làm thỏa mãn các yêu cầu của ứng dụng, tức là tập các thành phần mà có thể triển khai khi sử dụng các giải pháp cụ thể và có thực đang tồn tại.
Hoạt động này là một tiến trình mà nhờ nó nhà phân tích tự làm quen với các mẫu đang tồn tại có trong cơ sở dữ liệu. trong tiến trình này, nhà phân tích nhận được các hiểu biết về những giải pháp đã có trong lĩnh vực ứng dụng.
Trong POAD có hai hoạt động gắn với quản lý cơ sở dữ liệu mẫu rất quan trọng đó là: hoạt động làm quen bước đầu và tìm và lấy ra mẫu
Kết quả của hoạt động này là những hiểu biết thu được về các giải pháp đã từng được sử dụng để giải quyết các vấn đề tương tự vấn đề ta gặp phải trong khi phân tích yêu cầu ứng dụng. Những kiến thức sẽ giúp xác định các thành phần có thể được thực hiện bằng cách sử dụng các mẫu trong cơ sở dữ liệu mẫu.
2.2.3.5 Tìm và lấy ra các mẫu
Mục đích của hoạt động tim, lấy ra các mẫu (Retrieval) này là lấy ra được các mẫu ứng viên từ cơ sở dữ liệu mẫu để sử dụng trong giai đoạn tiếp theo.
Hoạt đông này tập trung vào vấn đề: lựa chọn một mẫu từ danh mục của các mẫu thiết kế như thế nào? Danh mục mẫu thường lưu dạng của cơ sở dữ liệu mẫu: các mẫu có mục đích chúng hay trong một lĩnh vực cụ thể. Nói một cách ngắn gọn thì cơ sở mẫu chính là đầu vào của giai đoạn phân tích.
Trong tiến trình phân tích có hai hoạt động cần liên hệ với cơ sở mẫu là : làm quen bước đầu và tìm và lấy ra. Làm quen bước đầu được định nghĩa như là trình duyệt qua các mẫu trong cơ sở dữ liệu mẫu. Việc tìm và lấy ra các mẫu từ cơ sở dữ liệu mẫu tượng tự vấn đề tìm và lấy ra một tài sản phần mềm từ thu viện tài sản mà tài sản là các mẫu thiết kế còn thư viện là cơ sở dữ liệu mẫu.
Sản phẩm cuối cùng của hoạt động này là tập các mẫu ứng viên. Hoạt đông tiếp theo sẽ dựa trên kết quả này để đưa ra các mẫu thiết kế sử dụng trong giai đoạn thiết kế.
2.2.3.6 Lựa chọn mẫu
Mục đích của hoạt động lựa chọn mẫu là lựa chọn các mẫu đáp ứng đầy đủ các trách nhiệm của mỗi thành phần khái niệm mà được xác định từ việc xác định yêu cầu của ứng dụng. Các mẫu này sẽ được sử dụng trong giai đoạn thiết kế của phương pháp POAD để xây dựng các khung nhìn mức mẫu.
Tiến trình lựa chọn mẫu giống như kỹ thuật đạt đến giải pháp giải quyết vấn đề. Các vấn đề được xác định qua tập thành phần và trách nhiệm của chúng được xác định từ hoạt động phân tích yêu cầu của ứng dụng. Các giải pháp này được xác định bằng được cung cấp từ việc tìm và lấy mẫu. Quá trình lựa chọn mẫu là tiến trình đạt đển giải pháp (mẫu thiết kế) cho các vấn đề và trách nhiệm của các thành phần khái niệm.
GoF đã đưa ra một số đề xuất trong vấn đề lựa chọn một mẫu trong danh mục hai mươi ba mẫu chung của họ [Gamma et al 1995]. Những đề xuất này dựa trên kết quả thực nghiệm và lập luận của người thiết kế.
Kiểm tra xem mẫu giải quyết vấn nào bằng cách duyêt qua phần giải pháp và đánh giá xem giải pháp mà mẫu cung cấp có thể sử dụng để giải quyết vấn đề đang có không.
Duyệt phần nội dung, mà trong đó mô tả vấn đề là cái gì và có tương tự vấn đề đang có hay không.
Nghiên cứa xem các mẫu có liên quan với nhau như trhế nào. Tìm kiếm các mẫu tương tự hoặc các mẫu thường được sử dụng theo cặp, theo nhóm.
2.2.4 Thiết kế hướng mẫu
2.2.4.1 Tổng quan
Trong giai đoạn này, sử dụng các mẫu trong tập mẫu đã được lựa chọn qua giai đoạn phân tích làm cơ sở xây dựng bản thiết kế đầu tiên.
Giai đoạn thiết kế gồm ba hoạt động chính:
1. Xây dựng sơ đồ mức mẫu thể hiện cấu tạo chung của các mẫu. 2. Xây dựng sơ đồ chi tiết thể hiện mối quan hệ giữa các mẫu.
3. Xây dựng sơ đồ chi tiết ứng dụng với cấu tạo bên trong của các mẫu.
Giai đoạn này tạo ra các mô hình thiết kế. Các loại mô hình thiết kế và các yếu tố sử dụng trong mô hình sẽ được sử dụng trong chương này với mục đích phát triển mô hình thiết kế hướng mẫu.
2.2.4.2 Mục đích của việc thiết kế hướng mẫu
Mục đích của giai đoạn thiết kế là sử dụng các mẫu thiết kế làm đơn vị cơ sở để tạo ra các bản thiết kế của ứng dụng. Bắt đầu từ tập các mẫu đã được lựa chọn trong giai đoạn phân tích.Chi tiết của giai đoạn thiết kế gồm :
Thiết kế tổng quát ứng dụng từ một hoặc nhiều sơ đồ mức mẫu.
Thiết kế giao diện dựa trên mối liên hệ giao diện giữa các mẫu.
Thiết kế chi tiết ứng dụng dựa trên cấu tạo bên trong của các mẫu.
2.2.4.3 Cấu trúc mẫu
Mục đích của giai đoạn này là tạo ra mô hình thiết kế của ứng dụng dựa trên các mẫu thiết kế.
a. Tạo các thể hiện của mẫu
Trên cơ sở các tài liệu mô tả mẫu về cấu tạo, các vấn đề mẫu giải quyết, các thành phần mẫu trong ngữ cảnh sử dụng phù hợp với mô hình ứng dụng hiện tại, đối chiếu mỗi mẫu với các trường hợp sử dụng trong thực tế, từ đó tiến hành định danh mẫu theo hai bước:
Thứ nhất xác định tên ứng dụng cụ thể (định danh) của mẫu và loại của mẫu, tên này sẽ được sử dụng trong suốt quá trình thiết kế.
Thứ hai là gắn các thuật ngữ ứng dụng cụ thể cho các thành phần bên trong của mẫu, các thuật ngữ này cũng được sử dụng trong suốt quá trình thiết kế chi tiết.
b. Nhiều thể hiện của cùng một kiểu
Người thiết kế có thể sử dụng nhiều định danh cho cùng một loại mẫu. Định danh của mẫu là để phân biệt các mẫu trong mô hình thiết kế.
c. Xác định các mối quan hệ giữa các thể hiện của mẫu
Sau khi định danh mẫu, bước tiếp theo là xác định mối quan hệ giữa các mẫu này. Trong phương pháp POAD thì mối quan hệ giữa các mẫu định danh là phụ thuộc. Người thiết kế sẽ quyết định là có hoặc không có quan hệ phụ thuộc giữa các mẫu.
Rất khó để hiểu mối quan hệ giữa các mẫu nếu chỉ dựa trên các thể hiện tĩnh của ứng dụng. Các kết quả thu được từ phân tích ứng dụng sẽ hỗ trợ việc xác định mối quan hệ giữa các mẫu. Các nhà thiết kế có thể sử dụng ngữ cảnh UML hoặc sơ đồ tương tác để làm thể hiện mối quan hệ giữa các mẫu. Hoặc có thể sử dụng các tài liệu mẫu thu được từ quá trình phân tích bao gồm các mô tả về các thành phần ứng dụng và chức năng của chúng…Nói chung có một số kĩ thuật mà người thiết kế có thể sử dụng để xác định quan hệ giữa các mẫu như tìm hiều về các trạng thái của hệ thống, hành vi của đối tượng, sơ đồ đối tượng, …
d. Phát triển các biểu đồ mức mẫu
Trong suốt quá trình định danh mẫu và xác định quan hệ giữa các mẫu định danh, người thiết kế có thể phát triển sơ đồ mức mẫu. Sơ đồ này thể hiện các định danh mẫu và quan hệ giữa chúng. Sử dụng mô hình UML để biểu diễn sơ đồ mức mẫu. Sơ đồ mức mẫu là một biểu diễn của mẫu, nó bao gồm các kí hiệu và cú pháp thể hiện. Sơ đồ mức mẫu thể hiện các định danh mẫu và quan hệ giữa các định danh.
e. Hệ thống con và các khung làm việc
Người thiết kế có thể xây dựng sơ đồ mức mẫu cho toàn bộ ứng dung. Với các ứng dụng lớn và phức tạp, ta nên chia ứng dụng thành tập các hệ thống con hay khung làm việc. Khi đó, người thiết kế có thể xây dựng sơ đồ mức mẫu cho từng khung làm việc một. Khi không thể phân tích hệ thống theo một tập các mẫu do giới hạn của thư viện mẫu thì việc sử dụng khung làm việc là cần thiết. Khung làm việc kết hợp với sơ đồ mức mẫu là phân tích chi tiết ở mức thiết kế thấp hơn trong mô hình hướng đối tượng truyền thống như sơ đồ lớp.
f. Sản phẩm
Sản phẩm của giai đoạn này là sơ đồ mức mẫu của ứng dụng hoặc của mỗi hệ thống con hay khung làm việc.
2.2.4.4 Cấu trúc các mô hình mức mẫu chi tiết
Mục đích của hoạt động này là dựa vào sơ đồ thể hiện mẫu tìm hiểu cấu trúc bên trong của mẫu, từ đó xây dựng sơ đồ lớp của ứng dụng.
Tiến trình thực hiện:
a. Khai thác cấu trúc mẫu
Trong hoạt động này, người thiết kế tìm hiều về sơ đồ lớp bên trong mẫu dựa trên sơ đồ thể hiện mẫu. Trong môi trường phát triển tích hợp (IDE) hỗ trợ POAD, hoạt động này thường được thực hiện tự động và người thiết kế sẽ nhận được sơ đồ lớp của mỗi mẫu.
Người thiết kế cần tìm hiều các tài liệu mẫu, các thành phần cụ thể bên trong sơ đồ lớp và cách giải quyết các vấn đề thiết kế. Những hiểu biết thu được từ hoạt động này rất hữu ích cho việc xây dựng sơ đồ lớp cho toàn thể ứng dụng.
b. Những khía cạnh động là rất quan trọng
Hướng hoạt động của mẫu giúp người thiết kế hiều cách mà các thành phần bên trong mẫu liên hệ với bên ngoài, các tài liệu này tuy không đóng vai trò quyết định trong mô hình thiết kế ứng dụng nhưng lại rất quan trọng đối với sơ đồ lớp bên trong mỗi mẫu.
Trong POAD, sơ đồ lớp là giai đoạn gần với mức mã nguồn nhất, mỗi lớp trong sơ đồ tương ứng với một lớp trong mã ứng dụng, các ngôn ngữ hướng đối tượng đều hỗ trợ lớp trong xây dựng mã chương trình. Còn chuỗi các sự kiện, tương tác, đối tượng,… không tương ứng một một với mã chương trình, nhưng có vai trò thực hiện các phương thức trong mỗi lớp.
Một phần của hoạt động này là việc tìm hiểu hoạt động và vai trò của mỗi thành phần cụ thể, nó sẽ giúp người thiết kế hiểu sâu các chi tiết bên trong mẫu để giải quyết các vấn đề ứng dụng cụ thể.
c. Sự thực hiện các giao diện
Mỗi mẫu có một tập các thể hiện, các thể hiện có thể là phương thức hoặc lớp. Người thiết kế cần xác định các thành phần thiết kế bên trong thực thi các thể hiện này. Mỗi thể hiện trong sơ đồ thể hiện mẫu tương ứng với một dấu hiệu bên trong thiết kế mẫu. Môi trường IDE sử dụng phần kết nối để chỉ ra liên hệ giữa thể hiện và các thành phần bên trong mẫu. Bộ phận kết nối này thường đơn giản như UML thực thi quan hệ giữa thể hiện với lớp trong sơ đồ lớp.
f. Sản phẩm
Sản phẩm của giai đoạn này là sơ đồ mẫu chi tiết sử dụng làm đầu vào trong các giai đoạn thiết kế sau
2.4 UML trợ giúp các mẫu thiết kế
UML là sự cố gắng hợp nhất nhiều kỹ thuật mô hình hóa hướng đối tượng. Một phương pháp luận phát triển trong mô hình hướng đối tượng cần tận dụng tối đa các mô hình UML sẵn có. Tuy nhiên, không phải trong bất kỳ trường hợp nào cũng sử dụng cú pháp và ngữ nghĩa của mô hình UML đang tồn tại để mô tả các mô hình cho phương pháp luận phát triển cụ thể. Phân tích viên và người làm phương pháp luận tập trung nỗ lực kết hợp và mở rộng UML với cú pháp và ngữ nghĩa được yêu cầu cho phương pháp luận phân tích và thiết kế cụ thể. Có hai cách mở rộng khả năng mô hình hóa UML.
Cách thứ nhất và cũng là cách đơn giản nhất là sử dụng cơ chế mở rộng UML. UML cung cấp một vài cơ chế mở rộng cho nhiều cấu trúc mô hình hóa khác nhau như rập khuôn, ràng buộc, khai báo thẻ, và gán giá trị thẻ. Cách thứ hai khó hơn, là thêm các cấu trúc mô hình hóa mới vào ngôn ngữ. Phương pháp này được thực hiện tại mức siêu mô hình mà ở đó khái niệm trình diễn cấu trúc mới có liên quan đến các khái niệm UML khác được định nghĩa trong siêu mô hình UML. Các nhà thiết kế thường được khuyến cáo sử dụng phương pháp thứ nhất.
Cách thứ hai sử dụng các cấu trúc UML khác nhau để diễn tả cùng một khái niệm. Ví dụ, để mô hình hóa mẫu thiết kế trong UML, thiết kế viên tận dụng các cấu