Phân tích hướng đối tượng
1.1. Giới thiệu
Phân tích hệ thống không chỉ có liên quan chặt chẽ với sự xuất hiện của máy tính, mà thực
tế nhu cầu phân tích đã có trước khi máy tính xuất hiện từ nhiều thế kỷ. Khi các Vua Pharaon
của Ai Cập cổ đại xây dựng các Kim Tự Tháp, thì những người thiết kế Kim Tự Tháp có thể
được coi như những nhà thiết kế hệ thống, những kiến trúc sư đại tài, còn những người tổ chức
vận chuyển nguyên vật liệu, huy động nhân công xây dựng Kim Tự Tháp, theo một nghĩa nào
đó, chính là những người phân tích hệ thống. Từ giữa thế kỷ trước, các nhà tư bản, các doanh
nghiệp muốn có lợi nhuận cao đã phải tiến hành nghiên cứu phương pháp, cách tổ chức, phân
công lao động hợp lý để cho các hệ thống sản xuất, kinh doanh hoạt động đạt hiệu quả cao
hơn. Chính họ đã thực hiện phân tích những hệ thống đó để đề ra những phương pháp quản lý,
cách tổ chức mới, tốt hơn.
Cùng với sự phát triển của công nghiệp điện tử, giá thành phần cứng giảm nhiều, nhưng giá
phần mềm lại tăng. Nhất là phí tổn cho bảo trì để hệ thống đáp ứng được như cầu của người sử
dụng lại chiếm một tỷ trọng rất lớn trong tổng chi phí cho một dự án phát triển phần mềm.
Điều này cho thấy vai trò của công việc phân tích hệ thống là rất quan trọng và cần thiết phải
tìm ra phương pháp tốt hơn cho việc phát triển hệ thống.
Phân tích làm nhiệm vụ phân tách bài toán thành các thành phần nhỏ hơn. Trong công nghệ
phần mềm thì nó còn có nghĩa là phải hiểu rõ quá trình xây dựng đặc tả yêu cầu của người sử
dụng, nắm được các chức năng và cách phân rã hệ thống vật lý thành các đơn thể (module).
Theo phương pháp truyền thống thì điều đó thường được thực hiện theo cách tiếp cận trên-
xuống (top-down), sử dụng phương pháp phân tích có cấu trúc. Phân tích hướng đối tượng cho
phép mô tả hệ thống gần với thế giới thực hơn, xác định rõ các đối tượng, trừu tượng hoá các
yêu cầu để trên cơ sở đó xây dựng được cấu trúc của hệ thống. Phương pháp hướng đối tượng
giải quyết được hố ngăn cách giữa phân tích và thiết kế hệ thống.
Trong mục này chúng ta đề cập đến các bước cần thực hiện trong phân tích hướng đối
tượng (PTHĐT). Thông qua ví dụ về phân tích hệ thống thư viện, chúng ta hình dung rõ hơn
công việc xây dựng các đặc tả yêu cầu, mô tả đối tượng và cách xác định mối quan hệ giữa các
lớp đối tượng trong hệ thống.
1.2. Các bước thực hiện trong phân tích hướng đối tượng
Để xây dựng một hệ thống phần mềm thì phải giải quyết ba vấn đề chính sau:
+ Dữ liệu, lớp các đối tượng và cấu trúc của chúng.
+ Những hành vi thể hiện các chức năng cục bộ, những quá trình trong hệ thống.
+ Điều khiển hành vi tổng thể của hệ thống.
Trong thực tế, cấu trúc dữ liệu và yêu cầu về hành vi của hệ thống thường xuyên thay đổi.
Do vậy phải phân tích kỹ bài toán, lựa chọn phương pháp phát triển hệ thống thích hợp để cho
hệ thống có tính chất mở, dễ thích nghi giúp cho công việc bảo trì hệ thống đỡ tốn kém.
Người phân tích hệ thống là người có kiến thức bao quát, có kinh nghiệm trong quá trình
phân tích nhiều hệ thống ứng dụng khác nhau, đồng thời phải có khả năng giao tiếp, trao đổi và
hiểu được những người đầu tư, thiết kế và những người sử dụng hệ thống.
Nhiệm vụ của phân tích hệ thống là phải trả lời cho được câu hỏi "Hệ thống làm cái gì?" và
"Tại sao?". Để xác định được bài toán và trả lời được những câu hỏi nêu trên thì người phân
tích cũng cần phải phát hiện, tìm hiểu kỹ những hệ thống đã có hoặc đang hoạt động trong thực
tế. Có thể đó chưa phải là hệ thống tin học hoá. Trên cơ sở nghiên cứu những hệ thống cũ, xác
định rõ yêu cầu của người sử dụng để quyết định xem hệ thống cần xây dựng sẽ làm cái gì và
577 578
hoạt động như thế nào. Quá trình đó được mô tả như ở hình 1-1.
Tìm hiểu Quyết định
hệ thống cũ hệ thống mới
làm cái gì?
Yêu cầu của
người sử dụng
Phát hiện những Xác định rõ
hệ thống cũ hệ thống cần
phát triển
Hình 1-1. Mức độ bao quát thế giới thực
Trong các phương pháp truyền thống thì mô hình dòng dữ liệu được mô tả thông qua sơ đồ
dòng dữ liệu. Các quá trình trong hệ thống được xác định thông qua việc phân rã chức năng
top-down. Sơ đồ biến đổi trạng thái được sử dụng để mô tả sự biến đổi thông tin và dòng điều
khiển trong hệ thống. Phương pháp hướng đối tượng kết hợp hai phương diện dữ liệu với quá
trình, gộp chung hành vi cục bộ với dữ liệu trong một đơn vị cấu trúc. Phương pháp phân tích
hướng đối tượng cung cấp cho chúng ta công cụ đơn giản nhưng đủ mạnh để xác định các đối
tượng và xây dựng các đơn nguyên của hệ thống cần phát triển. Phân tích hướng đối tượng bao
gồm các bước sau:
+ Tìm hiểu bài toán.
+ Xác định rõ các đặc tả yêu cầu của người sử dụng, của hệ thống phần mềm.
+ Xác định các đối tượng và các thuộc tính của chúng.
+ Xác định các hàm mà các đối tượng sẽ phải thực hiện (hành vi của các đối tượng).
+ Xác định mối quan hệ tương tác giữa các đối tượng, các thông báo và sự truyền thông báo
giữa các đối tượng.
579 580
Xây dựng các đặc tả yêu cầu
Định nghĩa b i toánà
Xác định các lớp đối
tượng
Mối quan hệ giữa
các đối tượng
Xác định
các h mà
Thiết kế
Hình 1-2. Phân tích hướng đối tượng
1.2.1. Tìm hiểu kỹ bài toán
Nhiệm vụ đầu tiên của quá trình phân tích là phải tìm hiểu kỹ bài toán ứng dụng. Người
phân tích phải gặp gỡ, trao đổi với những người đầu tư, những người sử dụng để biết rõ về
chức năng, nhiệm vụ của hệ thống cần phát triển. Đồng thời người phân tích phải tìm hiểu,
phát hiện những hệ thống cũ đã hoặc đang giải quyết những vấn đề tương tự như những vấn dề
mà hệ thống cần xử lý. Dựa vào những kinh nghiệm, kết quả phân tích những hệ thống cũ,
những công việ mà hàng ngàyphải thực hiện để xác định chính xác bài toán. Trên cơ sở đó làm
rõ hơn những yêu cầu của bài toán và định nghĩa lại theo quan điểm của các kỹ sư phầm mềm
để đảm bảo đưa ra được lời giải tin học (hệ thống thực hiện được trên máy tính). Các khẳng
định về bài toán phải đơn giản và rõ ràng, mạch lạc về văn phạm. Điều này giúp cho các kỹ sư
phần mềm có điều kiện tập chung nhiều hơn vào việc xây dựng lời giải cho bài toán. Dựa trên
những khẳng định của bài toán để xây dựng các đặc tả yêu cầu của người sử dụng lẫn của cả hệ
thống phần mềm.
1.2.2. Xây dựng các đặc tả yêu cầu
Khi đã định nghĩa rõ bài toán thì bước tiếp theo là phải tìm hiểu xem hệ thống dự kiến sẽ
yêu cầu làm cái gì? Điều quan trọng ở đây là phải xây dựng được danh sách các yêu cầu của
người sử dụng. Rõ ràng là ở đây cần có sự trao đổi, hiểu biết giữa người sử dụng và người phát
triển hệ thống về những điều mà họ mong muốn. Dựa trên những yêu cầu của người sử dụng,
người phát triển đưa ra các đặc tả cho hệ thống. Người xây dựng hệ thống phải trả lời được các
câu hỏi:
+ Đầu ra (output) của hệ thống là cái gì?
+ Hệ thống sẽ phải làm cái gì để có kết quả mong muốn, nghĩa là phải xử lý cái gì?
+ Đầu vào (input) của hệ thống là cái gì?
+ Những tài nguyên mà hệ thống yêu cầu là cái gì?
Phải hiểu rõ nguồn gốc, các dạng thông tin cần cung cấp cho hệ thống hoạt động. Hệ thống
sẽ giải quyết vấn đề gì, những kết quả cần phải có là gì. Xác định được mối quan hệ giữa đầu
vào/ra (input/output), nghĩa là xác định được những khẳng định về mối quan hệ giữa tiền điều
kiện và hậu điều kiện cho các quá trình trong hệ thống.
Các đặc tả chi tiết phục vụ cho việc xây dựng và trắc nghiệm hệ thống để kiểm tra xem
những nhiệm vụ đặt ra có được hoàn thành hay không.
1.2.3. Xác định các đối tượng
Thông thường các đối tượng sẽ được xác định thông qua các thực thể trong thế giới thực và
được trừu tượng hoá thành các đối tượng trừu tượng. Để xác định các đối tượng chúng ta có
thể sử dụng một trong những công cụ sau:
1. Sơ đồ dòng dữ liệu
2. Phân tích văn bản.
Sơ đồ dòng dữ liệu:
Sơ đồ dòng dữ liệu là mô hình hệ thống cho cả dữ liệu lẫn quá trình. Thông tin lấy từ các
nguồn dữ liệu, được chuyển đến cho một hay nhiều quá trình xử lý và ngược lại, một quá trình
khi nhận đủ thông tin vào (input) thì bắt đầu thực hiện, xử lý thông tin và cho các kết quả
(output) và chúng được gửi tới các kho dữ liệu. Trong sơ đồ dòng dữ liệu, một quá trình sẽ
được thực hiện khi có đủ các thông tin đầu vào (theo các đường có mũi tên dẫn đến quá trình
đó).
Trong sơ đồ, hình tròn hoặc ellipse được sử dụng để biểu diễn cho một quá trình, trong hình
có tên gọi của quá trình. Tên gọi cho một quá trình phải là duy nhất và bao giờ cũng phải bắt
đầu bằng động từ kết hợp với bổ ngữ như: "Xử lý đơn hàng", "Ghi nhận nguồn hàng" v.v... Ví
dụ:
Đơn đặt hàng Xử lý Chỉ thị
đơn hàng
Chức năng quan trọng của quá trình là xử lý dữ liệu, biến đổi thông tin. Dòng dữ liệu được
biểu diễn bằng đường thẳng có mũi tên làm nhiệm vụ chuyển tải thông tin vào hoặc ra khỏi
một quá trình. Mũi tên chỉ hướng của dòng thông tin. Lưu ý là ở đây chỉ nói tới sự vận chuyển
thông tin logic chứ không phải thông tin ở dạng vật lý. Dòng dữ liệu được gắn với một tên
nhưng không nhất thiết phải là duy nhất. Các dòng dữ liệu, và tên được gắn cho nó phải chỉ ra
được thông tin logic tương ứng cho một quá trình. Trong sơ đồ dòng dữ liệu, các dữ liệu được
biểu diễn bằng hình chữ nhật có chứa tên của thông tin đượcc cất giữ. Tên gắn với dữ liệu phải
là danh từ. Ví dụ:
KHACH_HANG
biểu diễn cho những thông tin về khách hàng được có tên là KHACH_HANG. Giữa dữ liệu và
quá trình luôn có ít nhất một dòng dữ liệu liên kết.
Đơn đặt hàng Xử lý Chỉ thị
đơn hàng
Hình 1-3. Sơ đồ dòng dữ liệu
Các quá trình được biểu diễn trong các ô hình tròn hoặc ellipse là các thủ tục, các hàm. Hình
1-3 mô tả sơ đồ dòng dữ liệu của hệ thống xử lý đơn hàng và vận chuyển thông tin cho công ty
phát hành sách.
Trong sơ đồ dòng dữ liệu của hệ thống thì các thực thể được biểu diễn trong các hình chữ
nhật và các kho dữ liệu được biểu diễn với tên gọi đặt trong hai đường thẳng song song. Kho
dữ liệu biểu diễn cho một lượng lớn thông tin cần phải lưu trữ trong một thời gian dài, thường
là trong các tệp dữ liệu để cho nhiều người có thể truy nhập vào. Sơ đồ dòng dữ liệu có thể sử
dụng để biểu diễn quá trình xử lý thông tin trong hệ thống ở nhiều mức độ trừu tượng khác
nhau. Quá trình "Xử lý đơn hàng", "Tập hợp đơn hàng" ở hình 1-4 được làm mịn từ quá trình
"Xử lý đơn hàng" ở hình 1-3 và có thể tiếp tục được làm mịn thêm, mô tả những quá trình như
thanh toán, giao hàng v.v..., ở mức độ chi tiết hơn.
CSDL về sách
Xử lý
đơn hàng
CSDL về khách hàng
581 582
Kho sách
Khách
h ngà
Các kho
sách
Đơn đặt
sách
Tập hợp
đơn hàng
Hình 1-4. Sơ đồ dòng dữ liệu trong hệ xử lý đơn đặt hàng
Phương pháp tạo ra sơ đồ dòng dữ liệu
Chúng ta có thể tạo ra sơ đồ dòng dữ liệu theo một trong hai cách sau:
1. Dùng sơ đồ chức năng: Sơ đồ chức năng chỉ cho chúng ta biết về chức năng và cấu trúc
phân cấp công việc cần thực hiện. Một trong những nhiệm vụ đầu tiên của người phân tích là
phân tích bài toán để xây dựng sơ đồ chức năng của hệ thống. Theo phương pháp có cấu trúc,
việc phân rã chức năng của hệ thống thành những chức năng con lại bao hàm nhiều chức năng
con khác nữa sẽ cho kết quả là một sơ đồ phân cấp các chức năng của hệ thống (phân tích chức
năng và cách xây dựng sơ đồ chức năng được đề cập kỹ trong cuốn "Phân tích, thiết kế và cài
đặt hệ thông tin quản lý, Viện Tin học"). Các chức năng trong sơ đồ chức năng sẽ được chuyển
tương ứng sang quá trình trong sơ đồ dòng dữ liệu. Dựa vào kết quả tìm hiểu, phân tích bài
toán để xác định các nguồn dữ liệu, kho dữ liệu vào/ra cho các quá trình trong sơ đồ dòng dữ
liệu.
2. Sử dụng sơ đồ ngữ cảnh: Sơ đồ ngữ cảnh thường được sử dụng ở giai đoạn đầu của quá
trình phân tích và được dùng để vạch phạm vi hoạt động của hệ thống. Thông thường sơ đồ
ngữ cảnh được xây dựng dưới dạng tựa như sơ đồ chức năng, bao gồm một nút chính biểu diễn
cho nhiệm vụ trung tâm của hệ thống, và toả ra là các tác nhân ngoài hoặc nhóm công việc có
liên quan.
Phân tích sơ đồ chức năng, sơ đồ ngữ cảnh và cách xây dựng sơ đồ dòng dữ liệu có thể
tham khả trong cuốn "Phân tích, thiết kế và cài đặt hệ thông tin quản lý, Viện Tin học".
Chúng ta có thể dựa vào định nghĩa của sơ đồ dòng dữ liệu để xác định các đối tượng.
Trong sơ đồ dòng dữ liệu, những ô hình chữ nhật, ô có hai đường thẳng song song biểu diễn
cho dữ liệu, kho dữ liệu có thể được xem như là các đối tượng. Lưu ý rằng không có sự tương
ứng 1-1 giữa những nút biểu diễn cho dữ liệu, kho dữ liệu trong sơ đồ dòng dữ liệu với các đối
tượng. Một đối tượng có thể là đại diện của một hay nhiều nút dữ liệu, kho dữ liệu trong sơ đồ
dòng dữ liệu tuỳ thuộc vào ngữ cảnh của vấn đề mà nó mô tả. Ví dụ trong hình 1-4. chúng ta sẽ
có ba đối tượng: SACH, DON_HANG và KHACH_HANG. Hai nút: kho dữ liệu "CSDL về
sách" với nút dữ liệu "Các kho sách" cùng đại diện cho đối tượng SACH vì cùng quản lý
những thông tin về sách; đối tượng DON_HANG được xác định từ nút "Đơn đặt sách" còn
KHACH_HANG được xác định từ nút "CSDL về khách hàng".
Phân tích văn bản:
Cách thực hiện thứ hai là dựa trên mô tả bằng văn bản của bài toán hoặc lời giải để phân
tích. Văn bản mô tả có thể gồm có một hay nhiều câu, một hay nhiều đoạn, chương, phần, tuỳ
thuộc vào mức độ phức tạp của bài toán. Trong đó các đối tượng thường được mô tả bằng các
danh từ. Danh từ thường được phân loại thành danh từ riêng, danh từ chung, và các danh từ
trừu tượng hoặc danh từ chỉ đại lượng.
Điều quan trọng cần lưu ý khi phân tích là phải dựa vào ngữ nghĩa và ngữ cảnh để phân loại
danh từ. Một từ có thể là danh từ chung trong ngữ cảnh này song nó cũng có thể là danh từ trừu
tượng hoặc danh từ chỉ đại lượng trong ngữ cảnh khác. Cũng cần lưu ý là không phải tất cả các
danh từ đều được dùng để biểu diễn cho những đối tượng cần thiết cho hệ thống của chúng ta.
Bảng 1-1. Bảnh phân loại danh từ
583 584