Chương 1. Thành phần phần mềm (software component) 1.1 Kỹ nghệ phần mềm hướng thành phần 1.1 Tổng quan kỹ nghệ phần mềm hướng thành phần Kỹ nghệ phần mềm hướng thành phần(CBSE) có nghĩa là lắp rắp các thành phần phần mềm có sẵn trước thành một phần mềm lớn hơn[9]. Khái niệm cơ bản của tiến trình này là các thành phần phần mềm được viết để cung cấp các chức năng chung nhất cho nhiều hệ thống khác nhau. Dựa trên ý tưởng các thành phần phần cứng, mục đích của CBSE là cho phép các phần của một hệ thống phần mềm có thể được thay thế bởi các thành phần mới hơn có chức năng tương tự.
Ý tưởng này không phải là mới. Phần mềm được thành phần hoá (Componentizing software) đã được đưa ra bởi Mcllorys khi nói về cuộc khủng hoảng phần mềm. Ngày nay, khi ngày càng có nhiều thành phần phần mềm thương mại trên thị trường thì thay vì xây dựng, việc phát triển phần mềm hướng tới mua các thành phần và lắp ráp chúng lại với nhau. Mục đích của CBSE là giảm chi phí phát triển phần mềm: các hệ thống thành phần có tính linh hoạt và dễ duy trì theo xu hướng plug-and-play của các thành phần.
Tiến trình phát triển[9] Phát triển phần mềm có hai tiến trình chính: - Lắp ráp hệ thống phần mềm từ các thành phần phần mềm và - Phát triển các phần mềm để có thể sử dụng lại được Các hoạt động lắp ráp các thành phần phần mềm thành một hệ thống phần mềm có thể chia thành 4 hoạt động sau: - Đánh giá chất lượng thành phần (Component qualification) - Chỉnh sửa lại thành phần cho phù hợp (Component adaptation) - Lắp ráp thành phần(Component assemblly) - Phát triển và duy trì hệ thống Mặc dù tiến trình này là khác biệt so với việc phát triển phần mềm truyền thống thì giữa chúng vẫn có những điểm chung, ví dụ như vấn đề quản lý sự thay đổi và duy trì khi phát triển phần mềm. Sau đây chúng ta sẽ đi vào mô tả chi tiết cho từng hoạt động Đánh giá chất lượng Đánh giá chất lượng là xác định khả năng thích ứng của phần mềm khi sử dụng trong hệ thống được tạo cuối cùng. Khi có nhiều sản phẩm cạnh tranh trên thị trường thì vấn đề đặt ra là phải lựa chọn sản phẩm nào phù hợp nhất. Sự lựa chọn sẽ phụ thuộc vào sự so sánh giữa thành phần này với thành phần khác cũng như sự thích ứng TIEU LUAN MOI download : skknchat@gmail.com 12 trong sử dụng của các thành phần.
Vấn đề nảy sinh trong suốt hoạt động này là tính tin cậy(trust) và chứng thực(certification). Tiến trình chứng thực gồm có hai phần: Thiết lập các sự kiện (fact) về một thành phần và xác định các thuộc tính của thành phần có phù hợp với bản đặc tả đã công bố, và Thiết lập sự tin cậy đối với các sự kiện hợp lệ này, có thể nhờ một tổ chức tin cậy thứ ba chứng thực cho độ tin cậy của sự phù hợp này và cấp cho một bảng chứng thực để xác nhận điều đó. Động cơ thúc đẩy việc chứng thực thành phần là do sự liên hệ giữa các thuộc tính được chứng thực của thành phần với các thuộc tính trong hệ thống cuối cùng. Nếu ta hiểu biết về các thành phần được lựa chọn để lắp ráp thì ta có thể đoán được các thuộc tính của chúng trong hệ thống cuối cùng.
Độ chính xác của việc tiên đoán phụ thuộc vào độ tin cậy của thành phần cũng như độ hiểu biết về sự gắn kết các thành phần. Đối với rất nhiều thành phần trên thị thường, sự tiên đoán thường là rất khó khăn do thiếu thông tin về các khả năng của thành phần và các thông tin về độ tin cậy của chúng. Theo học thuyết phần mềm cổ điển, việc đặc tả thành phần phải đầy đủ, hoàn thành và ổn định. Tuy nhiên việc đặc tả đầy đủ là không thực tế: một số thành phần có các thuộc tính biểu lộ ra nhưng lại không thể làm thành tài liệu được, chưa kể là tài liệu đó dùng bộ ký hiệu chuyên biệt.
Chỉnh sửa cho phù hợp(adaption) Các thành phần khác nhau được viết để đáp ứng các yêu cầu khác nhau, mỗi thành phần đảm đương bối cảnh mà nó triển khai trong đó. Mục đích của việc chỉnh sửa là đảm bảo sự xung đột giữa các thành phần là nhỏ nhất. Việc sử dụng các cách chỉnh sửa khác nhau phụ thuộc vào khả năng truy nhập vào cấu trúc bên trong của thành phần - Các thành phần hộp trắng (white-box) có thể viết lại đáng kể để vận hành cùng với các thành phần khác - Các thành phần hộp xám (grey-box) cung cấp ngôn ngữ mở rộng hoặc giao diện lập trình ứng dụng (API) - Các thành phần hộp đen (balck-box) không cung cấp ngôn ngữ mở rộng cũng như API Nói chung, một thành phần thường là một hộp đen, các dịch vụ của nó chỉ truy cập thông qua giao diện cho trước. Tuy nhiên, theo logic chúng ta vẫn có thể quan tâm đến các thành phần hộp trắng và hộp xám.
Lắp ráp thành phần Lắp ráp là tích hợp các thành phần bằng một số công cụ có sẵn để ghép các thành phần lại tạo ra một hệ thống. Ví dụ, các thành phần thương mại thường được viết theo các mô hình thành phần như Enterprise JavaBeans, COM, CORBA và gần đây là. Phát triển và duy trì hệ thống TIEU LUAN MOI download : skknchat@gmail.com 13 Các thành phần là các đơn vị thay đổi, sự phát triển của hệ thống là sự thay thế các thành phần đã lỗi thời bằng các thành phần mới hơn. Cách nhìn nhận các thành phần là các đơn vị có thể thay thế được là một cách nhìn hơi quá đơn giản về phát triển hệ thống.
Trong thực tế, việc thay thế một thành phần không hề đơn giản, đặc biệt là khi thành phần mới và thành phần cũ không tương xứng với nhau sẽ phát sinh việc chỉnh sửa lại cho thành phần mới. Các lĩnh vực nghiên cứu của kỹ nghệ phần mềm hướng thành phần Như đã để cập ở trên, phát triển phần mềm hướng thành phần có rất nhiều lĩnh vực nghiên cứu. Sau đây là một số lĩnh vực - Mô hình và đặc tả hoá thành phần Ngôn ngữ mô hình hợp nhất UML đã trở thành chuẩn phổ biến cho hầu hết mô hình ứng dụng và được dùng trong các phương thức CBSD như là phương thức xúc tác (Catalysis). Đối với các phiên bản trước phiên bản 2.0 cần phải mở rộng UML để cho phép đặc tả riêng các thành phần phụ thuộc và các giao diện của chúng.
Vấn đề này được trình bày chi tiết trong cuốn sách UML Components (Cheesman and Daniels 2001). Tuy nhiên, bên cạnh UML còn có một lượng lớn công việc quan trọng để sao cho tiến trình phát triển hướng thành phần được tiếp cận một cách chính thức. Việc đặc tả chi tiết công việc này bao gồm đặc tả giao diện của thành phần, đặc tả các chức năng hoạt động hay các giao thức tương tác, các ràng buộc để một hoạt động được gọi như thế nào và khi nào. - Các kỹ thuật truy lục và khớp đặc tả Vấn đề làm thế nào để truy lục các đối tượng (artefact) có thể sử dụng lại là một lãnh vực nghiên cứu từ lâu trong việc sử dụng lại phần mềm.
Việc truy lục đã tập trung vào các dạng mô tả thành phần (component descriptions) nào nên đặt trong thứ tự mà các thành phần đó có thể được truy lục từ các kho chứa, trong khi các kỹ thuật khớp đặc tả được dùng để tìm kiếm các thành phần dựa trên các tiêu chuẩn chức năng hay hành vi. - Các phương pháp sinh phần mềm Các phương pháp này liên quan đến việc sinh phần mềm từ các đặc tả. Các kỹ thuật này được dùng trong kỹ nghệ pháp triển phần mềm được mô tả ở trên. Các nghiên cứu về lĩnh vực này được trình bày tại trang Web: http://www-ia.de/~czarn/generate/engl.
- Các kỹ thuật lắp ráp Như đã đề cập ở trên, các kỹ thuật lắp ráp gồm có các thành phần hộp đen, hộp xám và hộp trắng. Nghiên cức về việc lắp ráp trải khắp từ các kỹ thuật đóng gói cho đến các phương thức phức tạp như nhận biết các bộ điều chỉnh phù hợp để khớp đặc tả. Vấn đề liên quan đến các kỹ thuật lắp ráp bao gồm cả việc làm thế nào để khả năng TIEU LUAN MOI download : skknchat@gmail.com 14 dùng lại của một thành phần có thể cải tiến bằng cách tính đến làm thế nào để chúng có thể lắp ráp thoái mái trong khi chúng vẫn đang được phát triển. - Các ngôn ngữ kết hợp và cấu tạo Khi ta không có định nghĩa về các bộ phận tạo nên thành phần thì COM và CORBA, những ngôn ngữ kết hợp và cấu tạo sẽ được sử dụng để mô tả sự lắp ráp hay kết gắn của tập hợp thành phần.
Các ngôn ngữ này cũng có thể được sử dụng để định nghĩa cách thức phần mềm được kết hợp vào khung làm việc (framework) cho trước hoặc cách thức để các thành phần giữa các hệ thống tương tác với nhau. - Xác minh, kiểm tra và cấp chứng thực Phát triển phần mềm hướng thành phần cũng chỉ ra rằng một thành phần phải trải qua hai giai đoạn test. Giai đoạn test thứ nhất xảy ra trong quá trình phát triển phần mềm, xác minh liệu một thành phần có đáp ứng được bản đặc tả của nó và có đáp ứng được các yêu cầu chức năng. Một thành phần có thể được chứng thực bởi bên thứ ba tùy theo cách thức mà thành phần thi hành trong quá trình test.
Giai đoạn test thứ hai liên qua đến việc kiểm tra cách thức thành phần được tích hợp với các thành phần khác khi phát triển hệ thống hướng thành phần. Các chiến lược test khác nhau có thể được sử dụng phụ thuộc vào mức độ rõ ràng của cấu trúc bên trong thành phần. Thông thường, người ta dùng các kỹ thuật hộp đen đối với các thành phần thương mại và dùng kỹ thuật hộp trắng đối với các thành phần có mã nguồn. - Quản lý cấu hình Quản lý cấu hình phần mềm là tiến trình điều khiển sự phát triển hệ thống, thiết lập khía cạnh của hệ thống tương lai và định nghĩa các kỹ thuật cho việc quản lý các phiên bản khác nhau của các khía cạnh đó.2 Thành phần phần mềm Thành phần phần mềm là gì? Không có câu trả lời chính xác cho câu hỏi này.
Có rất nhiều định nghĩa về thành phần phần mềm. Szyperski: Một thành phần phần mềm là một đơn vị cấu tạo nên phần mềm có các giao diện theo thoả thuận và các sự phụ thuộc vào bối cảnh.