Đối với các doanh nghiệp lớn, không thể gộp tất cả các thực thể nghiệp vụ và các tiến trình nghiệp vụ vào trong một hệ thống phần mềm đơn lẻ vì điều đó sẽ quá phức tạp và khó sử dụng..[r]
(1)123 CHƯƠNG
THIẾT KẾ KIẾN TRÚC HỆ THỐNG
5.1 GIỚI THIỆU
Mục đích pha phân tích hình dung nghiệp vụ cần gì, mục đích pha thiết kế định cách xây dựng hệ thống Hay nói cách khác, phân tích nhằm trả lời câu hỏi “cái gì”, cịn thiết kế để trả lời câu hỏi “như nào” Hoạt động pha thiết kế tiến hóa tập biểu diễn phân tích thành tập biểu diễn thiết kế Trong pha này, nhóm dự án xem xét cẩn thận hệ thống hoạt động tích hợp môi trường hệ thống thời Nhóm cần phải xem xét nhiều chiến lược thiết kế định chiến lược sử dụng Ví dụ, xây dựng từ đầu, mua địa phương hóa hay để bên ngồi xây dựng phần
Mặc dù ranh giới hai pha phân tích thiết kế không rõ ràng, rõ rang tiến trình hoạt động pha cần ý tưởng hoàn toàn khác Sự mờ nhạt ranh giới cố ý phương pháp luận phát triển lặp tăng dần RUP, ngẫu nhiên nhóm phát triển phần mềm chưa có kinh nghiệm Nhiều kinh nghiệm nghiên cứu việc tách biệt rõ ràng phân tích thiết kế ý tưởng tốt nhằm chắn vấn đề hiểu rõ ràng trước xem xét giải pháp
Khơng có quy tắc cho việc chuyển từ mơ hình phân tích sang mơ hình thiết kế Vì q trình có tính sáng tạo liên quan đến kinh nghiệm nhóm phát triển, có cơng nghệ để sử dụng lại, sở thích cá nhân…Một hiểu rõ sản phẩm pha xác định u cầu phân tích, người thiết kế bắt đầu với tờ giấy trắng để tiến hành pha thiết kế Nghĩa không quan tâm việc có tương thích đối tượng phân tích đối tượng thiết kế, mà chú trọng vào vấn đề thiết kế có dẫn tới giải pháp hiệu không
Trong pha thiết kế, chúng ta phải đề xuất công nghệ lựa chọn cho thiết kế xem xét mức độ tác động lựa chọn tới thư viện, mẫu (pattern) khuôn mẫu (framework) có sẵn chúng ta chí ghi chú UML chi tiết mà dùng Rõ ràng thiết kế tổng quát gắn bó với cơng nghệ cụ thể Điều giảm bớt yêu cầu nhà phát triển phải thành thạo nhiều công nghệ đảm bảo chúng ta tránh công nghệ lỗi thời Tuy nhiên,
(2)124
mặt trái việc thiết kế tổng quát chúng ta khơng lợi dụng lợi ích từ cơng nghệ cụ thể mà đem lại
Lịch sử chứng minh nhiều công nghệ xuất biến thường xuyên lý thuyết làm sở cho cơng nghệ Ví dụ, nhiều cơng nghệ đời dựa ngơn ngữ lập trình COBOL, Fortran, Pascal, Ada, Modula, PL/I, C, C++, Smalltalk, Eiffel, C# Java, công nghệ bị chi phối bới hai lý thuyết lập trình hướng cấu trúc lập trình hướng đối tượng Vì vậy, hợp lý cho “tổng qt an tồn cụ thể”
Vì phát triển phần mềm hướng đối tượng tiến hành theo kiểu tăng dần, nên chúng ta khơng hy vọng có thiết kế đầy đủ hệ thống từ đầu Vì thế, lúc bắt đầu pha thiết kế, chúng ta cần lên kế hoạch cho phần hệ thống mà chúng ta thiết kế Những mức ưu tiên ca sử dụng giúp chúng ta đánh dấu ca sử dụng cần thiết Như trình bày Chương 3, ca sử dụng màu xanh phải thiết kế đầy đủ ngay; ca sử dụng màu vàng chưa cần thiết kế phải hỗ trợ; ca sử dụng màu đỏ thiết kế, chúng nên hỗ trợ (“được thiết kế” có nghĩa giải pháp đưa ra; “được hỗ trợ” có nghĩa có giải pháp hợp lý để dự phòng sau
Trong thực tiễn, chúng ta tìm kiến trúc hệ thống mà hỗ trợ giải pháp hiệu quả, thực tế cho tất ca sử dụng Khi đó, chúng ta tiến hành thiết kế chi tiết cho hầu hết ca sử dụng quan trọng thiết kế phần cho ca sử dụng quan trọng Giữa tiến trình lặp lại, chúng điều chỉnh mức ưu tiên cho hợp lý Phần cịn lại Chương trình bày bước pha thiết kế sau tập trung xem xét cách tiến hành bước giai đoạn thiết kế hệ thống Giai đoạn thiết kế hệ thống trình bày chương
5.2 CÁC BƯỚC TRONG PHA THIẾT KẾ
Pha thiết kế chia làm hai giai đoạn: Thiết kế hệ thống (hay Thiết kế kiến trúc hay Thiết kế tổng thể) thiết kế hệ thống con (hay Thiết kế chi tiết) Thiết kế hệ thống bắt phải có nhìn tổng quát tác vụ trước sâu vào thiết kế chi tiết hệ thống (sẽ giới thiệu Chương 6) Thật ra, phương pháp hướng đối tượng, khơng có ranh giới thiết kế hệ thống thiết kế chi tiết việc phân biệt hai giai đoạn cần thiết Thiết kế bao gồm hoạt động sau đây:
Thiết kế hệ thống
1 Lựa chọn công nghệ mạng cho hệ thống Thiết kế tương tranh an toàn-bảo mật
(3)125 Phân rã hệ thống thành hệ thống Xây dựng biểu đồ gói
Thiết kế hệ thống
1 Xây dựng biểu đồ lớp thiết kế Xây dựng biểu đồ Xây dựng lược đồ sở liệu
5.3 LỰA CHỌN CÔNG NGHỆ MẠNG CHO HỆ THỐNG
Việc lựa chọn công nghệ mạng cách hệ thống phân rã thành thành phần logic vật lý riêng biệt Việc phân rã gọi hình trạng hệ
thống (system topology) Để hiểu rõ hình trạng mạng, trước hết chúng ta khảo sát sơ
lược lịch sử cấu trúc mạng sau đó, xem xét cấu trúc mạng khác kiểu máy khách, ứng dụng client- server với ứng dụng phân tán khác Cuối xem xét biểu diễn hình trạng hệ thống đồ triển khai UML
5.3.1 Kiến trúc mạng đơn tầng hai tầng
Những năm 1940, máy tính thiết bị nguyên khối lớn, có khả chạy chương trình thời điểm Sau đó, cải tiến thành Mainframe – có khả
chạy đồng thời nhiều chương trình, điển hình chương trình người dùng chương đợt (một đợt bao gồm tập liệu giống chạy qua chương trình theo tuần tự) Mainframe có khả xử lý nhiều chương trình lúc chia thời gian cho CPU chạy chương trình chương trình tới lượt thực thi
Mơ hình mainframe xem mơ hình kiến trúc tầng (one-tier Architecture) Nghĩa là, chương trình đưa vào, có mức hoạt động tính tốn chạy máy Kiến trúc tầng khơng có mạng, có dây kim loại mảnh nối từ thiết bị tới mainframe, không tạo thành mạng theo nghĩa Ưu điểm mainframe cài đặt đơn giản, nhược điểm chúng tăng khả tính tốn cách mua thêm mainframe mới, nâng cấp cũ Ngày nay, kiến trúc mạng sử dụng cho hệ thống nghiệp vụ cỡ lớn
Kiến trúc hai tầng (two tier architecture) hệ kiến trúc phổ biến
vào năm 1970 Ý tưởng kiến trúc nhằm tăng cường khả xử lý máy khách máy tính trung tâm khơng phải thực tất tiến trình Như vậy, chúng ta thêm hay thay máy khách rẻ máy tính trung tâm Các máy khách thường máy tính mini hay workstation, truy nhập
(4)126
vào máy tính midi hay file server Sự kết hợp máy tính mini máy tính midi tương tự kết hợp workstation file server Với kiến trúc hai tầng, chương trình liệu phải chuyển từ máy tính trung tâm sang máy khách Điều địi hỏi phải có kết nối nhanh hai bên điều dẫn đến ý tưởng đại mạng Mạng tập hợp máy chủ (host) kết nối với đường giao tiếp tốc độ cao
Khi có mạng máy tính, chúng ta thêm máy trung tâm máy khách cách dễ dàng nhằm nâng cao lực tính tốn Các máy khách quản lý chương trình liệu cách linh hoạt, mà khơng cần nhờ vào người quản trị hệ thống Nếu chúng ta cho phép máy khách lưu trữ chương trình liệu, chúng ta cần giải số vấn đề liệu thay đổi chương trình nâng cấp, máy khách bị lỗi Vì vậy, nên hạn chế lưu trữ chương trình liệu máy khách
Kiến trúc hai tầng mang lại khả đồ họa tinh vi hệ thống cửa sổ cho máy khách, thay cho mơ hình có văn máy điện báo đánh chữ Kiến trúc hai tầng sử dụng rộng rãi chủ yếu cho hệ điều hành Unix máy chủ quản lý tệp (file server)
Hoạt động mơ hình kiến trúc hai tầng
Máy khách (Client) máy chủ (Server) trao đổi thông tin với dạng thông điệp (Message) Thông điệp gởi từ máy khách sang máy chủ gọi thông điệp yêu cầu (Request Message) mô tả công việc mà phần máy khách muốn máy chủ thực
Hình 5.2: Kiến trúc chương trình Client-Server
Mỗi máy chủ nhận thông điệp yêu cầu, máy chủ phân tích yêu cầu, thực thi công việc theo yêu cầu gởi kết máy khách (nếu có) thơng điệp trả lời (Reply Message) Khi vận hành, máy chủ phục vụ cho nhiều máy khách Mỗi ứng dụng mơ hình máy khách - máy chủ (client-server) phải có
Giao thức (Protocol) riêng để trao đổi thông tin, phối hợp công việc máy khách
máy chủ Giao thức qui định số vấn đề sau:
Khuôn dạng loại thông điệp
(5)127
Số lượng ý nghĩa loại thông điệp
Cách thức bắt tay, đồng hóa tiến trình truyền nhận máy chủ máy khách…
Thông thường phần máy khách đảm nhận chức giao diện người dùng, tạo form nhập liệu, thông báo, biểu báo giao tiếp với người dùng; phần máy chủ đảm nhận chức xử lý lưu trữ liệu Mô hình tạo điều kiện dễ dàng cho việc bảo trì, chia sẻ, tổng hợp liệu tồn cơng ty tổ chức Các chức hoạt động nghiệp vụ cài đặt phần máy khách phần máy chủ tạo hai loại kiến trúc máy khách-máy chủ máy khách nặng (Fat Client) máy khách nhẹ (Thin Client)
Máy khách nặng (Fat Client)
Theo mơ hình này, hoạt động nghiệp vụ cài đặt bên phía máy khách phần máy chủ thực chức chủ yếu truy vấn lưu trữ thơng tin Mơ hình có ưu điểm tạo giao tiếp mạng liệu tạm thời q trình tính tốn lưu máy khách nên giảm tắc nghẽn Tuy nhiên, có số nhược điểm chi phí đầu tư phần cứng cho máy khách cao khó nâng cấp phải cài đặt lại tồn máy máy khách muốn nâng cấp hệ thống
Máy khách nhẹ (Thin Client)
Ngày nay, doanh nghiệp thường sử dụng rộng rãi mơ hình Máy khách – máy chủ (client-server) Trong mơ hình này, tất máy tính để bàn nhân viên (máy khách) kết nối vào máy tính trung tâm (máy chủ) Máy chủ đóng vai trị kho tài nguyên (dữ liệu, thiết bị phần cứng số dịch vụ mạng khác…) phục vụ cho tất máy khách nối với Bên cạnh khả xử lý máy chủ, máy khách có khả xử lý (thường yếu máy chủ) lưu trữ riêng để phục vụ cho tác vụ không liên quan đến mạng soạn thảo văn bản, bảng tính, vẽ hình…Tuy nhiên, doanh nghiệp, ứng dụng phi mạng máy khách thường giống cài đặt Microsoft Windows, Microsoft Word, Microsoft Excel, chương trình nghe nhạc, xem phim…
Do đó, cơng nghệ máy khách nhẹ đưa nhằm đáp ứng nhu cầu “máy tính người dùng có cấu hình tối thiểu” Cơng nghệ máy khách nhẹ tương tự công nghệ client/server, điểm khác quan trọng tất lực xử lý lẫn lưu trữ toàn mạng máy tính tập trung vào máy chủ Mọi máy khách cịn hình, bàn phím chuột Mọi chương trình hay phần mềm người dùng lưu trữ máy máy chủ thi hành CPU máy chủ Mỗi có người sử dụng đăng ký vào hệ thống Người “cấp” cho máy tính ảo để người dùng chọn phần mềm hệ điều hành (đã có
(6)128
sẵn máy chủ) mà họ ưa thích Lợi điểm cơng nghệ vừa an toàn vừa kinh tế nên ngày khẳng định Tuy nhiên, mơ hình có số nhược điểm tạo nhiều thông điệp trao đổi máy khách chủ đó, u cầu máy chủ phải có cấu hình cao để tránh dẫn đến khả tắc nghẽn
5.3.2 Kiến trúc ba tầng
Kiến trúc ba tầng (Hình 5.4) trở nên phổ biến vào năm 1990 cách chia hệ thống thành ba phần: giao diện người dùng, logic chương trình lưu trữ liệu Trong kiến trúc này, chương trình phân rã ba tầng khác nhau:
Tầng giao diện người dùng (User Interface) hay tầng máy khách thể giao
diện mà người sử dụng nhập yêu cầu, liệu xem kết Nghĩa xử lý việc giao tiếp với người sử dụng, nhập xuất, … mà không thực việc tính tốn, kiểm tra, xử lý, hay thao tác liên quan đến sở liệu
Tầng ứng dụng (Application Server, Business Rule) biết tầng logic
nghiệp vụ hay tầng dịch vụ để chạy chương trình đa luồng Tầng thực xử lý chức chính, kiểm tra ràng buộc…Việc thực độc lập với cách thiết kế cài đặt giao diện thông tin để xử lý lấy từ tầng giao diện
Tầng liệu (Database Server, Data Storage) nhằm lưu trữ liệu cung cấp
cơ chế an toàn cho việc truy nhập đồng thời với giúp đỡ hệ quản trị sở liệu Tầng thực công việc liên quan đến liệu mà phần mềm cần đến đọc, ghi…
Các ưu điểm kiến trúc tầng:
Tạo điều kiện dễ dàng phát triển: Bất kì hệ thống lớn bao gồm
ba phần: logic chương trình, giao diện người dùng chế quản lý hiệu năng/bảo mật liệu Việc phân chia hệ thống thành phần tạo điều kiện cho người lập trình thực cơng việc cách đơn giản
Sử dụng máy tính hiệu hơn: Tùy theo tầng chúng ta sử dụng máy
tính cho phù hợp Ví dụ, giao diện người dùng nhiệm vụ đơn giản không địi hỏi máy tính lớn; việc thực thi logic chương trình u cầu sử dụng CPU, nhớ, khơng địi hỏi dung lượng đĩa q lớn, sử dụng máy tính server; quản lý liệu u cầu nhiều khả tính tốn, dung lượng đĩa, sử dụng máy server hay mainframe
Cải tiến hiệu năng: nhân rộng máy lớp liệu lớp để lan
truyền tính tốn (cân tải), tầng chun mơn hóa dễ dàng tối ưu hóa
(7)129
Nâng cao tính bảo mật: Thường hệ thống ba tầng triển khai cho
máy client chạy mạng Internet Vì vậy, chúng ta phải có chế bảo mật nghiêm ngặt để bảo vệ máy chủ, chương trình liệu Với kiến trúc ba tầng, chúng ta đặt chế bảo mật tầng nhằm tránh công vơ tình hay cố ý từ bên ngồi Tầng liệu sau tầng giữa, chúng ta khơng cần phải bảo mật cho phần cứng hay giao tiếp chúng Điều giúp tầng liệu chạy với tốc độ cao dễ thao tác
Hạn chế đầu tư: Đối với trường hợp chúng ta có mainframe lưu trữ xử lý
dữ liệu nhiều năm, có cố chúng ta không muốn phải vứt bỏ tất làm lại từ đầu Kiến trúc ba tầng mạng phương án thích hợp để giải vấn đề Ta sử dụng tầng làm trung gian client kết nối với mainframe, server kết nối tới client
Tính linh hoạt: Được thể rõ qua việc chúng ta thêm bớt máy
tính hệ thống hệ thống thiết kế theo kiến trúc ba tầng Ví dụ, phần logic thiết kế đúng, chúng ta phát triển theo kiến trúc tầng, sau phát triển lên thành hai tầng, ba tầng tùy theo yêu cầu
Đa dạng kiểu dáng máy client: máy tính tầng client thực nhận đầu vào
và hiển thị kết hình, chúng ta sử dụng thiết bị với giao diện khác máy tính cá nhân, PDAs, mobile-phone… Khi đó, tầng tầng liệu làm việc nhau, khơng có thay đổi
Với tất ưu điểm trên, kiến trúc ba tầng nên sử dụng thiết kế hệ thống dù có kích cỡ nhỏ hay lớn
5.3.3 Kiến trúc Client – Server kiến trúc phân tán
Bất chúng ta kết nối với nhiều máy nhiều hệ thống phần mềm, chúng ta phải chọn giữa hai loại client – server phân tán (distributed), trình bày Hình 5.5 Mặc dù xuất phát từ thời mainframe, “client – server” có nghĩa chúng ta có lượng lớn client, đơn giản gửi yêu cầu đến server lớn xử lý yêu cầu Ngược lại, kiến trúc phân tán (hay ngang hàng) đặc trưng tập máy tự chủ, truyền thơng theo hướng có nhu cầu phát sinh
(8)130
Hình 5.4: Kiến trúc Client – Server phân tán
Ví dụ quen thuộc kiến trúc client – server mơ hình thương mại điện tử Trình duyệt web khách hàng phát yêu cầu để kết nối với máy chủ Web máy chủ web phát lệnh đến hệ thống đầu cuối Phần lớn hệ thống hai tầng ba tầng mơ hình client – server
Kiến trúc phân tán thực cơng việc tính tồn lớn trải rộng nhiều máy tính mạng Nghĩa là, có lượng lớn liệu cần thực tính tốn, chia liệu tính tốn thành nhiều tốn tính tốn nhiều máy độc lập Ví dụ, SETI@home (setiathome.ssl.berkeley.edu) - tổ chức phi lợi nhuận tìm kiếm tín hiệu radio lạ ngồi trái đất Các liệu radio tự động thu thập phân tán đến máy mạng Internet Mỗi máy riêng lẻ tiến hành phân tích liệu gửi đến kết đáng chú ý gửi trở lại máy chủ trung tâm để phân tích kỹ Ý tưởng gộp số lượng lớn máy để giải tốn phức tạp sử dụng để tìm số nguyên tố, nghiên cứu bệnh ung thư Điều dẫn đến lĩnh vực nghiên cứu đời với tiêu đề tính tốn lưới (Grid Computing)
Các thuật ngữ “client – server” “distributed” (hay “peer to peer”) sử dụng để mô tả kiến trúc phần mềm, không phụ thuộc vào việc phần mềm triển khai máy mạng Ví dụ dễ dàng thấy đối tượng chạy chương trình thường xem server sử dụng lại ngữ cảnh khác với đối tượng client khác Trong ứng dụng đặc biệt, chúng ta viết nhóm đối tượng cộng tác với theo kiểu phân tán
Các liên kết truyền thơng mạng có khuynh hướng trao đổi hai chiều, nghĩa liên kết ban đầu mở client server gửi thơng tin đến client (client có nhận hay khơng phụ thuộc người thiết kế phần mềm client) Vì thế, khác client – server phân tán một kiểu nhân tạo, sử dụng người thiết kế để cấu trúc giải pháp họ theo cách hay cách Kiến trúc client –server dễ phát triển hơn, chúng khơng đem lại hiệu cao (ví dụ, client thường rỗi rải server xử lý yêu cầu nó) Ngược
(9)131
lại, kiến trúc phân tán thường khó phát triển chúng đem lại hiệu tốt
Thường việc lựa chọn kiến trúc bước tự nhiên từ hệ thống mà xây dựng Ví dụ, tạo phiên mua bán trình xử lý theo bước (khách hàng hỏi chi tiết sản phầm, người bán cung cấp chi tiết sản phẩm, khách hàng chọn mua sản phẩm, người bán đưa mẫu đơn để mua, khách hàng điền vào mẫu đơn gửi đi…) tương tác kiểu client –server Ngược lại, hệ mô chuyến bay nhiều người dùng yêu cầu máy tính phi công thực thi công việc theo thời gian thực biểu diễn qua buồng lái truyền thông cần thiết phát tin định kì vị trí thời máy bay Vì hệ thống mơ chuyến bay nhiều người dùng kiến trúc phân tán thích hợp
5.3.4 Biểu diễn hình trạng mạng với UML
Các kiến trúc hệ thống mơ tả biểu đồ triển khai UML (xem Hình 5.5) Biểu đồ triển khai đơn giản nêu nút, đường truyền thông vô số điểm khác Mỗi nút biểu đồ thể máy trạm (thể với từ khóa UML <<device>>) Một đường truyền thơng hai nút liên lạc với theo cách Các nút có dấu * thể có nhiều nút tồn thời gian chạy Trong biểu đồ, chúng ta có nút lặp lại (QLTinchiServer DBServer) nút nhân lên nhiều lần (ClientHTML ClientGUI) Các biểu đồ triển khai giống biểu đồ lớp biểu đồ đối tượng, chúng nêu kiến trúc (kiểu nút) kiến trúc thực (các thể nút) Khi thể nút, giống đối tượng biểu đồ đối tượng, nhãn nút có dạng tên:Kiểu nên gạch chân
*
*
Hình 5.5: Biểu đồ triển khai cho Hệ quản lý học tín <<device>>
ClientHTML <<device>> ClientGUI
<<device>> QLTinchiServer
<<device>> DBServer
(10)132
Các biểu đồ triển khai thơng thường có lời mơ tả kèm theo Trong Hình 5.5, tầng liệu QLTinchi bao gồm hai server sở liệu (gọi DBServer) Có ba nút cung cấp lượng lớn liệu Tầng giữa, liên lạc với tầng liệu bao gồm hai máy server (QLTinchiServer) Mỗi QLTinchiServer truy nhập đồng thời điểm HTMLClient hay GUIClient
5.4 THIẾT KẾ TƯƠNG TRANH VÀ AN TOÀN-BẢO MẬT
5.4.1 Thiết kế tương tranh
Trong hệ thống mạng, nhiều hoạt động thường xảy lúc thể thống tiến trình riêng lẻ thực thi phần hệ thống Các hệ thống gọi hệ thống tương tranh (concurrent system) hay đồng thời Mặc dù phát triển hệ thống dễ dàng xác lập hàng đợi thứ tự dựa vào tất người dùng tiến trình Tuy nhiên, thực tế phải biến hỗn độn thành thứ tự nỗ lực lập trình Tính tốn tương tranh xem xét số vấn đề:
Làm đảm bảo thông tin cập nhật đầy đủ trước người thao tác cập nhật Ví dụ, dừng truy nhập vào đăng ký môn học tất chi tiết môn học thêm vào
Làm đảm bảo thông tin khơng cập nhật đọc Ví dụ, khơng cập nhật mơn học xem
Giải vấn đề xem xét hai mức độ khác Ở mức thấp, giao dịch sở liệu điều khiển luồng sử dụng để bảo vệ liệu bên tiến trình riêng lẻ Ở mức cao, cần sử dụng quy tắc hệ thống quy tắc nghiệp vụ để điều khiển hoạt động tương tranh
Cách dễ dàng để xử lý tương tranh thêm ràng buộc hệ thống hay đưa thêm quy tắc nghiệp vụ Để hiểu rõ thêm ràng buộc hệ thống, xem ví dụ Hệ quản lý học theo tín Thay cố cập nhật mơn học sinh viên xem, chúng ta cập nhật sở liệu riêng chuyển lại sau Cách làm có nghĩa người sử dụng truy nhập Internet phép đọc điều giúp chúng ta dễ dàng viết code
Các quy tắc nghiệp vụ giúp việc phát triển thuận lợi Ví dụ, xem xét hệ thống mua bán vé máy bay Khách hàng A tới văn phòng đặt vé Hà nội thời điểm với khách hàng B tới văn phòng đặt vé khác Hà nội Cả hai định mua vé cho chuyến bay Đà nẵng Thật khơng may, cịn lại vé Cả hai lúc hỏi “Có cịn vé khơng?” Cả hai nhân viên bán vé kiểm tra hệ thống trả lời “Còn vé” Khi có tranh chấp người khách hàng nói “Đồng ý, tơi mua nó” thắng Điều phụ thuộc vào
(11)133
khả nhân viên trễ mạng từ máy văn phòng đặt vé tới nơi đặt máy chủ Trong kịch bán vé nói trên, chúng ta phải đảm bảo, khơng tình cờ bán hai vé cịn ghế Đó vấn đề tương tranh mức tiến trình, điều khiển tiến trình máy chủ dựa phân loại yêu cầu thứ đến để mua vé, thứ hai đưa thơng điệp lỗi Nhưng khơng tốt phía nghiệp vụ khiến khách hàng bực tức trả lời vé mà sau vài giây khơng cịn
Để tránh điều này, chúng ta đưa thêm quy tắc nghiệp vụ: nhân viên truy vấn số vé cịn lại, cịn vé, tạm thời giữ nhân viên hủy bỏ yêu cầu thời hạn đặt vé hết (ví dụ, việc đặt vé tạm thời phép kéo dài 10’ nhân viên khơng hủy bỏ trước) Với quy tắc nghiệp vụ này, chúng ta đảm bảo khách hàng đưa yêu cầu tới máy chủ mua vé (máy chủ tích hợp truy vấn lưu trữ bên dịch vụ nghiệp vụ đơn)
Giả việc đặt vé cho A thành công Nhân viên phục vụ A có 10’ để yêu cầu chi trả cho vé giữ, nhân viên hủy bỏ thời gian A thay đổi ý định Nhân viên hủy bỏ phương thức chi trả A có lỗi, lý cho việc có giữ tạm thời cho người B lúc nghĩ vé bán hết trước cô tới cửa hàng đặt vé, khơng có lý để tức giận với nhà cung cấp Nếu cuối A khơng mua vé sau B biết vé chưa bán hết đơn giản nghĩ “Ai hủy bỏ”
5.4.2 Thiết kế an toàn-bảo mật
An tồn-bảo mật vấn đề quan trọng ln quan tâm cách đặc biệt hầu hết hệ thống Do đó, việc xem xét đầy đủ an toàn phải chủ đề riêng nằm ngồi phạm vi giáo trình Trong phần này, tài liệu trình bày cách tổng quan để bạn đọc thấy vai trò quan trọng an tịan phát triển hệ thống thơng tin
Các khía cạnh an tồn-bảo mật
Một hệ thống goị an toàn hệ thống bảo vệ khỏi lạm dụng dù vơ tình hay cố ý An toàn thuật ngữ rộng nhiều, chia thành năm khía cạnh :
Sự riêng tư (Privacy): Thông tin che dấu, trạng thái sẵn sàng
với người dùng phép tác động vào xem chỉnh sửa Điều đảm bảo cho người sử dụng khai thác tài nguyên hệ thống theo đúng chức năng, nhiệm vụ phân cấp, ngăn chặn truy nhập thông tin bất hợp pháp
(12)134
Xác thực (Authentication): Cần biết nơi mà phần thông tin gửi đến để
định xem phần thơng tin có đáng tin cậy hay khơng
Tính khơng thể bác bỏ được (Irrefutability): Ngược với xác thực, tính khơng thể
bác bỏ nhằm đảm bảo người tạo thông tin phủ nhận họ người tạo Điều hữu ích cho có sai sót xảy
Tính tồn vẹn (Integrity): Đảm bảo thông tin không bị mát đường
đi, bảo đảm quán liệu hệ thống Có thể đưa biện pháp để ngăn chặn việc thay đổi bất hợp pháp phá hoại liệu
Tính an tồn (Safety): phải điều khiển việc truy cập tài ngun (như máy
móc, tiến trình, sở liệu tệp) Tính an tồn hiểu quyền hạn
Bốn yêu cầu thực cách sử dụng mã hóa số Riêng tính an tồn phức tạp nhiều Thơng thường, đoạn code thực thi, hệ điều hành áp dụng kiểu điều khiển để đoạn code thực điều khiển truy cập tệp, thư mục chương trình khác Hơn nữa, điều khiển hệ điều hành khơng phải thực
Nếu hệ thống hoạt động mạng, vấn đề an toàn trở nên quan trọng Bởi vì, qua mạng, hacker cố gắng chiếm đoạt chương trình chạy máy ta nhằm mục đích phá hoại
Những quy luật chung an toàn-bảo mật
Để thiết kế hệ thống bảo mật tốt, ta buộc phải suy nghĩ cách nghiêm túc để chắn khơng xâm nhập bất hợp pháp vào hệ thống Sau vài điều đáng lưu ý để bảo vệ hệ thống bạn:
Ngăn chặn việc xâm nhập máy chủ không phép
Các thông tin nhạy cảm chi tiết ý tưởng kinh doanh hay chiến lược kinh doanh, hồ sơ cá nhân, chi tiết số thẻ tín dụng mà bạn dùng, thông tin liên quan đến an ninh quốc gia….phải đảm bảo không bị truyền ngồi
Đảm bảo thơng tin bên ngồi khơng bị “nghe lén” q trình truyền có đúng người nhận đọc
Bảo vệ mật mã (password) khách hàng nhân viên, khơng đơn sách bảo mật mà cịn liên quan tính riêng tư cao
Bảo vệ tài nguyên hệ thống client: bảo vệ client chống lại truy cập tài nguyên bất hợp pháp chống lại phá hoại từ bên ngồi Vì muốn cung cấp dịch vụ chất lượng tốt không muốn bị kiện tòa vài sai lầm
(13)135
Ngồi ra, thuê hacker có đạo đức (ethical hackers) hay người có chun mơn để xem xét, kiểm tra hệ thống Điều giúp ta không bị bất ngờ lỗi xuất Trên số lưu ý xây dựng sách bảo mật cho hệ thống, nhắc đến khía cạnh an tồn ta nên biết số vấn đề liên quan đến cách công hiểu cách công vào hệ thống để đưa sách hợp lý
5.5 PHÂN RÃ HỆ THỐNG THÀNH CÁC HỆ THỐNG CON
Đối với doanh nghiệp lớn, gộp tất thực thể nghiệp vụ tiến trình nghiệp vụ vào hệ thống phần mềm đơn lẻ điều q phức tạp khó sử dụng Chúng ta nên chia nhỏ phần mềm thành hệ thống, chia hệ thống thành hệ thống sau chia thành tầng
5.5.1 Hệ thống hệ thống
Chúng ta xem khái niệm đơn giản “Khách hàng” Khái niệm nhìn theo cách khác phận tổ chức lớn bán hàng, toán, phân phối Nếu chúng ta cố gộp chúng lại với thành hệ phần mềm đơn lẻ hỗ trợ tất phận “ Khách hàng” có hàng trăm thuộc tính hàng trăm thao tác khác
Do đó, hệ thống nghiệp vụ nên có số hệ thống tách biệt nhau, hệ thống cài đặt nhóm phát triển khác để việc sử dụng lại đối tượng khơng tương thích giảm bớt Khi đó, thông tin cần truyền hệ thống phải truyền theo cách xác định, điều khiển qua giao diện xác định trước Để giảm độ phức tạp nữa, hệ thống nên chia nhỏ thành hệ thống riêng biệt
5.5.2 Các cụm (Layer)
Bên hệ phần mềm, ta thường sử dụng nhiều cụm code Mỗi cụm (layer) tập hợp đối tượng cộng tác với phụ thuộc vào tiện ích cung cấp
bởi cụm dưới Ví dụ, thư viện hệ thống Unix cung cấp truy cập tới tiện ích hệ
điều hành mức thấp qua tầng hàm C Những tầng làm giảm phức tạp cách chia nhỏ phần cài đặt thành nhiều phần dễ quản lý Những tầng có khả đem lại hội tái sử dụng, tầng viết cách độc lập với tầng Bertrand Meyer nói [7]:
Một hệ phần mềm thực thụ, chí phần mềm nhỏ theo chuẩn ngày nay, liên quan đến nhiều lĩnh vực mà khơng thể đảm bảo độ xác xử lý tất thành phần tính chất mức Thay vào đó, cách tiếp cận theo cụm cần thiết cụm dựa vào cụm thấp
(14)136
Dù không quan tâm đến tổng số cụm, nói chung cụm thường biểu diễn giao diện người dùng, cụm thường biểu diễn hệ điều hành, kết nối mạng Các cụm “mở” (cụm gọi số đối tượng cụm cụm quản lý đối tượng khơng hồn tồn giấu chúng) “đóng” (đóng gói hồn tồn cụm nghĩa đối tượng cụm ẩn với cụm trên) Khơng có quy định cụm nên để mở hay đóng Nói chung, cụm đóng yêu cầu code nhiều chạy chậm so với cụm mở cần thực chép chuyển đổi thông tin Ngược lại, cụm mở thường khơng an tồn cụm khơng bảo vệ khó để bảo trì cụm phụ thuộc nhiều cụm
Ở mức độ đó, chuyển đổi cụm mà không ảnh hưởng đến đoạn code khác Ví dụ, chúng ta vứt bỏ cụm cao thay khác Chúng ta thay đổi cụm trung gian cụm khác có giao diện mà khơng ảnh hưởng đến cụm Thường thì, cụm thực thi lại lớp ta thay đổi hệ thống, đỉnh ta thay đổi giao diện người dùng tới thiết bị
Các cụm (layers) cho hệ thống đơn tầng (single-tier)
Hình 5.10 Các tầng hệ thống đơn tầng
Hình 5.10 biểu diễn lược đồ phân cụm đơn giản thực thi hệ thống đơn tầng Cụm đáy cụm sở liệu, cơng việc chuyển liệu hệ quản trị sở liệu cụm nghiệp vụ (Business) Vì phần lớn ứng dụng có yêu cầu lưu trữ liệu, nên hệ thống đơn giản lưu trữ liệu dạng tệp cụm sở liệu hệ thống tệp thay hệ quản trị sở liệu Phía cụm sở liệu cụm nghiệp vụ (business) bao gồm đối tượng thực thể đối tượng hỗ trợ thực thi Cuối cùng, phía cụm nghiệp vụ cụm giao diện người dùng chứa đối tượng mà cơng việc mơ tả lựa chọn có giá trị cho người, đưa lệnh liệu đến cụm nghiệp vụ hiển thị liệu trả từ cụm nghiệp vụ
Các cụm cho hệ thống hai ba tầng
(15)137
Hình 5.11 Các cụm hệ thống hai ba tầng
Các hệ thống hai hay ba tầng thực thi mạng lấy thông tin từ giao diện người dùng chuyển tới cụm nghiệp vụ chạy máy chủ Chúng ta giải vấn đề cách sử dụng nhiều hai tầng (Hình 5.11) Cụm mạng (Network) chứa đối tượng giúp cho mạng suốt với giao diện người dùng (user interface) Cụm giao diện người dùng truy nhập trực tiếp đến đối tượng cụm dịch vụ (server) Cụm dịch vụ chứa đối tượng sử dụng tập dịch vụ nghiệp vụ (business service) cụm nghiệp vụ (Business) Trong hệ thống hai tầng cụm sở liệu máy với cụm dịch vụ cụm nghiệp vụ Trong hệ thống ba tầng, lớp sở liệu trải rộng mạng chi tiết ẩn DBMS
Nếu chúng ta dùng dạng HTML để lấy từ client tới tầng trung gian (hoặc server), giao diện người dùng hay vị trí mạng rõ ràng Trong trường hợp giao diện người dùng phần client (HTML page HTML form) phần server (như servlet JSPs)
Các cụm phiên dịch (translation layer)
Thông thường cụm khác có trọng tâm khác nhau.Ví dụ, thiết kế giao diện người dùng, chúng ta thường đề cập đến menu, dialog, notebook…Về cụm mạng ta thường quan tâm giao thức (protocol), băng thông (bandwidth)…Trong cụm dịch vụ chúng ta liên quan tới tính bảo mật (security), đa luồng (multi-thread) Trong cụm nghiệp vụ, chúng ta quan tâm đến tính trừu tượng, thuộc tính, thao tác, đa hình, tái sử dụng ngun tắc khác mơ hình hướng đối tượng Cuối cùng, cụm sở liệu, thường ta phải giải vấn đề khóa, bảng, SQL, phụ thuộc hàm tất khía cạnh khác sở liệu Nếu cố liên kết phần trực tiếp với nhau, dẫn tới việc phức tạp nhiều liên kết (liên kết mạnh, việc thực thi đối tượng phụ thuộc đối tượng khác làm code trở nên khó bảo trì) Chúng ta giảm phức tạp mức độ liên kết cách thêm cụm hoạt động giống một cụm phiên dịch (translation layer) Cụm phiên dịch sử dụng theo hai cách:
(16)138
Chuyển đổi cụm nghiệp vụ (trong trường hợp đơn tầng) cụm mạng (trong trường hợp đa tầng) thành chức nhỏ yêu cầu người dùng đầu cuối cụm điều khiển (controller) Cụm điều khiển quản lý việc giao tiếp giao diện người dùng với phần lại hệ thống
Cụm phiên dịch thông thường khác sử dụng cụm lưu trữ (persistence layer) nằm cụm nghiệp vụ cụm sở liệu Nó loại phụ thuộc cụm nghiệp vụ vào chế lưu trữ thực sử dụng Điều làm cho chế lưu trữ sau trở nên dễ dàng thay đổi hơn, ví dụ từ tệp sang DBMS Hình 5.13 mơ tả hệ thống đa tầng với cụm điều khiển lưu trữ thêm vào
Hình 5.13 Các cụm phiên dịch hệ thống đa tầng 5.5.3 Ví dụ : Java Layers - Applet plus RMI
Hình 5.14 Các cụm Applet RMI
Đoạn trình bày ví dụ minh họa Java client với GUI Hình 5.14 biểu diễn tập đầy đủ cụm hệ thống tầng với RMI applet RMI giao thưc mạng Java Trong ví dụ này, cụm giao diện người dùng sử dụng thư viện Swing (thư viện GUI Java) Phía cụm giao diện người dùng cụm điều khiển chứa tất code dành cho việc truy cập dịch vụ nghiệp vụ Điều có lợi phải ẩn đối tượng giao diện người dùng phải cài đặt lại thêm giao diện iPhone 95% cụm mạng cung cấp qua RMI Framework, ta phải tuân theo số luật
(17)139
đơn giản xây dựng cụm điều khiển cụm dịch vụ để đối tượng dịch vụ có khả truy cập từ client
Cụm dịch vụ Server, cụm nghiệp vụ business cụm lưu trữ persistence giống hệt cụm mô tả phần trước Cụm sở liệu cung cấp thư viện JDBC (Java Database Connectivity) JDBC cho phép chúng ta truy cập vào sở liệu quan hệ Vì chúng ta bao gồm lớp lưu trữ presistence, nên ta thay JDBC với sở liệu hướng đối tượng hệ thống file mà không ảnh hưởng đến đối tượng nghiệp vụ
5.6 XÂY DỰNG BIỂU ĐỒ GĨI
Khái niệm gói (package) UML cho phép chúng ta nhóm lớp có liên quan (xem Chương 2) Biểu đồ gói chứa lớp hay gói khác Hình 5.15 phụ thuộc (mũi tên đứt) từ gói đến gói khác ám gói nguồn Package1 sử dụng phần bên gói đích Package3 Một gói sử dụng để biểu diễn:
Một cụm (layer)
Một hệ thống (subsystem)
Thư viện dùng lại (resusable library)
Khung (framework)
Các lớp cần triển khai
Từ quan điểm lập trình, gói ánh xạ thành cấu trúc package Java namespace C++ Hãy nhớ rằng, gói khái niệm thời gian biên dịch tiện lợi tổ chức mã cho phát triển, triển khai bảo trì
Hình 5.15: Biểu đồ gói UML Package1
Package2 Class1 Class2 Package3
(18)140
Nhiều người phát triển sử dụng biểu đồ gói để cụm Tuy nhiên, cách tiếp cận cho có số vấn đề:
Một tầng chọn trước định cách tổ chức mã nguồn thành gói tổ chức sau lại khác
Hai biểu đồ gói khơng cho phép chúng ta thông tin quan trọng
Ví dụ, tồn cụm CGI Layer Hệ quản lý học theo tín quan trọng khơng ánh xạ đến gói mà chúng ta cài đặt hay mượn từ thư viện Biểu đồ gói khơng tốt thể phân rã thành hệ thành hệ thống biểu đồ triển khai nên sử dụng
5.7 KẾT LUẬN
Trong chương chúng ta xem xét:
Các bước thiết kế hệ thống cách phân rã hệ thống thành thành phần logic vật lý đặc biệt xem xét hình trạng mạng Cách phân rã phần mềm thành nhiều hệ thống, hệ thống tầng Cách biểu diễn kiến trúc biểu đồ triển khai UML
Những vấn đề đồng thời an toàn – bảo mật nảy sinh mạng Làmthế đảm bảo thơng tin cập nhật hồn tồn trước người sử dụng tác động đến làm đảm bảo thông tin khong cập nhật đọc BÀI TẬP
1 Hãy trình bày kiến trúc phân tầng cụm cho hệ quản lý học theo tín cách chọn lựa
2 Trình bày thiết kế tương tranh an toàn-bảo mật cho hệ quản lý học theo tín Tương tự Câu 1, cho Hệ quản lý thương mại điện tử sách Hệ quản lý thư
(19)141 CHƯƠNG
THIẾT KẾ CÁC HỆ THỐNG CON
6.1 GIỚI THIỆU
Do quy mô công việc thiết kế hệ thống sáng tạo nhóm dự án khác nhau, nên không mong đưa đầy đủ hướng dẫn bước cho thiết kế hệ đa tầng hướng đối tượng Do đó, chương tập trung trình bày cách tổng quan hoạt động chủ yếu với hy vọng tuân theo bước dẫn đến thiết kế hệ phần mềm tốt
Trước hết, cần xem xét cách thiết kế cụm nghiệp vụ (business layer) Các hoạt động thiết kế cụm thường liên quan đến việc phải định xem đối tượng đặt cụm này; chúng kết nối giao diện chúng Chúng ta phải biến đổi mơ hình lớp hướng nghiệp vụ mà chúng ta phát triển pha phân tích thành lớp cài đặt theo ngơn ngữ lập trình mà chúng ta chọn pha thiết kế hệ thống Trong tài liệu này, thiết kế hệ thống trình bày nhiều độc lập với ngơn ngữ công nghệ chọn Tuy nhiên, để tiện minh họa tài liệu nghiên công nghệ Java sở liệu quan hệ
Việc thiết kế hệ thống liên quan đến việc chuyển đổi mơ hình phân tích theo khái niệm thành lớp cài đặt theo chiến lược đặt mơ hình thiết kế hệ thống Thiết kế hệ thống tiến hành theo bước sau đây:
1 Xây dựng mơ hình lớp thiết kế: Bước chúng ta tập trung vào thiết kế lớp
thuộc cụm nghiệp vụ bao gồm thực thể miền toán lớp hỗ trợ cần thiết khác Các lớp trường tầng nghiệp vụ có cách sử dụng mơ hình lớp phân tích
2 Xây dựng lược đồ sở liệu: Quyết định cách lưu trữ liệu thiết kế
khuôn dạng lưu trữ Dữ liệu lưu trữ liệu không bị hệ thống ngưng hoạt động
3 Thiết kế giao diện người sử dụng: Tiến hành xây dựng giao diện người dùng dựa
trên phác thảo giao diện đưa pha xác định yeu cầu 6.2 XÂY DỰNG MÔ HÌNH LỚP THIẾT KẾ
Khi chuyển từ pha phân tích sang pha thiết kế, số lớp bị loại bỏ (ví dụ lớp điều khiển) số lớp khác thêm vào (như lớp để thực thi đa nhiệm) Người thiết kế tự định thiết kế đối tượng nghiệp vụ, biên và điều khiển
(20)142
cho thành mã cài đặt Thật ra, điều tùy thuộc vào cách tiếp cận mơ hình tiến trình mà dự án sử dụng
Đối lớp thiết kế mà chúng ta đưa ra, cần chọn tên kiểu trường Thông thường, trường dẫn xuất từ thuộc tính liên kết tìm thấy suốt q trình phân tích Cũng thuộc tính liên kết, chúng ta cần xem xét tới quan hệ kế thừa Quan hệ kế thừa không thiết phải ánh xạ thành mà cần định giữ hay khơng giữ chúng Nó có hay khơng có tính kế thừa hệ thống thường đưa vào pha thiết kế phân tích
6.2.1 Ánh xạ phương thức
Khi chuyển đến giai đoạn thiết kế, chúng ta thường sử dụng thuật ngữ phương thức (method) thông điệp (message) lập trình thuật ngữ thao tác (operation) UML Cho đến nay, phương thức đưa đơn cách ghi lại thực hóa ca sử dụng xem hiệu ứng phụ để kiểm định lớp phân tích có hỗ trợ cài đặt hay không mà Các phương thức pha phân tích nên bỏ qua thiết kế Như vậy, phương thức thiết từ đâu? Đối với đa số đối tượng, không quan tâm đến cụm chứa nó, thơng điệp thêm vào số lý sau đây:
Để cho phép đối tượng client đọc thay đổi giá trị trường
Để cho phép đối tượng client truy nhập liệu dẫn xuất Ví dụ, thơng điệp để đọc hóa đơn mặt hàng đăng ký mua, muốn đọc tổng hóa đơn
Do kinh nghiệm hay trực giác nói thơng điệp thêm vào có ích
Bởi khung hay mẫu mà chúng ta định sử dụng đòi hỏi phải có thơng điệp
Khi chúng ta thiết kế dịch vụ nghiệp vụ cho tầng giữa, chúng ta tìm thơng điệp cho đối tượng dịch vụ Khi dịch vụ nghiệp vụ thỏa mãn cách sử dụng đối tượng nghiệp vụ, chúng ta có khả đối đầu với nhiều thơng điệp Tóm lại, ánh xạ lớp, thuộc tính quan hệ pha phân tích sang pha thiết kế, thông điệp bắt đầu xuất từ hướng
6.2.2 Các kiểu biến
Khi đưa vào trường, chúng ta cần xem nên thuộc kiểu nào: kiểu hay kiểu lớp Thông thường, hạn chế kiểu sau đây:
Kiểu kiểu lớp đơn giản mà hy vọng tìm ngơn ngữ lập trình hướng đối tượng (ví dụ: int, float, boolean, String, List… )
Những lớp mà xây dựng