Chương 1 Khái niệm chung _________________________________________ chế phát sinh / lưu trữ dữ liệu (thuộc về người quản trị hệ thống) và khai thác dữ liệu (dành cho người sử dụng hệ thống). Online: hoạt động trực tuyến. Khách và chủ giao lưu trực tiếp theo thời gian thực. Thí dụ, từ máy tính của mình bạn đang nhập vào một hệ thống dịch vụ nào đó, bán hàng trên mạng chẳng hạn, và làm việc, trao đổi với hệ thống đó.
Off-line: hoạt động gián tuyến. Khách làm việc trong chế độ không kết nối với chủ.Thí dụ, sau khi lấy được thông tin về một số mặt hàng cần mua, bạn tạm ngắt kết nối với hệ thống bán hàng trên mạng để suy nghĩ, trao đổi với mọi người và điền các thông tin vào các file mẫu. Hệ thống có khả năng duy tu là hệ thống được thiết kế để khi cần thiết có thể nâng cấp hoặc có đủ cơ chế linh hoạt để đáp ứng được các yêu cầu mới, khó dự đoán trước. Thí dụ, khi xây dựng hệ thống làm việc trên mạng thế hệ 2 ta nên nghĩ ngay đến khả năng sau này hệ thống sẽ được nâng cấp để có thể làm việc trên mạng thế hệ 3.
Thành phần hạt nhân: thành phần cơ sở của hệ thống, làm nền, làm hạ tầng để từ đó xây dựng toàn bộ hệ thống. Thí dụ, hạt nhân của hệ điều hành thực thi các chức năng cơ bản của hệ điều hành ở mức thấp, giao diện đơn giản. Dĩ nhiên là có một số tiêu chí có thể đối kháng nhau trong các kiến trúc trên. Thí dụ, các cấu phần lớn được trang bị cơ chế tối ưu hoá thường trợ giúp 23 Chương 1 Khái niệm chung _________________________________________ tính hiệu quả, ngược lại, các cấu phần cơ sở và nhỏ thường dễ duy tu.
Nếu hai yêu cầu về tính hiệu quả và tính duy tu đều phải được coi trọng thì kiến trúc sư hệ thống cần phải theo đuổi một chính sách dung hoà. Điều này cắt nghĩa lí do vì sao kiến trúc sư hệ thống thường sử dụng vài loại hình mẫu khác nhau cho các hệ thống khác nhau. Thành phần độc lập (thành phần dễ chuyển mang): một module (đơn thể) chương trình có thể chuyển từ hệ thống này sang hệ thống khác. Module đó có thể hoạt động trong nhiều chủng loại máy tính và môi trường khác nhau.
Thí dụ, lớp các thủ tục vào/ra, lớp các hàm toán học, lớp đồ hoạ được thiết kế để dùng chung cho nhiều ngôn ngữ và môi trường lập trình. Hình mẫu: Một kiến trúc có thể dùng chung cho một lớp các hệ thống. Thí dụ: Kiến trúc hệ điều hành, kiến trúc giao diện đồ hoạ, kiến trúc xử lí giao dịch. Để kết luận cho mục này chúng ta trao đổi thêm ba kinh nghiệm quan trọng sau đây: 1.
Có thể thực hiện kiểm định logic cho phác thảo kiến trúc ban đầu. 24 Chương 1 Khái niệm chung _________________________________________ Kiểm định hệ thống là hoạt động xác định: hệ thống có đáp ứng đầy đủ và chính xác các yêu cầu đã đề ra? hệ thống có hoạt động đúng như ta mong muốn không? Kiểm định logic quan tâm chủ yếu đến tính hợp lí, phi mâu thuẫn trong cấu trúc và hoạt động của hệ thống. Kiến trúc ban đầu thường rất đơn giản, nhưng không vì thế mà bạn có thể bỏ qua việc kiểm tra. Lý do là như sau: NGUYÊN LÍ LỖI NẶNG Lỗi nặng nhất thường sinh ra tại các pha ban đầu.
Thí dụ Ta phân tích một thí dụ đơn giản. Giả sử ta cần xây dựng một hệ thống dịch vụ đa năng trên mạng. Thiết kế ban đầu của ta được biểu diễn dưới dạng một sơ đồ khối đơn giản gồm có bốn khối thể hiện trình tự đón khách và phục vụ theo 4 bước như sau: Đăng nhập Điền Thu Giới thiệu Lựa chọn Phục thông phí chung dịch vụ vụ tin Hình 1.4 Một kiến trúc hệ thống yếu kém 25 Chương 1 Khái niệm chung _________________________________________ Bước 1. Khách đăng nhập hệ thống: Điền trực tuyến (online) theo mẫu sau đó trả phí dịch vụ.
Hệ thống tự trình diễn: giới thiệu về công ti và các dịch vụ hệ thống đảm nhiệm. Hướng dẫn khách lựa chọn dịch vụ cần thiết. Phục vụ khách theo dịch vụ đã chọn. Điều bất tiện ở kiến trúc này là gì? Hãy tưởng tượng, một vị khách mới, chưa hề biết gì về công ti dịch vụ này.
Vị khách muốn xem thông tin giới thiệu công ti. Nhu cầu này chỉ được đáp ứng sau khi khách đã đăng nhập vào hệ thống. Mà việc đang nhập này đòi hỏi phải trả phí. Dĩ nhiên, khi trao đổi với những người có thẩm quyền ta có thể phát hiện ra một số điểm bất hợp lí dựa trên các gợi ý về mặt nguyên tắc như sau: Danh có chính, ngôn mới thuận: Việc tiên quyết là giới thiệu về công ti.
Sử dụng dịch vụ nào thì trả phí riêng cho dịch vụ đó. Như vậy là phải tách cấu phần đầu tiên thành hai cấu phần riêng biệt, độc lập nhau là đăng nhập và thu phí. Cấu phần thu phí sẽ được đặt sau cấu phần phục vụ. Nếu kiến trúc sư hệ thống chịu khó khảo sát các mẫu thông dụng trên thị trường thì có thể đề xuất được ngay một kiến trúc khá hợp lệ như sau: Kiến trúc này có thêm pha dùng thử.
Tuỳ theo mục đích cung ứng, nhà cung ứng có thể giới hạn thời gian hoặc / và chức năng được dùng thử. 26 Chương 1 Khái niệm chung _________________________________________ Dùng thử Đăng kí Giới thiệu Lựa chọn Phục Điền thông chung dịch vụ vụ tin Thu Phục Lựa chọn phí vụ dịch vụ Hình 1.5 Một phương án cải tiến 2. Sau mỗi bước phân rã, làm mịn kiến trúc hệ thống rất nên thực hiện kiểm định. Nhận định này được trình bày chi tiết trong giáo trình "Kiểm định phần mềm".
Đánh giá kiến trúc là việc khó, đặc biệt là đối với các yêu cầu phi chức năng vì hệ thống chưa thực thi, mới nằm trên giấy. Thí dụ minh hoạ nói trên chỉ liên quan đến các yêu cầu về chức năng. Từ nhận định này ta thấy việc trao đổi thường xuyên các phương án kiến trúc với những người có thẩm quyền là rất quan trọng. Ngoài ra, để giảm nhẹ gánh nặng và áp lực, kiến trúc sư hệ thống nên khảo sát và đánh giá các hệ thống và các mẫu hiện hành.
27 Chương 1 Khái niệm chung _________________________________________ N G U Y Ê N L Í ẢN H H Ư Ở N G Nhiều kiến trúc sư hệ thống mới vào nghề thường quan niệm rằng tham khảo nhiều mẫu và nhiều hệ thống dễ bị ảnh hưởng, dễ gây thói quen bắt chước, làm nhái. Muốn sáng tạo thì phải có vốn, phải học. Xem nhiều, đọc nhiều với một đầu óc biết phân tích và phê phán sẽ giúp ta sáng tạo ra những sản phẩm độc đáo.4 Các quan điểm trong kiển trúc phần mềm Nhắc lại rằng các mô hình kiến trúc của một hệ thống phần mềm rất cần và có thể được sử dụng để thảo luận về các yêu cầu giữa nhóm thiết kế, phát triển phần mềm và những người có thẩm quyền. Hơn nữa, các mô hình này còn có thể được sử dụng để lập hồ sơ kiến trúc trong các bước làm mịn sau này.
Trong mục này chúng ta sẽ thảo luận hai vấn đề quan trọng sau đây: 1. Khi thiết kế và lập hồ sơ cho kiến trúc hệ thống ta vận dụng các quan điểm nào và dự đoán viễn cảnh của hệ thống ra sao? 2. Khái niệm nào cần thiết cho mô tả kiến trúc hệ thống? Không thể biểu diễn mọi thông tin về kiến trúc hệ thống với một tập các mô hình đơn giản và tổng qúat lúc đầu, vì mỗi mô hình chỉ phản ánh một quan điểm và một viễn cảnh của hệ thống. Chẳng hạn, nó chỉ có thể cho biết rằng hệ thống sẽ được làm mịn, phân rã thành các đơn thể nào, cũng như các tiến trình thời gian thực sẽ tương tác với nhau ra sao hoặc vận dụng các phương thức nào để phân bố các cấu phần của hệ thống đối với mô hình phân tán.
Chúng ta luôn luôn cần cả một lớp các quan điểm cho các bước tiếp theo. Krutchen (1995), đề xuất mô hình (4+1) quan điểm cho kiến trúc phần mềm. Đó là: 28 Chương 1 Khái niệm chung _________________________________________ Q U AN Đ I Ể M Trong tài liệu này các thuật ngữ sau đây được xem là tương đương: - Quan điểm; - Quan niệm; - Khung nhìn. Quan điểm thể hiện cách nhìn sự vật và hiện tượng.
NGUYÊN LÍ KHUNG NHÌN Có thể và nên quan sát, xem xét, phân tích và xử lí sự vật và hiện tượng theo các góc nhìn và khung nhìn khác nhau. Xét theo quan điểm nào thì phải xử lí theo phương thức tương ứng. Quan điểm logic. Quan điểm này giúp chúng ta thể hiện các đối tượng và lớp trừu tượng cơ bản trong hệ thống, thể hiện các yêu cầu về thực thể dưới dạng các quan niệm logic.
Quan điểm tiến trình. Vào thời điểm hệ thống hoạt động ta phải hình dung rõ các qui trình tương tác của hệ thống. Khi tuân thủ quan điểm tiến trình, điều quan trọng là phải hiểu được các yêu cầu phi chức năng như tính hiệu năng hoặc tính hữu dụng. Quan điểm phát triển.
Theo quan điểm phát triển, ta giải thích được hệ thống sẽ được phân rã ra sao trong quá trình phát triển. Quan điểm phát triển là hữu ích đối với các nhân viên quản trị và lập trình viên. 29 Chương 1 Khái niệm chung _________________________________________ 4. Quan điểm vật lí.
Quan điểm vật lí giúp ta xác định được phần cứng và phần mềm tương ứng trong hệ thống. Quan điểm này rất quen thuộc đối với các kĩ sư hệ thống. Hofmeister và các cộng sự [6] bổ sung thêm Khung quan điểm hay khung nhìn chính là khung trừu tượng làm cơ sở cho quá trình phân rã các yêu cầu mức cao thành các đặc tả chi tiết giúp cho các nhân viên quyết định chọn các cấu phần dùng lại và thể hiện các dòng sản phẩm. Trong thực tiễn, khung nhìn được sử dụng với tần suất cao.
Nó cũng là cơ sở để trao đổi giữa nhóm phát triển phần mềm và những người có thẩm quyền. Thí dụ, Có nhiều quan điểm khác nhau về khả năng sử dụng UML và các môi trường đặc tả khác nhau trong thiết kế kiến trúc [9]. Nếu ta tiếp cận theo hướng đối tượng thì nên sử dụng UML. Ngoài ra ta có thể sử dụng các công cụ khác như các ngôn ngữ mô tả chuyên dụng (Specialized Architectural Description Languages, ADLs, [8]) với các phần tử cơ sở là các thành phần và các đường nối.