Bài báo giới thiệu kiến trúc phần mềm hướng dịch vụ Service Oriented Architecture (SOA), những đặc điểm chính của SOA và đưa ra một cách thức ứng dụng SOA trong phát triển các phần mềm quản lý nhằm nâng cao hiệu quả trong tin học hóa công tác quản lý.
JOURNAL OF SCIENCE OF HNUE FIT., 2011, Vol 56, pp 137-145 ỨNG DỤNG KIẾN TRÚC SOA TRONG PHÁT TRIỂN PHẦN MỀM QUẢN LÝ Phan Nguyên Hải∗1, Nguyễn Ngọc Phú2 Phùng Thị Minh Hồng2 Khoa Công nghệ Thông tin - Học viện Kĩ thuật Quân Trường Dự bị Đại học Dân tộc Trung ương (∗) E-mail: phannguyenhai@yahoo.com Tóm tắt Bài báo giới thiệu kiến trúc phần mềm hướng dịch vụ Service Oriented Architecture (SOA), đặc điểm SOA đưa cách thức ứng dụng SOA phát triển phần mềm quản lý nhằm nâng cao hiệu tin học hóa cơng tác quản lý Mở đầu Kiến trúc phần mềm có vai trị quan trọng quy trình phát triển phần mềm, tính quan trọng thể qua việc bước thiết kế kiến trúc bước cần giải giai đoạn quan trọng quy trình phần mềm - giai đoạn thiết kế Kiến trúc phần mềm có mối liên hệ chặt chẽ với yêu cầu phi chức hay yêu cầu chất lượng phần mềm, kiến trúc xác định phần mềm có chất lượng tốt [4] Ngồi mối liên hệ với chất lượng phần mềm, kiến trúc phần mềm cho phép quan sát phần mềm mức cao, cho phép tái sử dụng thành phần phần mềm giúp tiết kiệm chi phí, hạn chế rủi ro trình phát triển đơn giản hóa hoạt động diễn sau giai đoạn thiết kế lập trình, kiểm thử, triển khai, bảo trì nâng cấp hệ thống [5] Ngày nay, lĩnh vực cơng nghệ phần mềm có nhiều mơ hình, nhiều phong cách kiến trúc phần mềm xây dựng, mơ hình, phong cách đóng vai trị tảng cho việc xác định kiến trúc phần mềm cụ thể Các mơ hình kiến trúc phần mềm phổ biến Client-Server, Distributed Computing, Event-driven, kiến trúc ba tầng (three-tier), kiến trúc ba lớp (three-layer), kiến trúc hướng dịch vụ, Trong mô hình phổ biến đó, mơ hình kiến trúc hướng dịch vụ Service Oriented Architecture (SOA) có nhiều triển vọng bối cảnh phần mềm ngày phức tạp nay, SOA thích hợp cho việc xây dựng phần mềm ứng dụng đồ sộ mức độ doanh nghiệp hay mức độ tổ chức [2] Trong báo này, tác giả đề xuất minh họa ứng dụng SOA cho phát triển phần mềm quản lý nhằm nâng cao hiệu q trình tin học hóa trường Dự bị đại học Dân tộc Trung ương nói riêng tổ chức nói chung 137 Phan Nguyên Hải, Nguyễn Ngọc Phú Phùng Thị Minh Hồng Nội dung nghiên cứu 2.1 2.1.1 Kiến trúc hướng dịch vụ SOA Khái niệm SOA nguyên nhân xuất Về kiến trúc phần mềm hướng dịch vụ SOA, có nhiều định nghĩa, nhiều cách hiểu khác nhau, định nghĩa, cách hiểu xuất phát từ góc độ nhìn nhận hay tổ chức cụ thể Tuy nhiên, kể định nghĩa có tính bao trùm IBM tập đồn phát triển ứng dụng SOA cách mạnh mẽ [2]: SOA- Service Oriented Architecture cấu trúc IT mức độ doanh nghiệp dùng để kết nối tài nguyên cần thiết Những tài nguyên dịch vụ mang tính nghiệp vụ có khả tham gia kết hợp mạng giá trị, doanh nghiệp hướng kinh doanh để thỏa mãn nhu cầu kinh doanh Thành phần cấu trúc ứng dụng SOA dịch vụ hệ thống con, hệ thống hay thành phần Như vậy, dịch vụ yếu tố then chốt SOA Có thể hiểu dịch vụ hàm chức (mô-đun phần mềm) thực qui trình nghiệp vụ Một cách bản, SOA tập hợp dịch vụ kết nối “mềm dẻo” với (nghĩa ứng dụng “nói chuyện” với ứng dụng khác mà khơng cần biết chi tiết kỹ thuật bên trong), có giao tiếp (dùng để gọi hàm dịch vụ) định nghĩa rõ ràng độc lập với tảng hệ thống, tái sử dụng SOA cấp độ cao phát triển ứng dụng, trọng đến qui trình nghiệp vụ dùng giao tiếp chuẩn để giúp che phức tạp kỹ thuật bên Sự phức tạp ngày gia tăng hệ thống phần mềm mức độ doanh nghiệp nguyên nhân xuất kiến trúc SOA Sự phức tạp thể qua hai khía cạnh sau: Thứ nhất, xuất nhiều công nghệ tạo nên môi trường không đồng nhu cầu chia sẻ, tương tác, trao đổi hệ thống tiến hành môi trường Giải vấn đề nghĩa tổ chức, doanh nghiệp cần phải thay đổi hệ thống theo chuẩn thống chung Điều chủ yếu hệ thống cũ với công nghệ khác biệt cần sử dụng lại gỡ bỏ thay vấn đề chi phí cho thiết lập hệ thống quản lý tốn nhiều so với chuyển đổi cũ Thứ hai, vấn đề lập trình dư thừa tái sử dụng Chẳng hạn, doanh nghiệp có nhiều chi nhánh khác nhau, chi nhánh lại có hệ thống tách biệt xây dựng thời điểm khác cần kết nối lại với không tránh khỏi việc sử dụng dư thừa tài nguyên, liệu không đồng Những khía cạnh nêu đưa đến khái niệm “Tích hợp hệ thống” (Enterprise Architecture Intergration - EAI) – nhiều tổ chức quan tâm đầu tư giải với chi phí cao Ngày nay, tổ chức, doanh nghiệp phải đối mặt với vấn đề 138 Ứng dụng kiến trúc SOA phát triển phần mềm quản lý tích hợp nhiều lí mở rộng thêm chi nhánh, thêm hệ thống bạn hàng mới, cần kết nối hệ thống có sẵn, Vấn đề kéo theo chi phí thay đổi mã nguồn cũ, kiểm thử, bảo trì, Để giải vấn đề này, công nghệ, kiến trúc phổ biến OOP (Object Oriented Programming), DCOM (Distributed Common Object Model), CORBA (Common Object Request Broker Architecture) chưa đem lại kết mong muốn SOA xem “ứng cử viên sáng giá” đảm nhận trọng trách kỳ vọng tạo nên cách mạng kỹ nghệ phần mềm, giúp cho công việc phát triển phần mềm trở nên dễ dàng, nhanh chóng, dễ chỉnh sửa dễ mở rộng [3] 2.1.2 Các nguyên tắc SOA Theo định nghĩa, thành phần hệ thống phần mềm có kiến trúc SOA dịch vụ, dịch vụ theo kiến trúc SOA phải tuân thủ nguyên tắc sau [3]: • Các dịch vụ phải có phân định ranh giới rạch rịi • Các dịch vụ tự hoạt động thực thể độc lập • Các dịch vụ chia sẻ lược đồ • Các dịch vụ tương thích dựa sách • Các dịch vụ kết nối lỏng lẻo • Các dịch vụ có khả tái sử dụng • Các dịch vụ phải cho phép đối tượng cần sử dụng dịch vụ tìm thấy Những nguyên tắc sở để giải phức tạp nêu hệ thống phần mềm mức độ doanh nghiệp, đồng thời đem lại chất lượng cho hệ thống phần mềm 2.1.3 Các thành phần hệ thống theo kiến trúc SOA Một hệ thống phần mềm xây dựng theo kiến trúc SOA bao gồm ba nhóm thành phần chính: Service Provider, Service Consumer, Service Registry Sự tương tác thành phần miêu tả Hình Hình Các thành phần hệ thống theo kiến trúc SOA Service Provider: Cung cấp dịch vụ phi trạng thái (stateless) phục vụ cho nhu cầu 139 Phan Nguyên Hải, Nguyễn Ngọc Phú Phùng Thị Minh Hồng Serive Consumer: Sử dụng dịch vụ cung cấp Service Provider Service Registry: Nơi lưu trữ thông tin dịch vụ Service Provider khác nhau, Service Consumer dựa thông tin để tìm kiếm lựa chọn Service Provider phù hợp 2.1.4 Các công nghệ hỗ trợ phát triển phần mềm theo kiến trúc SOA Trong chương trình theo kiến trúc SOA, có thành phần miêu tả Hình Hình Các thành phần chương trình theo kiến trúc SOA [1] Những thành phần chương trình viên gạch để tạo nên thành phần Service Provider, Service Consumer Service Registry hệ thống phần mềm theo kiến trúc SOA Trong phát triển phần mềm theo kiến trúc SOA, quan trọng xác định cách thức thành phần trao đổi thông tin với nhau, làm để Consumer biết Provider cung cấp dịch vụ gì, sau biết dịch vụ Consumer làm để yêu cầu chúng cách Provider trả kết lại cho Consumer Trong sơ đồ Hình 2, thành phần chương trình đóng vai trị giúp Provider Consumer trao đổi thông tin Contract, Interface, Service repository, Service bus Việc xây dựng quy trình xử lý thành phần Consumer Provider (Application frontend, Business logic, Data) coi việc xây dựng quy trình xử lý chương trình thơng thường Hiện nay, để giúp thành phần hệ thống phần mềm theo kiến trúc SOA giao tiếp hỗ trợ xây dựng quy trình xử lý dịch vụ có cơng nghệ sau: • SOAP (Simple Object Access Protocol) giao thức trao đổi thông tin có cấu trúc XML hệ thống phân tán • RPC (Remote Procedure Call) cơng nghệ giúp chương trình máy tính gọi hàm thủ tục máy tính khác • DCOM (Distributed Component Object Model) • CORBA (Common Object Request Broker Architecture) • WSDL (Web Services Description Language) giúp miêu tả dịch vụ Provider cung cấp • WCF (Windows Communication Foundation) Visual Studio.NET 140 Ứng dụng kiến trúc SOA phát triển phần mềm quản lý Trong công nghệ trên, RPC, DCOM, CORBA trao đổi thông tin dạng nhị phân nên có nhược điểm dễ bị tường lửa ngăn chặn, WCF tương đối cho phép sử dụng công nghệ mạnh mẽ NET Framework WCF sử dụng SOAP để trao đổi thông tin WSDL để mô tả thông tin dịch vụ Hiện WCF phát triển mạnh mẽ, công nghệ chủ đạo Microsoft để phát triển phần mềm theo kiến trúc SOA 2.2 2.2.1 Phát triển phần mềm theo kiến trúc SOA Những bất cập phần mềm quản lý giải pháp loại trừ Như nói trên, kiến trúc SOA thích hợp cho hệ thống phần mềm mức độ doanh nghiệp, tổ chức Kiến trúc SOA giúp giải vấn đề dư thừa, nâng cao khả tái sử dụng Để minh họa cho hiệu này, xem xét việc phát triển phần mềm quản lý điểm học sinh cho trường Dự bị Đại học dân tộc Trung ương nhằm mục tiêu tin học hóa hoạt động nhà trường gặp phải vấn đề việc ứng dụng kiến trúc SOA để giải Xét cách tổng thể, tương lai để đạt mục tiêu tin học hóa nhà trường cần phải phát triển loạt phần mềm phần mềm quản lý nhân sự, phần mềm quản lý học sinh, phần mềm quản lý điểm, phần mềm quản lý học phí, học bổng, lương, phần mềm quản lý thư viện, Trong phần mềm trên, thấy phần mềm quản lý học sinh, phần mềm quản lý điểm, phần mềm quản lý học phí, học bổng, phần mềm quản lý thư viện cần phải có sở liệu (CSDL) hồ sơ học sinh để hoạt động Nếu xây dựng phần mềm quản lý cách thông thường, nghĩa thiết kế CSDL, sử dụng hệ quản trị CSDL để lưu trữ xây dựng ứng dụng hoạt động độc lập không liên quan đến phần mềm khác để làm việc trực tiếp với hệ quản trị CSDL theo kiến trúc Client-Server, thấy bất cập sau: • Thứ nhất, thơng tin học sinh bị lưu trữ nhiều lần, nhiều nơi, điều gây lãng phí khơng gian lưu trữ thời gian, cơng sức nhập liệu • Thứ hai, thông tin học sinh họ tên, lớp học, lưu trữ độc lập CSDL phần mềm trên, thơng tin bị thay đổi riêng rẽ tạo nên khác biệt, sai lệch Ngoài bất cập phần mềm quản lý điểm, q trình tin học hóa nhà trường gặp bất cập việc phần mềm quản lý nhân sự, quản lý thư viện, quản lý lương có CSDL chứa thơng tin nhân sự, Những bất cập bất cập chung phổ biến q trình tin học hóa hoạt động quan đơn vị, doanh nghiệp, tổ chức Nguyên nhân phận quản lý muốn phát triển phần mềm quản lý dùng cho riêng mình, khơng có chia sẻ với phận quản lý khác Để loại bỏ bất cập có ý tưởng giải pháp sau: Giải pháp thứ nhất: Xây dựng CSDL lớn, tập trung, lưu trữ tất 141 Phan Nguyên Hải, Nguyễn Ngọc Phú Phùng Thị Minh Hồng thông tin nhà trường (cơ quan, đơn vị, doanh nghiệp, tổ chức) phát triển hệ thống gồm nhiều phân hệ quản lý làm việc với CSDL Đây giải pháp tổng thể, nhiên thấy việc xây dựng hồn tồn khơng đơn giản, địi hỏi phận quản lý phải phối hợp phát triển, việc lưu trữ CSDL tập trung gây vấn đề bảo mật, an tồn liệu phận quản lý truy cập vào liệu phận quản lý khác, thực tế phận quản lý có độc lập tương đối, không nên ghép phần mềm quản lý vào hệ thống lớn Giải pháp thứ hai: Lưu trữ CSDL độc lập theo kiểu thông tin lưu trữ lần cho phép phần mềm truy cập trực tiếp vào CSDL Giải pháp có nhiều vấn đề như: khó quản trị CSDL; tính bảo mật, an tồn liệu kém; việc lập trình ứng dụng khó khăn phải biết cấu trúc CSDL; nâng cấp CSDL phải thay đổi nhiều thứ ứng dụng sử dụng CSDL Giải pháp thứ ba: Lưu trữ CSDL độc lập theo kiểu thông tin lưu trữ lần CSDL xây dựng dịch vụ quản lý, nghĩa ứng dụng kiến trúc SOA Các ứng dụng không truy cập trực tiếp vào CSDL mà phải truy cập qua dịch vụ Để đảm bảo an toàn liệu, dịch vụ phân quyền truy cập Giải pháp ứng dụng kiến trúc SOA giải bất cập nêu trên, cịn có ưu điểm dễ tích hợp thêm phần mềm, dễ nâng cấp CSDL ứng dụng, lập trình làm việc với dịch vụ tiện lợi so với truy cập trực tiếp vào CSDL, lập trình viên lựa chọn ngơn ngữ lập trình mong muốn để xây dựng ứng dụng, dễ kiểm thử, 2.2.2 Phát triển phần mềm quản lý điểm theo kiến trúc SOA Để thực hóa giải pháp thứ ba, tác giả sử dụng công nghệ WCF Visual Studio 2008 với hệ quản trị CSDL Microsoft SQL Server 2005 Hình Bảng hồ sơ học sinh Đầu tiên phải thiết kế CSDL cho hệ thống CSDL nhà trường thông tin lưu trữ lần 142 Ứng dụng kiến trúc SOA phát triển phần mềm quản lý CSDL liệu thông tin hay hồ sơ học sinh xây dựng cách thông thường gồm bảng sau (hình 3, 4): Hình Bảng thông tin lớp học CSDL quản lý điểm gồm bảng miêu tả hình Hình Bảng thơng tin điểm học sinh Hình Bảng thơng tin mơn học Trên CSDL này, dịch vụ quản lý thông thường thêm, xóa, sửa, tìm kiếm xây dựng với hỗ trợ WCF ngôn ngữ truy vấn LINQ Có thể thấy hai CSDL thơng tin cá nhân học sinh thông tin khác lưu trữ lần Trong CSDL điểm lưu trữ mã (Mahs) học sinh mà không cần lưu trữ đầy đủ thông tin học sinh, thông tin đầy đủ nhận qua Mahs cách sử dụng dịch vụ tìm kiếm CSDL học sinh Tùy thuộc vào yêu cầu chức phần mềm, bổ sung thêm dịch vụ cần thiết khác Sau xây dựng xong dịch vụ, sử dụng chương trình mang để chạy dịch vụ nằm thường trú URL Các chương trình mang dịch vụ, CSDL hồn tồn lưu trữ độc lập máy tính khác Để gọi dịch vụ, cần truy xuất vào URL dịch vụ, ngồi mơi trường NET cịn cung cấp chế gọi dịch vụ tiện lợi Khi tạo tham chiếu tới URL dịch vụ, NET tự động sinh class đại diện cho dịch vụ đó, phương thức class dịch vụ cung cấp Hình thể cách NET hỗ trợ truy cập tới dịch vụ Thông qua dịch vụ CSDL, xây dựng phần mềm quản lý điểm cách dễ dàng Sơ đồ hoạt động phần mềm thể Hình 8, sơ đồ kiến trúc SOA 143 Phan Nguyên Hải, Nguyễn Ngọc Phú Phùng Thị Minh Hồng Hình Sử dụng dịch vụ WCF NET Hình Sơ đồ hoạt động phần mềm quản lý điểm Hình Giao diện sổ phần mềm quản lý điểm Trên Hình thể giao diện cửa sổ phần mềm quản lý điểm Khi click chuột vào hàng bảng danh sách học sinh thông tin chi tiết học sinh đó, thơng tin nhận từ dịch vụ quản lý học sinh Phần mềm quản lý điểm khơng phép có chức thêm, sửa, xóa hồ sơ cá nhân học sinh, chức có phần mềm quản lý hồ sơ học sinh (sử dụng dịch vụ quản lý CSDL hồ sơ học sinh) Điều giống thực tế, phận quản lý điểm không phép thay đổi thông tin cá nhân học sinh, việc thay đổi thông tin cá nhân học sinh chức phận quản lý học sinh Để ngăn phần mềm quản lý điểm sử dụng dịch vụ thêm, sửa, xóa CSDL học sinh, dịch vụ phân quyền sử dụng, sử dụng 144 Ứng dụng kiến trúc SOA phát triển phần mềm quản lý dịch vụ cần phải qua khâu xác thực Theo sơ đồ Hình 7, khác biệt so với việc xây dựng phần mềm theo mơ hình hai lớp, ba lớp truyền thống có mặt tầng dịch vụ Phần mềm quản lý điểm xây dựng gồm hai phần tách biệt phần cung cấp dịch vụ phần sử dụng dịch vụ, phần viết ngơn ngữ lập trình khác nhau, lập trình viên với ngơn ngữ lập trình thơng thạo khác tham gia phát triển Tính chất nhiều phần tách biệt làm cho phần mềm dễ kiểm thử, nâng cấp bảo trì Với kiến trúc SOA, tương tự hồn tồn xây dựng phần mềm quản lý thư viện, quản lý học phí, học bổng, mà khơng bị trùng lặp liệu, dịch vụ tái sử dụng nhiều lần, phần mềm dễ tích hợp với nhau, chức phần mềm sát với chức phận quản lý tương ứng thực tế Đây kết mà phần mềm theo kiến trúc SOA mang lại Kết luận Bài báo nêu lên lợi ích mà kiến trúc hướng dịch vụ SOA mang lại phát triển phần mềm lớn, phức tạp mức độ doanh nghiệp Trong lĩnh vực phần mềm quản lý, SOA đem lại nhiều hiệu rõ rệt, phần mềm quản lý điểm xây dựng với kết minh họa cho triển vọng SOA mục tiêu quản lý tin học hóa hoạt động nhà trường nói riêng tổ chức, quan đơn vị nói chung REFERENCES [1] Dirk Krafzig, Karl Banke, and Dirk Slama, 2005 Enterprise SOA: Service Oriented Architecture Best Practices Prentice Hall [2] Bieberstein et al., 2005 Service-Oriented Architecture (SOA) Compass: Business Value, Planning, and Enterprise Roadmap (The developerWorks Series) (Hardcover) IBM Press books [3] Thomas Erl, 2005 Service-Oriented Architecture: Concepts, Technology, and Design Prentice Hall [4] David Garlan and Mary Shaw, 1994 An Introduction to Software Architecture School of Computer Science Carnegie Mellon university [5] Len Bass, Paul Clements, Rick Kazman, 2003 Software Architecture in Practice, Second Edition Addison-Wesley ABSTRACT Applying SOA in the development of management softwares Service Oriented Architecture (SOA) and its main characteristics are presented in this paper In addition, a way of applying SOA in the development of management software to improve efficiency of management is also provided 145 ... sinh, phần mềm quản lý điểm, phần mềm quản lý học phí, học bổng, lương, phần mềm quản lý thư viện, Trong phần mềm trên, thấy phần mềm quản lý học sinh, phần mềm quản lý điểm, phần mềm quản lý học... phần mềm theo kiến trúc SOA 2.2 2.2.1 Phát triển phần mềm theo kiến trúc SOA Những bất cập phần mềm quản lý giải pháp loại trừ Như nói trên, kiến trúc SOA thích hợp cho hệ thống phần mềm mức độ... việc ứng dụng kiến trúc SOA để giải Xét cách tổng thể, tương lai để đạt mục tiêu tin học hóa nhà trường cần phải phát triển loạt phần mềm phần mềm quản lý nhân sự, phần mềm quản lý học sinh, phần