Kiến trúc phần mềm - Chương 2: Các tactic

Chương này ₫ã giới thiệu các tactics ₫ể giải quyết các yêu cầu phi chức năng chính yếu của phần mềm như tính sẵn sàng ₫ể sử dụng, tính dễ sử dụng, tính thay ₫ổi ₫ược, tính hiệu quả, tính có thể kiểm thử, an ninh.

pdf32 trang | Chia sẻ: nguyenlam99 | Lượt xem: 856 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Kiến trúc phần mềm - Chương 2: Các tactic, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 1 2.1 Định nghĩa thuật ngữ 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng 2.3 Các tactics giải quyết tính dễ sử dụng (Usability) 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) 2.5 Các tactic giải quyết hiệu suất 2.6 Các tactic giải quyết an ninh 2.7 Các tactic giải quyết tính có thể kiểm thử ₫ược 2.8 Kết chương Chương 2 CÁC TACTIC Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 2 2.1 Định nghĩa thuật ngữ Tactic ‰ ta ₫ạt ₫ược các tiêu chí chất lượng thông qua các quyết ₫ịnh thiết kế. ‰ Vậy các quyết ₫ịnh thiết kế nào cần thiết cho việc ₫ạt ₫ược 1 chất lượng cụ thể ? ‰ Tactic là 1 quyết ₫ịnh thiết kế mà ảnh hưởng ₫ến việc kiểm soát sự ₫áp ứng 1 thuộc tính chất lượng. ‰ Chiến lược kiến trúc là tập các tactics ₫ược chọn. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 3 2.1 Định nghĩa thuật ngữ ‰ gói các tactics ƒ các tactic có thể tinh chế các tactic khác ƒ sự dư thừa ₫ược tinh chế từ dư thừa dữ liệu và dư thừa code ‰ thí dụ ƒ 1 tactic giải quyết tính sẳn sàng ₫ể dùng sẽ dẫn ₫ến sự dư thừa. ƒ Ẩn chứa : ta cũng cần sự ₫ồng bộ giữa các nhân bản ₫ể ₫ảm bảo copy dư thừa có thể ₫ược dùng nếu bản gốc bị hỏng. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 4 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng ‰ Độ lệch của lỗi (Failure) ƒ ₫ộ lệch giữa thực tế chạy so với hành vi chức năng kỳ vọng ƒ có thể ₫ược quan sát bởi người dùng hệ thống phần mềm ‰ Độ lệch của lỗi và nguyên nhân gây lỗi (fault) : fault : sự kiện có thể gây ra ₫ộ lệch của lỗi ‰ Các tactics giải quyết tính sẳn sàng ₫ể dùng : ƒ giữ fault ₫ừng ₫ể nó thành ₫ộ lệch của lỗi ƒ thực hiện các sửa chữa có thể. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 5 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng Tính sẵn sàng ₫ể dùng (Availability) Phát hiện Ping/Echo HeartBeat Exception Sửa chữa & chuẩn bị phục hồi Voting Thừa chủ ₫ộng Thừa thụ ₫ộng Dùng secour Recovery- Reintroduction bóng ma ₫ồng bộ hóa trạng thái checkpoint/ Rollback Phòng ngừa Không phục vụ Giao tác Giám sát process Fault Fault bị che Đã sửa chữa Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 6 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng Phát hiện fault : Ping/Echo ‰ thành phần 1 tạo 1 ping cho thành phần 2 ‰ thành phần 1 chờ 1 echo từ thành phần 2 ‰ trả lời trong khoảng thời gian qui ₫ịnh ‰ Có thể dùng cho kiến trúc gồm 1 nhóm các thành phần : chúng có trách nhiệm hỗ tương trên 1 tác vụ ‰ Có thể dùng cho kiến trúc client/server : kiểm thử server và ₫ường liên lạc ‰ sự phân cấp các phần tử phát hiện fault sẽ cải tiến việc dùng băng thông. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 7 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng Phát hiện fault : Heartbeat (nhịp tim) ‰ Theo ₫ịnh kỳ, thành phần 1 phát thông báo heartbeat. ‰ thành phần 2 lắng nghe thông báo ‰ nếu không có heartbeat ƒ thành phần 1 ₫ược giả ₫ịnh là hỏng ƒ cảnh bảo cho thành phần 3 ₫ể sửa fault ‰ thông báo heartbeat cũng có thể chứa dữ liệu. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 8 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng Phát hiện fault : Exceptions ‰ các loại fault : omission, crash, timing, response ‰ khi nhận biết 1 loại fault, 1 exception ₫ược tạo ra : kết quả là fault ₫ược nhận biết ‰ Trình xử lý exception ƒ thi hành trong cùng process mà tạo ra exception ƒ thường thực hiện 1 chuyển dịch ngữ nghĩa của fault ra 1 dạng dễ xử lý. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 9 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng Phục hồi sau fault : Voting ‰ các process chạy trên các processor dư thừa nhận thông tin vào như nhau và tính toán ₫ể tạo kết quả (kỳ vọng như nhau) ‰ kết quả ₫ược gởi tới voter. ‰ Nếu voter phát hiện hành vi lệch lạc của 1 processor nào ₫ó -> voter coi nó bị hỏng. ‰ Phương pháp ₫ược dùng ₫ể sửa chữa ƒ hoạt ₫ộng lỗi của giải thuật ƒ ₫ộ hư hỏng của processor Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 10 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng Phục hồi sau khi hỏng : sự dư thừa chủ ₫ộng (active redundancy) ‰ tất cả các thành phần dư thừa ₫ều ₫áp ứng với sự kiện 1 cách ₫ồng thời -> chúng có cùng trạng thái. ‰ chỉ dùng 1 ₫áp ứng từ 1 thành phần nào ₫ó. ‰ downtime : thời gian chuyển sang thành phần ₫ược cập nhật khác (ms) ‰ ₫ược dùng trong cấu hình client/server (hệ thống database) : ₫áp ứng nhanh là quan trọng ‰ Sự ₫ồng bộ hóa : tất cả thông báo tới 1 thành phần ₫ều phải ₫ược gởi tới tất cả thành phần dư thừa còn lại. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 11 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng Phục hồi sau khi hỏng : sự dư thừa thụ ₫ộng (passive redundancy) ‰ thành phần chính có nhiệm vụ : ‰ ₫áp ứng với sự kiện. ‰ thông tin cho các thành phần còn lại (standby state) các updates mà chúng phải làm. ‰ Khi Fault xảy ra : hệ thống kiểm tra xem backup có ₫ủ mới (fresh) không trước khi phục hồi dịch vụ. ‰ thường ₫ược dùng trong các hệ thống ₫iều khiển ‰ chuyển ₫ổi ₫ịnh kỳ thành phần chính sẽ gia tăng tính sẵn sàng ₫ể dùng. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 12 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng Phục hồi sau khi hỏng : phần tử dự phòng (spare) ‰ Platform tính toán dự phòng ở trạng thái standby ₫ược cấu hình ₫ể thay thế nhiều thành phần hỏng hóc khác nhau : ƒ phải reboot ₫ể dùng lại cấu hình (mới) của phần mềm ƒ khi failure xảy ra, ta khởi tạo lại trạng thái cho nó. ‰ ₫ịnh kỳ ghi checkpoint về trạng thái hệ thống và các tháy ₫ổi trạng thái lên thiết bị vĩnh cửu (disk). ‰ downtime : tính theo phút Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 13 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng Tái tạo fault : hoạt ₫ộng bóng ma ‰ thành phần hỏng hóc trước ₫ây có thể ₫ược chạy trong chế ₫ộ shadow. ƒ trong 1 khỏang thời gian ƒ ₫ể ₫ảm bảo nó tối thiểu hành vi của các thành phần ₫ang vận hành. ƒ trước khi phục hồi nó ₫ể vận hành tiếp. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 14 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng Tái tạo fault : ₫ồng bộ hóa lại trạng thái ‰ dư thừa chủ ₫ộng hay thụ ₫ộng : thành phần ₫ược phục hồi cập nhật trạng thái của mình trước khi trở lại làm việc. ‰ Cập nhật phụ thuộc vào : ƒ downtime ƒ kích thước cập nhật ƒ số thông báo ₫ược ₫òi hỏi ₫ể cập nhật : tốt nhất là 1, nhiều sẽ dẫn tới ₫ộ phực tạp của phần mềm. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 15 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng Tái tạo fault : checkpoint/rollback ‰ checkpoint ‰ ghi trạng thái còn ₫úng (nhất quán). ‰ ₫ược thực hiện ₫ịnh kỳ hay khi ₫áp ứng với sự kiện ₫ặc biệt ‰ hữu dụng khi hệ thống hỏng không thường xuyên với trạng thái không nhất quán có thể phát hiện ₫ược. Hệ thống ₫ược phục hồi bằng : ƒ checkpoint của trạng thái nhất quán ngay trước. ƒ nhật ký các transactions xảy ra từ khi chúng bắt ₫ầu hoạt ₫ộng Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 16 2.2 Các tactics giải quyết tính sẳn sàng ₫ể dùng Phòng ngừa fault ‰ Bỏ không phục vụ ƒ ₫ể cấm các failure tiên ₫oán trước, ta xóa bỏ thành phần liên quan ƒ thí dụ boot lại thành phần ₫ể cấm sự thiếu hụt bộ nhớ ƒ làm tự ₫ộng hay thủ công ‰ Transaction : các bước tuần tự ₫ược bó lại nhau sao cho toàn bộ bó có thể ₫ược undo 1 lần. ‰ giám sát process : nếu process hỏng bị phát hiện thì process giám sát sẽ xóa process không làm việc và tạo mới 1 instance khác thay thế : phải ₫ược khởi tạo với trạng thái phù hợp như trong tactic dùng phần tự dự phòng. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 17 2.3 Các tactics giải quyết tính dễ sử dụng (Usability) ‰ tính có thể dùng liên quan ₫ến : ƒ hệ thống hỗ trợ cho user những thứ gì ƒ người dùng thực hiện tác vụ mong muốn dễ dàng như thế nào. ‰ các tactic ƒ thời gian chạy : hỗ trợ user trong suốt thời gian thi hành của hệ thống ƒ tại thời ₫iểm thiết kế : hỗ trợ nhà phát triển interface + bản chất lặp của việc thiết kế interface + liên quan tới các tactic giải quyết tính có thể hiệu chỉnh Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 18 2.3 Các tactics giải quyết tính dễ sử dụng (Usability) các tactic tại thời ₫iểm chạy ‰ Các phản hồi của user về hệ thống ₫ang làm gì ‰ cung cấp cho user khả năng thực hiện các lệnh liên quan ₫ến tính dễ dùng : ƒ Cancel ƒ Undo ƒ Tích hợp ƒ hiển thị nhiều góc nhìn Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 19 2.3 Các tactics giải quyết tính dễ sử dụng (Usability) tính dễ sử dụng Các tactic tại thời ₫iểm chạy chủ ₫ộng hệ thống Các tactic tại thời ₫iểm thiết kế Tách giao tiếp user yêu cầu của user Cung cấp phản hồi và hỗ trợ phù hợp cho user chủ ₫ộng user Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 20 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) ‰ mục tiêu: kiểm soát thời gian và chi phí của sự thay ₫ổi nào ₫ó trong việc hiện thực, kiểm thử, hiệu chỉnh và phân phối. ‰ tập các tactic ƒ Khoanh vùng các thay ₫ổi : giảm số module bị ảnh hưởng bởi 1 thay ₫ổi ƒ phòng ngừa các hiệu ứng dây chuyền : hạn chế việc thay ₫ổi tới các module bị khoanh vùng. ƒ trì hoản thời ₫iểm kết nối các module lại : kiểm soát thời gian phân phối và chi phí. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 21 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Tính thay ₫ổi ₫ược Khoanh vùng các thay ₫ổi Nhất quán ngữ nghĩa dự ₫oán các thay ₫ổi tổng quát hóa module dịch vu chung trừu tượng Ngừa các hiệu ứng dây chuyền Ẩn thông tin Duy trì giao tiếp tồn tại hạn chế ₫ường liên lạc dùng ptử trung gian Trì hoản thời ₫iểm liên kết ₫ăng ký tại td chạy file cấu hình Đa xạ Thay thế thành phần Đính vào các gt ₫ã có Các thay ₫ổi tới Đã thay ₫ổi, kiểm thử, phân phối trong thời gian và kinh phí xác ₫ịnh Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 22 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Khoanh vùng các thay ₫ổi : duy trì tính nhất quán ngữ nghĩa ‰ Tính nhất quán ngữ nghĩa : mối quan hệ giữa các trách nhiệm trong 1 module. ‰ Mục tiêu : ₫ảm bảo tất cả trách nhiệm này làm việc cùng nhau cho dù có hay không sự dựa dẫm quá nhiều vào những module khác. ‰ Cách ₫ạt mục tiêu : thiết kế các module với các trách nhiệm trong sự nhất quán ngữ nghĩa. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 23 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Khoanh vùng các thay ₫ổi : dịch vụ chung trừu tượng ‰ Tactic con của tính nhất quán ngữ nghĩa ‰ cung cấp các dịch vụ chung thông qua các module ₫ặc biệt ‰ Tính dùng lại và tính thay ₫ổi ₫ược ƒ Sự thay ₫ổi tới các dịch vụ chung ₫ược làm chỉ 1 lần thay vì trong từng module dùng chúng. ƒ Các thay ₫ổi trơng các module dùng dịch vụ chung không ảnh hưởng ₫ến các user khác. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 24 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Khoanh vùng các thay ₫ổi : tiên ₫oán các thay ₫ổi ₫ược chờ ₫ợi ‰ việc chú ý tập các thay ₫ổi mường tượng cung cấp cách thức ₫ánh giá việc gán các trách nhiệm. ‰ Các câu hỏi : ƒ ₫ối với 1 thay ₫ổi : sự phân rã mà ta ₫ề nghị có hạn chế tập các module cần thay ₫ổi ? ƒ Về cơ bản, các thay ₫ổi khác nhau có ảnh hưởng trên cùng các module ? ‰ Mục tiêu : tối thiểu hóa ảnh hưởng của các thay ₫ổi. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 25 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Khoanh vùng các thay ₫ổi : tổng quát hóa module chức năng ‰ tổng quát hóa 1 module bằng cách làm cho nó thực hiện 1 lớp rộng các chức năng dựa vào kiểu thông tin nhập. ‰ Thông tin nhập : ₫ịnh nghĩa ngôn ngữ cho module ƒ làm các thông số nhập là hằng ƒ hiện thực module như 1 trình thông dịch và làm các thông số nhập như là các chương trình trong ngôn ngữ thông dịch ₫ó. ‰ module tổng quát hơn ‰ Thích nhất là làm các thay ₫ổi theo yêu cầu bằng cách hiệu chỉnh ngôn ngữ nhập. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 26 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Phòng ngữa các hiệu ứng lan truyền ‰ Khoanh vùng các thay ₫ổi / hạn chế các thay ₫ổi trên các module bị khoanh vùng. ƒ Có 1 số module bị tác ₫ộng trực tiếp : ₫ó là các module có các trách nhiệm cần ₫ược ₫iều chỉnh ₫ể thực hiện ₫ược sự thay ₫ổi. ƒ Có 1 số module bị tác ₫ộng gián tiếp bởi sự thay ₫ổi : ₫ó là các module có các trách nhiệm vẫn không ₫ổi nhưng sự hiện thực cần ₫ược thay ₫ổi ₫ể phù hợp với các module bị tác ₫ộng trực tiếp. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 27 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Các hiệu ứng lan truyền ‰ Hiệu ứng lan truyền từ 1 thay ₫ổi : ƒ sự cần thiết thay ₫ổi các module không bị tác ₫ộng trực tiếp bởi nó. ƒ ₫iều này xảy ra vì các module ₫ược ₫ề cập phụ thuộc ít nhiều vào các module liên quan trực tiếp ₫ến sự thay ₫ổi. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 28 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Các kiểu phụ thuộc ‰ Ta giả sử : ‰ module A thay ₫ổi ₫ể thực hiện sự thay ₫ổi nào ₫ó. ‰ module B bị thay ₫ổi chỉ vì module A thay ₫ổi. ‰ Có nhiều kiểu phụ thuộc : cú pháp, ngữ nghĩa, tuần tự, identity of interface, location of A, quality of service, existence of A, resource behavior of A. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 29 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Sự phụ thuộc cú pháp ‰ của data : ƒ B dùng dữ liệu ₫ược tạo bởi A ƒ kiểu và ₫ịnh dạng dữ liệu trong cả 2 module A và B cần ₫ược nhất quán nhau. ‰ của dịch vụ : ƒ B cầu cứu dịch vụ của A ƒ chữ ký các dịch vụ ₫ược cung cấp bởi A cần nhất quán với kỳ vọng của B. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 30 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Sự phụ thuộc ngữ nghĩa ‰ của data : ƒ B dùng dữ liệu ₫ược tạo bởi A ƒ ngữ nghĩa dữ liệu ₫ược tạo ra bởi module A và ₫ược dùng bởi B cần ₫ược nhất quán với kỳ vọng của B. ‰ của dịch vụ : ƒ B cầu cứu dịch vụ của A ƒ ngữ nghĩa các dịch vụ ₫ược cung cấp bởi A cần nhất quán với kỳ vọng của B. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 31 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Sự phụ thuộc tuần tự ‰ của data : ƒ B dùng dữ liệu ₫ược tạo bởi A ƒ B phải nhận dữ liệu ₫ược tạo ra bởi A theo trình tự cố ₫ịnh biết trước. ‰ của ₫iều khiển : ƒ A phải ₫ược thi hành trước trong khoảng thời gian ràng buộc xác ₫ịnh. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 32 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Sự ₫ồng nhất về interface của A ‰ A phải có nhiều interface sử dụng ‰ B dùng 1 trong chúng ‰ Để B ₫ược dịch và thi hành ₫úng, sự ₫ồng nhất của interface phải nhất quán với các kỳ vọng của B. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 33 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Các sự phụ thuộc khác ‰ vị trí chạy của A : phải nhất quán với kỳ vọng của B ‰ chất lượng dịch vụ/data ₫ược cung cấp bởi A : các tính chất liên quan ₫ến chất lượng phải nhất quán với kỳ vọng của B. ‰ sự tồn tại của A : Để B thi hành ₫ược, A phải tồn tại ₫ể sẳn sàng phục vụ. ‰ Hành vi tài nguyên của A : phải nhất quán với các kỳ vọng của B. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 34 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Các tactic ₫ể phòng ngừa hiệu ứng lan truyền ‰ Ẩn thông tin ‰ duy trì các interface tồn tại ‰ hạn chế các ₫ường liên lạc ‰ dùng phần tử trung gian Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 35 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Ẩn thông tin ‰ Phân rã các trách nhiệm ra những phần nhỏ hơn và chọn thông tin nào ₫ể ẩn và thông tin nào ₫ể public. ‰ thông tin public có thể dùng ₫ược thông qua interface xác ₫ịnh ‰ Mục tiêu : ngăn các thay ₫ổi trong 1 module và ngừa các thay ₫ổi lan truyền từ module này sang module khác. ƒ kỹ thuật cũ nhất từ việc cấm các thay ₫ổi lan truyền ƒ liên quan mạnh tới tiên ₫oán các thay ₫ổi chờ ₫ợi (ta dùng các thay ₫ổi này làm cơ sở cho việc phân rã). Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 36 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Duy trùy các interface luôn tồn tại ‰ Cú pháp của B phụ thuộc vào interface của A : duy trì interface của A sẽ làm B không thay ₫ổi. ‰ Sự ổn ₫ịnh interface : tách interface với sự hiện thực nó ‰ Cách hiện thực tactic ƒ thêm interface ƒ thêm adapter ƒ cung cấp stub cho A Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 37 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Hạn chế các ₫ường liên lạc ‰ hạn chế số module dùng chung data với A (A cần thay ₫ổi) ƒ hạn chế số module mà dùng dữ liệu do A cung cấp ƒ hạn chế số module mà cung cấp dữ liệu cho A dùng. -> giảm ₫ược hiệu ứng lan truyền ‰ - sản xuất/tiêu dùng dữ liệu sẽ tạo ra sự phụ thuộc. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 38 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Dùng phần tử trung gian ‰ B phụ thuộc A theo các cách khác hơn ngữ nghĩa : ƒ có thể tạo ra phần tử trung gian ₫ể quản lý sự phụ thuộc ƒ data (cú pháp), dịch vụ (cú pháp), vị trí của A, sự tồn tại của A Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 39 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Trì hoản thời gian liên kết ‰ sự quyết ₫ịnh liên kết A vào hệ thống thực thi ở những thời ₫iểm khác nhau. ‰ Liên kết tại thời ₫iểm chạy : ƒ hệ thống ₫ã chuẩn bị ₫ể làm việc liên kết này. ƒ tất cả bước kiểm thử và phân tán ₫ã hoàn thành rồi ƒ hỗ trợ người dùng ₫ầu cuối/admin làm các thiết lập hay cung cấp input mà ảnh hưởng ₫ến hành vi. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 40 2.4 Các tactic về tính thay ₫ổi ₫ược (Modifiability) Các tactic mà ảnh hưởng tại thởi ₫iểm load/chạy ‰ ₫ăng ký tại thời gian chạy : hoạt ₫ộng plug-and-play, nỗ lực hơn ₫ể quản lý việc ₫ăng ký ‰ file cấu hình : thiết lập các thông số tại thời ₫iểm bắt ₫ầu ‰ ₫a xạ : liên kết muộn các lời gởi thông ₫iệp ‰ Thay thế thành phần : liên kết tại thời ₫iểm load ‰ sự ₫ính vào các giao thức ₫ã ₫ịnh nghĩa : liên kết tại thời ₫iểm chạy các process ₫ộc lập. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 41 2.5 Các tactic giải quyết hiệu suất ‰ Mục tiêu : tạo ₫áp ứng với sự kiện tới hệ thống trong khoảng thời gian ràng buộc. ‰ event : ₫ơn hay dòng (stream) : thông báo ₫ến, hết giờ, sự thay ₫ổi trạng thái có ý nghĩa,... ‰ Độ trễ : khoảng thời gian từ lúc sự kiện xảy ra tới lúc có ₫áp ứng với nó. ‰ sự kiện ₫ến : hệ thống xử lý nó hay giam việc xử lý. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 42 2.5 Các tactic giải quyết hiệu suất Hiệu suất Xin tài nguyên Tăng hiệu quả tính Giảm chí phí tính Quản lý tốc ₫ộ event Kiểm soát ần số lấy mẫu Quản lý tài nguyên Tạo sự ₫ồng thời Quản lý các copy Tăng tài nguyên có sẵn Trọng tài tài nguyên Chính sách lập lịch Các sự kiện tới Đã ₫áp ứng trong thời gian xác ₫ịnh Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 43 2.5 Các tactic giải quyết hiệu suất Tactic xin tài nguyên ‰ Nguồn gốc của việc xin gài nguyên : dòng sự kiện tới ‰ Các tính chất xin : ƒ thời gian giữa các sự kiện trong dòng tài nguyên (request vào dòng thường xuyên ra sao) ƒ mỗi request dùng ₫ược bao nhiêu % của từng tài nguyên ‰ Tactic giảm ₫ộ trễ ƒ giảm tài nguyên cần dùng ƒ giảm số sự kiện ₫ược xử lý Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 44 2.5 Các tactic giải quyết hiệu suất Giảm số tài nguyên cần dùng ‰ gia tăng sự kiệu quả tính toán ƒ việc xử lý liên quan ₫ến giải thuật -> cải tiến giải thuật ƒ có thể trao ₫ổi tài nguyên với process khác ‰ giảm chi phí tính toán ƒ nếu không có request nào cần tài nguyên -> cần giảm thiểu nhu cầu tính toán của nó. ƒ loại bỏ các phần tử trung gian Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 45 2.5 Các tactic giải quyết hiệu suất Giảm số sự kiện ₫ược xử lý ‰ quản lý tốc ₫ộ xảy ra sự kiện : giảm tần số lấy mẫu cho việc giám sát các biến môi trường ‰ kiểm soát tần số lấy mẫu : nếu không cần kiểm soát sự xuất hiện của các sự kiện ₫ược tạo ra từ ngoài thì các request ₫ợi có thể ₫ược lấy mẫu ở tần số thấp hơn (có thể mất request) ‰ hạn chế thời gian thi hành : giới hạn cận trên thời gian thi hành ₫ược dùng cho mỗi sự kiện ‰ hạn chế kích thước hàng ₫ợi : kiểm soát số max các sự kiện ₫ến hàng ₫ợi. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 46 2.5 Các tactic giải quyết hiệu suất Quản lý tài nguyên ‰ tạo ra sự ₫ồng thời : xử lý các request ₫ồng thời ƒ các dòng sự kiện khác nhau ₫ược xử lý trên các thread khác nhau (tạo thêm thread khi cần) ƒ cân bằng tải ‰ duy trì nhiều copy của 1 dữ liệu và sự tính toán : cache và ₫ồng bộ hóa ‰ gia tăng tài nguyên sẳn sàng dùng : nếu các processor và mạng nhanh hơn, thì sẽ có thêm processor và bộ nhớ Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 47 2.5 Các tactic giải quyết hiệu suất Trọng tài phân xử tài nguyên ‰ Tranh chấp tài nguyên -> cần lập lịch dùng tài nguyên ‰ mục tiêu kiến trúc : ƒ hiểu các tính chất của mỗi việc dùng tài nguyên và chọn lựa lịch thích hợp ƒ hiểu tiêu chí có thể mâu thuẩn trong việc lập lịch và hiệu ứng của tactic ₫ược chọn ‰ chính sách lập lịch ƒ gán quyền ưu tiên ƒ dispatching Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 48 2.5 Các tactic giải quyết hiệu suất Lập lịch ‰ cho cái gì ? mạng, buffer, processor ‰ tiêu chí cạnh tranh nhau trong lập lịch ƒ dùng tài nguyên tối ưu ƒ ₫ộ quan trọng của request ƒ tối thiểu số tài nguyên ₫ược dùng ƒ tối thiểu ₫ộ trễ ƒ tối ₫a hiệu năng ƒ phòng ngừa tình trạng bảo hòa ₫ể ₫ảm bảo sự công bằng ‰ dispatching có thể xảy ra chỉ khi tài nguyên ₫ược gán ₫ang sẵn sàng ƒ pre-empty có thể xảy ra Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 49 2.5 Các tactic giải quyết hiệu suất Các chính sách lập lịch ‰ FIFO : Ok nếu tất cả request có cùng ₫ộ quan trọng và dùng cùng 1 khoảng thời gian thi hành. ‰ dựa vào quyền ưu tiên cố ₫ịnh. Quyền ưu tiên dựa vào : ƒ ₫ộ quan trọng ngữ nghĩa (₫ặc thù của lĩnh vực) ƒ ₫ều ₫ều tốc ₫ộ (stream tuần hòan, period 1 ngắn hơn) ƒ ₫ều ₫ều deadline (deadline thời gian thực, deadline 1 ngắn nhất ‰ dựa vào quyền ưu tiên ₫ộng ƒ round dobin ƒ deadline ngắn nhất ₫ược chọn ₫ầu tiên. ‰ lập lịch tĩnh Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 50 2.6 Các tactic giải quyết an ninh ‰ Mục tiêu : ngăn chặn tấn công, phát hiện tấn công, phục hồi sau tấn công ‰ Mổ xẻ sự phòng chống cho nhà cửa ƒ khóa cửa ƒ cảm biến ₫ối tượng di ₫ộng ƒ bảo hiểm Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 51 2.6 Các tactic giải quyết an ninh An ninh Ngăn chặn tấn công Xác nhận user Cho phép user Duy trì data mật Duy trì tính toàn vẹn Hạn chế bùng nỗ Hạn chế truy xuất Phát hiện tấn công Phát hiện sự xâm nhập Phục hồi sau tấn công Nhận dạng Tấn công Hệ thống phát hiện, ngăn chặn hay phục hồi sau tấn công Phục hồi xem Availability Audit trail Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 52 2.6 Các tactic giải quyết an ninh Ngăn chặn tấn công ‰ Xác nhận người dùng : dùng account, password, password chỉ dùng 1 lần, xác nhận số, id sinh trắc học. ‰ cho phép ngời dùng : dùng các mẫu kiểm soát việc truy xuất (ACL) ‰ duy trì ₫ộ mật dữ liệu : mã hóa dữ liệu và ₫ường liên lạc ‰ duy trì tính toàn vẹn : checksum, hash ₫ưa ₫ến help ‰ hạn chế sự bùng nổ : số dịch vụ hạn chế trên mỗi host ‰ hạn chế việc truy xuất : bức tường lửa, DMZ Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 53 2.6 Các tactic giải quyết an ninh Phát hiện tấn công ‰ hệ thống phát hiện sự xâm phạm ƒ so sánh mẫu lưu lượng trên mạng với database ƒ misuse -> mẫu ₫ược so sánh với các mẫu tấn công ₫ã biết trong quá khứ. ƒ bất thường -> mẫu ₫ược so với chính baseline quá khứ của nó ƒ thanh lọc : protocol, cờ TCP, kích thước payload, ₫ịa chỉ, chỉ số port. ƒ phải có : cảm biến ₫ể phát hiện tấn công, người quản lý việc liên hợp các cảm biến, database chứa sự kiện ₫ể phân tích, tool ₫ể phân tích và lập báo cáo offline, console kiểm soát ₫ể hiệu chỉnh các hoạt ₫ộng phát hiện xâm phạm Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 54 2.6 Các tactic giải quyết an ninh Các phần tử phát hiện sự xâm phạm ƒ cảm biến ₫ể phát hiện xâm phạm ƒ người quản lý việc liên hợp các cảm biến ƒ database chứa sự kiện ₫ể phân tích sau ƒ tool ₫ể phân tích và lập báo cáo offline ƒ console kiểm soát ₫ể hiệu chỉnh các hoạt ₫ộng phát hiện xâm phạm. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 55 2.6 Các tactic giải quyết an ninh Phục hồi sau khi bị tấn công ‰ các tactic ₫ể phục hồi trạng thái ƒ phục hồi về trạng thái nhất quán từ trạng thái không nhất quán : tactic giải quyết tính sẵn sàng ₫ể dùng ƒ copy dư thừa dữ liệu quản trị hệ thống : password, ACL, dịch vụ "domain name", dữ liệu cá nhân người dùng ‰ các tacitc ₫ể nhận dạng kẻ tấn công ƒ cho các mục ₫ích ngăn chặn và trừng phạt ƒ duy trì "audit trail" Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 56 2.6 Các tactic giải quyết an ninh Audi trail ‰ bản copy mỗi giao tác tác ₫ộng tới dữ liệu trong hệ thống + thông tin nhận dạng ‰ có thể dùng ₫ể ƒ theo dõi các hoạt ₫ộng của 1 kẻ tấn công ƒ hỗ trợ sự không thể từ chối : cung cấp sự hiển nhiên về 1 request cụ thể ₫ã ₫ược thực hiện. ƒ hỗ trợ việc phục hồi hệ thống ‰ các mục tiêu tấn công thông thường : nên ₫ược duy trì trong thứ tự tin cậy Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 57 2.7 Các tactic giải quyết tính có thể kiểm thử ₫ược ‰ mục tiêu : cho phép kiểm thử dễ dàng hơn khi 1 vài tăng cường về phần mềm ₫ã hoàn thành. ‰ việc tăng cường tính có thể kiểm thử ₫ược không phải quá lớn lao nhưng rất có giá trị : 40% chi phí phát triển phần mềm ‰ kiểm thử hệ thống ₫ang chạy (không phải ₫ang thiết kế) ‰ công cụ kiểm thử : ƒ SW mà cung cấp input cho SW cần kiểm thử và thu bắt kết quả ƒ mục tiêu là tìm fault. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 58 2.7 Các tactic giải quyết tính có thể kiểm thử ₫ược tính có thể kiểm thử ₫ược Quản lý I/O Record/Playback Tách interface/hiện thực Các thủ tục/interface truy xuất ₫ặc biệt Giám sát bên trong Các phần tử monitor ₫ược xây dựng sẵn Hoàn thành sự tăng cường nào ₫ó Phát hiện các fault Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 59 2.7 Các tactic giải quyết tính có thể kiểm thử ₫ược Các tactic I/O : record/playback ‰ liên quan ₫ến ƒ việc thu bắt thông tin ₫i ngang qua interface ƒ dùng nó như input cho tool kiểm thử ‰ thông tin ngang qua interface ở hoạt ₫ộng bình thường ƒ xuất từ 1 thành phần, input tới thành phần khác ƒ ₫ược lưu trong kho + cho phép ₫ầu vào kiểm thử cho 1 thành phần + cho kết quả xuất kiểm thử ₫ể so sánh sau ₫ó. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 60 2.7 Các tactic giải quyết tính có thể kiểm thử ₫ược Các tactic I/O : tách interface với hiện thực ‰ cho phép việc thay thế hiện thực cho nhiều mục ₫ích kiểm thử khác nhau ‰ làm stub của hiện thực ₫ể hệ thống ₫ược kiểm thử mà không cần có thành phần thật. ‰ thay thế 1 thành phần ₫ặc biệt ₫ể thành phần ₫ược thay thế hoạt ₫ộng như tool kiểm thử cho phần còn lại của hệ thống. ‰ tactic cũng ₫ưa ₫ến tính có thể hiệu chỉnh ₫ược Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 61 2.7 Các tactic giải quyết tính có thể kiểm thử ₫ược Các tactic I/O : ₫ặc biệt hóa ₫ường truy xuất/interfcae ‰ có các interface kiểm thử ₫ặc biệt : thu bắt/₫ặc tả các giá trị khác nhau cho các thành phần ƒ thông qua tool kiểm thử ƒ 1 cách ₫ộc lập từ việc thi hành bình thường ‰ các ₫ường truy xuất ₫ặc biệt/interface : nên ₫ược giữa tách biệt từ chức năng ₫òi hỏi ‰ phân cấp các interface kiểm thử ƒ các testcase có thể ₫ược áp dụng vào bất kỳ mức kiến trúc nào ƒ chức năng kiểm thử phải "in place" ₫ể quan sát các ₫áp ứng Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 62 2.7 Các tactic giải quyết tính có thể kiểm thử ₫ược Tactic giám sát bên trong ‰ các phần tử giám sát xây dựng sẵn ƒ thành phần có thể duy trì trạng thái, tải hiệu suất, khả năng, an ninh,... có thể ₫ược truy xuất thông qua interface (interface vĩnh cữu hay tạm ₫ược tạo ra cho kiểm thử). ƒ ghi sự kiện khi trạng thái cần giám sát ₫ược kích hoạt + chí phí/nổ lực kiểm thử thêm nữa + ₫ộ có thể thấy ₫ược gia tăng. Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2015 Môn : Kiến trúc phần mềm Chương 2 : Các tactic Slide 63 2.8 Kết chương ‰ Chương này ₫ã giới thiệu các tactics ₫ể giải quyết các yêu cầu phi chức năng chính yếu của phần mềm như tính sẵn sàng ₫ể sử dụng, tính dễ sử dụng, tính thay ₫ổi ₫ược, tính hiệu quả, tính có thể kiểm thử, an ninh.

Các file đính kèm theo tài liệu này:

  • pdfkientrucphanmem_chuong2_0998.pdf