Chương 1. Công nghệ thành phần phần mềm 1. Công nghệ thành phần phần mềm Trong thập kỷ qua, kỹ nghệ phần mềm dựa thành phần (CBSE) đã trở thành một chủ đề quan trọng trong kỹ nghệ phần mềm. Điều cần quan tâm là xây dựng các ứng dụng phần mềm từ các thành phần phần mềm đã được xây dựng trước.
Mô hình này cung cấp nhiều lợi ích khi được so sánh với việc xây dựng ứng dụng phần mềm từ đầu. Sử dụng các thành phần làm tăng khả năng dùng lại vì các thành phần phần mềm có thể được sử dụng trong các ứng dụng khác nhau. Điều này dẫn đến việc giảm chi phí sản xuất và giảm thời gian đưa ra thị trường của phần mềm. Xây dựng các ứng dụng từ các thành phần cũng đơn giản hoá việc bảo trì các ứng dụng.
Ví dụ, khi ta muốn thay đổi một số chức năng của ứng dụng, ta chỉ cần thay đổi các thành phần tương ứng với chức năng, các bộ phận khác của ứng dụng được giữ lại nguyên vẹn. Ngoài ra, mỗi thành phần thường tập trung vào một khía cạnh cụ thể và được phát triển bởi chuyên gia trong lĩnh vực đó. Với việc mua các thành phần này từ thị trường, nhà phát triển ứng dụng vẫn có thể có thành phần chất lượng cao mà không cần sử dụng các chuyên gia. Một số định nghĩa Mặc dù mọi người đều nhất trí về lợi ích của công nghệ dựa thành phần, tuy nhiên quan điểm về một thành phần phần mềm lại rất khác nhau.
Một số nhà nghiên cứu cho rằng một thành phần giống như một thư viện. Một số người khác lại cho rằng một thành phần phần mềm phải có khả năng triển khai một cách độc lập. Luận văn này sử dụng định nghĩa về các thành phần phần mềm được đưa ra bởi Szyperski [14]. Một thành phần phần mềm là một đơn vị của một tổ hợp với các giao diện được xác định và chỉ phụ thuộc vào ngữ cảnh rõ ràng.
Một thành phần phần mềm có thể được triển khai một cách độc lập và là đối tượng để kết hợp bởi các bên thứ ba. Điều quan trọng ở đây là sự tách biệt giữa sự thực thi (implementation) thành phần và các giao diện (interface) thành phần. Các giao diện xác định làm thế nào để tương tác với các thành phần, trong khi đó các phần thực thi thực hiện các chức năng được cung cấp bởi các thành phần. Điều này có nghĩa là nếu ta thay đổi phần thực thi của một thành phần mà không thay đổi các giao diện của nó, các thành phần khác trong cùng một ứng dụng sẽ không nhận biết được sự thay đổi.
TIEU LUAN MOI download : skknchat@gmail.com 5 Một điểm khác ta cần phải xem xét là sự khác nhau giữa các giao diện và các hợp đồng (contract). Giao diện quy định cú pháp cho các thành phần khách sử dụng một thành phần cụ thể. Các giao diện thường bao gồm tên và các tham số của phương thức (method). Hợp đồng xác định ngữ nghĩa của các giao diện và các phương thức.
Hợp đồng lập danh sách các ràng buộc (constraint) được bảo trì bởi các thành phần như các mẫu (pattern) đối với nhóm các thành phần để tương tác với nhau. Chi tiết của một thành phần phần mềm được xác định bởi một mô hình thành phần. Ví dụ, COM/DCOM [11] và Enterprise JavaBeans [13] là các mô hình thành phần. Các mô hình thành phần định nghĩa các chuẩn đối với việc xây dựng và kết hợp các thành phần.
Vấn đề an ninh đối với phần mềm dựa thành phần Bên cạnh những lợi ích như giảm độ phức tạp, thời gian, và chi phí phát triển hệ thống, việc sử dụng các thành phần trong các hệ thống thông tin đang phát triển có thể đem lại những thách thức an ninh mới [7] [8]. Từ quan điểm của người phát triển thành phần, việc cung cấp an ninh cho các thành phần là khó. Lý do là khi phát triển một thành phần cụ thể, người phát triển thành phần không biết về môi trường trong đó thành phần được sử dụng và họ cũng thiếu các yêu cầu an ninh từ phía người dùng thành phần (tức là người phát triển ứng dụng). Điều này dẫn đến một thực tế là thành phần không được kiểm tra triệt để.
Từ quan điểm của người phát triển ứng dụng, đảm bảo an ninh cho các ứng dụng dựa thành phần là phức tạp vì các thành phần thường được mua từ thị trường mà không có mã nguồn. Kết quả là, các đánh giá về an ninh của mỗi thành phần riêng biệt cũng như toàn bộ ứng dụng đã tích hợp các thành phần này là phức tạp. Ngoài ra, các thành phần có thể được mua từ nhiều nguồn (nghĩa là từ các bên thứ ba khác nhau) và cơ chế an ninh của các thành phần này có thể không tương thích. Như đã đề cập ở trên, một trong những đặc trưng quan trọng nhất của công nghệ thành phần là khả năng tái sử dụng của các thành phần.
Một thành phần có thể được sử dụng trong nhiều hệ thống khác nhau. Nhược điểm của đặc trưng này là nếu thành phần chứa một lỗ hổng bảo mật, bất kỳ hệ thống nào đang sử dụng nó cũng bị đe dọa. TIEU LUAN MOI download : skknchat@gmail. Tổng quan Sun Microsystems công bố đặc tả Enterprise JavaBean (EJB) vào năm 1998.
Kiến trúc EJB là kiến trúc thành phần dành cho việc phát triển và triển khai các ứng dụng phân tán hướng thành phần. Một thành phần EJB là thành phần có khả năng sử dụng lại, viết một lần chạy mọi nơi (Write Once Run Anywhere - WORA), có tính khả chuyển, tính linh hoạt và thành phần đã được biên dịch có thể được triển khai trên bất kỳ máy chủ EJB nào như Java 2 Enterprise Edition (J2EE), JBoss hay môi trường WebLogic Enterprise. Công nghệ EJB là một phần của J2EE, nó cung cấp một tập API và các dịch vụ khác. Việc cài đặt EJB tập trung vào lô gic nghiệp vụ.
J2EE được thiết kế để hỗ trợ các ứng dụng doanh nghiệp cung cấp các dịch vụ thương mại. Cùng với CORBA [9] và DCOM [11], Enterprise JavaBeans (EJB) [13] là một trong những công nghệ hàng đầu cho việc phát triển các ứng dụng dựa thành phần. Công nghệ EJB hỗ trợ xây dựng các thành phần trên máy chủ của các ứng dụng J2EE đa tầng.1 dưới đây cho thấy vị trí của các thành phần EJB trong một ứng dụng J2EE. Các thành phần EJB được sử dụng trong tầng nghiệp vụ của hệ thống.1: Các thành phần EJB trong các ứng dụng đa tầng Mỗi thành phần EJB là một thành phần phần mềm.
Các thành phần EJB có thể được triển khai độc lập bên trong trình chứa EJB (EJB container). Các trình chứa cung cấp môi trường thực thi cho các thành phần EJB và kiểm soát hầu hết các khía cạnh phi chức năng như an ninh, giao dịch và lưu trữ, phục hồi đối tượng. Kiến trúc EJB giúp cho việc phát triển các ứng dụng doanh nghiệp dễ dàng hơn vì chúng không cần quan tâm đến các dịch vụ mức hệ thống như là quản lý TIEU LUAN MOI download : skknchat@gmail.com 7 giao dịch, quản lý an ninh, quản lý đa luồng, và các vấn đề quản lý chung khác. Kiến trúc EJB hỗ trợ WORA và các giải pháp di động.
Một thành phần EJB có thể được phát triển một lần sau đó có thể sử dụng lại trong nhiều ứng dụng và triển khai trên nhiều nền tảng khác nhau mà không phải biên dịch và sửa lại mã nguồn. Một thành phần EJB là một thành phần phía server cung cấp các dịch vụ cho điều khiển từ xa hoặc client cục bộ, trong khi một java bean là một thành phần phía client được cài đặt và chạy hầu hết ở phía client. Chúng ta có thể có một java bean phía server nhưng khó có thể cung cấp các dịch vụ cho các client từ xa. Một thành phần EJB được chứa bởi trình chứa của nó và trình chứa được hỗ trợ bởi J2EE hoặc bất kì công cụ nào tuân theo J2EE.
Trình chứa EJB Một thể hiện EJB được chạy trên một trình chứa EJB. Trình chứa là môi trường chạy (tập các file .class được sinh ra trong quá trình phát triển), nó điều khiển một thể hiện thành phần EJB và cung cấp tất cả các dịch vụ quản lý cần thiết cho toàn bộ vòng đời của nó [1]. Các dịch vụ bao gồm: - Quản lý giao tác: đảm bảo các đặc tính giao tác của việc thực thi giao tác phân tán. - Quản lý lưu trữ bền vững: đảm bảo trạng thái bền vững của một entity bean được sao lưu bởi cơ sở dữ liệu.
- Quản lý vòng đời: đảm bảo sự dịch chuyển trạng thái của thành phần EJB trong vòng đời của nó. Trình chứa EJB cung cấp một giao diện cho thành phần EJB để giao tiếp với thế giới bên ngoài. Tất cả các yêu cầu tới thành phần EJB hay các đáp ứng từ thành phần EJB đều phải thông qua trình chứa EJB. Trình chứa EJB cô lập thành phần EJB để nó không bị truy nhập trực tiếp từ các client.
Trình chứa sẽ chặn lời gọi từ client để đảm bảo tính bền vững, các đặc tính giao tác, và an ninh các hoạt động của client trên EJB.2 chỉ ra rằng trình chứa EJB hỗ trợ thành phần EJB và một thành phần EJB cần trình chứa để đi ra bên ngoài và để nhận các thông tin cần thiết từ giao diện ngữ cảnh của nó. Trình chứa EJB có trách nhiệm tạo ra các đối tượng EJB Home, giúp cho việc xác định, tạo và xóa bỏ các đối tượng thành phần EJB. Giao diện ngữ cảnh EJB cung cấp bởi trình chứa EJB đóng gói các thông tin liên quan về môi trường của trình chứa như là định danh của một thành phần EJB, các trạng thái của giao tác và tham chiếu từ xa tới EJB. TIEU LUAN MOI download : skknchat@gmail.2: Trình chứa EJB Thành phần EJB Một enterprise bean là một thành phần phân tán trong một trình chứa EJB và được truy cập bởi client từ trên mạng thông qua giao diện từ xa của nó hoặc được truy nhập thông qua enterprise bean khác trên cùng server thông qua giao diện địa phương (local) của nó.
Thành phần EJB là một thành phần có khả năng thực thi từ xa được triển khai trên server của nó và có khả năng tự mô tả được chỉ ra bởi DD (Deployment Descriptor) với định dạng XML (eXtensible Markup Language). Mỗi thành phần EJB có một giao diện lô gic nghiệp vụ được tạo ra bởi thành phần đó nên các client có thể truy cập vào các thao tác lô gic nghiệp vụ thông qua giao diện này mà không cần phải biết cài đặt chi tiết đằng sau giao diện đó. Chúng ta gọi giao diện như vậy là một remote interface.