Đó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
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ư
Phản biện 1: PGS.TS Quản Thành Thơ
Phản biện 2: TS Phạm Văn Hậu
Phản biện 3: TS Nguyễn An Tế
Phản biện độc lập 1: PGS.TS Quản Thành Thơ
Phản biện độc lập 2: PGS.TS Nguyễn Tấn Khôi
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 phần mềm 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 và tổ chức đều dựa trên các hệ thống phần mềm để 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í mở rộ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ụ khác nhau 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 sự dễ dàng trong việc phân phối sản phẩm đến người dùng cuối và 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, đặc biệt là các ứng dụng 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 hệ thống phần mềm dành cho hàng ngàn công ty cùng hàng trăm triệu người cùng sử dụng với một hệ thống phần mềm được dùng bởi vài trăm nhân viên trong mạng nội bộ của một công ty hay một phần mềm cài đặt trên máy một người dùng 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 phần mềm 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 Tuy nhiên, các mẫu thiết kế cho từng loại phần mềm đặc thù trong môi trường đám mây, ví dụ như phần mềm doanh nghiệp, phần mềm đa người thuê, chưa được phát hiện và tài liệu hóa đầy đủ Chi tiết kỹ thuật để xây dựng các phần mềm đám mây cũng chưa được làm rõ Tiếp tục hướng nghiên cứu này luận
án 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 Luận án 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ự tương đối độ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à phần mềm doanh nghiệp đ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ế hỗ trợ phát triển các hệ thống phần mềm ở tầng ứng dụng của điện toán đám mây Luận án tập trung 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 phần mềm đa người thuê
Hỗ trợ mô hình đa người thuê bằng một hệ thống phần mềm triển khai trong môi trường đám mây với một
bộ mã nguồn và cơ sở dữ liệu duy nhất, sử dụng chung bởi nhiều tổ chức, giải quyết các vấn đề trong hệ thống
phần mềm đa người thuê và tận dụng các dịch vụ của điện toán đám mây khi hiện thực hóa mẫu thiết kế là điểm đặc trưng của các mẫu thiết kế luận án đề xuất so với các mẫu thiết kế truyền thống
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 của luận án 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) Tính khả dụng của các mẫu thiết kế đề xuất được đánh giá thông qua việc áp dụng mẫu thiết kế vào
các hệ thống phần mềm thực tế và rút ra các bài học kinh nghiệm Tính đúng đắn các mẫu thiết kế đề xuất được đánh giá bằng cách kiểm thử các hệ thống phần mềm dựa trên các yêu cầu nghiệp vụ đề ra
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ế truyền
Trang 53
thống được áp dụng hoặc hiệu chỉnh mở rộng trong mẫu thiết kế đề xuất cho môi trường đám mây Việc áp dụng và hiệu chỉnh mở rộng các mẫu thiết kế phổ biến và đã được kiểm chứng qua thời gian góp phần đảm bảo các mẫu thiết kế đề xuất tuân theo các nguyên lý thiết kế tổng quát 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
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 Sự
hợp lệ về khái niệm, sự hợp lệ bên ngoài và sự tin cậy của các kết quả nghiên cứu được hỗ trợ bằng cách áp dụng các chiến lược đề xuất bởi phương pháp nghiên cứu trường hợp
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 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 tiễn 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á các mẫu thiết kế hiện nay đều dựa trên các nghiên cứu trường hợp và nhận xét định tính của các
chuyên gia 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 và biểu diễn phi hình thức của các
mẫu thiết kế làm cho việc hiện thực hóa mẫu bằng một 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à cơ sở dữ liệu duy nhất sử dụng chung bởi nhiều khách hàng 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
Role-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
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 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 và hỗ trợ sự kế thừa mô hình phân quyền truy cập từ một tài nguyên cha đối với một tài nguyên con Khi đó nếu một người dùng chưa được cấp 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 hoặc sử dụng sơ đồ phân quyền cấp của tài nguyên cha để xác định quyền truy cập của người dùng đối với tài nguyên con
• Việc kiểm tra quyền truy cập vào một tài nguyên đối với một người dùng có thể được thực hiện bằng mã nguồn tường minh hoặc sử dụng chú giải phương thức hoặc tính chất (C# attribute or Java annotation) hoặc tiêm mã nguồn vào hệ thống (filter hay plug-in) bằng cách áp dụng các tính năng của khung ứng dụng
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 phần mềm đ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 Mô hình hóa người thuê và xử lý bảo mật là các khía cạnh cơ bản trong phần mềm đa người thuê Một khía cạnh quan trọng khác là kiến trúc tổng thể và mô hình xử lý giao dịch trong phần mềm cung cấp dạng dịch vụ nói chung và phần mềm đa người thuê nói riêng 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 phần mềm đa người thuê, phát triển phần mềm đa người thuê 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 phần mềm cung cấp dạng dịch vụ nói chung và phần mềm đa người thuê nói riêng
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 xử lý 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 xử lý 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 xử lý 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 xử lý giao dịch
Kiến trúc hệ thống xử lý 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 xử lý 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