Ứng dụng kiến trúc SOA trong phát triển phần mềm quản lý

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), 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ý.

pdf9 trang | Chia sẻ: thanhle95 | Lượt xem: 637 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Ứng dụng kiến trúc SOA trong phát triển phần mềm quản lý, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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 và Phùng Thị Minh Hồng2 1Khoa Công nghệ Thông tin - Học viện Kĩ thuật Quân sự 2Trườ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), 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ý. 1. Mở đầu Kiến trúc phần mềm có vai trò quan trọng trong quy trình phát triển phần mềm, tính quan trọng được thể hiện qua việc bước thiết kế kiến trúc là bước đầu tiên cần giải quyết trong giai đoạn quan trọng nhất trong 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 các yêu cầu phi chức năng hay các yêu cầu chất lượng của phần mềm, nếu kiến trúc được xác định đúng phần mềm sẽ có chất lượng tốt [4]. Ngoài mối liên hệ với chất lượng phần mềm, kiến trúc phần mềm còn cho phép quan sát phần mềm ở mức cao, có thể cho phép tái sử dụng các thành phần phần mềm giúp tiết kiệm chi phí, hạn chế rủi ro trong quá trình phát triển và đơn giản hóa những hoạt động diễn ra sau giai đoạn thiết kế như lập trình, kiểm thử, triển khai, bảo trì và nâng cấp hệ thống [5]. Ngày nay, trong 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 được xây dựng, những mô hình, phong cách này đóng vai trò là nền tảng cho việc xác định kiến trúc các phần mềm cụ thể. Các mô hình kiến trúc phần mềm phổ biến hiện nay là 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 các mô hình phổ biến đó, mô hình kiến trúc hướng dịch vụ Service Oriented Architecture (SOA) đang có nhiều triển vọng trong bối cảnh phần mềm ngày càng phức tạp hiện nay, SOA rất thích hợp cho việc xây dựng các phần mềm ứng dụng đồ sộ mức độ doanh nghiệp hay mức độ tổ chức [2]. Trong bài báo này, các tác giả đề xuất và minh họa ứng dụng SOA cho phát triển các phần mềm quản lý nhằm nâng cao hiệu quả quá trình tin học hóa trường Dự bị đại học Dân tộc Trung ương nói riêng và các tổ chức nói chung. 137 Phan Nguyên Hải, Nguyễn Ngọc Phú và Phùng Thị Minh Hồng 2. Nội dung nghiên cứu 2.1. Kiến trúc hướng dịch vụ SOA 2.1.1. Khái niệm SOA và nguyên nhân xuất hiện Về kiến trúc phần mềm hướng dịch vụ SOA, hiện nay đang có nhiều định nghĩa, nhiều cách hiểu khác nhau, mỗi định nghĩa, mỗi cách hiểu xuất phát từ một góc độ nhìn nhận hay của một tổ chức cụ thể. Tuy nhiên, có thể kể ra định nghĩa có tính bao trùm của IBM là tập đoàn hiện nay đang phát triển và ứng dụng SOA một cách mạnh mẽ [2]: SOA- Service Oriented Architecture là một cấu trúc IT ở mức độ doanh nghiệp dùng để kết nối các tài nguyên khi nào cần thiết. Những tài nguyên đó là những dịch vụ mang tính nghiệp vụ có khả năng tham gia và kết hợp trong một mạng giá trị, doanh nghiệp hoặc một hướng kinh doanh để thỏa mãn được các nhu cầu kinh doanh. Thành phần cấu trúc chính của các ứng dụng SOA là dịch vụ chứ không phải là hệ thống con, hệ thống hay các thành phần. Như vậy, dịch vụ là yếu tố then chốt trong SOA. Có thể hiểu dịch vụ như là hàm chức năng (mô-đun phần mềm) thực hiện qui trình nghiệp vụ nào đó. Một cách cơ bản, SOA là tập hợp các dịch vụ kết nối “mềm dẻo” với nhau (nghĩa là một ứng dụng có thể “nói chuyện” với một ứng dụng khác mà không cần biết các chi tiết kỹ thuật bên trong), có giao tiếp (dùng để gọi hàm dịch vụ) được định nghĩa rõ ràng và độc lập với nền tảng hệ thống, và có thể tái sử dụng. SOA là cấp độ cao hơn của phát triển ứng dụng, chú trọng đến qui trình nghiệp vụ và dùng giao tiếp chuẩn để giúp che đi sự phức tạp kỹ thuật bên dưới. Sự phức tạp ngày càng gia tăng của các hệ thống phần mềm mức độ doanh nghiệp chính là nguyên nhân xuất hiện của kiến trúc SOA. Sự phức tạp thể hiện qua hai khía cạnh sau: Thứ nhất, sự xuất hiện của nhiều công nghệ mới tạo nên môi trường không đồng nhất trong khi nhu cầu chia sẻ, tương tác, trao đổi của các hệ thống không thể tiến hành trong môi trường như thế. Giải quyết vấn đề này nghĩa là các tổ chức, doanh nghiệp cần phải thay đổi hệ thống theo một chuẩn thống nhất chung nào đó. Điều chủ yếu là hệ thống cũ với những công nghệ khác biệt cần được sử dụng lại chứ không phải là gỡ bỏ thay mới bởi vấn đề chi phí cho thiết lập một hệ thống quản lý mới tốn kém hơn nhiều so với chuyển đổi cái cũ. Thứ hai, vấn đề lập trình dư thừa và tái sử dụng. Chẳng hạn, một doanh nghiệp có nhiều chi nhánh khác nhau, mỗi chi nhánh lại có một hệ thống tách biệt và xây dựng ở những thời điểm khác nhau và cần kết nối lại với nhau sẽ không tránh khỏi việc sử dụng dư thừa tài nguyên, dữ liệu không đồng nhất. . . Những khía cạnh nêu trên đưa đến một khái niệm là “Tích hợp hệ thống” (Enterprise Architecture Intergration - EAI) – đang được nhiều tổ chức quan tâm đầu tư giải quyết với chi phí rất cao. Ngày nay, hầu như mọi tổ chức, doanh nghiệp đều phải đối mặt với vấn đề 138 Ứng dụng kiến trúc SOA trong phát triển phần mềm quản lý tích hợp vì nhiều lí do như mở rộng thêm chi nhánh, thêm hệ thống bạn hàng mới, hoặc là cần kết nối các hệ thống có sẵn,. . . Vấn đề kéo theo là chi phí thay đổi mã nguồn cũ, kiểm thử, bảo trì,. . . Để giải quyết những vấn đề này, những công nghệ, những kiến trúc phổ biến như OOP (Object Oriented Programming), DCOM (Distributed Common Object Model), CORBA (Common Object Request Broker Architecture) chưa đem lại kết quả như mong muốn và SOA đang được xem là “ứng cử viên sáng giá” có thể đảm nhận trọng trách này và được kỳ vọng tạo nên cuộc cách mạng trong 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 và dễ mở rộng hơn [3]. 2.1.2. Các nguyên tắc chính của SOA Theo các định nghĩa, thành phần chính của hệ thống phần mềm có kiến trúc SOA là dịch vụ, các dịch vụ theo kiến trúc SOA phải tuân thủ những nguyên tắc sau [3]: • Các dịch vụ phải có sự phân định ranh giới rạch ròi. • Các dịch vụ tự hoạt động như nhữ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 trên chính sách. • Các dịch vụ kết nối lỏng lẻo. • Các dịch vụ có khả năng 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 này là cơ sở để giải quyết những phức tạp chính đã nêu trên của các hệ thống phần mềm mức độ doanh nghiệp, đồng thời cũng đem lại chất lượng cho các hệ thống phần mềm đó. 2.1.3. Các thành phần của một hệ thống theo kiến trúc SOA Một hệ thống phần mềm được 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, và Service Registry. Sự tương tác giữa các thành phần được miêu tả trên Hình 1. Hình 1. Các thành phần chính của 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 một nhu cầu nào đó. 139 Phan Nguyên Hải, Nguyễn Ngọc Phú và Phùng Thị Minh Hồng Serive Consumer: Sử dụng dịch vụ được cung cấp bởi Service Provider. Service Registry: Nơi lưu trữ thông tin về các dịch vụ của các Service Provider khác nhau, Service Consumer dựa trên những thông tin này để tìm kiếm và 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 một chương trình theo kiến trúc SOA, có các thành phần như miêu tả trên Hình 2. Hình 2. 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 này là những viên gạch để tạo nên các thành phần Service Provider, Service Consumer và Service Registry của một 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 nhất là xác định cách thức các thành phần trao đổi thông tin với nhau, làm thế nào để Consumer biết Provider cung cấp những dịch vụ gì, và sau khi biết được các dịch vụ đó thì Consumer làm thế nào để yêu cầu chúng và cách Provider trả kết quả lại cho Consumer như thế nào. Trong sơ đồ Hình 2, các thành phần chương trình đóng vai trò giúp Provider và Consumer trao đổi thông tin là Contract, Interface, Service repository, Service bus. Việc xây dựng những quy trình xử lý trong các thành phần Consumer và Provider (Application frontend, Business logic, Data) có thể coi như việc xây dựng những quy trình xử lý trong các chương trình thông thường. Hiện nay, để giúp các thành phần của hệ thống phần mềm theo kiến trúc SOA giao tiếp và hỗ trợ xây dựng quy trình xử lý trong các dịch vụ có những công nghệ chính sau: • SOAP (Simple Object Access Protocol) là giao thức trao đổi thông tin có cấu trúc XML trong các hệ thống phân tán. • RPC (Remote Procedure Call) là công nghệ giúp các chương trình trên một máy tính gọi các hàm hoặc thủ tục trên cá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ả các dịch vụ một Provider cung cấp. • WCF (Windows Communication Foundation) trong Visual Studio.NET. 140 Ứng dụng kiến trúc SOA trong phát triển phần mềm quản lý Trong các công nghệ trên, RPC, DCOM, CORBA trao đổi thông tin dưới 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 mới và cho phép sử dụng những công nghệ mạnh mẽ của .NET Framework. WCF sử dụng SOAP để trao đổi thông tin và WSDL để mô tả thông tin về các dịch vụ. Hiện nay WCF đang phát triển mạnh mẽ, là công nghệ chủ đạo của Microsoft để phát triển các phần mềm theo kiến trúc SOA. 2.2. Phát triển phần mềm theo kiến trúc SOA 2.2.1. Những bất cập trong phần mềm quản lý và các giải pháp loại trừ Như đã nói ở trên, kiến trúc SOA rất thích hợp cho những hệ thống phần mềm mức độ doanh nghiệp, tổ chức. Kiến trúc SOA giúp giải quyết vấn đề dư thừa, nâng cao khả năng tái sử dụng. Để minh họa cho hiệu quả này, chúng ta sẽ 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 các hoạt động của nhà trường sẽ gặp phải những vấn đề nào và việc ứng dụng kiến trúc SOA để giải quyết. Xét một cách tổng thể, trong tương lai để đạt được mục tiêu tin học hóa nhà trường sẽ cần phải phát triển một loạt các phần mềm như 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 các phần mềm trên, có thể thấy ngay 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 sẽ cần phải có cơ sở dữ liệu (CSDL) hồ sơ học sinh để hoạt động. Nếu chúng ta xây dựng các phần mềm quản lý này một cách thông thường, nghĩa là sẽ thiết kế CSDL, sử dụng một hệ quản trị CSDL để lưu trữ và xây dựng ứng dụng hoạt động độc lập không liên quan đến các 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ì có thể thấy được những bất cập sau: • Thứ nhất, thông tin học sinh sẽ bị lưu trữ nhiều lần, nhiều nơi, điều này gây lãng phí không gian lưu trữ và thời gian, công sức nhập dữ liệu. • Thứ hai, cùng một thông tin học sinh như họ tên, lớp học,... nhưng khi được lưu trữ độc lập trong các CSDL của các phần mềm trên, thông tin đó có thể bị thay đổi riêng rẽ tạo nên sự khác biệt, sai lệch. Ngoài bất cập trong phần mềm quản lý điểm, trong quá trình tin học hóa nhà trường có thể gặp bất cập về việc phần mềm quản lý nhân sự, quản lý thư viện, quản lý lương có các CSDL cùng chứa thông tin nhân sự,... Những bất cập trên là những bất cập chung phổ biến hiện nay trong quá trình tin học hóa các hoạt động của các cơ quan đơn vị, doanh nghiệp, tổ chức. Nguyên nhân chính là do các bộ phận quản lý luôn muốn phát triển phần mềm quản lý chỉ dùng cho riêng mình, không có sự chia sẻ với các bộ phận quản lý khác. Để loại bỏ những bất cập trên có thể có những ý tưởng giải pháp như sau: Giải pháp thứ nhất: Xây dựng một CSDL lớn, tập trung, lưu trữ tất cả các 141 Phan Nguyên Hải, Nguyễn Ngọc Phú và Phùng Thị Minh Hồng thông tin của nhà trường (cơ quan, đơn vị, doanh nghiệp, tổ chức) và phát triển một hệ thống gồm nhiều phân hệ quản lý làm việc với CSDL đó. Đây là giải pháp tổng thể, tuy nhiên có thể thấy ngay là việc xây dựng hoàn toàn không đơn giản, đòi hỏi các bộ phận quản lý phải phối hợp cùng nhau phát triển, việc lưu trữ CSDL tập trung có thể gây ra các vấn đề về bảo mật, an toàn dữ liệu vì bộ phận quản lý này có thể truy cập vào dữ liệu của bộ phận quản lý khác, hơn nữa trên thực tế các bộ phận quản lý có sự độc lập tương đối, cho nên không nên ghép các phần mềm quản lý vào một hệ thống lớn. Giải pháp thứ hai: Lưu trữ CSDL độc lập theo kiểu mỗi thông tin chỉ lưu trữ một lần và cho phép các phần mềm truy cập trực tiếp được vào CSDL của nhau. Giải pháp này có nhiều vấn đề như: khó quản trị CSDL; tính bảo mật, an toàn dữ liệu kém; việc lập trình các ứng dụng sẽ khó khăn hơn vì phải biết các cấu trúc của CSDL; khi nâng cấp CSDL sẽ phải thay đổi nhiều thứ trong các ứng dụng sử dụng CSDL đó. Giải pháp thứ ba: Lưu trữ CSDL độc lập theo kiểu mỗi thông tin chỉ lưu trữ một lần và trên mỗi CSDL đó xây dựng các dịch vụ quản lý, nghĩa là sẽ ứng dụng kiến trúc SOA. Các ứng dụng sẽ không được truy cập trực tiếp vào CSDL mà sẽ phải truy cập qua các dịch vụ. Để đảm bảo an toàn dữ liệu, các dịch vụ sẽ được phân quyền truy cập. Giải pháp ứng dụng kiến trúc SOA sẽ giải quyết được những bất cập nêu trên, hơn nữa còn có những ưu điểm như dễ tích hợp thêm các phần mềm, dễ nâng cấp CSDL cũng như ứng dụng, lập trình làm việc với các dịch vụ tiện lợi hơn so với truy cập trực tiếp vào CSDL, lập trình viên có thể 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 Để hiện thực hóa giải pháp thứ ba, các tác giả sử dụng công nghệ WCF trong bộ Visual Studio 2008 cùng với hệ quản trị CSDL Microsoft SQL Server 2005. Hình 3. Bảng hồ sơ học sinh Đầu tiên phải thiết kế CSDL sao cho trong hệ thống các CSDL của nhà trường mỗi thông tin chỉ được lưu trữ một lần. 142 Ứng dụng kiến trúc SOA trong phát triển phần mềm quản lý CSDL dữ liệu thông tin hay hồ sơ học sinh được xây dựng một cách thông thường và gồm các bảng chính như sau (hình 3, 4): Hình 4. Bảng thông tin lớp học CSDL quản lý điểm gồm các bảng như miêu tả trên các hình 5 và 6. Hình 5. Bảng thông tin điểm của học sinh Hình 6. Bảng thông tin các môn học Trên các CSDL này, các dịch vụ quản lý thông thường như thêm, xóa, sửa, tìm kiếm được xây dựng với sự hỗ trợ của WCF và ngôn ngữ truy vấn LINQ. Có thể thấy rằng trong hai CSDL trên thông tin cá nhân của học sinh và các thông tin khác chỉ được lưu trữ một lần. Trong CSDL điểm chỉ lưu trữ mã (Mahs) của học sinh mà không cần lưu trữ đầy đủ thông tin học sinh, thông tin đầy đủ có thể nhận được qua Mahs bằng cách sử dụng các dịch vụ tìm kiếm trên CSDL học sinh. Tùy thuộc vào yêu cầu chức năng của phần mềm, có thể bổ sung thêm các dịch vụ cần thiết khác. Sau khi đã xây dựng xong các dịch vụ, sử dụng chương trình mang để chạy dịch vụ nằm thường trú trên URL. Các chương trình mang dịch vụ, các CSDL hoàn toàn có thể được lưu trữ độc lập trên các máy tính khác nhau. Để gọi các dịch vụ, cần truy xuất vào URL của dịch vụ, ngoài ra môi trường .NET còn cung cấp một cơ chế gọi dịch vụ rất tiện lợi. Khi tạo tham chiếu tới URL của dịch vụ, .NET sẽ tự động sinh ra class đại diện cho dịch vụ đó, các phương thức của class này chính là các dịch vụ được cung cấp. Hình 7 thể hiện cách .NET hỗ trợ truy cập tới các dịch vụ. Thông qua các dịch vụ trên các CSDL, có thể xây dựng phần mềm quản lý điểm một cách dễ dàng. Sơ đồ hoạt động của phần mềm được thể hiện trên Hình 8, đây chính là một sơ đồ kiến trúc SOA. 143 Phan Nguyên Hải, Nguyễn Ngọc Phú và Phùng Thị Minh Hồng Hình 7. Sử dụng dịch vụ WCF trong .NET Hình 8. Sơ đồ hoạt động của phần mềm quản lý điểm Hình 9. Giao diện của sổ chính của phần mềm quản lý điểm Trên Hình 9 thể hiện giao diện cửa sổ chính của phần mềm quản lý điểm. Khi click chuột vào một hàng trong bảng danh sách học sinh sẽ hiện ra thông tin chi tiết về học sinh đó, thông tin này nhận được từ dịch vụ quản lý học sinh. Phần mềm quản lý điểm không được phép có chức năng thêm, sửa, xóa hồ sơ cá nhân của học sinh, những chức năng này chỉ có trong phần mềm quản lý hồ sơ học sinh (sử dụng các dịch vụ quản lý CSDL hồ sơ học sinh). Điều này cũng giống như trên thực tế, bộ phận quản lý điểm không được phép thay đổi thông tin cá nhân của học sinh, việc thay đổi thông tin cá nhân học sinh là chức năng của bộ phận quản lý học sinh. Để ngăn phần mềm quản lý điểm sử dụng các dịch vụ thêm, sửa, xóa trên CSDL học sinh, các dịch vụ được phân quyền sử dụng, khi sử dụng 144 Ứng dụng kiến trúc SOA trong phát triển phần mềm quản lý các 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 chính là sự có mặt của tầng dịch vụ. Phần mềm quản lý điểm được xây dựng gồm hai phần tách biệt là phần cung cấp dịch vụ và phần sử dụng dịch vụ, các phần có thể viết trên các ngôn ngữ lập trình khác nhau, chính vì vậy các lập trình viên với các ngôn ngữ lập trình thông thạo khác nhau đều có thể tham gia phát triển. Tính chất nhiều phần tách biệt cũng làm cho phần mềm dễ kiểm thử, nâng cấp và bảo trì. Với kiến trúc SOA, tương tự như trên hoàn toàn có thể xây dựng các 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 dữ liệu, các dịch vụ được tái sử dụng nhiều lần, các phần mềm dễ tích hợp với nhau, hơn nữa chức năng của các phần mềm đó sát với chức năng của các bộ phận quản lý tương ứng trên thực tế. Đây là các kết quả mới mà phần mềm theo kiến trúc SOA mang lại. 3. Kết luận Bài báo đã nêu lên những lợi ích mà kiến trúc hướng dịch vụ SOA mang lại trong phát triển các 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 quả rõ rệt, phần mềm quản lý điểm được xây dựng với các kết quả mới chính là sự minh họa cho triển vọng của SOA trong mục tiêu quản lý tin học hóa các hoạt động của nhà trường nói riêng và trong các tổ chức, cơ quan đơn vị nói chung. REFERENCES [1] Dirk Krafzig, Karl Banke, and Dirk Slama, 2005. Enterprise SOA: Service Ori- ented Architecture Best Practices. Prentice Hall. [2] Bieberstein et al., 2005. Service-Oriented Architecture (SOA) Compass: Business Value, Planning, and Enterprise Roadmap (The developerWorks Series) (Hard- cover). IBM Press books. [3] Thomas Erl, 2005. Service-Oriented Architecture: Concepts, Technology, and De- sign. 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