Xử lý của hệ thống được thực hiện bởi nhiều thành phần trong hệ thống, mỗi thành phần xử lý được gọi là một mô-đun (thường tương ứng với một process trong lược đồ DFD, tuy nhiên số môđun bao giờ cũng nhiều hơn số process trên DFD vì một số môđun phải xử lý các vấn đề không thuộc chức năng – Non Functional – như sửa lỗi, tối ưu hóa hệ thống hay phân quyền,…). Vì các mô đun không thể hoạt động riêng lẽ, nên chúng thường phải liên kết với nhau theo cách nào đó (như xuất và nhập dữ liệu) để thực hiện chức năng chung của hệ thống. Dưới góc độ thiết kế, các liên kết này được phân lập thành 2 loại: phụ thuộc (Coupling) và cấu kết (Cohesion).
Coupling. Coupling là một độ đo về sự phụ thuộc nội tại (interdependence) giữa các mô-đun. Ví dụ: nếu một mô-đun A chờ nhận dữ liệu từ một mô-đun B để thực hiện được chức năng của nó, ta nói mô-đun A phụ thuộc vào mô-đun B (trên dữ liệu cần nhận). Nếu các mô-đun ít phụ thuộc vào nhau, thì sự cố xuất hiện tại một mô-đun sẽ ít ảnh hưởng đến các mô-đun phụ thuộc vào nó, và do đó khả năng chịu đựng lỗi của hệ thống sẽ tốt hơn. Ngược lại, các mô-đun phụ thuộc vào nhau càng nhiều thì rủi ro ở một mô-đun sẽ gây ảnh hưởng lớn đến cả hệ thống. Do đó trong việc thiết kế các xử lý, chúng ta cố gắng làm sao để tính phụ thuộc giữa các mô-đun càng thấp càng tốt. Trong hệ thống thông tin, các mô-đun phụ thuộc vào nhau theo 5 mức độ từ thấp đến cao:
1) Data coupling (phụ thuộc trên dữ liệu). Data coupling xuất hiện khi có sự chuyển giao dữ liệu giữa các môđun. Data coupling là bình thường, bởi vì nếu không có chuyển giao dữ liệu giữa các môđun thì sẽ không có hệ thống. Trong một mô-đun, dữ liệu nhận vào sẽ được biến đổi và chuyển cho mô-đun khác để hoàn tất chức năng xử lý của nó. Trong hệ thống đôi khi cũng xuất hiện dữ liệu được chuyển giao nhưng không cần thiết cho xử lý nhận (được gọi là “tramp data”) cần phải loại bỏ.
2) Stamp coupling (phụ thuộc trên nhãn). Phụ thuộc này xuất hiện khi toàn bộ mẫu tin (chứ không phải từng thành tố dữ liệu) được chuyển giao giữa các mô-đun. Điều này đòi hỏi mô-đun nhận phải biết cấu trúc của mẫu tin để xử lý, và nó bị phụ thuộc vào cấu trúc này. Một sự thay đổi trên
cấu trúc của mẫu tin có thể làm cho mô-đun nhận hiểu sai. Do đó cách tốt nhất là chuyển giao từng thành tố dữ liệu của mẫu tin để mô-đun nhận không bị phụ thuộc vào cấu trúc của mẫu tin. 3) Control coupling (phụ thuộc trên dữ liệu điều khiển). Control coupling xuất hiện khi một mô-đun
gửi dữ liệu mang một mệnh lệnh yêu cầu một mô-đun khác làm điều gì đó cho nó. Như vậy, chức năng xử lý của mô-dun nhận lệnh bị phụ thuộc vào giá trị của dữ liệu mang mệnh lệnh tại thời điểm mà nó nhận; xử lý của mô-đun nhận lệnh bị thay đổi theo dữ liệu nên rất khó kiễm soát. 4) Common coupling (phụ thuộc trên dữ liệu chung). Common coupling xuất hiện khi nhiều mô-đun
cùng bị phụ thuộc vào ô dữ liệu dùng chung trong hệ thống. Giá trị của dữ liệu bị thay đổi bởi một môđun ở một thời điểm nào đó (không thể xác định trước) có thể gây lỗi cho các mô-đun khác. 5) Content coupling (phụ thuộc trên nội dung xử lý). Content coupling xuất hiện khi một môđun sử
dụng chung một đoạn lệnh của một môđun khác. Như vậy chức năng xử lý của các môđun này hoàn toàn bị lệ thuộc lẫn nhau; nếu thay đổi nội dung xử lý của một môđun sẽ trực tiếp làm thay đổi nội dung xử lý của các môđun đang dùng chung mã lệnh.
Cohesion. Cohesion là mức độ “kết dính” các thành phần xử lý trong môđun để thực hiện chức năng của môđun. Điều đó có nghĩa là chất keo kết dính các thành phần xử lý trong môđun chính là “trách nhiệm” cùng nhau thực hiện chức năng chung của chúng trong môđun, chứ không phải từ các tiện nghi mang tính kỹ thuật (như tối ưu hóa, đơn giản hóa, thực thi nhanh,...). Độ cấu kết càng cao, thì tính mạch lạc – rõ ràng càng cao, và hệ thống được thiết kế như thế có đủ lý do để tồn tại lâu dài. Độ cấu kết có 7 mức độ khác nhau được xếp từ tốt đến xấu:
1) Functional cohesion (liên kết chức năng) xuất hiện khi tất cả các xử lý trong mô-đun đều là để thực hiện chỉ 1 chức năng duy nhất của nó, ví dụ: đọc mẫu tin khách hàng, in ra tổng số, hay tính toán số lượng tồn kho. Khi một mô-đun được thiết kế chỉ để thực hiện đúng 1 việc, chúng ta sẽ không cần phải bận tâm dàn xếp các xử lý bên trong nó.
2) Sequential cohesion (liên kết tuần tự) trong đó, kết xuất của một xử lý là đầu vào cho xử lý khác theo một cách hợp lý, ví dụ: trong mô-đun in báo cáo ở ví dụ 4.2.2, form cần tính tổng chi phí đặt hàng (trước), (rồi) tính thuế, (sau đó) tính tổng tiền. Liên kết tuần tự không tốt như liên kết chức năng vì mô-dun cần thực nhiều nội dung xử lý khác nhau (mặc dù các xử lý này liên kết với nhau rất hợp lý).
3) Communication cohesion (liên kết truyền thông) Trong mô-đun này, nhiều xử lý cùng làm trên cùng một nhóm dữ liệu đầu vào. Ví dụ, đầu vào là mã số nhân viên, các xử lý thực hiện trên mã số nhân viên gồm: Xác định tên nhân viên, và Xác định lương nhân viên. Hai xử lý này có 2 mục đích khác nhau nhưng được gom chung vào một mô-đun.
4) Procedural cohesion (liên kết thủ tục) Các xử lý trong mô-đun này liên kết theo trình tự thực hiện chức năng của mô-đun, nhưng không có dữ liệu giao nhận giữa các xử lý này (không phụ thuộc trên dữ liệu). Ví dụ: In tiêu đề cho đơn đặt hàng, In chi tiết các mục đặt hàng.
5) Temporal cohesion (liên kết tạm thời) Mô-đun có nhiều xử lý khác nhau nhưng không liên quan gì nhau, ví dụ: Đọc bảng FAT ổ A, Đọc bảng FAT ổ B.
6) Logical cohesion (liên kết luận lý) Các công việc trong môđun có vẻ như liên kết nhau hợp lý nhưng thực ra là không, vì mục đích của các công việc này là hoàn toàn khác nhau, ví dụ:
IF employee = secretary THEN Vacation entitlement = 3 weeks; (để tính ngày nghỉ phép) IF employee = janitor THEN Working from 8 AM to 5 PM; (để tính giờ làm việc)
7) Coincidental cohesion (liên kết tình cờ) Gồm các công việc được thêm vào môđun một cách rất tình cờ đúng như tên gọi của nó, không hề có liên hệ gì với nhau, ví dụ: tính thuế, nhập liệu khách hàng, nhập liệu cho hàng nhập kho.
b) Phân bổ các xử lý trên mạng máy tính
Hệ thống thông tin quản lý có nhiều công việc khác nhau được thực hiện bằng nhiều loại nguồn lực khác nhau, như phần mềm, phần cứng, mạng máy tính, người sử dụng máy tính, người ra quyết định. Việc lựa chọn nguồn lực phù hợp cho công việc trong hệ thống là vô cùng quan trọng, vì nó quyết định hiệu quả toàn cục của hệ thống. Do đó, hoạch định đầu tiên trong cách tổ chức hệ thống là phân biệt các công việc thực hiện nhân công và công việc xử lý tự động trên máy tính. Các công việc mà máy tính, mạng máy tính và các phần mềm trên máy tính (hệ điều hành, phần mềm ứng dụng, phần mềm tiện ích,…) không thực hiện được, hoặc không thể thực hiện tốt do kém hiệu quả thì chúng sẽ được thực hiện bằng nhân công, ví dụ: soạn một nội dung thư gửi khách hàng, quyết định giá bán cho hàng hóa, phân công công việc đều là những việc cần phải thực hiện nhân công, do hệ thống phần mềm máy tính ngày nay chưa đủ thông minh để làm thay cho những người chuyên viên trong tổ chức. Mỗi người chuyên viên, hoặc nói chung là người sử dụng hệ thống đều có vai trò riêng trong hệ thống, và cần những xử lý chuyên môn trên máy tính đầu cuối để hổ trợ cho từng chuyên viên làm việc trong hệ thống. Tuy nhiên, các công việc trong hệ thống cũng có liên quan với nhau trên thông tin và dữ liệu; hầu hết các công việc đều dựa trên sự chia sẽ thông tin và dữ liệu để cộng tác thực hiện; với sự xuất hiện của công nghệ thống tin (phần mềm, máy tính, mạng máy tính), chia sẽ tài nguyên (dữ liệu và chương trình) bằng mạng máy tính là một thế mạnh tuyệt đối của công nghệ thông tin trong tất cả các hệ thống thông tin: nó có thể vươn rộng ra khắp toàn cầu, hoạt động liên tục 24 giờ/ngày và chia sẽ một khối lượng dữ liệu cộng tác khổng lồ. Chính vì lý đo này, các xử lý trên máy tính ngày nay thường được phân bổ theo kiến trúc khách chủ (Client-Server): Client đóng vai trò phát sinh yêu cầu dịch vụ (có thể là một câu lệnh truy vấn dữ liệu, đọc một tài liệu, mở hộp thư để xem,…), Server nhận yêu cầu từ Client, phân tích, thực hiện và gửi kết quả về cho Client.
Hiện nay có 2 kiến trúc Client-Server phổ biến: Client-Server 2 lớp và Client-Server 3 lớp. Các xử lý trong hệ thống được xếp vào 2 lớp hoặc 3 lớp logic khác nhau, nhằm tận dụng tối đa ưu thế từ công nghệ, nó hoàn toàn không ảnh hưởng đến các chức năng của hệ thống đối với người sử dụng. Hai kiến trúc này được vẽ trong hình 4.11.
Kiến trúc Client Server 2 lớp
Lớp thứ nhất là chương trình ứng dụng chạy trên máy trạm (work-station) có 2 nhiệm vụ: 1. Cung cấp các chức năng giao tiếp và các tiện ích như tìm kiếm, giúp đỡ cho người sử dụng (NSD).
Giao tiếp NSD Xử lý nghiệp vụ Tài nguyên Mạng máy tính Giao tiếp NSD Xử lý nghiệp vụ Tài nguyên Mạng máy tính Mạng máy tính ClientServer 2 lớp ClientServer 3 lớp Hình 4.11 Kiến trúc ClientServer 2 và 3 lớp
2. Xử lý thao tác trên dữ liệu cho các công việc chuyên môn như tính toán trên số liệu, trích lọc dữ liệu, hoặc bẩy lỗi. Chức năng này sẽ gửi lệnh truy vấn tài nguyên đến máy server và nhận kết quả trả về.
Lớp thứ hai là Server, là một hệ quản trị cơ sở dữ liệu, một file server, hoặc printer server, để quản lý các nguồn tài nguyên dùng chung trên mạng. Server có thể có các nhiệm vụ như:
1. Cung cấp các trình ứng dụng để cho Client tải về (ví dụ: File Server).
2. Thực thi chương trình ngay tại máy chủ theo yêu cầu của Client (ví dụ: Print Server). 3. Đáp ứng các yêu cầu truy vấn dữ liệu cho Client (ví dụ: Database Server).
Mỗi Client là một chương trình ứng dụng phải được cài đặt sẵn trên máy của người sử dụng. Để sử dụng dữ liệu trên CSDL, các chương trình phải có khả năng kết nối vào hệ quản trị CSDL trên Server để thực hiện các lệnh truy vấn từ xa. Dữ liệu truy vấn là dữ liệu được lưu trữ, do đó việc truy vấn giữa máy client và server sẽ phát sinh ra một khối lượng dữ liệu khá lớn di chuyển trên mạng. Lược đồ minh họa mạng máy tính cài đặt mô hình client server 2 lớp được vẽ trong hình 4.12.
Trong lược đồ này, mỗi máy tính được phân biệt bằng địa chỉ IP. Các máy Client là những máy tính được các chuyên viên sử dụng để chia sẽ tài nguyên của Server. Tài nguyên mạng có thể là các tập tin được đặt trên máy server, CSDL, máy in, hoặc tài nguyên của mạng Internet (kết nối qua modem).
Các máy Client chỉ nên dùng trong phạm vi của tổ chức, vì mô hình này đòi hỏi phải thực hiện cài đặt phần mềm tại máy Client. Đối với các hệ thống có phạm vi bố trí các xử lý rộng (giữa các thành phố, hoặc sử dụng cho khách hàng trên Internet), người ta sử dụng kiến trúc Client Server 3 lớp thay vì chỉ có 2 lớp.
Kiến trúc Client Server 3 lớp
Đây là kiến trúc được áp dụng khá phổ biến hiện nay, các ứng dụng Web trên mạng Internet đều theo kiến trúc này. Kiến trúc gồm 3 lớp:
Lớp thứ nhất (lớp giao tiếp) sử dụng các giao tiếp chuẩn với người sử dụng và với lớp dịch vụ bên dưới (Ví dụ: phương thức truyền HTTP và ngôn ngữ HTML của trình duyệt Web).
Lớp thứ hai (lớp xử lý nghiệp vụ) xử lý các giao dịch của hệ thống. Lớp này có 2 giao tiếp: một giao tiếp với lớp thứ nhất (nhận và gửi trang HTML với trình duyệt), và một giao tiếp với lớp quản lý tài nguyên (gửi các câu lệnh truy vấn CSDL và nhận dữ liệu từ Database Server).
Lớp thứ ba (lớp quản lý tài nguyên) cung cấp các dịch vụ truy cập vào các nguồn tài nguyên của tổ chức (như Database Server).
Với cách phân lớp này, việc cài đặt phần mềm ứng dụng ở các máy Client không cần thiết nữa; thay vào đó là một phần mềm tiện ích được phát triển độc lập với nghiệp vụ của tổ chức như các trình
duyệt Web, nó cho phép bất kỳ người sử dụng nào trên mạng Internet (được tổ chức cho phép) sử dụng được các chức năng xử lý của hệ thống theo cơ chế sau:
1. Người sử dụng trên máy Client sử dụng trình duyệt Web (Web-Browser) để gửi yêu cầu dịch vụ đến Web-Server. Yêu cầu dịch vụ được Web-Browser tự động mã hóa thành dạng HTTP-request (Hyper Text Markup Language request) để Web-Server hiểu.
2. Web-Server giải mã và chuyển yêu cầu dịch vụ đến Application-Server.
3. Aplication-Server phân tích yêu cầu này, truy cập vào hệ quản trị CSDL để lấy dữ liệu nếu cần, xử lý yêu cầu và gửi trả kết quả về Web-Server.
4. Web-server mã hóa kết quả thành dạng HTML (Hyper Text Markup Language) là một trang Web được chuyển đến Web-Browser. Web-Browser hiển thị trang Web này cho người sử dụng.
Hình 4.13 Các phần mềm hệ thống trong mô hình Client-Server 3 lớp
Để cài đặt thực tế mô hình client-server 3 lớp, hệ thống cần sử dụng 3 loại server: Web-Server, Application Server và Database Server. Các server này đều là các phần mềm. Các phần mềm này có thể được cài đặt riêng trên từng máy như hình 4.13 hoặc cài đặt chung trên một máy tùy theo khối lượng xử lý và đặc điểm xử lý của mỗi server.
4.4 CHỌN PHƯƠNG ÁN THỰC HIỆN
Việc đánh giá và chọn phuơng án để thiết lập hệ thống thông tin là rất cần thiết để tổ chức có được một hệ thống vừa ý. Các phương án đuợc xem xét chọn lựa dựa trên yêu cầu và ràng buộc. Các yêu cầu dùng để chọn phương án là các yêu cầu chức năng tối thiểu, rất quan trọng của hệ thống mà nếu không được giải quyết, hệ thống mới sẽ không hoạt động đúng như mong đợi hoặc vô dụng, ví dụ như cách cập nhật dữ liệu dùng chung trong hệ thống.
Ràng buộc trên các phương án là để tổ chức quản lý được quá trình phát triển hệ thống, và liên kết nó với nhu cầu sử dụng hệ thống mới trong hệ thống theo cách ít rủi ro nhất. Ví dụ:
• Thời điểm (hạn chót) hệ thống mới phải sử dụng được để phù hợp với kế hoạch phát triển chung trong tổ chức;
• Nguồn lực (giới hạn) có thể cấp phát để thực hiện phương án;
• Những gì không được phép làm thay đổi, để tổ chức không bị mất tính kiễm soát
Số lượng phương án nhiều không có nghĩa là giải pháp được chọn sẽ hữu dụng. Trong số các phương án, chúng ta cần có ít nhất 3 phương án đặc biệt sau đây:
1. Một phương án “cận dưới” trong dãy các phương án có thể có, được đề xuất theo quan điểm tiết kiệm nhất có thể được, dựa trên chi phí, nổ lực thực hiện và công nghệ trong việc phát triển hệ thống mới. Đây là phương án có thể không thay đổi công nghệ mà chỉ tập trung vào việc làm cho các văn bản giấy được sử dụng hiệu quả hơn, hoặc chỉ lược bỏ bớt các xử lý dư thừa. Phương án này làm thỏa mãn phần lớn các yêu cầu chức năng mà người sử dụng cần với sự thay đổi ít nhất so với hệ thống hiện tại.
2. Một phương án “cận trên” trong dãy các phương án có thể có, đó là hệ thống mới không chỉ làm thỏa mãn các yêu cầu đã biết mà nó còn có nhiều chức năng và tính năng được cho là người sử dụng sẽ cần. Phương án này thể hiện triển vọng của hệ thống trong tương lai. Khác với phương án cận dưới bị chi phối bởi chi phí, phương án cận trên tập trung làm cho chức năng của hệ thống thật hoàn hảo mà không cần bận tâm nhiều về chi phí.Vì thế, các công nghệ mới thường được áp