TẠP CHÍ KHOA HỌC, Đại học Huế, Số 22, 2004<br />
<br />
<br />
<br />
<br />
ỨNG DỤNG PHƯƠNG PHÁP PHÁT TRIỂN DỰA TRÊN THÀNH PHẦN <br />
TRONG QUÁ TRÌNH PHÁT TRIỂN PHẦN MỀM<br />
Lê Văn Tường Lân<br />
Trường Đại học Khoa học, Đại học Huế<br />
<br />
Thế giới thực luôn biến động. Do vậy, để thích nghi, các hệ thống phần mềm <br />
mô tả nó luôn thay đổi. Phương pháp phát triển hướng đối tượng đã được xem là một <br />
phương tiện hữu hiệu để giải quyết sự khủng hoảng này trong công nghệ phần <br />
mềm. Tuy nhiên, trong các hệ thống lớn, phức tạp, có chất lượng cao đòi hỏi phải <br />
được xây dựng trong một thời gian ngắn thì bản thân nó lại bộc lộ hạn chế về việc <br />
kiểm định chất lượng và chi phí phần mềm. Bài viết này nhằm nêu bật vai trò của <br />
một phương pháp quan trọng trong ngành công nghệ phần mềm hiện nay, được xem <br />
là bước tiến hoá của phương pháp phát triển hướng đối tượng, đó là phương pháp <br />
hướng thành phần hay còn được gọi là phát triển dựa trên thành phần. Phương pháp <br />
này xem việc phát triển phần mềm là quá trình hợp nhất của những thành phần phần <br />
mềm tiền đóng gói.<br />
I. QUAN ĐIỂM CỦA PHÁT TRIỂN DỰA TRÊN THÀNH PHẦN<br />
1.Bài toán;<br />
Cho hệ thống thông báo tự động như sau: Một máy tính kết nối với modem <br />
điện thoại. Tại thời điểm T, hệ thống cần tự động thông báo một bản tin M có độ <br />
dài L cho trước trong khoảng thời gian N. Hay trong một thời điểm nào đó, có thể <br />
được kích hoạt để nhận một bản tin M' nào đó gởi đến. Hãy xây dựng phần mềm <br />
cho bài toán trên.<br />
2. Xây dựng hệ thống theo phương pháp hướng đối tượng: <br />
Để phát triển phần mềm cho hệ thống trên, ta phải xây dựng đối tượng <br />
MODEM với những vấn đề phải xét:<br />
+ Các thuật toán xử lý trên modem: tạo kết nối, hủy kết nối,...<br />
+ Hiểu biết tập lệnh AT của nhà sản xuất cung cấp cho mode,<br />
+ Các hằng số trả lời của modem khi làm việc,...<br />
+...<br />
Rõ ràng, trong cách thức phát triển này, ta phải đầu tư một chi phí về thời gian <br />
và tiền bạc cho hệ thống. Thêm vào đó, chất lượng của hệ thống làm chúng ta phải <br />
xem xét vì nhiều lý do:<br />
51<br />
+ Các đối tượng cấu thành nên hệ thống đã là đối tượng tiêu chuẩn?<br />
+ Chúng đã được kiểm chứng hình thức,...<br />
<br />
3. Quan điểm của phát triển dựa trên thành phần: <br />
Xuất phát từ quan điểm: "Buy do not build", liệu chúng ta phải xây dựng đối <br />
tượng MODEM trên hay có thể tìm đối tượng tương tự MODEM' trong thư viện? <br />
Tư tưởng của phát triển dựa trên thành phần là lắp ráp hệ thống từ những thành <br />
phần đã có. Do vậy, kiến trúc phần mềm của hệ thống dựa vào kiến trúc phần mềm <br />
của các thành phần phần mềm tiêu chuẩn nên hệ thống đạt chất lượng cao hơn.<br />
Để phát triển hệ thống trên, thay vì phải xây dựng đối tượng MODEM, ta tìm <br />
thấy thành phần MSCOMM trong thư viện của MicroSoft; công việc tiếp theo là chỉ <br />
cần làm thích nghi các thuộc tính và phương thức của nó trong hệ thống của ta.<br />
Tuy nhiên, cũng để phát triển hệ thống trên, người ta cũng tìm thấy thành phần <br />
EXCEL TELE trong thư viện TeleTools, tương tự như thành phần MSCOMM nhưng <br />
có khả năng thích nghi cao hơn, chỉ cần thay đổi các thuộc tính và phương thức của <br />
nó ta sẽ có được hệ thống cần xây dựng.<br />
4. Mô hình phát triển dựa trên thành phần: <br />
Phương pháp phát triển dựa trên thành phần gần tương tự như phương pháp <br />
phát triển hướng đối tượng. Hoạt động công nghệ bắt đầu với sự chỉ ra các lớp tham <br />
dự để phát triển hệ thống. Nếu các lớp này được tìm thấy trong thư viện và sự thích <br />
nghi là tốt, chúng sẽ được lấy ra và phát triển hệ thống. Ngược lại, chúng sẽ được <br />
phát triển để sử dụng và bổ sung vào thư viện sử dụng lại.<br />
<br />
Thành phần để <br />
xây dựng <br />
Phân<br />
hệ thống<br />
tích lỗi<br />
Kế hoạch<br />
Hợp nhất cho Tìm kiếm <br />
Giao tiếp với phiên bản hệ trong thư viện <br />
khách hàng thống thứ n thành phần <br />
<br />
<br />
Bổ sung thành Sử dụng nếu <br />
phần mới vào thành phần <br />
Đánh giá của thư viện thích hợp<br />
khách hàng<br />
Xây dựng nếu <br />
Xây dựng hay thành phần <br />
dừng hệ thống không thích hợp<br />
<br />
Hình 1: Mô hình phát triển hệ thống dựa trên thành phần<br />
<br />
II. HOẠT ĐỘNG CHÍNH CỦA CÔNG NGHỆ DỰA TRÊN THÀNH PHẦN<br />
52<br />
1. Tiến trình của công nghệ dựa trên thành phần: <br />
Như đã chỉ ra ở trên, việc xây dựng hệ thống bằng cách sử dụng và làm thích <br />
nghi hành phần MSCOMM sẽ tốt hơn việc xây dựng đối tượng MODEM và nếu sử <br />
dụng thành phần EXCEL TELE thì lại tốt hơn. Vấn đề đặt ra là làm sao để người <br />
phát triển hệ thống có thể biết hay tìm thấy các thành phần này để sử dụng? Và làm <br />
thế nào để biết được thành phần này là có thể làm thích nghi để đưa vào hệ thống <br />
cần xây dựng?...<br />
Công nghệ phần mềm dựa trên thành phần chứa hai hoạt động công nghệ song <br />
song: công nghệ lĩnh vực và phát triển dựa trên thành phần.<br />
i. Công nghệ lĩnh vực là nhận ra, xây dựng, phân loại và phát triển những <br />
thành phần phần mềm mà chúng có thể áp dụng được đối với phần mềm hiện có và <br />
phần mềm trong tương lai trong một lĩnh vực ứng dụng cụ thể. Công nghệ lĩnh vực <br />
gồm ba hoạt động chính: phân tích, xây dựng và phát triển. Như vậy, nó đóng vai trò <br />
là thiết lập tập các thành phần phần mềm có thể sử dụng lại bởi kỹ sư phần mềm.<br />
Tuy vậy, khó xác định xem một thành phần tiềm năng có thể được sử dụng hay <br />
không. Để được điều này, phải chỉ rõ tập hợp các đặc trưng lĩnh vực mà chúng có <br />
được. Gọi {Dp}là tập hợp các đặc trưng lĩnh vực của một thành phần phần mềm có <br />
thể sử dụng lại; với mỗi Dpi trong tập là một đặc trưng về lĩnh vực cụ thể. Khi xây <br />
dựng phần mềm W mới, ta có tập DWi là tập các đặc trưng về lĩnh vực của ứng <br />
dụng, ta so sánh với Dpi để có được quyết định. <br />
ii. Phát triển dựa trên thành phần là chỉ ra những đòi hỏi từ khách hàng, xác định <br />
một kiểu kiến trúc thích hợp để đáp ứng mục tiêu hệ thống. Để từ đó có thể:<br />
+ Chọn những thành phần tiềm năng cho việc sử dụng lại,<br />
+ Đánh giá các thành phần để chắc chắn chúng phù hợp với kiến trúc của hệ <br />
thống,<br />
+ Làm thích nghi các thành phần để cần thiết cho việc hợp nhất,<br />
+ Tích hợp những thành phần cho ứng dụng tổng thể.<br />
2, Hoạt động đánh giá thành phần: <br />
Như đã nói, việc xây dựng hệ thống bằng cách sử dụng và làm thích nghi hành <br />
phần EXCEL TELE sẽ tốt hơn việc sử dụng thành phần MSCOMM, tại sao? Dựa <br />
vào đâu để người sử dụng quyết định sử dụng thành phần này mà không sử dụng <br />
thành phần khác?...<br />
Khi quyết định sử dụng một thành phần trong thư viện phần mềm để xây dựng <br />
hệ thống, các hoạt động đánh giá nó là cần thiết để đảm bảo có hiệu quả trong hệ <br />
thống.<br />
+ Đánh giá khả năng thành phần: đảm bảo rằng một thành phần tham dự sẽ <br />
biễu diễn được yêu cầu chức năng, sẽ phù hợp trong kiến trúc cụ thể của hệ thống. <br />
Cần để ý rằng miêu tả giao diện cung cấp thông tin hữu ích về sự điều hành và sử <br />
<br />
53<br />
dụng thành phần nhưng không cung cấp tất cả các thông tin để chỉ ra nó là thật sự <br />
hiệu quả trong ứng dụng mới mà phải phân tích, khám phá để đánh giá nó. <br />
+ Xác định sự thích nghi của thành phần: Về bản chất, kiến trúc phần mềm chỉ <br />
rõ những quy luật thiết kế đối với tất cả các thành phần, nhận ra những cách kết nối <br />
và sắp đặt. Trong một vài trường hợp, việc sử dụng một thành phần nào đó có thể <br />
gây lỗi kiến trúc hệ thống. Những thành phần này phải được loại bỏ và thay thế <br />
bằng những thành phần phù hợp hơn.<br />
+ Xác định cấu tạo của thành phần: nhận ra cơ chế kết nối và sắp đặt. Cấu tạo <br />
thành phần phải thoả chất lượng, thích nghi và công nghệ để tạo nên cấu trúc thiết <br />
lập cho ứng dụng.<br />
3. Phân loại và tìm lại thành phần: <br />
Theo đề cập trên, làm thế nào để khi cần ta có thể tìm, biết được có thành phần <br />
MSCOMM hay thành phần EXCEL TELE để đưa vào xây dựng hệ thống? Ngoại trừ <br />
các thành phần này trong thư viện có còn các thành phần khác hay không? Khả năng <br />
thích nghi đối với hệ thống như thế nào?....<br />
Trong kho thành phần lớn, có hàng chục ngàn thành phần có thể sử dụng lại. <br />
Do vậy, bằng cách nào để các kỹ sư phần mềm có thể tìm thấy thành phần mà họ <br />
cần? Để trả lời câu hỏi này, cần phải giải quyết: "Cần phải miêu tả các thành phần <br />
phần mềm theo nhóm như thế nào?"<br />
Một thành phần phần mềm có thể sử dụng lại có thể được mô tả theo mô hình <br />
3C như sau: Concept (khái niệm), Content (nội dung), và Context (ngữ cảnh).<br />
Concept: miêu tả về cái gì mà thành phần phần mềm làm, gắn với mục đích <br />
của thành phần. Giao diện đối với thành phần được miêu tả một cách đầy đủ và ngữ <br />
nghĩa được chỉ ra ở tiền và hậu điều kiện.<br />
Content: miêu tả khái niệm được thực hành như thế nào. Về bản chất thì nội <br />
dung của thành phần được dấu đối với người sử dụng và chỉ được biết đối với <br />
những ai có ý định kiểm tra hay sửa đổi thành phần.<br />
Context: đặt cho thành phần phần mềm có thể sử dụng lại trong lĩnh vực ứng <br />
dụng nào. Bằng cách chỉ ra những đặc trưng thuộc về khái niệm, thao tác và cài đặt, <br />
nó cho phép ta có thể tìm ra những thành phần thích hợp để đáp ứng cho nhu cầu của <br />
ứng dụng.<br />
III. HIỆU QUẢ CỦA CÔNG NGHỆ DỰA TRÊN THÀNH PHẦN<br />
Để đánh giá, trước hết, ta phải hiểu cái gì thực sự được sử dụng lại trong <br />
phạm vi của công nghệ phần mềm, và hao phí thật sự liên quan đến sử dụng lại.<br />
1. Độ đo sự sử dụng lại: <br />
Để đo lợi ích liên quan đến sử dụng lại trong hệ thống S, ta có đẳng thức sau:<br />
Rb(S)=[CnoreuseCreuse]/ Cnoreuse<br />
Với: Cnoreus: là chi phí để phát triển hệ thống S không dùng tính sử dụng lại,<br />
54<br />
Creuse: là chi phí để phát triển hệ thống S dùng tính sử dụng lại.<br />
Ta có: Rb(S) không nguyên và 1 Rb(S) 0<br />
2. Tác động về chất lượng:<br />
Thành phần phần mềm được sử dụng lại có độ chính xác cao và có thể nói là <br />
không chứa lỗi. Mặc dầu không thường xuyên được chứng minh về mặt hình thức <br />
nhưng với việc sử dụng lại, lỗi được tìm thấy và loại trừ; chất lượng của thành <br />
phần được cải thiện như là một kết quả.<br />
3. Tác động về hiệu suất:<br />
Khi những thành phần sử dụng lại được ứng dụng thông qua tiến trình phần <br />
mềm, chúng ta ít tốn thời gian để tạo ra kế hoạch, mô hình, tài liệu, mã và dữ liệu <br />
mà chúng là cần thiết để tạo ra hệ thống. Thêm vào, chức năng cùng mức được phân <br />
phối cho người sử dụng với đầu vào ít công sức hơn, do vậy, hiệu suất được cải <br />
thiện.<br />
4. Tác động về giá thành:<br />
Tiết kiệm giá thành đối với việc sử dụng lại được ước lượng bằng cách ước <br />
lượng giá thành của dự án. Dựa trên nghiên cứu khả năng sử dụng lại, hiệp hội <br />
QSM, Inc., báo cáo dây chuyền thành phần dẫn đến việc giảm 70% về quá trình phát <br />
triển, giảm 84% về giá dự án.<br />
<br />
IV. KẾT LUẬN<br />
Phần mềm tốt là kết quả phải đạt được của ngành công nghiệp phần mềm. Sự <br />
phát triển phần mềm dựa trên thành phần chỉ ra nó là một phương pháp hiệu quả. <br />
Bằng việc chỉ ra những điểm chính của phương pháp cùng với bài toán dẫn chứng, <br />
bài viết khẳng định tính ưu việt của phương pháp dần đang có vị trí hàng đầu trong <br />
ngành công nghiệp phần mềm trên thế giới.<br />
<br />
TÀI LIỆU THAM KHẢO<br />
1. Đoàn Văn Ban. Phân tích thiết kế và lập trình hướng đối tượng , Trung tâm <br />
Khoa học Tự nhiên và Công nghệ Quốc gia (1996).<br />
2. Ngô Trung Việt. Kỹ nghệ Phần mềm bản dịch, Nhà xuất bản Giáo dục <br />
(1999).<br />
3. Roger S. Pressman Ph.D, Software Engineering a practitioner's, McGraw Hill <br />
book Co.Singapore (2001). <br />
4. Yourdon, E. Software reuse, Application development strategies, Vol. 6, No. 12, <br />
(1994) 1 16.<br />
5. Brown, A.W., and K., C. Wallnau, Engineering of component are system, IEEE <br />
computer society press (1996).<br />
<br />
55<br />
6. Stephen R. Schach, Classical and objectoriented software engineering, <br />
McGraw Hill (1997).<br />
7. Sommerville I., Software Engineering, Addison Wesley (1995).<br />
8. Pitero Diaz R. Domain analysis for reuseability, Proc. COMPSAC'87, Tokyo, <br />
(1987) 23 29.<br />
9. Mary Kirtland. Designing component Based applications, A division Microsoft <br />
corporation, Washington (1998). <br />
<br />
<br />
<br />
APPLIED COMPONENTBASED DEVELOPMENT IN THE <br />
DEVELOPEMENT SOFTWARE PROCESS<br />
Le Van Tuong Lan<br />
College of Sciences, Hue University<br />
<br />
<br />
SUMMARY<br />
The real world is always changeable. So,in order to adapt to it, the systems that describe <br />
it must be developed. In Software Engineering, the objectbased software engineering has been <br />
considered as a useful means to solve the changes of software. However, in the big, complex, <br />
high quality systems must be completed in a short time but the oriented programming has some <br />
limits such as verifying quality, the cost of the system, etc. <br />
In this paper, we describe the role of the important method in the Software Engineering <br />
that is called the component based software engineering or the component based <br />
development. It is the developed step of the object based software engineering. This method <br />
indicates that the development software is an integrated process of the prepackaged software <br />
components.<br />
<br />
<br />
<br />
<br />
56<br />