Đăng ký Đăng nhập
Trang chủ Kiến trúc và chuẩn phần mềm trên nền Web, ứng dụng xây dựng hệ thống thi trắc ng...

Tài liệu Kiến trúc và chuẩn phần mềm trên nền Web, ứng dụng xây dựng hệ thống thi trắc nghiệm

.PDF
104
178
102

Mô tả:

Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm MỤC LỤC LỜI CAM ĐOAN ..........................................................................................................5 LỜI CẢM ƠN ................................................................................................................6 DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT........................................................7 DANH MỤC CÁC BẢNG.............................................................................................8 DANH MỤC CÁC HÌNH .............................................................................................9 MỞ ĐẦU.......................................................................................................................11 U PHẦN 1 - KIẾN TRÚC VÀ CHUẨN PHẦN MỀM TRÊN NỀN WEB.................12 CHƯƠNG 1 - KIẾN TRÚC PHẦN MỀM 13 1.1. Kiến trúc phần mềm.....................................................................................13 1.1.1. Định nghĩa kiến trúc phần mềm ..............................................................13 1.1.2. Các đặc tính cơ bản của kiến trúc phần mềm..........................................14 1.1.3. Tại sao kiến trúc phần mềm quan trọng ..................................................16 1.1.4. Kết luận về kiến trúc phần mềm..............................................................16 1.2. Kiến trúc hướng dịch vụ (SOA) ..................................................................16 1.2.1. Vài nét về lịch sử SOA............................................................................17 1.2.2. SOA là gì? ...............................................................................................17 1.2.3. Các phần tử của SOA ..............................................................................19 1.2.4. Mô hình khái niệm SOA .........................................................................21 1.2.5. Kênh dịch vụ doanh nghiệp (ESB - Enterprise Service Bus)..................22 1.2.6. Các nguyên tắc SOA ...............................................................................24 1.2.7. SOA và Dịch vụ Web..............................................................................25 1.2.8. Tương lai cho SOA .................................................................................25 1.3. Dịch vụ web (web service)............................................................................26 1.3.1. Khái niệm dịch vụ web............................................................................26 1.3.2. Các đặc tính của dịch vụ web..................................................................27 1.3.3. Vai trò của dịch vụ web...........................................................................27 1.3.4. Kiến trúc của dịch vụ web.......................................................................28 1.3.5. Đặc tả công nghệ dịch vụ web ................................................................29 1.3.6. An ninh dịch vụ web ...............................................................................31 1.3.7. Kết luận về dịch vụ web ..........................................................................32 1.4. REST ..............................................................................................................33 1.4.1. Tại sao gọi REpresentational State Transfer ...........................................33 1.4.2. Các chuẩn sử dụng trong REST ..............................................................33 1.4.3. Các nguyên tắc REST .............................................................................34 1.4.4. Các phần tử kiến trúc REST....................................................................34 1.4.5. Thiết kế và thực thi REST.......................................................................35 Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 3 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm 1.5. So sánh và đánh giá dịch vụ web.................................................................37 CHƯƠNG 2 - CHUẨN PHẦN MỀM TRÊN NỀN WEB 2.1. 2.2. 2.3. 2.4. 2.5. 40 Các chuẩn web là gì? ....................................................................................40 Tại sao sử dụng chuẩn web ..........................................................................41 Cách thức kiểm tra web là chuẩn................................................................42 Công cụ cải thiện chất lượng web ...............................................................45 Kết luận chuẩn web ......................................................................................45 PHẦN 2: ỨNG DỤNG XÂY DỰNG HỆ THỐNG THI TRẮC NGHIỆM ...........46 CHƯƠNG 3 - XÂY DỰNG HỆ THỐNG THI TRẮC NGHIỆM 47 3.1. Mô tả bài toán thi trắc nghiệm ....................................................................47 3.2. Kiến trúc phần mềm.....................................................................................49 3.2.1. Giới thiệu chung ......................................................................................49 3.2.2. Biểu diễn kiến trúc ..................................................................................50 3.2.3. Mục tiêu và các ràng buộc kiến trúc .......................................................50 3.2.4. Khung nhìn ca sử dụng............................................................................51 3.2.5. Khung nhìn logic .....................................................................................53 3.2.6. Khung nhìn tiến trình ..............................................................................57 3.2.7. Khung nhìn triển khai..............................................................................59 3.2.8. Khung nhìn thực thi.................................................................................60 3.3. Thực hiện hệ thống .......................................................................................60 3.3.1. Lựa chọn công nghệ ................................................................................60 3.3.2. Thiết kế chương trình ..............................................................................65 3.3.3. Thiết kế cơ sở dữ liệu ..............................................................................72 3.3.4. Thiết kế lời gọi REST .............................................................................72 3.3.5. Một số hình ảnh chương trình .................................................................74 PHẦN 3: THẢO LUẬN VÀ KẾT LUẬN..................................................................77 TÀI LIỆU THAM KHẢO...........................................................................................80 PHỤ LỤC 01: MỘT SỐ ĐẶC TẢ CHUẨN DỊCH VỤ WEB 82 PHỤ LỤC 02: XÂY DỰNG DỊCH VỤ WEB KIỂU SOAP 97 PHỤ LỤC 03: MỘT SỐ CHUẨN WEB THÔNG DỤNG Luận văn Thạc sĩ - Đỗ Đức Thảo 103 Trang 4 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm LỜI CAM ĐOAN Với mục đích học tập, nghiên cứu để nâng cao kiến thức và trình độ chuyên môn, tôi làm luận văn này một cách nghiêm túc và trung thực. Trong luận văn, tôi có sử dụng một số tài liệu tham khảo của một số tác giả. Các nội dung viết có sử dụng tài liệu tham khảo đều được chỉ rõ nguồn trong ngoặc vuông. Danh sách các tài liệu tham khảo được liệt kê tại mục “Tài liệu tham khảo”. Toàn bộ mã nguồn để xây dựng chương trình là do tôi tự viết. Chương trình có dùng một số thư viện, công cụ để tạo lập môi trường hoặc mang tính chất tiện ích. Tôi xin cam đoan và chịu trách nhiệm về sự trung thực trong luận văn tốt nghiệp Thạc sĩ của mình. Hà Nội, ngày 21 tháng 10 năm 2008 Học viên Đỗ Đức Thảo Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 5 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm LỜI CẢM ƠN Tôi xin cảm ơn các Thầy, Cô giáo Trường Đại học Công nghệ đã truyền đạt nhiều kiến thức, bài giảng quý báu cho tôi trong thời gian học tại Trường. Tôi xin cảm ơn Thầy giáo - TS. Trương Anh Hoàng đã tận tình hướng dẫn và chỉ bảo tôi rất nhiều trong suốt thời gian làm luận văn. Tôi cũng xin được cảm ơn Ban Giám hiệu, Khoa CNTT, phòng Đào tạo sau đại học - Nghiên cứu khoa học, trường Đại học Công nghệ đã tạo điều kiện và giúp đỡ tôi hoàn thành luận văn và khoá học Thạc sĩ tại trường. Trong quá trình học tập và làm luận văn, tôi cũng đã nhận được sự giúp đỡ không nhỏ từ phía gia đình, bạn bè và đồng nghiệp. Tôi xin cảm ơn tất cả mọi người. Hà Nội, ngày 21 tháng 10 năm 2008 Đỗ Đức Thảo Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 6 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT STT Tên 1. SOA 2. WSDL 3. SOAP 4. UDDI 5. XML 6. REST 7. HTTP 8. WOA 9. RFC 10. STD 11. XHTML 12. SVG 13. CSS 14. CNTT Diễn giải Service Oriented Architecture Kiến trúc hướng dịch vụ Web Services Description Language Ngôn ngữ mô tả các dịch vụ web Simple Object Access Protocol Giao thức truy cập đối tượng đơn giản Universal Description, Discovery and Integration Tích hợp, khám phá, mô tả chung Extensible Markup Language Ngôn ngữ đánh dấu mở rộng REpresentational State Transfer Chuyển giao trạng thái biểu diễn (một kiểu kiến trúc trên web) Hypertext Transfer Protocol Giao thức truyền siêu văn bản Web Oriented Architecture Kiến trúc hướng web Request for Comment Dạng chuẩn của Internet Engineering Task Force Internet standard Chuẩn internet của Internet Engineering Task Force Extensible Hypertext Markup Language Ngôn ngữ đánh dấu siêu văn bản mở rộng Scalable Vector Graphics Các đồ hoạ vec tơ có thể co dãn Cascading Style Sheets Các bảng định kiểu thác nước (thường dùng cho HTML, XHTML). Công nghệ thông tin Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 7 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm DANH MỤC CÁC BẢNG Bảng 1 - Các phần tử kiến trúc REST ...........................................................................34 Bảng 2 - So sánh dịch vụ web SOAP và REST ............................................................38 Bảng 3 - Bảng danh sách các định nghĩa kiểu tài liệu web ...........................................43 Bảng 4 - Bảng cấu trúc các project Hệ thống thi trắc nghiệm.......................................65 Bảng 5 - Bảng thiết kế lời gọi REST.............................................................................74 Bảng 6 - Bảng tổng hợp ánh xạ từ UDDI/WSDL .........................................................92 Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 8 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm DANH MỤC CÁC HÌNH Hình 1 - Mô hình 4+1 khung nhìn.................................................................................15 Hình 2 - Sơ đồ khối định nghĩa SOA ............................................................................18 Hình 3 - Ví dụ một hệ thống SOA.................................................................................18 Hình 4 - Mô tả dịch vụ ..................................................................................................20 Hình 5 - Mô hình khái niệm cơ bản SOA .....................................................................21 Hình 6 - Mô hình đầy đủ SOA, thể hiện vai trò của kênh dịch vụ................................21 Hình 7 - Bên trong ESB.................................................................................................24 Hình 8 - Giải pháp SOA cơ sở.......................................................................................28 Hình 9 - Sơ đồ kiến trúc tổng thể dịch vụ web..............................................................29 Hình 10 - Sơ đồ đặc tả dịch vụ web .............................................................................30 Hình 11 - Kiến trúc WS-Security ..................................................................................31 Hình 12 - Mô hình WS-Security ...................................................................................31 Hình 13 - Thiết kế kiến trúc mức cao REST .................................................................36 Hình 14 - Phân giải URL tới các chức năng..................................................................36 Hình 15 - So sánh và đánh giá SOA..............................................................................38 Hình 16 - Hình ảnh kiểm tra web site IBM ...................................................................44 Hình 17 - Hình ảnh kiểm tra web site EVN ..................................................................44 Hình 18 - Tổng quan về Hệ thống thi trắc nghiệm........................................................50 Hình 19 - Khung nhìn ca sử dụng .................................................................................51 Hình 20 - Kiến trúc tổng thể..........................................................................................53 Hình 21 - Lớp trình diễn................................................................................................54 Hình 22 - Lớp trình diễn - Ngân hàng câu hỏi ..............................................................54 Hình 23 - Lớp trình diễn - Lập đề thi ............................................................................54 Hình 24 - Lớp trình diễn - Quản lý thí sinh...................................................................55 Hình 25 - Lớp trình diễn - Làm bài thi ..........................................................................55 Hình 26 - Lớp ứng dụng ................................................................................................55 Hình 27 - Lớp dịch vụ - Ngân hàng câu hỏi..................................................................56 Hình 28 - Lớp dịch vụ - Quản lý thi ..............................................................................57 Hình 29 - Mô hình hoạt động tổng thể của hệ thống thi trắc nghiệm ...........................58 Hình 30 - Mô hình triển khai hệ thống thi trắc nghiệm.................................................59 Hình 31 - Mô hình mạng áp dụng thực tế tại một Đơn vị .............................................59 Hình 32 - Khung nhìn thực thi ......................................................................................60 Hình 33 - Kiến trúc DotNetNuke ..................................................................................62 Hình 34 - Mô hình DataProvider...................................................................................62 Hình 35 - Mô hình CBO Hydrator để Fill Object/Collection........................................63 Hình 36 - Mô hình hoạt động mô đun ...........................................................................63 Hình 37 - Màn hình DotNetNuke khi xem....................................................................64 Hình 38 - Màn hình DotNetNuke khi thiết kế...............................................................64 Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 9 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm Hình 39 - Giao diện chính quản lý ngân hàng câu hỏi ..................................................74 Hình 40 - Giao diện thêm/sửa nhóm .............................................................................75 Hình 41 - Giao diện thêm/sửa câu hỏi...........................................................................75 Hình 42 - Giao diện tự kiểm tra trắc nghiệm.................................................................76 Hình 43 - Màn hình dịch vụ web nhận được yêu cầu kiểu REST.................................76 Hình 44 - Cấu trúc ngữ nghĩa của WSDL 1.1 ...............................................................85 Hình 45 - Mô hình cấu trúc biểu diễn quan hệ giữa các phần tử, theo .........................85 Hình 46 - Cấu trúc ngữ nghĩa của WSDL 2.0 ...............................................................89 Hình 47 - Cấu trúc message SOAP ...............................................................................94 Hình 48 - Mô hình kiến trúc dịch vụ web StockTrader.................................................97 Hình 49 - UML class diagram cho StockTraderTypes definition assembly .................99 Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 10 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm MỞ ĐẦU Cùng với sự phát triển mạnh mẽ của CNTT, có rất nhiều các công nghệ mới ra đời làm thay đổi thế giới. Một trong số đó là các công nghệ về web với kiến trúc hướng dịch vụ (SOA). Rất nhiều bài báo, Công ty lớn trên thế giới đã viết và tham tra trực tiếp vào lĩnh vực này. Nhận thấy đây là một lĩnh vực mới, thiết thực và có nhiều ý nghĩa đối với ngành Công nghệ thông tin nói chung và công nghệ phần mềm nói riêng, tôi đã lựa chọn đề tài “Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm” làm đề tài luận văn Thạc sĩ. Nội dung của luận văn gồm các phần: • Phần 1: Kiến trúc và chuẩn phần mềm trên nền web. Gồm các chương: - Chương 1: Kiến trúc phần mềm. Đề cập về lý thuyết kiến trúc phần mềm, kiến trúc hướng dịch vụ và dịch vụ web, kiểu kiến trúc REST. - Chương 2: Chuẩn phần mềm trên nền web. Trình bày khái niệm về chuẩn web, lý do cần chuẩn web, cùng các nguyên tắc để kiểm tra chuẩn web. • Phần 2: Ứng dụng xây dựng hệ thống thi trắc nghiệm. Gồm: - Chương 3: Xây dựng hệ thống thi trắc nghiệm. Đề cập ứng dụng thực tế trên cơ sở lý thuyết để xây dựng hệ thống thi trắc nghiệm. Hệ thống thi trắc nghiệm là hệ thống phần mềm truyền thống, đã có rất nhiều ứng dụng thương mại lẫn mã nguồn mở (open source). Tuy nhiên, tôi muốn tiếp cận xây dựng hệ thống theo hướng mới dựa trên nền tảng SOA. Qua đó, sẽ có nhiều ý tưởng và lợi ích mới mẻ được khám phá dựa trên sức mạnh của SOA. • Phần 3: Thảo luận và Kết luận. Kết luận về kết quả đã đạt được. Hà Nội, ngày 21 tháng 10 năm 2008 Đỗ Đức Thảo Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 11 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm PHẦN 1 - KIẾN TRÚC VÀ CHUẨN PHẦN MỀM TRÊN NỀN WEB Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 12 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm CHƯƠNG 1 - KIẾN TRÚC PHẦN MỀM 1.1. Kiến trúc phần mềm Hệ thống phần mềm ngày một lớn và phức tạp. Điều này trở nên nhiều khó khăn đối với các nhà phát triển phần mềm trong việc đảm bảo chất lượng, kiểm soát các thay đổi, bảo trì phần mềm. Để giải quyết hiệu quả vấn đề này, hệ thống phần mềm cần có một kiến trúc tốt, đủ để cho phần mềm có thể đứng vững trước các thay đổi, bổ sung liên tục mà vẫn giảm thiểu được các chi phí. Đây là mục đầu tiên, mang tính chất khái niệm, trước khi đi vào một số kiến trúc cụ thể như SOA, REST trong các mục sau. Trong mục này cũng sẽ trình bày một số vấn đề về kiến trúc phần mềm, giúp người phát triển phần mềm hoặc kiến trúc sư phần mềm có thể hiểu rõ và áp dụng cho công việc của mình. 1.1.1. Định nghĩa kiến trúc phần mềm Kiến trúc phần mềm là thuật ngữ khó định nghĩa. Thực tế là chưa có một định nghĩa nào về kiến trúc phần mềm được chấp nhận một cách rộng rãi. Để hiểu một cách đa dạng, nhiều khía cạnh, chúng ta sẽ đi qua một số định nghĩa tiêu biểu được tập hợp bởi Viện Kỹ nghệ phần mềm (Software Engineering Institute) [27]. Sau đây là định nghĩa đầu tiên của ANSI/IEEE [4]: Về mặt thực tế, kiến trúc được định nghĩa như là tổ chức cơ bản của một hệ thống, được biểu diễn bởi các thành phần, các quan hệ của chúng với nhau và với môi trường, cùng với các nguyên tắc bao trùm thiết kế và tiến hoá của nó. Định nghĩa thứ hai của L. Bass, P. Clements, R. Kazman [2]: Kiến trúc phần mềm của một chương trình hoăc hệ thống tính toán là cấu trúc hoặc các cấu trúc của hệ thống, nó bao gồm các phần tử phần mềm, các thuộc tính nhìn thấy bên ngoài của các phần tử đó, và các mối quan hệ giữa chúng. Định nghĩa này có phần gần giống như định nghĩa của ANSI/IEEE. Định nghĩa thứ ba của D. Garlan, M. Shaw [6]: Kiến trúc phần mềm vượt ra ngoài các giải thuật và các cấu trúc dữ liệu tính toán; việc thiết kế và xác định ra cấu trúc toàn bộ hệ thống trở nên như một dạng vấn đề mới. Các đề xuất cấu trúc bao gồm tổ chức toàn bộ và cấu trúc điều khiển toàn cục; các giao thức truyền thông, đồng bộ hoá, và truy nhập dữ liệu; gán chức năng cho các phần tử thiết kế; phân tán về vật lý; sự kết hợp của các phần tử thiết kế; mở rộng và hiệu năng; và sự lựa chọn giữa các cách thiết kế. Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 13 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm Phân tích các định nghĩa, chúng ta có thể rút ra được một số đặc tính cơ bản của các kiến trúc phần mềm. Trong phần tiếp theo sẽ mô tả một số cách tiếp cận chính để hiểu rõ hơn về kiến trúc phần mềm. 1.1.2. Các đặc tính cơ bản của kiến trúc phần mềm Từ các định nghĩa về kiến trúc, chúng ta sẽ rút ra một số đặc tính cốt lõi của kiến trúc phần mềm như sau: 1.1.2.1. Kiến trúc định nghĩa cấu trúc Đa số các nhà kiến trúc sư đều đầu tư nhiều thời gian và công sức vào việc phân rã hệ thống ứng dụng thành các thành phần có quan hệ, các mô đun, ứng dụng. Trong khi đó, một hệ thống ứng dụng có rất nhiều các yêu cầu và ràng buộc cần đáp ứng. Vì vậy, kiến trúc phần mềm đầu tiên là đưa ra được cấu trúc của hệ thống gồm các thành phần nào để đáp ứng được tất cả các yêu cầu và ràng buộc đó một cách tốt nhất. Trong quá trình phân rã một ứng dụng, kiến trúc sư gán các trách nhiệm cho mỗi thành phần. Các tránh nhiệm này định nghĩa tác vụ mà thành phần đó đảm nhận trong ứng dụng [7]. 1.1.2.2. Kiến trúc xác định truyền thông giữa các thành phần Hệ thống phần mềm được phân rã thành các thành phần. Việc liên kết giữa các thành phần tạo nên những hoạt động của hệ thống. Vì vậy, kiến trúc cần xác định truyền thông giữa các thành phần này thông qua việc trao đổi dữ liệu, các thông tin điều khiển. Các thành phần này có thể được thực hiện trong cùng một không gian địa chỉ, trên các luồng hoặc tiến trình khác nhau. Hoặc nhiều thành phần có thể đồng thời được báo hiệu khi có một sự kiện nào đó xẩy ra [7]. 1.1.2.3. Kiến trúc đề cập các yêu cầu phi chức năng Các yêu cầu phi chức năng không xuất hiện trong các ca sử dụng (Use-case). Nó được phân loại thành các dạng: • Các ràng buộc kỹ thuật: chúng ràng buộc các lựa chọn thiết kế hoặc công nghệ cần phải sử dụng. Ví dụ, “chúng ta chỉ có các lập trình viên Java, vì vậy chúng ta phải phát triển trên Java”. • Các ràng buộc nghiệp vụ: là các ràng buộc phi kỹ thuật, gắn với các công tác nghiệp vụ. • Các thuộc tính chất lượng: định nghĩa các ràng buộc ứng dụng về tính mềm dẻo, dễ mở rộng, dễ thay đổi, tái sử dụng, hiệu năng, vân vân. Các yêu cầu này này cần phải được đề cập một cách rõ ràng trong thiết kế. Ngoài các yêu cầu chức năng, các nhà kiến trúc sư thì cũng đều phải tính tới tất cả các yêu cầu phi chức năng [7]. Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 14 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm 1.1.2.4. Kiến trúc là sự trừu tượng hoá Bằng cách tạo dựng lên các thành phần, quan hệ giữa các thành phần, bản thân kiến trúc chính là sự trừu tượng hoá cho ứng dụng sẽ xây dựng. Nó là phương tiện dễ đọc, dễ hiểu và dễ trao đổi nhất giữa đội dự án, với cả các nhà tài trợ dự án [7]. 1.1.2.5. Các khung nhìn kiến trúc Các khung nhìn kiến trúc được đưa ra trong mô hình 4+1 khung nhìn của Philippe Krutchen, năm 1995 [14]: Khung nhìn thực thi (Implementation View) Khung nhìn lô gic (Logical View) Người dùng ối năng Chức Khung nhìn ca sử dụng (Use Case View) Khung nhìn tiến trình (Process View) Lập trình viên Quản lý phần mềm Khung nhìn triển khai (Deployment View) Kỹ sư hệ thống Người tích hợp hệ thống Mô hình hệ thống Chuyển giao, cài đặt Truyền thông Hiệu năng Mở rộng Khái niệm Vật lý Hình 1 - Mô hình 4+1 khung nhìn • • • • Bao gồm: Khung nhìn logic (Logical View): mô tả các phần tử kiến trúc quan trọng và mối quan hệ giữa chúng. Nó đưa ra cấu trúc ứng dụng bằng các sơ đồ dạng Class Diagram hoặc tương đương. Khung nhìn tiến trình (Process View): Tập trung mô tả các phần tử truyền thông và tương tranh của một kiến trúc. Khung nhìn vật lý/triển khai (Physical View/Deployment View): nó mô tả làm thế nào các tiến trình và thành phần được ánh xạ với hệ thống phần cứng. Ví dụ như các cơ sở dữ liệu, máy chủ web được đưa vào một số các máy chủ. Khung nhìn phát triển/thực thi (Development View/Implementation View): nó tập trung vào tổ chức bên trong của các thành phần phần mềm, thông thường là chúng sẽ được đưa vào môi trường phát triển hoặc công cụ quản lý cấu hình. Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 15 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm Các khung nhìn này được gắn với một khung nhìn trung tâm là khung nhìn ca sử dụng (Use-case View). Đây là khung nhìn biểu diễn các chức năng của hệ thống. 1.1.3. Tại sao kiến trúc phần mềm quan trọng Các lý do khiến cho kiến trúc phần mềm trở nên quan trọng [2]: • Trao đổi với các nhà tài trợ: kiến trúc phần mềm biểu diễn sự trừu tượng hoá chung của hệ thống. Trong khi đó, đa số các nhà tài trợ không phải tất cả đều có chung một cơ sở để có thể hiểu nhau, thương lượng, quyết tâm. • Các quyết định thiết kế sớm: kiến trúc phần mềm biểu thị các quyết định sớm về thiết kế hệ thống. Nó là bức tranh toàn cảnh về hệ thống cần xây dựng mà các bước tiếp theo cần cụ thể hoá và chi tiết các phần này. • Trừu tượng hoá của một hệ thống có thể chuyển giao: Kiến trúc phần mềm tạo ra mô hình dễ hiểu, có tri thức, đủ nhỏ để làm thế nào một hệ thống được cấu trúc và làm thế nào các phần tử của nó làm việc cùng với nhau. Đặc biệt, nó có thể được áp dụng sang các hệ thống khác có thuộc tính chất lượng, yêu cầu chức năng tương tự và có thể đẩy lên tái sử dụng quy mô lớn. 1.1.4. Kết luận về kiến trúc phần mềm Kiến trúc phần mềm là một trong các yếu tố quan trọng, quyết định lớn tới toàn bộ quá trình phát triển phần mềm. Qua các định nghĩa, chúng ta hiểu về tầm quan trọng của kiến trúc phần mềm. Chúng hướng tới giải quyết các yêu cầu phi chức năng như khả năng sẵn sàng, dễ thay đổi, hiệu năng, an ninh, khả năng kiểm thử, khả năng sử dụng. Các mục tiếp theo sẽ trình bày về một dạng kiến trúc phần mềm tiên tiến hiện nay và thu hút được sự quan tâm của nhiều người - Kiến trúc hướng dịch vụ, đặc biệt là trong môi trường dựa trên web và các công nghệ thực hiện. 1.2. Kiến trúc hướng dịch vụ (SOA) Kiến trúc hướng dịch vụ (SOA – Service Oriented Architecture) là một kiểu kiến trúc mà tất cả các khía cạnh của việc tạo và sử dụng các tiến trình nghiệp vụ được đóng gói như các dịch vụ. Trong suốt chu trình sống của nó, cũng như việc định nghĩa và cung cấp cơ sở hạ tầng CNTT, SOA cho phép các ứng dụng khác nhau trao đổi dữ liệu và kết nối các tiến trình nghiệp vụ một cách lỏng lẻo, không phân biệt hệ điều hành và các ngôn ngữ lập trình bên dưới các ứng dụng đó. SOA biểu diễn một mô hình mà các chức năng của nó được phân rã vào trong các đơn vị nhỏ, khác nhau, có thể được phân tán qua mạng và có thể được kết hợp lại với nhau hoặc tái sử dụng để tạo ra các ứng dụng nghiệp vụ mới. Các dịch vụ này truyền thông với nhau thông qua việc truyền dữ liệu từ dịch vụ này tới dịch vụ khác, hoặc kết hợp các hoạt động bởi hai hoặc Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 16 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm nhiều dịch vụ. Khái niệm SOA thường được xây dựng và là bước phát triển hơn của các khái niệm cũ như tính toán phân tán và lập trình mô đun. 1.2.1. Vài nét về lịch sử SOA Khái niệm SOA được tạo ra vào năm 1996 trên một bài báo của nhà phân tích Gartner Yefim V.Natis[21]: - SOA là kiến trúc phần mềm được bắt đầu bởi một định nghĩa giao diện và xây dựng toàn bộ mô hình ứng dụng như một mô hình các giao diện, các thực thi giao diện và các lời gọi giao diện. - SOA nên được đặt là ‘kiến trúc hướng giao diện’ thì đúng hơn. Trước đó cũng đã có nhiều khái niệm kiến trúc phần mềm như khách - chủ (Client – Server), gọi thủ tục từ xa (RPC), đến CORBA (Common Object Request Broker 1991). Kiến trúc RPC hay CORBA cũng đã được hiện thực hoá bởi các công nghệ/chuẩn của Sun với RMI (trong phiên bản JDK 1.1 – 1997)/RMI-IIOP (trong phiên bản J2SE 1.3 – 2000) trên ngôn ngữ Java, hay của Microsoft với DCOM (năm 1996). Các công nghệ/chuẩn này nhìn chung còn khá phức tạp, không liên thông giữa các ngôn ngữ lập trình khác nhau. Mặc dù xuất hiện sớm, nhưng SOA thực sự được quan tâm sau đó vài năm, vào khoảng năm 2002/2003. Lúc này, công nghệ dịch vụ web (web service) đã xuất hiện. Nó cung cấp một ngôn ngữ định nghĩa giao diện mới là WSDL, rất thích hợp cho việc sử dụng trong SOA. Dịch vụ web được chấp nhận rộng rãi do có nhiều ưu điểm mạnh. Một điều cần lưu ý, SOA là một kiểu kiến trúc, không phải sản phẩm và công nghệ dịch vụ web thích hợp cho SOA. 1.2.2. SOA là gì? SOA (Service Oriented Architecture) - Kiến trúc hướng Dịch vụ, theo định nghĩa của DotNetGuru [25], là khái niệm về hệ thống trong đó mỗi ứng dụng được xem như một nguồn cung cấp dịch vụ. Định nghĩa khác của IBM [19]: SOA là một cách tiếp cận để xây dựng các hệ thống phân tán và thực hiện tích hợp doanh nghiệp bằng cách chuyển giao chức năng ứng dụng như các dịch vụ tới các ứng dụng người dùng cuối hoặc các dịch vụ khác. Một định nghĩa nữa có phần rõ ràng hơn về SOA [13]: Kiến trúc hướng dịch vụ (SOA) là một kiến trúc phần mềm dựa trên các khái niệm cốt lõi của đầu cuối ứng dụng (application frontend), dịch vụ (service), kho chứa dịch vụ (service repository), và kênh dịch vụ (service bus). Một dịch vụ bao gồm một thoả ước, một hoặc nhiều giao diện, và một thực thi. Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 17 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm Kiến trúc hướng dịch vụ (SOA) Đầu cuối ứng dụng (Application frontend) Thoả ước (Contract) Dịch vụ (Service) Kho chứa dịch vụ (Service Repository) Thực thi (Implementation) Giao diện (Interface) Lôgic nghiêp vụ (Business Logic) Kênh dịch vụ (Service Bus) Dữ liệu (Data) Hình 2 - Sơ đồ khối định nghĩa SOA SOA biểu diễn một mô hình tiến hoá mới để xây dựng các ứng dụng phân tán. Các dịch vụ là các thành phần phân tán cung cấp các giao diện được định nghĩa tốt và trao đổi thông tin bằng các thông điệp XML. Cách tiếp cận dựa trên dịch vụ rất có ý nghĩa trong việc xây dựng các giải pháp vượt qua cả đường biên ranh giới công ty, phòng ban, tổ chức. Một nghiệp vụ cùng với nhiều hệ thống và ứng dụng trên các nền tảng khác nhau có thể sử dụng SOA để xây dựng giải pháp tích hợp kết nối lỏng lẻo và thực hiện các luồng công việc đồng nhất. Một hình ảnh ví dụ về hệ thống sử dụng kiến trúc SOA: web site bán hàng sử dụng thương mại điện tử: Hình 3 - Ví dụ một hệ thống SOA Một kiến trúc chuẩn hoá, mềm dẻo đòi hỏi phải hỗ trợ tốt việc kết nối giữa các ứng dụng và chia sẻ dữ liệu. SOA là một trong các kiến trúc đó. Trung tâm của SOA đó là Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 18 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm các dịch vụ. Dịch vụ được hiểu một cách đơn giản như là các mô đun phần mềm để thực hiện một số chức năng nào đó, có khả năng làm việc độc lập và cung cấp các giao diện để giao tiếp với môi trường bên ngoài. Trong SOA, dịch vụ được nâng lên một tầng cao hơn của một dịch vụ thông thường. Đó là mỗi dịch vụ có một bản mô tả đầy đủ về nó để các đối tượng khác có thể hiểu và sử dụng được, không phân biệt nền tảng thực thi. Hệ thống được xây dựng bằng kiến trúc SOA cung cấp một tập hợp các dịch vụ. Sự phối kết của các dịch vụ sẽ tạo ra các ứng dụng mới đáp ứng cho tiến trình xử lý nghiệp vụ. Như vậy, bản thân dịch vụ trong SOA còn có ý nghĩa nữa đó là khả năng tái sử dụng. 1.2.3. Các phần tử của SOA Trong mục này sẽ định nghĩa cụ thể các phần tử của SOA [13] và mô hình để kết nối các phần tử theo các cách khác nhau của SOA (thời gian phát triển hay thời gian chạy). 1.2.3.1. Các đầu cuối ứng dụng (Application Frontends) Các đầu cuối ứng dụng là những thành phần tích cực trong SOA. Chúng khởi động và điều khiển tất cả các hoạt động của hệ thống. Có nhiều kiểu khác nhau của đầu cuối ứng dụng. Nó có thể là một chương trình ứng dụng có giao diện đồ hoạ để giao tiếp trực tiếp với người dùng cuối. Hoặc cũng có thể là các chương trình tự chạy mà không có giao diện người dùng cuối nhưng gọi các chức năng định kỳ. 1.2.3.2. Các dịch vụ (Services) Dịch vụ là một cấu thành phần mềm thực hiện một số chức năng để đóng gói khái niệm nghiệp vụ mức cao. Nó bao gồm các thành phần như hình 4, chi tiết như sau : • Thoả ước (contract): Cung cấp bản đặc tả về mục đích, chức năng, các ràng buộc, và sử dụng dịch vụ. • Giao diện (interface): Chức năng dịch vụ được bộc lộ ra bên ngoài cho các trình khách (client) thông qua giao diện. Thực thi vật lý của giao diện gồm các gốc dịch vụ (service stub) được kết hợp vào trong các trình khách sử dụng dịch vụ. • Thực thi (imlementation): thực thi dịch vụ cung cấp một cách vật lý của dữ liệu và lôgic nghiệp vụ. Nó là một hiện thực hoá kỹ thuật để hoàn thành thoả ước dịch vụ. Kết quả thực tế là các chương trình, dữ liệu cấu hình và cơ sở dữ liệu. Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 19 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm Hình 4 - Mô tả dịch vụ 1.2.3.3. Kho chứa dịch vụ (Service Repository) Kho chứa dịch vụ cung cấp các phương tiện để tìm kiếm dịch vụ và thu thập các thông tin sử dụng dịch vụ. Đặc biệt là các dịch vụ này có thể được khám phá bên ngoài phạm vi thời gian và chức năng của dự án tạo ra chúng. Mặc dù đa số thông tin đã nằm trong bản thoả ước dịch vụ, kho chứa dịch vụ còn cung cấp thêm một số thông tin về vị trí vật lý, người cung cấp, người liên hệ, phí sử dụng, các ràng buộc kỹ thuật, các đề xuất về an ninh, các mức dịch vụ sẵn sàng. Kho chứa là phần tử hữu ích trong SOA. Nhưng ta có thể xây dựng SOA với nhiều lợi ích mà không cần kho chứa SOA. Một kiến trúc có thể không cần kho chứa nếu phạm vi dịch vụ chỉ cho một dự án. Nhưng nếu có nhiều dự án, nhiều dịch vụ, nhiều nhóm với sự thay đổi nhân sự không biết trước thì kho chứa dịch vụ là yếu tố cần chú ý xem xét. Việc thực hiện kho chứa dịch vụ cũng có nhiều hình thức. Nhưng cách tốt nhất vẫn là lưu chúng trong một cơ sở dữ liệu có định dạng cấu trúc. 1.2.3.4. Kênh dịch vụ (Service bus) Kênh dịch vụ được dùng để kết nối các thành viên là các dịch vụ và đầu cuối ứng dụng lại với nhau. Các đặc tính của kênh dịch vụ: • Tính kết nối (Connectivity): Mục đích chính của kênh dịch vụ là kết nối các thành viên của SOA. Nó cung cấp phương tiện để các thành viên của đầu cuối ứng dụng và dịch vụ gọi chức năng của các dịch vụ. • Không đồng nhất công nghệ: kênh dịch vụ có thể mang nhiều công nghệ khác nhau. Kênh dịch vụ có thể kết nối các thành viên trên các ngôn ngữ lập trình, hệ điều hành, môi trường chạy khác nhau. Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 20 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm • Không đồng nhất của các khái niệm truyền thông: tương tự không đồng nhất công nghệ, kênh dịch vụ cũng mang nhiều khái niệm truyền thông khác nhau. Ví dụ tối thiểu là phải có phương tiện truyền thông đồng bộ và không đồng bộ. • Các dịch vụ kỹ thuật: thông qua mục đích của kênh dịch vụ là truyền thông, nó cũng phải cung cấp các dịch vụ kỹ thuật như ghi nhật ký, kiểm toán, an ninh, truyền thông điệp, hoặc các giao dịch. Trong phần Kênh dịch vụ doanh nghiệp (ESB – Enterprise Service Bus) sẽ thảo luận kỹ về việc này. 1.2.4. Mô hình khái niệm SOA Mô hình kiến trúc SOA cơ bản [11] được biểu diễn bằng hình sau: Sử dụng dịch vụ Tìm kiếm Yêu cầu Đáp ứng Cung cấp dịch vụ #1 Yêu cầu Đáp ứng Cung cấp dịch vụ #2 Công bố Kho chứa dịch vụ Hình 5 - Mô hình khái niệm cơ bản SOA Một mô hình khác thể hiện sự tham gia đầy đủ của các thành phần trong SOA [24]: Sử dụng dịch vụ Yêu cầu dịch vụ Nối kết Cung cấp dịch vụ Kênh dịch vụ Công bố Tìm kiếm và Lựa chọn Kho chứa dịch vụ Hình 6 - Mô hình đầy đủ SOA, thể hiện vai trò của kênh dịch vụ Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 21 Kiến trúc và chuẩn phần mềm trên nền web, ứng dụng xây dựng Hệ thống thi trắc nghiệm Trong đó, có 3 thực thể chính: • Cung cấp dịch vụ (Service Provider): đăng tải các thông tin về dịch vụ mình cung cấp lên kho chứa dịch vụ và xử lý các yêu cầu dịch vụ. • Sử dụng dịch vụ (Service Consumer): truy cập thư mục dịch vụ để lấy thông tin về các dịch vụ cung cấp, gửi yêu cầu đến Service Provider. • Kho chứa dịch vụ (Service Repository/Directories): lưu trữ tập trung các thông tin về dịch vụ cung cấp. Lưu ý rằng, một cung cấp dịch vụ (service provider) cũng có thể trở thành một sử dụng dịch vụ (service consumer) để gọi tới các cung cấp dịch vụ (service provider) khác (như đối tượng cung cấp dịch vụ #1 trên hình vẽ 6). Trường hợp sử dụng kênh dịch vụ, mô hình SOA có thể được biến đổi để đưa kênh dịch vụ vào trung tâm truyền thông giữa các thành phần. Để làm rõ hơn trường hợp sử dụng kênh dịch vụ, thể hiện trong phần tiếp theo về Kênh dịch vụ doanh nghiệp (ESB – Enterprise Service Bus). 1.2.5. Kênh dịch vụ doanh nghiệp (ESB - Enterprise Service Bus) Khái niệm kênh (bus) khá quen thuộc với những người làm về máy tính, gắn với phần cứng. Nó được xem như là một kênh truyền tín hiệu từ bộ phận này đến bộ phận khác trong máy tính. Tương tự như vậy, chúng ta cũng sẽ hiểu về ESB trong phần mềm. 1.2.5.1. ESB là gì? Chưa có một định nghĩa hình thức nào về ESB. Nó thường được nhiều nhà bán hàng chiếm lĩnh và định nghĩa lại để phù hợp cho bộ sản phẩm của họ. Đây cũng là một khái niệm nhiều tranh cãi, cho rằng ESB là một kiểu kiến trúc, một sản phẩm phần mềm hoặc nhóm các sản phẩm phần mềm. Khái niệm ESB thường liên quan đến một kiến trúc xác định, nó được sử dụng nhiều nhất để biểu diễn một cơ sở hạ tầng mà cho phép như một kiến trúc. Nói một cách khác, ESB cung cấp một cơ sở hạ tầng truyền thông phía dưới cho các thành phần phần mềm. Chữ “Enterprise” trong ESB nhấn mạnh rằng sản phẩm có các tính năng như an ninh, giao dịch, và thích hợp cho sử dụng trong doanh nghiệp phát triển lớn [26, 21]. 1.2.5.2. Cơ sở của ESB ESB là trung tâm đầu não truyền thông cho các dịch vụ trong kiến trúc hướng dịch vụ. Trong đó, ESB được thiết kế để đóng vai trò trung gian giữa các thành phần SOA, dịch vụ hạ tầng, và các tiến trình nghiệp vụ. ESB có tính chất đa năng. Nó có thể kết nối các kiểu phần mềm trung gian, kho chứa các định nghĩa siêu dữ liệu (như làm thế nào bạn định nghĩa một số hiệu khách hàng), sổ đăng ký (làm thế nào định vị thông Luận văn Thạc sĩ - Đỗ Đức Thảo Trang 22
- Xem thêm -

Tài liệu liên quan