Đóng góp của luận án là bốn mẫu thiết kế nhằm giúp các nhà phát triển phần mềm rút ngắn thời gian và chi phí khi hiện thực hóa các hệ thống phần mềm trong môi trường đám mây, đặc biệt là
Trang 1ĐẠI HỌC QUỐC GIA TP HCM
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
NGÔ HUY BIÊN
NGHIÊN CỨU ĐỀ XUẤT MẪU THIẾT KẾ CHO VIỆC PHÁT TRIỂN PHẦN
MỀM TRONG MÔI TRƯỜNG ĐIỆN TOÁN ĐÁM MÂY
Chuyên ngành: Khoa học máy tính
Mã số: 62.48.01.01
TÓM TẮT LUẬN ÁN TIẾN SĨ KHOA HỌC MÁY TÍNH
Tp Hồ Chí Minh năm 2017
Trang 2Công trình được hoàn thành tại: Trường Đại học Khoa học Tự Nhiên-HCM
Người hướng dẫn khoa học: PGS TS Trần Đan Thư
Luận án sẽ được bảo vệ trước Hội đồng chấm luận án cấp cơ sở đào tạo họp tại trường Đại học Khoa học Tự Nhiên-HCM
vào hồi giờ ngày tháng năm
Có thể tìm hiểu luận án tại thư viện:
1 Thư viện Tổng hợp Quốc gia Tp.HCM
2 Thư viện trường Đại học Khoa học Tự Nhiên-HCM
Trang 31
Dẫn nhập
Để thiết kế thành công các hệ thống phần mềm, đặc biệt là các ứng dụng doanh nghiệp, các kiến trúc sư
cần được trang bị các kiến thức về lĩnh vực (domain knowledge), các phương pháp thiết kế, các kinh nghiệm thiết
kế và hiện thực hóa phần mềm
Mẫu thiết kế là một trong các hướng tiếp cận hiệu quả cho việc nâng cao chất lượng và rút ngắn thời gian
thiết kế bằng cách tái sử dụng các tri trức và kinh nghiệm thiết kế Về mặt kỹ thuật, mẫu thiết kế là một tài liệu mô
tả một vấn đề lặp lại thường xuyên khi thiết kế phần mềm trong một hoàn cảnh đặc thù và một mô hình tổng quát
đã được chứng minh là giải pháp hiệu quả cho vấn đề đề cập Tính hiệu quả của việc áp dụng mẫu thiết kế cho các phần mềm truyền thống đã được chứng thực qua thời gian
Hiện nay, hầu hết các doanh nghiệp doanh nghiệp và tổ chức đều dựa trên các hệ thống công nghệ thông tin để vận hành các hoạt động kinh doanh và quy trình nghiệp vụ phức tạp Việc di chuyển các hệ thống này từ mạng nội bộ (on-premises software) lên môi trường đám mây là điều tất yếu do lợi ích to lớn trong việc giảm chi phí xây dựng và vận hành hệ thống Ngoài ra, việc xây dựng các phần mềm mới trong đám mây nhằm đáp ứng các nhu cầu nghiệp vụ cũng là một lựa chọn của nhiều doanh nghiệp và nhà cung cấp phần mềm do việc dễ dàng phân phối sản phẩm đến người dùng cuối cùng khả năng chia sẻ chi phí sở hữu và vận hành giữa các người dùng với nhau
Tuy nhiên việc thiết kế các hệ thống phần mềm trong môi trường đám mây là một thách thức lớn đối với các kiến trúc sư Nguyên nhân là do sự khác biệt rất lớn giữa một ứng dụng dành cho hàng ngàn công ty cùng hàng trăm triệu người sử dụng với một ứng dụng cài đặt trên máy một người dùng hay một ứng dụng dùng cho vài trăm người trong mạng nội bộ của một công ty Nhu cầu nghiên cứu phát hiện các mẫu thiết kế hỗ trợ phát triển các hệ thống phần mềm trong môi trường đám mây, đặc biệt là các hệ thống quản trị ngân hàng, thương mại điện tử, quản trị nhân lực, kết nối, trao đổi thông tin hay bản đồ trở nên ngày càng cấp thiết Các mẫu thiết kế mới này sẽ giúp
bảo đảm chất lượng và nâng cao hiệu suất của quá trình phát triển các loại phần mềm này trong môi trường đám
mây
Đã có những đề xuất khởi đầu về việc nghiên cứu tìm kiếm và áp dụng mẫu thiết kế cho việc phát triển phần mềm trong môi trường đám Tiếp tục hướng nghiên cứu này chúng tôi nghiên cứu tìm hiểu và đề xuất các mẫu thiết kế hỗ trợ việc phát triển phần mềm trong môi trường đám mây Chúng tôi tập trung vào các phần mềm đa người thuê, các chi tiết kỹ thuật và sự độc lập của giải pháp đối với công nghệ của các nhà cung cấp dịch vụ đám mây đặc thù
Đóng góp của luận án là bốn mẫu thiết kế nhằm giúp các nhà phát triển phần mềm rút ngắn thời gian và chi phí khi hiện thực hóa các hệ thống phần mềm trong môi trường đám mây, đặc biệt là phần mềm đa người thuê Ngoài ra luận án cũng cung cấp một bản nghiên cứu tổng quan về hiện trạng mẫu thiết kế hỗ trợ phát triển phần mềm trên các hệ thống điện toán đám mây
Trang 42
Chương 1 Mở đầu
1.1 Động cơ nghiên cứu
Mục đích của luận án là tìm hiểu các vấn đề phát sinh khi phát triển phần mềm trong môi trường đám mây, đặc biệt là phần mềm doanh nghiệp cung cấp dạng dịch vụ, đặc thù hơn nữa là các ứng dụng đa người thuê; đề xuất các giải pháp tổng quát cho các vấn đề dưới dạng các mẫu thiết kế nhằm mục đích tái sử dụng, đảm bảo chất lượng
và nâng cao hiệu suất trong quá trình xây dựng phần mềm trong môi trường đám mây Các mẫu thiết kế này là các tri thức được tổng quát hóa, có thể tùy biến cho phù hợp với từng hoàn cảnh cụ thể Các mô hình của các mẫu thiết
kế này đóng vai trò như các kiến trúc tham khảo giúp các kiến trúc sư đưa ra các quyết định thiết kế phù hợp khi xây dựng phần mềm trên các hệ thống điện toán đám mây
Các mẫu thiết kế này sẽ giúp việc xây dựng hay chuyển đổi các hệ thống truyền thống lên đám mây đạt được chất lượng cao hơn với chi phí thấp hơn, giúp các nhà phát triển tăng chất lượng, tiết kiệm thời gian, chi phí xây dựng, triển khai, tích hợp, bảo trì và mở rộng phần mềm Đồng thời các mẫu thiết kế này cũng sẽ giúp các nhà nghiên cứu liên lạc, trao đổi thảo luận về các vấn đề phát sinh và giải pháp khi xây dựng các ứng dụng đám mây dễ dàng hơn
1.2 Mục tiêu nghiên cứu
Từ các kết quả nghiên cứu hiện trạng và nhu cầu thực tế của các tổ chức liên quan luận án đặt ra mục tiêu
là phát hiện, tài liệu hóa được bốn mẫu thiết kế hỗ trợ phát triển các hệ thống doanh nghiệp, đặc biệt là các phần mềm đa người thuê trong môi trường đám mây; thử nghiệm và rút ra các bài học kinh nghiệm khi áp dụng các mẫu
thiết kế này Về mặt nghiệp vụ, luận án tập trung vào các mẫu thiết kế cho các phần mềm doanh nghiệp Về mặt kỹ thuật, luận án tập trung vào các mẫu thiết kế giải quyết các vấn đề về kiến trúc tổng quan, sự tùy biến, tính mở rộng
và bảo mật của các hệ thống đa người thuê
1.3 Phương pháp nghiên cứu
Luận án được thực hiện dựa vào phương pháp nghiên cứu trường hợp (case study research method) được tùy biến cho lĩnh vực kỹ nghệ phần mềm Nguồn tri thức cơ sở hay lý thuyết nền tảng của luận án là các nghiên cứu
đã thực hiện về mẫu thiết kế cho việc phát triển phần mềm trong môi trường đám mây Các vấn đề nghiên cứu, yêu cầu cụ thể và câu hỏi nghiên cứu đến từ các hệ thống phần mềm đám mây mà chúng tôi đã và đang phát triển cho
các tổ chức và doanh nghiệp Các hệ thống phần mềm mở và thương mại cùng với các dự án mà chúng tôi đã và
đang phát triển và các công trình nghiên cứu khoa học đã được thực hiện là đối tượng nghiên cứu của luận án Kết quả nghiên cứu là các mẫu thiết kế trả lời cho các câu hỏi nghiên cứu
Việc đánh giá các mẫu thiết kế đề xuất được thực hiện dựa trên các tình huống thực tế (cases) mà mẫu thiết
kế giải quyết Hai tiêu chí chính được lựa chọn để đánh giá là tính khả dụng (applicability) và tính đúng đắn (correctness) của các mẫu thiết kế đề xuất Ngoài ra việc đánh giá còn được thực hiện bằng cách phân tích hệ quả
của một số đặc tính chất lượng khác, ví dụ như tính dễ sử dụng, tính tái sử dụng, khả năng bảo trì, khả năng chỉnh sửa, dựa trên các mẫu thiết kế đã tồn tại và nay được áp dụng hoặc hiệu chỉnh trong mẫu thiết kế đề xuất cho môi trường đám mây Các mẫu thiết kế cũng được viết thành các bài báo khoa học và gửi đến các hội nghị khoa học
quốc tế để thu nhận ý kiến phản biện của các chuyên gia và nhà nghiên cứu khác trong và ngoài nước Các bài báo
khoa học đã được xuất bản và tham chiếu bởi các công trình nghiên cứu khác Tính hợp lệ của các kết quả nghiên cứu được chứng minh bằng cách sử dụng nhiều loại bằng chứng khác nhau Nền tảng lý thuyết, hoàn cảnh nghiên cứu, các công trình liên quan, sơ đồ, mô tả và các tài liệu thu thập liên kết với nhau thành một chuỗi các bằng chứng Các thông tin này kết hợp với thành các luận cứ liền mạch, logic, rõ ràng hỗ trợ cho tính hợp lệ của kết quả nghiên cứu
Trang 53
1.4 Đóng góp của luận án
Thông qua các kết quả đạt được luận án đã có những đóng góp chính sau:
quyền việc truy cập các tài nguyên của hệ thống đa người thuê phân cấp
và xử lý việc thực thi các giao dịch một cách bảo mật theo một cung cách nhất quán
đánh giá, lựa chọn hoặc xây dựng một bộ khung ứng dụng web với khả năng hỗ trợ đa người thuê,
mở rộng mà không bị trùng lắp mã nguồn, tách biệt các mối quan tâm, cho phép phát triển và tái sử dụng các mô đun với khả năng “cắm-chạy” khi thực thi
trong phần mềm đa người thuê
Ngoài ra luận án cũng cung cấp một báo cáo hiện trạng nghiên cứu mẫu thiết kế trong môi trường đám mây góp phần hỗ trợ các nhà nghiên cứu và những người quan tâm có cái nhìn tổng quan khi thực hiện các nghiên cứu
về mẫu thiết kế trong môi trường điện toán đám mây
Các kết quả đạt được ở trên đã được công bố và xuất bản ở các hội nghị trong nước và quốc tế Ngoài ra các mẫu thiết kế đề xuất cũng đã được triển khai vào sáu hệ thống đa người thuê thực với tổng số hơn 3,500 khách hàng (người thuê) và 350,000 người dùng
1.5 Nội dung luận án
và hướng phát triển của mẫu thiết kế người thuê phân cấp
và hướng phát triển của mẫu thiết kế hệ thống giao dịch
và hướng phát triển của mẫu thiết kế khung ứng dụng web
và hướng phát triển của mẫu thiết kế tùy biến giao diện
án
Trang 6Sản phẩm của quá trình thiết kế phần mềm gồm hai loại Một là các thuật toán, các cấu trúc dữ liệu dành cho việc tính toán Hai là kiến trúc phần mềm Một trong các phương pháp kích thích và truyền cảm hứng cho sự sáng tạo
trong việc thiết kế các phần mềm là áp dụng các kinh nghiệm thu được trong quá khứ và hiệu chỉnh lại cho vấn đề hiện tại Mẫu thiết kế nghiên cứu phương pháp này
2.2 Mẫu thiết kế
Tài liệu hóa và tái sử dụng lại cách giải quyết của người khác cho một vấn đề trong một hoàn cảnh tương
tự sao cho giải pháp có thể áp dụng cho vấn đề trong hoàn cảnh hiện tại chính là ý tưởng của mẫu thiết kế Mẫu thiết kế là chìa khóa để rút ngắn thời gian và tăng chất lượng thiết kế bằng cách tái sử dụng các giải pháp có sẵn cho các vấn đề lặp lại thường xuyên Kết hợp các quan niệm về mẫu ở các công trình nghiên cứu đã thực hiện chúng tôi đưa ra một quan niệm về mẫu thiết kế được sử dụng trong luận án như sau:
Mẫu thiết kế là một tài liệu mô tả một vấn đề và một giải pháp trong lĩnh vực thiết kế phần mềm Vấn đề bao gồm 3 phần là (i) hoàn cảnh, (ii) các yêu cầu ràng buộc và (iii) các ví dụ cụ thể về sự lặp lại thường xuyên của vấn đề Giải pháp bao gồm 3 phần là (i) ý tưởng tổng quát của giải pháp, (ii) các mô hình và sự mô tả, giải thích cho các mô hình để làm rõ nghĩa ý tưởng của giải pháp và (iii) các ví dụ cụ thể về các trường hợp áp dụng thành công ý tưởng của giải pháp để giải quyết vấn đề ở ít nhất 3 hệ thống khác nhau Mỗi mô hình bao gồm 3 phần là (i)
mô tả hoàn cảnh đưa đến mô hình, nguyên nhân đưa ra các quyết định trong mô hình, (ii) các hiện thực hóa của mô hình, các biến thể và (iii) thảo luận về các thỏa hiệp khi áp dụng mô hình
2.3 Mô tả và biểu diễn mẫu thiết kế
Một số nhà nghiên sử dụng một khuôn mẫu (template) với các thành phần cố định để mô tả mẫu thiết kế Phát triển ngôn ngữ hình thức để biểu diễn mẫu thiết kế và cho phép phát triển các công cụ hỗ trợ mẫu cũng đã
được nghiên cứu Tuy nhiên nhiều nhà nghiên cứu cho rằng việc hình thức hóa một vấn đề sẽ làm cho việc gắn kết mẫu thiết kế với một vấn đề đặc thù khó hơn vì các vấn đề đặc thù thường là phi hình thức Hình thức hóa một giải pháp sẽ làm cho việc nắm bắt ý tưởng tổng quát của mẫu khó hơn và không cho phép có các biến thể
2.4 Mục đích của mẫu thiết kế
Mục đích cốt lõi của mẫu là tái sử dụng tri thức và kinh nghiệm thiết kế Ngoài tính tái sử dụng mẫu còn là một công cụ giúp chuyển giao tri thức và kinh nghiệm thiết kế một cách rất hiệu quả
2.5 Áp dụng mẫu thiết kế
Kỹ nghệ phần mềm nói chung và thiết kế phần mềm nói riêng là hoạt động phụ thuộc rất nhiều vào sự sáng tạo và khéo léo con người Mẫu thiết kế có thể được áp dụng như một hướng tiếp cận độc lập cho việc thiết kế (pattern-based design) hoặc kết hợp với các phương pháp thiết kế khác Phát triển các công cụ hỗ trợ việc tự động hóa việc khai thác mẫu cũng được nhiều nhà nghiên cứu quan tâm
Trang 75
2.6 Phát hiện và tài liệu hóa mẫu thiết kế
Công nghệ và phương pháp phát triển phần mềm thay đổi liên tục theo từng ngày, các vấn đề mới luôn xuất hiện ngày một nhiều trong khi các mẫu thiết kế có sẵn thì luôn giới hạn Do vậy thường xuyên có nhu cầu về các mẫu mới để giải quyết các vấn đề vừa nảy sinh Để đưa ra các mẫu mới đòi hỏi cần có sự đầu tư nghiên cứu về mẫu đối với các vấn đề mới nảy sinh, sau đó tổng kết và tài liệu hóa lại các giải pháp Ngoài việc tìm kiếm các mẫu mới, các nhà nghiên cứu còn tập trung vào việc tái cấu trúc, hiệu chỉnh lại các mẫu cũ cho phù hợp với hiện tại Một số đóng góp chính cho việc phát hiện và tài liệu hóa mẫu thiết kế được trình bày trong Phụ Lục A của toàn văn luận
án
2.7 Mẫu thiết kế hỗ trợ phát triển phần mềm trong môi trường đám mây
Mẫu thiết kế đã được nghiên cứu nhiều trong việc phát triển các phần mềm truyền thống Tương tự, trong môi trường đám mây, mẫu thiết kế cũng được nhiều nhà nghiên cứu đề xuất như một hướng tiếp cận cho việc giải quyết các vấn đề nảy sinh khi phát triển phần mềm Tuy nhiên trong lĩnh vực điện toán đám mây, mới chỉ tồn tại một số đề xuất khởi đầu cho việc nghiên cứu mẫu thiết kế Các nghiên cứu chỉ mới tập trung phần lớn vào các nhà cung cấp dịch vụ đám mây đặc thù, các khía cạnh ứng dụng điện toán đám mây, các mô hình triển khai tổng quát Khía cạnh phần mềm, đặc biệt là phần mềm cung cấp dạng dịch vụ và mô hình đa người thuê, chưa được quan tâm đầy đủ Chi tiết về một số đóng góp chính cho việc nghiên cứu mẫu thiết kế hỗ trợ phát triển phần mềm trong môi trường đám mây được chúng tôi trình bày trong Phụ lục D của toàn văn luận án
2.8 Đánh giá mẫu thiết kế
Do đặc tính cố hữu trong việc thể hiện mẫu thiết kế như một tài liệu với các sơ đồ và sự mô tả (dữ liệu định tính), việc đánh giá một mẫu thiết kế hiện nay đều dựa trên phương pháp định tính hay nhận xét của các chuyên gia
và các nghiên cứu trường hợp Bản thân tài liệu đặc tả mẫu thiết kế cần bao gồm mô tả ít nhất 3 trường hợp thực tế
đã sử dụng mẫu để giải quyết vấn đề một cách thành công Ba trường hợp này đóng vai trò như một trong các bằng chứng để chứng minh cho tính khả dụng của mẫu Sau khi được tài liệu hóa như một ứng viên mẫu, mẫu thiết kế thường được áp dụng vào các trường hợp thực tế theo phương pháp nghiên cứu trường hợp để đánh giá một số đặc tính chất lượng như tính đúng đắn, tính khả dụng Mẫu thiết kế đã được tài liệu hóa sau đó được gửi đến các hội thảo nghiên cứu khoa học để nhận phản hồi và đánh giá từ các chuyên gia và nhà nghiên cứu nhiều kinh nghiệm
2.9 Hạn chế của mẫu thiết kế
Việc tài liệu hóa các mẫu thiết kế tiêu tốn nhiều thời gian Các mẫu thiết kế có thể chưa phải là các giải
pháp chuẩn hay tốt nhất khi xây dựng các hệ thống phần mềm Sự trừu tượng của các mẫu thiết kế làm cho việc
hiện thực mẫu bằng các công nghệ đặc thù không hỗ trợ hoặc hỗ trợ chưa tốt một số khái niệm của mẫu trở nên khó khăn
2.10 Tóm tắt
Chúng tôi vừa giới thiệu tổng quan về mẫu thiết kế nhằm làm rõ hơn hoàn cảnh, động cơ và phương pháp nghiên cứu của luận án Trong 4 chương tiếp theo chúng tôi sẽ trình bày đóng góp chính của luận án
Trang 86
Chương 3 Mẫu thiết kế người thuê phân cấp
3.1 Động cơ và câu hỏi nghiên cứu
Các hệ thống phần mềm đa người thuê đều cần quản lý người thuê và dữ liệu Thiết kế người thuê và dữ liệu là một công việc gặp nhiều thử thách, đặc biệt khi ứng dụng được triển khai trong môi trường đám mây với một bộ mã nguồn và dữ liệu duy nhất Vấn đề càng trở nên phức tạp hơn khi đòi hỏi sự phân cấp đối với người thuê
và sự phân cấp đối với dữ liệu Hai vấn đề cần giải quyết khi quản lý người thuê và dữ liệu phân cấp là (i) vấn đề
mô hình hóa người thuê và dữ liệu phân cấp và (ii) vấn đề kiểm soát việc truy cập của người thuê vào tài nguyên hệ thống
Câu hỏi nghiên cứu 1: Làm sao để thiết kế hệ thống hỗ trợ người thuê và tài nguyên phân cấp, cho phép định danh một cách nhất quán cho cả người dùng cá nhân lẫn người dùng của người thuê, hỗ trợ phân quyền truy
cập vào tài nguyên hệ thống theo vai trò, người dùng và người thuê?
3.2 Công trình liên quan
Vấn đề được đề cập trong câu hỏi nghiên cứu 1 liên quan đến nhiều khía cạnh của phần mềm đa người thuê như mô hình khái niệm, việc chứng thực và phân quyền, tốc độ, khả năng cấu hình và hiệu chỉnh
3.3 Giải pháp
3.3.1 Tổng quan về giải pháp
Giải pháp là sự mở rộng của mẫu Composite nhằm hỗ trợ người thuê phân cấp và mở rộng của mẫu Based Access Control nhằm hỗ trợ phân quyền theo người thuê Hình 3.4 thể hiện tổng quan về giải pháp của mẫu
Role-thiết kế người thuê phân cấp
Một tổ chức Organization chứa một số người dùng User Một tổ chức phức hợp Composite Organiazation
là một tổ chức chứa các tổ chức đơn lẻ khác hoặc các tổ chức phức hợp khác Mỗi người dùng của hệ thống được cung cấp các thông tin ủy nhiệm để đăng nhập vào hệ thống Mỗi người dùng có thể đảm nhiệm một hay nhiều vai
trò Role Một tài nguyên Resourse có thể là bất cứ thực thể nào của hệ thống Một tài nguyên phức hợp Composite Resource là một tài nguyên chứa các tài nguyên đơn lẻ khác hoặc các tài nguyên phức hợp khác
Hình 3.4 – Tổng quan về mẫu thiết kế người thuê phân cấp
Quyền hạn Privilege là quyền truy cập vào một tài nguyên hệ thống đối với một người dùng Quyền hạn
thường là một mức độ truy cập hay một hành động truy cập (ví dụ như đọc Read, chỉnh sửa Edit, xóa Delete, vân
Trang 97
vân) Việc kiểm soát truy cập của người dùng được thực hiện bởi đối tượng phân quyền Authorization Đối tượng
phân quyền là sự kết hợp của người dùng User, vai trò Role, tổ chức Organization, tài nguyên Resource và quyền hạn Privilege Sử dụng các danh sách phân quyền, hệ thống có thể quyết định xem một người dùng có thể truy cập hay thực hiện một hành động nào đó đối với một tài nguyên hay không
+container 1 *
+member 0 *
Role
+RoleId : Guid +Name : String +Users : List<User>
Role
+RoleId : Guid +Name : String +Users : List<User>
0 1 0 1 0 1 +entity 1 +decision 1+entity 1 +decision 1
0 1
0 1 0 1
Organization
+OrganizationId : Guid +Name : String +ThemeName : Guid +Parent : Organization
SingleOrganization SingleOrganization CompositeOrganization CompositeOrganization
+ChildOrganizations : List<Organization>
User
+UserId : Guid +Password : String +Username : Guid +PrimaryOrganization : Organization +Organizations : List<Organization>
+Roles : List<Roles>
Authorization
+Resource : Resource +AccessorId : Guid +AccessorType : AccessorType +Previlege : Previlege
Resource
+ResourceId : Guid +Name : String
SingleResource CompositeResource
+ChildResources : List<Resource>
+Parent : Resource
+parent
1
+child 0 *
+parent
1
+child 0 *
+parent 1
+child 0 *
+parent 1
+child 0 *
Hình 3.5 – Cấu trúc tĩnh của mẫu thiết kế người thuê phân cấp 3.3.3 Cấu trúc động
Hình 3.6 mô tả quy trình xử lý việc truy cập vào các tài nguyên của hệ thống đối với một người dùng
resourceList
Create() user GetResources() GetResources(username, password)
Hình 3.6 – Cấu trúc động của mẫu thiết kế người thuê phân cấp
3.4 Đánh giá
3.4.1 Phân tích và thảo luận
Đối với câu hỏi nghiên cứu 1 mẫu thiết kế người thuê phân cấp đã hỗ trợ người thuê phân cấp bằng mẫu thiết kế Composite thông qua các đối tượng Orgnization, SingleOrgnization và CompositeOrgnization; hỗ trợ tài nguyên phân cấp bằng mẫu thiết kế Composite thông qua các đối tượng Resource, SingleResource và
Trang 108
CompositeResource; cho phép định danh một cách nhất quán cho cả người dùng cá nhân lẫn người dùng của người thuê thông qua đối tượng User và mối liên hệ giữa đối tượng User và Orgnization; hỗ trợ phân quyền truy cập vào tài nguyên hệ thống theo vai trò, người dùng và người thuê thông qua đối tượng Authorization
3.4.2 Nghiên cứu trường hợp
Mẫu thiết kế người thuê phân cấp đã được áp dụng trong 4 hệ thống phần mềm đa người thuê bao gồm hệ thống thư điện tử bảo mật, hệ thống quản lý dự án, hệ thống quản lý thông tin doanh nghiệp và hệ thống quản lý trường học
Hệ thống thư điện tử bảo mật là một hệ thống phần mềm cung cấp các dịch vụ gửi thư điện tử với nội dung được bảo mật trên đường truyền và nơi lưu trữ cho các cá nhân, công ty và đại lý Hệ thống hoạt động tương tự như thư điện tử truyền thống Điểm khác biệt với thư điện tử truyền thống là nội dung của thư điện tử được mã hóa trên đường truyền và tại nơi lưu trữ
Các người thuê của hệ thống này được phân thành nhiều cấp Một đại lý có thể có nhiều công ty Một công
ty có thể có nhiều công ty con Một công ty con có thể có nhiều công ty trực thuộc cấp dưới Các dữ liệu dịch vụ của hệ thống này là thư điện tử, thư mục lưu trữ thư điện tử, tập tin đính kèm thư điện tử, vân vân Các dữ liệu này cũng có sự phân cấp Một thư điện tử có thể có nhiều thư điện tử trả lời Một thư mục có thể có nhiều thư mục con Một tập tin có thể có nhiều phiên bản
Hệ thống cung cấp nhiều dịch vụ khác nhau như gửi thư điện tử bảo mật, gửi thư điện tử bảo mật bằng Outlook Add-in, sử dụng API để gửi thư điện tử bảo mật, xem các báo cáo, quản lý các công ty con, quản lý người dùng của công ty, quản lý thông tin cấu hình của công ty, vân vân Mỗi dịch vụ được cung cấp dưới dạng một mô đun (Module) Các tính năng hoặc cấu hình của một mô đun được truy cập thông qua một trang web (Page)
Mô hình nghiệp vụ của hệ thống thư điện tử bảo mật được mô tả ở hình 3.7 Các đối tượng đại lý, công ty con của đại lý, người dùng của đại lý và dịch vụ của đại lý được lược bỏ để dễ quan sát
Người quản trị hệ thống
quản lý
Người quản trị của công ty
quản lý các thiết lập cấu hình
thuộc về
quản lý Người dùng của công ty
truy cập
truy cập
Người quản trị đại lý
quản lý quản lý
Người dùng cá nhân quản lý quản lý
Công ty
Dịch vụ (Trang và Mô đun)
Hình 3.7 – Mô hình nghiệp vụ hệ thống thư điện tử bảo mật
Cách tiếp cận hiện nay đối với việc phân cấp thường là áp dụng mẫu thiết kế Composite Tuy nhiên hạn chế của cách tiếp cận này là không hỗ trợ xử lý thẩm định các đối tượng phân cấp trong hệ thống Mẫu người thuê phân cấp mở rộng mẫu Composite bằng cách thêm đối tượng User để khắc phục các hạn chế trên
Cách tiếp cận hiện nay đối với việc phân quyền thường là áp dụng mẫu thiết kế Role-Based Access
Control Tuy nhiên khi áp dụng cách tiếp cận này vào trong một hệ thống phần mềm đa người thuê thì mô hình này không thể phân biệt người dùng cá nhân với các nhân viên của tổ chức, cũng như nhân viên của một tổ chức này với nhân viên của một tổ chức khác Mẫu người thuê phân cấp khắc phục các hạn chế trên bằng cách sử dụng cả 3 đối tượng User, Role và Organization cho sự phân quyền thay vì chỉ dùng đối tượng Role như mẫu Role-Based Access Control
Trang 119
Áp dụng giải pháp của mẫu đa người thuê phân cấp, các người thuê được phân cấp thành các tổ chức và các tổ chức phức hợp, các tổ chức phức hợp ở cấp độ đầu tiên được xem như các đại lý Mỗi trang web hoặc mô đun được xem như một tài nguyên Một trang web có thể bao gồm nhiều trang con Một trang web có thể có nhiều
mô đun Việc áp dụng mẫu đa người thuê phân cấp được thể hiện ở hình 3.8
Áp dụng mô hình đăng nhập của mẫu đa người thuê phân cấp, mỗi người dùng hệ thống được cung cấp một tên và mật khẩu Việc đăng nhập vào hệ thống được thực hiện nhất quán bất kể người dùng là người thuê cá nhân hay nhân viên công ty Áp dụng mô hình phân quyền của mẫu đa người thuê phân cấp, Việc phân quyền truy cập vào từng trang web hay mô đun được thiết lập theo từng người dùng, theo công ty hoặc theo đại lý hoặc theo vai trò của người dùng
+container 1 *
+member 0 *
Role
+RoleId : Guid +Name : String +Users : List<User>
<<enumeration>>
AccessorType
+User +Organization +Role
Organization
+OrganizationId : Guid +Name : String +ThemeName : Guid +Parent : Organization
SingleOrganization CompositeOrganization
+ChildOrganizations : List<Organization>
User
+UserId : Guid +Password : String +Username : Guid +PrimaryOrganization : Organization
+Organizations : List<Organization>
+Roles : List<Roles>
Authorization
+Resource : Resource +AccessorId : Guid +AccessorType : AccessorType +Previlege : Previlege
Resource
+ResourceId : Guid +Name : String
Module Page
+ChildPages : List<Resource>
+Parent : Resource
+Modules : List<Resource>
Hình 3.8 – Một phần cấu trúc tĩnh hệ thống trao đổi thư điện tử bảo mật 3.4.3 Bài học kinh nghiệm
Từ các kết quả nghiên cứu các trường hợp và tổng hợp ý kiến của các chuyên gia chúng tôi rút ra một số biến thể và kinh nghiệm kỹ thuật khi áp dụng mẫu thiết kế người thuê phân cấp Mẫu người thuê phân cấp có thể có một số biến thể tùy thuộc vào hoàn cảnh áp dụng Hình 3.5 không thể hiện sự liên hệ giữa giữa vai trò Role và tổ chức Organization Tất cả các tổ chức đều có cùng một số lượng vai trò Trong thực tế mỗi tổ chức có thể có các vai trò riêng đặc thù cho tổ chức của mình Yêu cầu này có thể được thực hiện bằng cách thêm mối liên hệ “có một” vào giữa tổ chức và vai trò
Trong một hoàn cảnh khác khi có quá nhiều số lượng người dùng tương tự, các người dùng này có thể được nhóm lại thành các nhóm đơn lẻ Single Group và các nhóm phức hợp Composite Group để dễ quản lý và quân quyền Tương tự, các vai trò có thể được phân loại thành các vai trò đơn lẻ Single Role và các vai trò phức hợp Composite Role
Trang 12• Việc lưu trữ dữ liệu có thể được thực hiện bằng cách sử dụng cơ sở dữ liệu quan hệ Khi sử dụng
cơ sở dữ liệu quan hệ sự phân cấp có thể được mô hình hóa bằng cách sử dụng các danh sách liền
kề hoặc các tập lồng nhau Áp dụng danh sách liền kề đòi hỏi đệ quy và có thể ảnh hưởng đến tốc
độ của hệ thống khi truy vấn dữ liệu (danh sách các phân quyền) Sử dụng tập lồng nhau không đòi hỏi đệ quy khi truy vấn dữ liệu nhưng tốc độ them dữ liệu vào chậm hơn là sử dụng danh sách liền
kề Ngoài ra cơ sở dữ liệu NoSQL hoặc XML cũng có thể sử dụng để lưu trữ dữ liệu Việc phân cấp được hỗ trợ ngay trong bản chất của NoSQL và XML
• Mỗi sự phân quyền cần có ít nhất một tài nguyên với một người dùng hoặc một tài nguyên với một vai trò hoặc một tài nguyên với một tổ chức Để tiện cho việc sử dụng các danh sách phân quyền
hệ thống có thể định nghĩa sẵn các mô hình phân quyền mặc định Khi đó nếu một người dùng chưa được phân quyền đối với một tài nguyên thì hệ thống sẽ sử dụng sơ đồ phân quyền mặc định của tài nguyên đó để cấp quyền cho người dùng
• Việc kiểm tra phân quyền có thể được hiện thực hóa bằng mã nguồn tường minh hoặc sử dụng sự kết hợp giữa chú giải phương thức hay tính chất (C# attribute or Java annotation) với việc tiêm mã (filter hay plug-in)
3.5 Kết luận và hướng phát triển
Lợi ích lớn nhất mô hình đa người thuê là tối đa hóa việc sử dụng tài nguyên Tuy nhiên hiện thực hóa mô hình đa người thuê hỗ trợ phân cấp không dễ dàng, đặc biệt là việc quản lý khía cạnh bảo mật của hệ thống Trong chương này chúng tôi đã đề xuất giải pháp để xây dựng mô hình phân cấp cho các ứng dụng đa người thuê trong môi trường đám mây Trong tương lai chúng tôi sẽ bổ sung các mô tả về việc mở rộng, tăng khả năng tải cho hệ thống khi số lượng người thuê tăng cao Trong phần tiếp theo chúng tôi sẽ trình bày việc tách biệt các thành phần của hệ thống đa người thuê, phát triển hệ thống một cách mô đun hóa và xử lý các giao dịch nghiệp vụ nhằm cung cấp một giải pháp tổng thể cho việc phát triển các ứng dụng cung cấp dạng dịch vụ và các nền tảng cung cấp dạng dịch vụ
Trang 1311
Chương 4 Mẫu thiết kế hệ thống giao dịch
4.1 Động cơ và câu hỏi nghiên cứu
Tất cả các phần mềm doanh nghiệp đều cần hiện thực hóa các giao dịch trong thế giới thực để tự động hóa các quy trình nghiệp vụ Một trong các vấn đề khó khăn gặp phải khi thiết kế các hệ thống này là các kiến thức về lĩnh vực (domain knowledge) luôn rất phức tạp Việc thực thi các giao dịch một cách bảo mật hiện nay hầu như đều được thực hiện một cách rất đặc thù (ad hoc) đối với từng hệ thống Điều này làm cho chi phí và thời gian quá trình xây dựng các hệ thống giao dịch trở nên tốn kém
Câu hỏi nghiên cứu 2: Làm sao để thiết kế các kiến thức về lĩnh vực của hệ thống giao dịch một cách nhất quán, tách biệt các kiến thức về lĩnh vực khỏi công nghệ, đồng thời cho phép các giao dịch thực thi một cách bảo mật theo một cung cách nhất quán?
4.2 Công trình liên quan
Bernstein và Newcomer đã trình bày các nguyên lý cơ bản của việc xử lý giao dịch Mark Grand đề xuất 4 mẫu thiết kế liên quan với nhau (ACID Transaction, Composite Transaction, Audit Trail và Two Phase Commit) dành cho việc xử lý các giao dịch Eric Evans đề xuất một tập các mẫu (đặc biệt là mẫu Repository và mẫu
Factory) để xử lý vấn đề phức tạp của kiến thức về lĩnh vực Các mẫu thiết kế cho bảo mật được nghiên cứu bởi Yoder & Barcalow, Schumacher và các cộng sự, Kanneganti, Chodavarapu và Fernandez
4.3 Giải pháp
4.3.1 Tổng quan về giải pháp
Để trả lời câu hỏi nghiên cứu trước tiên chúng tôi đề xuất một kiến trúc dựa trên các thành phần
(component-based) cho các hệ thống xử lý giao dịch bảo mật trong đám mây bằng cách tổng hợp các kiến trúc doanh nghiệp truyền thống và kinh nghiệm từ các dự án chúng tôi đã thực hiện Kiến trúc này cung cấp góc nhìn
tổng quan về các thành phần cơ bản của một hệ thống giao dịch cũng như chi tiết quá trình xử lý một giao dịch Sau
đó chúng tôi tập trung vào việc thiết kế từng thành phần trong kiến trúc đề xuất
Đối với khía cạnh phức tạp của kiến thức về lĩnh vực, chúng tôi đề xuất một hình thức biểu diễn các kiến
thức về lĩnh vực một cách nhất quán bằng các đối tượng Factory, Repository, Persistence và ServiceAdapter Giải pháp này là sự kết hợp, chi tiết hóa và mở rộng các mẫu Factory, Repository và Data Access Object Để hỗ trợ các giao dịch thực thi một cách bảo mật, chúng tôi đề xuất một quy trình nhất quán bao gồm việc thẩm định, kiểm tra quyền truy cập và thực thi các chính sách bảo mật nghiệp vụ Sự nhất quán này sẽ giúp các nhà phát triển hiểu các
giao dịch của hệ thống một cách dễ dàng hơn và tiết kiệm công sức khi hiện thực hóa hoặc thay đổi sự thực thi của các giao dịch trong hệ thống
4.3.2 Kiến trúc hệ thống giao dịch
Kiến trúc hệ thống giao dịch dựa trên các thành phần được thể hiện ở Hình 4.1 Mục đích của kiến trúc này
là liệt kê các thành phần chính của hệ thống giao dịch doanh nghiệp và sự tương tác giữa các thành phần Dựa trên ngữ cảnh của kiến trúc này một mô hình nhất quán để thiết kế các kiến thức về lĩnh vực và xử lý các giao dịch bảo mật của hệ thống được đề xuất