2.1 .Tổng quan về FRAMEWORK
2.1.4. Phân loại khung làm việc
Các khung làm việc hƣớng đối tƣợng có thể phân loại theo nhiều chều khác nhau, trong đó những chiều quan trọng nhất là miền vấn đề mà khung làm việc trỏ tới, cấu trúc bên trong của khung làm việc và việc nó đƣợc dự định sử dụng nhƣ thế nào.
2.1.4.1. Phân loại khung làm việc theo vùng vấn đề
Việc phân loại khung làm việc theo vùng vấn đề chia các khung làm việc thành ba loại là các khung làm việc ứng dụng, các khung làm việc miền ứng dụng và các khung làm việc trợ giúp.
Một khung làm việc ứng dụng là một tập các thành phần với một thiết kế ứng dụng có thể đƣợc sử dụng lại. Điều này có nghĩa rằng, ngƣời dùng không những nhận đƣợc một tập con mã chức năng mà còn có đƣợc cả một thiết kế về cách mà chúng làm việc nhƣ thế nào. Nhƣ vậy, một khung làm việc ứng dụng có thể cung cấp nhiều tính năng hơn các thƣ viện hàm, và hơn nữa chúng còn phụ thuộc vào nhau.
Đối với một nhà phát triển, việc sử dụng một khung làm việc ứng dụng khác với việc sử dụng một thƣ viện. Với một thƣ viện, nhà phát triển viết mã để gọi các hàm có trong thƣ viện. Nhƣ vậy anh ta sẽ phải chịu trách nhiệm cho cách mà các thành phần khác tƣơng tác với nhau. Còn khi sử dụng một khung làm việc ứng dụng, nhà phát triển viết mã để khung làm việc ứng dụng gọi tới. Nhƣ vậy khung làm việc ứng dụng chịu trách nhiệm cho sự tƣơng tác giữa các thành phần. Ví dụ của khung làm việc ứng dụng là khung làm việc cho các giao diện ngƣời dùng. Khung làm việc ứng dụng đƣợc sử dụng lại trong nhiều ứng dụng của nhiều nhà phát triển khác nhau.
Loại thứ hai là khung làm việc theo vùng vấn đề của một miền ứng dụng. Các khung làm việc này có đƣợc các kiến thức và đạt đến sự tinh thông trong một vùng vấn đề cụ thể. Các khung làm việc cho điều khiển sản xuất và đa phƣơng tiện là các ví dụ của loại này. Các khung làm việc của miền ứng dụng có thể tiện dụng khi thực hiện các chƣơng trình cho một miền ứng dụng xác định. Nó thƣờng xuyên đƣợc điều chỉnh cho phù hợp với các công ty hoặc đƣợc phát triển từ đầu. Khung làm việc này giảm số lƣợng công việc cần để thực hiện ứng dụng và đƣa ra một phần mềm có chất lƣợng cao hơn. Một ví dụ cụ thể của các khung làm việc thuộc loại này nhƣ khung làm việc Java Media (JMF). Khung làm việc này nhúng các chức năng cần thiết cho việc phát triển các ứng dụng về xử lý các tệp audio và video (dồn kênh, tách kênh, mã hóa, các bộ lọc hiệu ứng), các điều khiển về trình diễn và các phƣơng tiện đạt đƣợc các khóa cho sự đồng bộ của các phƣơng tiện khác nhau nhƣ đầu vào tiếng và đầu vào hình.
Loại cuối cùng là các khung làm việc trợ giúp. các khung làm việc loại này phục vụ các dịch vụ mức thấp của hệ thống nhƣ các trình điều khiển các thiết bị và
hỗ trợ trực tiếp hoặc sử dụng các sự điều chỉnh đƣợc tạo ra bởi các trình cung cấp của hệ thống. Các khung làm việc hỗ trợ có thể đƣợc tùy biến, ví dụ khi phát triển một hệ thống mới hoặc trình điều khiển thiết bị mới.
2.1.4.2. Phân loại khung làm việc theo cấu trúc nội bộ
Nếu nhƣ cấu trúc nội tại của khung làm việc đƣợc mô tả thì việc hiểu cách ứng xử của khung làm việc sẽ dễ dàng hơn. Cấu trúc nội tại của một khung làm việc liên quan tới các khái niệm về kiến trúc phần mềm. Những kiến trúc này đƣợc gọi là “các khung làm việc kiến trúc”, chúng đƣợc thiết kế để đạt đƣợc cấu trúc chính của một kiến trúc phần mềm hƣớng đối tƣợng. Nguyên tắc tổng thể cho cấu trúc nội tại của một khung làm việc đƣợc mô tả bởi khung làm việc có tính kiến trúc của nó. Các khung làm việc có tính kiến trúc đã đƣợc mô tả là kiến trúc:
Layered (Phân tầng): các ứng dụng có thể đƣợc phân rã thành các nhóm các công việc con với mức trừu tƣợng khác nhau định vị ở tầng khác nhau.
Pipes and Filters (Ống và bộ lọc) dùng để cấu trúc các ứng dụng có thể đƣợc chia thành một vài các công việc con hoàn toàn độc lập và đƣợc thực hiện theo trình tự nối tiếp hoặc song song đã đƣợc xác định một cách rõ ràng.
Model-View-Controller (MVC), định nghĩa kiến trúc cho các ứng dụng có tính tƣơng tác, tách giao diện của ứng dụng với các chức năng chủ yếu của nó. Presentation-Abstraction-Controller (Trình diễn-Trừu tƣợng-Điều khiển), kiến
trúc này là thích hợp để cấu trúc các hệ thống phần mềm có tính tƣơng tác cao với ngƣời sử dụng, cho phép các điều khiển và trình diễn của các mô hình trừu tƣợng của hệ thống đƣợc tạo bên ngoài các chức năng con và độc lập với nhau. Reflective (Phản ánh), có khả năng áp dụng cho các ứng dụng cần phải cân nhắc đến sự thích nghi trong tƣơng lai do sự thay đổi của môi trƣờng, công nghệ và các yêu cầu, mà không cần phải thay đổi về kiến trúc và cách thực hiện của nó.
Microkernel, là phù hợp cho các hệ thống phần mềm cần cung cấp các khung nhìn khác nhau dựa trên các chức năng của chúng và phải thích nghi với các yêu cầu của hệ thống. Ví dụ của microkernel là các hệ điều hành.
Blackboard (bảng đen), giúp để cấu trúc các ứng dụng phức tạp liên quan tới một vài hệ thống con chuyên biệt của các lĩnh vực khác nhau. Các hệ thống con này phải hợp tác để xây dựng các giải pháp cho việc giải quyết các vấn đề. Broker (môi giới), cấu trúc các hệ thống phần mềm phân tán, trong đó các thành phần tƣơng tác khác nhau giao tiếp với nhau khi vận hành thông qua truyền thông nhƣ trong một mô hình chủ khách.
Việc sử dụng các kiến trúc này nhƣ là một nguyên tắc thiết kế cho một khung làm việc. Điều đó có nghĩa là, các kiến trúc này là các ứng cử viên tốt cho việc ứng dụng các mẫu thiết kế hƣớng đối tƣợng cũng nhƣ cho việc phát triển khung làm việc.
2.1.4.3. Phân loại khung làm việc theo cách sử dụng
Dựa trên cách sử dụng, các khung làm việc hƣớng đối tƣợng đƣợc chia thành hai loại chính là các khung làm việc hộp trắng và các khung làm việc hộp đen [5]. Nhƣng phần lớn các ứng dụng là một tổ hợp của cả hai loại khung làm việc trên và đƣợc gọi là các khung làm việc hộp xám.
Trong một khung làm việc hộp trắng, kiến trúc của khung làm việc đƣợc biết nhƣ là các thành phần và ứng dụng của nhà phát triển sẽ xây dựng trên nó. Thiết kế hoàn toàn phải đƣợc viết thành tài liệu để khi cần có thể thay đổi khung làm việc cho phù hợp với ứng dụng cụ thể. Do vậy, ngƣời sử dụng phải có kiến thức và nắm vững kiến trúc của khung làm việc để tùy biến khung làm việc thành một ứng dụng cụ thể.
Ngƣợc lại, các khung làm việc hộp đen dấu đi cấu trúc nội tại của chúng. Ngƣời sử dụng chỉ cần biết các điểm nóng (hot spot) của nó và một mô tả chung về cách sử dụng nó không cần phải có kiến thức toàn diện về kiến trúc của khung làm việc. Vì vậy các điểm nóng của nó cần phải đƣợc giải thích rõ ràng. Cơ chế này cung cấp cho ngƣời dùng khả năng tống hợp một cách linh hoạt. Trong khi đó, nỗ lực để xây dựng một khung làm việc hộp trắng thƣờng đƣợc thực hiện bằng cách tổng quát hóa từ một số ứng dụng hoàn chỉnh, có thể tƣơng đối nhỏ. Bất lợi của loại khung làm việc hộp trắng là ngƣời sử dụng cuối sử dụng cần phải nắm, hiểu các kiến thức về kiến trúc tổng thể. Điều này dẫn đến một quá trình học lâu và sự rủi ro về lỗi cao. Việc sử dụng khung làm việc hộp đen dễ dàng hơn, bởi vì ngƣời dùng chỉ cần biết các kiến thức về các phần tử có thể thay đổi đƣợc và điểm nóng của hệ thống. Tuy nhiên, việc xây dựng các khung làm việc hộp đen khó khăn hơn các khung làm việc hộp trắng.
Khung làm việc hộp đen và hộp trắng đƣợc xem là hai giới hạn biên của các thiết kế khung làm việc và các nguyên tắc sử dụng. Phần lớn các khung làm việc thuộc vùng giữa của hai thái cực này, và đƣợc coi nhƣ là một khung làm việc hộp xám. Nó tận dụng đƣợc các lợi thế của các thiết kế hộp đen và hộp trắng, và cố gắng loại bỏ các hạn chế của hai loại khung làm việc này. Tuy nhiên, các khung làm việc hộp xám có tính lý thuyết nhiều hơn, rất khó thực hiện, và mọi ngƣời đều cho rằng
Khi sử dụng lại khung làm việc hộp đen, ngƣời sử dụng không cần biết phần mềm thực hiện nhƣ thế nào và chúng thực hiện các đối tƣợng mà có thể đƣợc sử dụng lại trong tổ hợp các đối tƣợng nhƣ thế nào.
Khung làm việc hộp trắng đƣợc sử dụng để tạo ra các lớp cụ thể. Một số các lớp cụ thể là các thành phần, chúng thực hiện các giao diện từ khung làm việc hộp trắng. Các thành phần này cùng với các lớp cộng tác đƣợc gọi là khung làm việc hộp đen.
Điều khác nhau chủ yếu khi sử dụng khung làm việc hộp trắng là ngƣời sử dụng phải mở rộng các lớp và thực hiện các giao diện. Ngƣợc lại, một khung làm việc hộp đen bao gồm các thành phần và các lớp mà mà ngƣời dùng có thể tạo các thể hiện và đƣợc cấu hình. Các thành phần và các lớp trong nó thƣờng là các thể hiện của các phần tử trong của khung làm việc hộp trắng. Tổ hợp và cấu hình các thành phần của khung làm việc hộp đen đƣợc các công cụ trợ giúp và dễ dàng hơn so với việc sử dụng các phần tử của một khung làm việc hộp trắng. Các khung làm việc hộp đen là dễ dàng đƣợc điều chỉnh do chỉ cần biết các giao diện của các điểm nóng. Các khung làm việc hộp trắng thƣờng có khả năng sử dụng lại nhiều hơn nhƣng lại khó hiểu chi tiết cấu trúc bên trong và thậm chí, có thể tạo ra một sự bùng nổ các lớp con.