CHƯƠNG 1. KHÁI QUÁT VỀ PHÁT TRIỂN HỆ THỐNG DỰA TRÊN THÀNH PHẦN 1.1 Tiến trình công nghệ phần mềm dựa trên thành phần Công nghệ phần mềm dựa trên thành phần (CBSE – Component Based Software Engineering) là một tiến trình nhấn mạnh tới thiết kế và xây dựng hệ thống dựa trên máy tính bằng việc dùng các “thành phần” phần mềm dùng lại được. Về bề ngoài, CBSE dường như hoàn toàn tương tự với công nghệ phần mềm hướng đối tượng. Tiến trình này bắt đầu khi tổ phần mềm thiết lập yêu cầu cho hệ thống được xây dựng bằng việc dùng các kĩ thuật thu thập yêu cầu, sau đó thiết kế kiến trúc được thiết lập nhưng thay vì đi ngay vào các nhiệm vụ thiết kế chi tiết, thì lại xem xét các yêu cầu để xác định những gì trực tiếp chịu trách nhiệm cho việc hợp thành, thay vì xây dựng mới.
Tức là, tổ phần mềm đưa ra những câu hỏi sau cho từng yêu cầu hệ thống: Các thành phần đã được cung cấp (COTS - commercial off the shelf) có sẵn cho việc thực hiện yêu cầu hay không? Các thành phần dùng lại được phát triển trước đây có sẵn để thực hiện yêu cầu hay không? Giao diện cho các thành phần có sẵn có tương hợp với kiến trúc của hệ thống cần được xây dựng hay không? Tiến trình CBSE phải được đặc trưng theo cách không chỉ nhận diện ra các thành phần ứng cử viên mà còn định lượng từng giao diện của các thành phần, thích ứng các thành phần để loại bỏ sự không tương thích với kiến trúc, lắp ráp các thành phần vào trong một kiểu cách kiến trúc đã được lựa chọn, và cập nhật các thành phần theo yêu cầu thay đổi của hệ thống. Mô hình tiến trình cho công nghệ phần mềm dựa trên thành phần nhấn mạnh vào các việc song song mà theo đó công nghệ miền được sử dụng đồng thời với việc phát triển dựa trên thành phần [1, 3]. Nội dung của công nghệ miền là xác định, xây dựng, phân loại và phát hiện một tập các thành phần phần mềm có khả năng ứng dụng vào việc phát triển phần mềm hiện tại và tương lai trong miền ứng dụng đặc biệt. Mục tiêu tổng thể là thiết lập những cơ chế làm cho người kĩ sư phần mềm chia sẻ những thành phần này, dùng lại chúng trong khi làm việc với hệ thống mới và hệ thống hiện có.
TIEU LUAN MOI download : skknchat@gmail.1 minh họa cho mô hình tiến trình CBSE điển hình. Công nghệ miền tạo ra mô hình của miền ứng dụng được dùng làm cơ sở cho việc phân tích yêu cầu người dùng trong luồng công nghệ phần mềm, và sau khi các thành phần dùng lại đã được mua, được chọn từ thư viện hiện có, hay được xây dựng (như một phần việc của công nghệ miền), chúng được trở thành công cụ đã sẵn sàng cho người kĩ sư phần mềm trong việc phát triển hệ thống dựa trên thành phần.1 Mô hình tiến trình hỗ trợ CBSE Các bước trong tiến trình tiếp cận tổng thể tới việc phân tích miền được xác định là: Định nghĩa miền được khảo sát. Phân loại các yếu tố được trích ra từ miền. Thu thập mẫu đại diện của các ứng dụng trong miền.
Phân tích từng ứng dụng trong mẫu. Phát triển mô hình phân tích cho các mẫu. TIEU LUAN MOI download : skknchat@gmail.com 4 Điều quan trọng cần lưu ý là việc phân tích miền được áp dụng cho bất kỳ mô thức công nghệ phần mềm nào và có thể được áp dụng tốt cho cả việc phát triển hướng đối tượng. Prieto-Diaz mở rộng bước phân tích miền thứ hai trong công nghệ miền nêu trên [1], và gợi ý cách tiếp cận tám bước tới việc xác định và phân loại các thành phần dùng lại như sau: (1) Lựa các chức năng hay sự vật đặc thù.
(2) Trừu tượng hoá chức năng hay sự vật. (3) Xác định phân loại. (4) Định danh các tính năng chung. (5) Định danh các quan hệ đặc biệt.
(6) Trừu tượng hoá các quan hệ. (7) Suy dẫn ra mô hình chức năng. (8) Định nghĩa ngôn ngữ miền. Đôi khi khó xác định được rằng liệu với một thành phần dùng lại tiềm năng nào đó trong thực tế có áp dụng được cho một tình huống đặc biệt hay không.
Để tiến hành việc xác định này, cần phải định nghĩa ra một tập các đặc trưng miền được dùng chung cho mọi phần mềm bên trong một miền. Đặc trưng miền định nghĩa ra thuộc tính chung nào đó cho mọi sản phẩm tồn tại trong miền đó, chẳng hạn, các đặc trưng chung có thể là tầm quan trọng của tính an toàn, tính tin cậy, ngôn ngữ lập trình, tương tranh trong xử lí, và nhiều điều khác nữa.2 Phát triển hệ thống dựa trên thành phần Phát triển dựa trên thành phần là hoạt động CBSE xuất hiện song song với công nghệ miền. Bằng việc dùng các phương pháp phân tích và thiết kế kiến trúc, tổ phần mềm làm mịn kiến trúc thích hợp cho mô hình phân tích đã được tạo ra cho ứng dụng được xây dựng. Một khi kiến trúc đã được thiết lập, nó phải đưa các thành phần vào.
Các thành phần này là có sẵn từ thư viện dùng lại hoặc được chế tạo mới để đáp ứng nhu cầu riêng biệt này. Do đó, luồng nhiệm vụ cho việc phát triển hệ thống dựa trên thành phần có hai việc song song như ở hình 1. Khi các thành phần dùng lại được là có sẵn cho việc tích hợp tiềm năng vào trong kiến trúc, thì chúng phải được định tính và thích nghi. Khi thành phần mới cần tới, thì chúng phải TIEU LUAN MOI download : skknchat@gmail.com 5 được chế tạo.
Sau đó chúng được tích hợp vào trong kiến trúc và được kiểm thử kĩ càng.1 Định phẩm, thích ứng và hợp thành thành phần Như ta đã thấy, công nghệ miền cung cấp thư viện các thành phần dùng lại được cần cho công nghệ phần mềm dựa trên thành phần. Một số trong những thành phần dùng lại được này được phát triển bởi đội ngũ sở tại, số khác có thể được trích từ những ứng dụng đã có, và số khác nữa thì có thể kiếm được từ bên thứ ba. Tuy nhiên sự tồn tại của các thành phần dùng lại được không đảm bảo rằng các thành phần này có thể được tích hợp một cách dễ dàng hay hiệu quả vào kiến trúc được chọn cho ứng dụng mới. Chính bởi lí do này mà trình tự các hoạt động phát triển dựa trên thành phần được áp dụng khi một thành phần được đề nghị sử dụng.
Định phẩm thành phần: Định phẩm thành phần đảm bảo rằng một thành phần ứng cử viên sẽ thực hiện chức năng được yêu cầu, sẽ “khớp” đúng vào phong cách kiến trúc đã xác định cho hệ thống, và sẽ phải có các đặc trưng phẩm chất (như hiệu năng, độ tin cậy, tính sẵn sàng) cần cho ứng dụng. Mô tả giao diện cung cấp thông tin có ích về thao tác và sử dụng thành phần phần mềm, nhưng nó không cung cấp tất cả các thông tin cần để xác định xem một thành phần được đề nghị trong thực tế có dùng lại được một cách có hiệu quả trong ứng dụng mới hay không. Dưới đây là một số nhân tố được xem xét khi định phẩm thành phần: Giao diện lập trình ứng dụng (API). Các công cụ phát triển và tích hợp được thành phần cần tới.
Các yêu cầu khi chạy, kể cả việc dùng tài nguyên (như bộ nhớ hay lưu trữ), thời gian hay tốc độ, và giao thức mạng. Tính năng an toàn, kể cả kiểm soát truy nhập và giao thức xác minh. Các giả thiết thiết kế nhúng. Giải quyết các trường hợp ngoại lệ.
Thích ứng thành phần: Trong trường hợp lí tưởng, công nghệ miền tạo ra một thư viện các thành phần mà có thể dễ dàng được tích hợp vào kiến trúc ứng dụng. Điều ngụ ý “dễ tích hợp” là ở chỗ: TIEU LUAN MOI download : skknchat@gmail.com 6 Các phưong pháp nhất quán về quản lý tài nguyên đã được thực hiện cho mọi thành phần trong thư viện. Các hoạt động chung như quản lí dữ liệu đã có cho mọi thành phần. Giao diện bên trong kiến trúc và với môi trường bên ngoài đã được thực hiện theo cách nhất quán.
Trong thực tế, ngay sau khi thành phần đã được định phẩm để dùng bên trong một kiến trúc ứng dụng, thì nó có thể bộc lộ ra những xung đột không tương thích với một hay nhiều vùng phải được chú ý. Để làm giảm bớt những xung khắc này, một kĩ thuật thích ứng được gọi là bọc gói thành phần [1, 3] thường được sử dụng. Khi tổ phần mềm đã có quyền truy nhập hoàn toàn vào thiết kế bên trong và mã cho thành phần (thường không phải là trường hợp khi thành phần COTS được dùng) thì việc bọc gói hộp trắng sẽ được áp dụng. Giống như phần tương ứng của nó trong kiểm thử phần mềm, bọc gói hộp trắng xem xét các chi tiết xử lí bên trong của thành phần này và làm những thay đổi mức mã để loại bỏ các xung khắc.
Bọc gói hộp xám được áp dụng khi thư viện thành phần được cung cấp một một ngôn ngữ mở rộng thành phần hay API có khả năng loại bỏ hay che mặt nạ cho các xung khắc. Bọc gói hộp đen đòi hỏi đưa vào tiền và hậu xử lí tại giao diện thành phần để loại bỏ hay làm mặt nạ cho các xung khắc. Tổ phần mềm phải xác định xem liệu nỗ lực được yêu cầu bao gói thích hợp thành phần có thể được thực hiện không hay là thành phần chuyên biệt hoá (được thiết kế để khử bỏ xung khắc gặp phải) nên được chế tạo ra. Hợp thành thành phần: Nhiệm vụ hợp thành thành phần là lắp ráp các thành phần đủ phẩm chất, đã thích ứng hay đã chế tạo vào kiến trúc đã thiết lập cho ứng dụng.
Để thực hiện điều này, phải thiết lập một kết cấu nền để gắn các thành phần thành một hệ thống vận hành. Kết cấu nền này (thường là thư viện các thành phần đã khu biệt hoá) đưa ra một mô hình cho việc điều phối các thành phần lẫn nhau và thực hiện các nhiệm vụ chung. Trong số nhiều cơ chế để tạo ra một kết cấu nền hiệu quả thì tập bốn “chất liệu kiến trúc” cần có để đạt tới việc hợp thành thành phần là: Mô hình trao đổi dữ liệu. Cơ chế để người dùng và ứng dụng có khả năng tương tác và truyền dữ liệu (như kéo và thả, cắt và dán) nên được định nghĩa cho mọi thành phần dùng lại.