24/05/2018, 22:38

Kiến trúc của hệ thống

Mục đích của thiết kế là đưa ra cách giải logic bài toán ứng dụng và mô tả cáchhệ thống thực thi những nhiệm vụ đã được phân tích. Nghĩa là: Xây dựng các thiết kế chi tiết mô tả các thành phần của hệ thống ở mức cao hơn, phục vụ cho việc cài đặt ở ...

Mục đích của thiết kế là đưa ra cách giải logic bài toán ứng dụng và mô tả cáchhệ thống thực thi những nhiệm vụ đã được phân tích. Nghĩa là:

  • Xây dựng các thiết kế chi tiết mô tả các thành phần của hệ thống ở mức cao hơn, phục vụ cho việc cài đặt ở pha sau.
  • Đồng thời đưa ra được kiến trúc (là trọng tâm) của hệ thống để đảm bảo có thể thay đổi được, có tính mở, dễ bảo trì, thân thiện với NSD, v.v.

Kiến trúc phần mềm là một mô tả về các hệ thống con, các thành phần và mối quan hệ giữa chúng. Các hệ thống con và các thành phần được xác định theo nhiều góc nhìn khác nhau để chỉ ra các thuộc tính chức năng và phi chức năng của hệ thống phần mềm.

Kiến trúc hệ thống được chia thành hai loại: logic và vật lý.

  • Kiến trúc logic chỉ ra các lớp và đối tượng, các quan hệ và sự cộng tác để hình thành chức năng của hệ thống. Kiến trúc logic được mô tả bởi các biểu đồ ca sử dụng, biểu đồ lớp và các biểu đồ tương tác. Kiến trúc phổ biến chung hiện nay là kiến trúc ba tầng: tầng giao diện, tầng tác nghiệp và tầng lưu trữ.
  • Kiến trúc vật lý đề cập đến việc mô tả chi tiết hệ thống về phương diện phần cứng và phần mềm của hệ thống. Đồng thời nó cũng mô tả cấu trúc vật lý và sự phụ thuộc của các mô đun cộng tác trong cài đặt những khái niệm đã được định nghĩa trong kiến trúc logic. Kiến trúc vật lý của hệ thống liên quan nhiều đến cài đặt, do vậy, nó được mô hình hoá trong các biểu đồ thành phần (Component Diagram) và biểu đồ triển khai (Deployment Diagram). Biểu đồ thành phần chứa các thành phần bao gồm các đơn vị mã chương trình và cấu trúc các tệp (mã nguồn và nhị phan). Biểu đồ triển khai chỉ ra kiến trúc hệ thống khi thực thi, bao gồm các thiết bị vật lý và những phần mềm đặt trên đó.

Kiến trúc ba tầng

Như ở phần phân tích đã nêu: Kiến trúc phổ biến cho các hệ thống phần mềm hiện nay là kiến trúc ba tầng.

1. Tầng trình diễn: biểu diễn và giới thiệu các thành phần của hệ thống thông qua các giao diện đồ hoạ, các Window, các hộp thoại, v.v. Các thực thể trong hệ thống được thể hiện sao cho vừa thân thiện với người sử dụng, vừa phù hợp với bài toán ứng dụng. Ví dụ, cửa sổ “Bán hàng” của hệ thống bán hàng được thiết kế ở tầng trình diễn như ở hình 6-9 thể hiện giao diện giữa người bán và hệ thống.

2. Tầng logic ứng dụng: mô tả các đối tượng thực thi các nhiệm vụ và các qui luật điều hành các tiến trình của hệ thống. Hệ thống phần mềm có hai loại đối tượng cơ bản:

2.1 Những đối tượng nghiệp vụ: là những đối tượng đại biểu cho các khái niệm của miền ứng dụng. Ví dụ, trong hệ thống bán hàng, các đối tượng :PhienBanHang, :ThanhToan, v.v. là những đối tượng thực hiện các nhiệm vụ của bài toán ứng dụng.

2.2 Những đối tượng dịch vụ (Service Object): những đối tượng không nằm trong phạm vi bài toán nhưng cung cấp các dịch vụ cho hệ thống như: làm môi giới, tương tác với CSDL, trao đổi thông tin, lập báo cáo, đảm bảo án toán, an ninh dữ liệu, v.v.Tầng hai được thể hiện ở các biểu đồ: lớp, trạng thái, cộng tác, hành động và biểu đồ triển khai.

3. Tầng lưu trữ (Storage): thể hiện cơ chế lưu trữ đảm bảo nhất quán và bền vững dữ liệu. Hiện nay có hai mô hình CSDL chính đang được sử dụng phổ biến là: mô hình dữ liệu quan hệ và mô hình dữ liệu hướng đối tượng. Để lưu trữ dữ liệu cho hệ thống, ta phải lựa chọn hệ quản trị CSDL và những phương pháp biến đổi dữ liệu, biến đổi các câu truy vấn cho phù hợp với công nghệ hiện đại và với phạm vi ứng dụng. Kiến trúc sư đối tượng phải lựa chọn công nghệ CSDL thích hợp để phát triển hệ thống. Khi phân tích, thiết kế hướng đối tượng và nếu lựa chọn mô hình dữ liệu quan hệ thì người phát triển hệ thống phải quan tâm đến những vấn đề về tích hợp dữ liệu để đảm cho phép người sử dụng truy cập được tới tất cả các dữ liệu từ nhiều mô hình khác nhau một cách trong suốt. Quá trình phát triển phần mềm cũng giống như quá trình học và nhận thức của con người, đó là quá trình lặp, tích luỹ để phát triển, hoàn thiện liên tục. Vì vậy, kiến trúc của hệ thống cũng phải được xây dựng sao cho phù hợp với sự phát triển và khả năng mở rộng của hệ thống.

Trong triển khai cài đặt, kiến trúc ba tầng thường được tổ chức theo nhiều phương án khác nhau. Có thể thực hiện:

1. Cả 3 tầng trên cùng máy (hệ thống nhỏ).

2. Tầng trình diễn và tầng logic ứng dụng trên máy khách (Client Computer), tầng lưu trữ trên Sever (hệ thống loại vừa).

3. Tầng trình diễn trên máy người sử dụng, tầng logic ứng dụng trên máy trạm phục vụ ứng dụng (Application Server), còn tầng lưu trữ tổ chức ở trạm phục vụ dữ liệu (Data Server) (những hệ thống lớn).

Hiện nay có những ngôn ngữ lập trình hướng đối tượng như Java và các công nghệ CSDL hướng đối tượng đã sẵn sàng hỗ trợ cài đặt phân tán theo các phương án 2. và 3.

Để thiết kế được hệ thống thì ta phải chia nó thành các hệ thống con gọi là các gói (packages). Các package trong hệ thống có mức độ phụ thuộc vào nhau. Do vậy, một kiến trúc chi tiết chung cho hệ thống trong đó biểu diễn được cả quan hệ phụ thuộc sẽ được xây dựng tổng quát như sau:

Kiến trúc chung của hệ thống

Một số điểm cần lưu ý trong kiến trúc nêu trên

1. Các gói giao diện CSDL quan hệ và CSDL đối tượng cung cấp các cơ chế nhất quán để trao đổi với các CSDL khác.

2. Các gói dịch vụ hướng đối tượng ở mức cao như: lập báo cáo, giao diện với CSDL, đảm bảo an ninh, trao đổi (truyền thông), v.v. được phát triển theo kỹ nghệ hướng đối tượng và thường được các nhà phát triển phần mềm hệ thống cung cấp.

Ngược lại, ở dịch vụ mức thấp như các chức năng xử lý tệp, Windows, hội thoại, v.v. thường được cung cấp bởi thư viện chuẩn của ngôn ngữ lập trình hoặc được mua trực tiếp của các hãng sản xuất phần mềm.

3. Các khung ứng dụng (Application Frameworks and Support Libraries) hỗ trợ để tạo ra Windows, định nghĩa các phần tử hợp tác ứng dụng, truy cập tới tệp và CSDL, trao đổi giữa các tiến trình, v.v.

4. Quan hệ phụ thuộc của các gói A và gói B chỉ ra rằng gói A biết rõ về gói B, do vậy A sử dụng được các thành phần của B. Khi A không có quan hệ phụ thuộc vào B thì từ A không thể quy chiếu (tham khảo) đến các lớp, thành phần, giao diện, hàm, hoặc các dịch vụ của B được.

Tổ chức các gói và mối quan hệ giữa chúng

1. Hướng dẫn để nhóm các phần tử thành một gói

  • Nhóm những phần tử có các dịch vụ chung, có quan hệ hợp tác, cố kết tương hỗ cao thành một gói.
  • Ở cùng mức trừu tượng thì mỗi gói được xem như một bộ phận, gồm một số phần tử có cấu kết và liên hệ chặt chẽ với nhau, hay còn được gọi là hệ thống con.
  • Ngược lại, các phần tử ở hai gói khác nhau sẽ liên kết với nhau ở mức thấp.

2. Khả năng quan sát giữa các lớp của các gói

  • Gói trình diễn (Presentation Package) có thể nhìn thấy được nhiều lớp trong miền ứng dụng.
  • Gói miền ứng dụng (Domain Package) có thể nhìn được một số lớp đối tượng trong mỗi gói dịch vụ cụ thể.
0