CHƯƠNG 1
TÔNG QUAN VỀ PHÁT TRIỂN PHẦN MỀM THEO HƯỚNG CẤU
PHẦN
1.1 Các mô hình phát triển phần mềm.
Nếu một kỹ thuật X cụ thể, đang được sử dụng để lập trình các chương
trình máy tính, chúng ta sẽ nói là lập trình hướng X. Dưới đây là một số mô hình
định hướng khác nhau:
Gear-Oriented Programming( Lập trình hướng phụ tùng).
Tương tự như máy Pascal đã nói ở trên, “động cơ ” của Charles Babbage
năm 1822, lập trình có nghĩa là thay đổi bánh răng, trục, và bánh xe. Thông qua
các chuyển động vật lý và sắp xếp các bánh răng, một tính toán mới có thể được
thực hiện. Rõ ràng, hình thức này yêu cầu cả năng lực tinh thần và năng lực thể
chất phải tốt.
Switch-Oriented Programming( Lập trình hướng chuyển đổi).
Đối với thế hệ máy tính điện tử đầu tiên ENIAC(Electronic Numerical
Integrator And Computer) vào năm 1942, lập trình có nghĩa là cấu hình lại thiết
bị chuyển mạch và viết lại toàn bộ hệ thống cho mỗi chương trình hoặc tính toán
“mới”. Điều này có thể là một công việc tẻ nhạt vì ENIAC đã có 6.000 thiết bị
chuyển mạch kết nối đa vị trí với vô số các khe cắm và các cầu nhảy jumper.
Procedure-Oriented Programming (Lập trình hướng thủ tục).
Với sự giúp đỡ của các ngôn ngữ lập trình cấp cao, các lập trình viên đã
được giải phóng khỏi các thao tác về chi tiết phần cứng và ngôn ngữ máy. Ngôn
ngữ lập trình như Fortran, Pascal, C và khuyến khích các lập trình viên suy nghĩ
về thủ tục hoặc chức năng. Điều này được nêu bật bởi lập trình có cấu trúc, thiết
kế từ trên xuống( top- down). Để phát triển một chương trình máy tính,đầu tiên
các lập trình viên sẽ nghĩ về các chức năng cần được thực hiện. Mỗi yêu cầu
chức năng sẽ được thực hiện và cuối cùng là một tập hợp các thủ tục hoặc chức
năng.
Object-Oriented Programming (Lập trình hướng đối tượng)
Chương trình được xây dựng xung quanh các loại dữ liệu và các kiểu phân
cấp dữ liệu. Các khối cơ bản trong một chương trình hướng đối tượng là các lớp
và các đối tượng.
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 2
Một đối tượng là một gói thông tin được lưu trữ trong một đoạn bộ nhớ
máy tính. Mỗi đối tượng được kết hợp với một loại dữ liệu, và các kiểu dữ liệu
xác định những gì có thể được thực hiện lên đối tượng. Tất cả các ngôn ngữ lập
trình đều có sẵn các loại dữ liệu, chẳng hạn như kiểu dữ liệu số nguyên và ký
tự. Thông thường, các lập trình viên định nghĩa các kiểu dữ liệu và phân cấp dữ
liệu để họ có thể mô tả các thực thể trong các ứng dụng.
Phương pháp hướng đối tượng (Object-Oriented) đã thể hiện rõ tính ưu việt
trong phát triển phần mềm. Trong đó, tính đóng gói, trừu tượng hóa và tính sử
dụng lại làm tăng chất lượng phần mềm.
Aspect-Oriented Programming( Lập trình hướng khía cạnh)
Lập trình hướng khía cạnh (AOP) là một công nghệ mới để phân chia các
mối quan tâm trong phát triển phần mềm. AOP cho khả năng module hóa xuyên
suốt các khía cạnh của hệ thống. Giống như hướng đối tượng, khía cạnh có thể
phát sinh tại bất kỳ giai đoạn nào trong vòng đời của phần mềm, bao gồm các
yêu cầu đặc tả kỹ thuật, thiết kế, thực hiện, vv.
Một vấn đề cơ bản của AOP là phân cấp đơn giản là không đủ để nắm bắt
các cấu trúc phức tạp. Vì vậy, AOP cố gắng để khám phá một loạt các cơ chế mà
giúp cho nó có thể xem và thực hiện một hệ thống từ nhiều khía cạnh. Theo
hướng này, một ngôn ngữ lập trình mới gọi là AspectJ được thiết kế và triển
khai thực hiện. AspectJ là một phần mở rộng theo hướng khía cạnh cho ngôn
ngữ lập trình Java, cho phép các mô-đun hóa các quá trình xuyên suốt như kiểm
tra và xử lý lỗi,đồng bộ hóa , hành vi ngữ cảnh, tối ưu hóa hiệu suất, giám sát và
truy cập , gỡ lỗi, giao thức đa đối tượng…
Component-Oriented Programming (Lập trình hướng cấu phần).
Tư duy lập trình hướng thành phần (component-oriented programming)
theo ý tưởng:
• Giải quyết bài toán bằng cách xây dựng một tập các thành phần
(component) có tính độc lập tương đối với nhau. Mỗi thành phần đảm nhiệm
một phần công việc nhất định. Các thành phần này phải tuân theo tiêu chuẩn
nhất định được xác định trước bao gồm giao diện, các kết nối, phiên bản, và
triển khai. Về nguyên tắc, mỗi thành phần có thể tái sử dụng độc lập với ngữ
cảnh, nói cách khác có thể dễ dàng sử dụng tại mọi lúc, mọi nơi.
• Sau đó, người ta ghép các thành phần với nhau để thu được một phần
mềm thoả mãn một tập các yêu cầu xác định.
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 3
Với lập trình hướng thành phần, người ta có thể tiến hành lập trình theo
phương pháp sau:
• Xây dựng một thư viện các thành phần, mỗi thành phần thực hiện một
công việc xác định.
• Khi cần phát triển một phần mềm cụ thể, người ta chỉ cần chọn những
thành phần có sẵn trong thư viện để ghép lại với nhau. Người lập trình chỉ phải
phát triển thêm các thành phần mình cần mà chưa có trong thư viện.
1.2. Tình hình nghiên cứu về COP.
Năm 1975 Freed Brooks, một nhà quản lý dự án IBM, viết cuốn The
Mythical Man-month. Brooks viết một chương với tiêu đề là “No Silver Bullet”
giải thích rằng các hệ thống phần mềm là phức tạp. Ông dự đoán sẽ không có kỹ
thuật nào là duy nhất – no silver bullet – mà nó có thể cải thiện năng suất theo
danh sách yêu cầu cho mọi hệ thống. Brooks trình bày 2 phương pháp khả thi
giúp giảm mức độ phức tạp của phần mềm đó là “Buy before Build” và “Reuse
before Buy”. Các khái niệm mấu chốt được đưa ra nhằm giúp giảm được chi phí
trong công nghệ phát triển phần mềm.
IBM tiên phong mở ra lối nghiên cứu về Mô hình đối tượng hệ thống ngay
đầu những năm 1990. Một số các đóng góp được ứng dụng trong phần mềm cấu
phần đó là OLE và COM. Mô hình cấu phần phần mềm vẫn tiếp tục thu được
những thành quả đáng kể.
Theo Paul Allen thì hiện nay có đến hơn 70% hệ thống phần mềm mới
được phát triển dựa trên cơ sở cấu phần. Các cấu phần thường được phát triển
theo hướng đối tượng và được viết bằng các ngôn ngữ khác nhau, chạy trên các
môi trường khác nhau, có thể phân tán khắp nơi và người phát triển phần mềm
mới không được cung cấp các mã nguồn.
Thực tế cho thấy phương pháp Phát triển phần mềm theo cấu phần đã làm
giảm chi phí của dự án phát triển phần mềm. So với công nghệ truyền thống
chuẩn, công nghệ phần mềm trên cơ sở cấu phần quan tâm đến cách xây dựng
phần mềm nhiều hơn. Thông qua việc sử dụng lại các cấu phần, vòng đời phát
triển phần mềm được rút ngắn lại, đồng thời tăng tính mềm dẻo khi sử dụng và
bảo trì phần mềm. Hơn nữa, phát triển phần mềm có khả năng làm tăng chất
lượng phần mềm
1.3 Các khái niệm cơ bản.
1.3.1. Cấu phần (component)
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 4
Trước tiên, ta đi vào việc tìm hiểu các thuật ngữ cơ bản được sử dụng trong
CBSE, ta đi từ các khái niệm nhỏ nhất, đơn giản nhất về cấu phần.
Các cấu phần phần mềm được định nghĩa trong nhiều cách khác nhau từ
các điểm giống nhau và khác nhau của khung nhìn. [Brown 1998] trình bày bốn
định nghĩa của một thành phần phần mềm, trong tổng kết Hội thảo quốc tế
CBSE đầu tiên trong tháng 4 năm 1998:
1. Một cấu phần là một phần không tầm thường, gần như độc
lập, và là một phần có thể thay thế của hệ thống, đáp ứng một chức năng
rõ ràng trong một kiến trúc được xác định. Một cấu phần thích nghi và
cung cấp việc thực hiện vật lý của một tập các giao diện.(Philippe
Krutchen, Rational Software).
2. Một cấu phần phần mềm chạy thực (runtime) là gói kết nối
động của một hoặc nhiều chương trình quản lý như một đơn vị và truy cập
thông qua giao diện tài liệu có thể được phát hiện khi chạy thực. (Gartner
Group).
3. Một cấu phần phần mềm là một đơn vị của thành phần với
giao diện đặc tả và chỉ phụ thuộc bối cảnh. Một cấu phần phần mềm có
thể được triển khai độc lập và có thể tham gia với tư cách là bên thứ 3.
(Clemens Szyperski).
4. Một cấu phần thương mại đại diện cho việc thực hiện phần
mềm của một quá trình kinh doanh. Nó bao gồm các thành phần phần
mềm cần thiết để thể hiện, thực hiện, và triển khai các nội dung như có
thể tái sử dụng các cấu phần cho một hệ thống kinh doanh lớn hơn.
(Wojtek Kozaczynski, SSA).
Thảo luận về định nghĩa cấu phần cũng có thể được tìm thấy trong nhiều
hội nghị gần đây và các ấn phẩm [Koza 1999; Parrish 1999; Wang 2000;
Yacoub 1999; Fischer 2002; Fukazawa 2002]. Trong tài liệu này, chúng ta sẽ sử
dụng định nghĩa sau đây cho một cấu phần phần mềm:
“Một cấu phần phần mềm là một mảnh khép kín, tự triển khai mã với các
chức năng được xác định rõ và có thể được lắp ráp với các cấu phần khác thông
qua giao diện của nó”.
Từ định nghĩa này, một cấu phần là một chương trình hay một tập hợp các
chương trình có thể được biên dịch và thực thi. Đó là khép kín, do đó, nó cung
cấp chức năng mạch lạc. Nó là tự triển khai để nó có thể được cài đặt và thực
hiện trong một môi trường người dùng cuối. Nó có thể được lắp ráp với các
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 5
thành phần khác để có thể được tái sử dụng như một đơn vị trong các ngữ cảnh
khác nhau. Sự tích hợp được thực hiện thông qua giao diện của một cấu phần, có
nghĩa là việc thực hiện nội bộ của một cấu phần thường được ẩn đối với người
sử dụng.
Một phần tử phần mềm chứa chuỗi các lệnh cấp cao, các tính toán được
thực hiện bởi máy tính. Phần tử phần mềm là thực thi nếu: (1) máy tính trực tiếp
thực thi các lệnh hoặc (2) có một bộ thông dịch chạy trên máy tính dịch các câu
lệnh sang dạng máy thực thi được.
Mã nguồn phần mềm là tập các file máy có thể đọc được, chứa các câu lệnh
chương trình được viết ứng với một ngôn ngữ lập trình. Các câu lệnh này được
dịch thành các câu lệnh thực thi được hoặc nhờ vào bộ biên dịch hoặc bộ thông
dịch.
Một cấu phần phần mềm là một tập các phần tử phần mềm được lập trình.
Cấu phần đó được cài đặt, và đưa vào sử dụng. Sự khác nhau giữa phần tử phần
mềm và cấu phần phần mềm được thể hiện ở cách sử dụng. Phần mềm bao gồm
rất nhiều yếu tố trừu tượng, các đặc trưng chất lượng. Đó là thước đo để đánh
giá một cấu phần hay một quy trình có đáp ứng yêu cầu đặc tả hay không (theo
chuẩn IEEE 610.12 – 1990). Thuật ngữ phần tử được đặt trong phạm vi mô tả về
cấu phần phần mềm như sau:
• Một cấu phần phần mềm là một phần tử phần mềm tuân theo một
mô hình cấu phần và có thể triển khai độc lập, được kết hợp mà không cần
sửa đổi theo một chuẩn kết hợp.
• Một mô hình cấu phần định nghĩa các đặc tả tương tác và các chuẩn
kết hợp.
• Một cài đặt mô hình cấu phần là một tập hợp các phần tử phần
mềm xác định cần có để hỗ trợ việc thực thi của các cấu phần tuân theo
mô hình.
• Hạ tầng của cấu phần phần mềm, là một tập hợp các cấu phần phần
mềm tương tác được thiết kế để đảm bảo rằng hệ thống phần mềm được
xây dựng sử dụng các cấu phần và giao diện này sẽ thỏa mãn các đặc tả
hiệu năng đã định nghĩa.
Các định nghĩa này thể hiện mối quan hệ quan trọng giữa hạ tầng của cấu
phần phần mềm, các cấu phần phần mềm và mô hình cấu phần.
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 6
1.3.2 Mô hình cấu phần và dịch vụ cấu phần
Mô hình cấu phần :
Cấu phần là một tập các thuộc tính(properties), phương thức (method), và
các sự kiện (event). Mỗi cấu phần có một tên dùng để đại diện cho nó. Thuộc
tính tóm lược các thuộc tính của một cấu phần. Phương thức mô tả các hành vi
và dịch vụ của cấu phần. Mỗi phương thức một ký hiệu:
visibility access return_type method_name (parameter-list).
Sự kiện mô tả các hành động mà cấu phần này có thể thực hiện. Giao diện
(Interface) là một tập hợp con của tập Đề-các tập hợp các thuộc tính, phương
thức, và các sự kiện, quy định các giao tiếp với các thành phần của bên ngoài.
Ta có thể sử dụng một ký hiệu đồ họa, được gọi là biểu đồ cấu phần ( hình 2.1),
để trình bày một cấu phần. Biểu đồ cấu phần là một miêu tả của cấu phần phần
mềm.Hình chữ nhật, hình tròn, và hình thoi ở hai bên trái và bên phải đại diện
cho thuộc tính công khai, phương thức, và các sự kiện tương ứng trong giao diện
của nó. Thành phần có thể được định nghĩa chính thức là:
Hình 2.1 Cấu trúc một cấu phần
Trong đó:
P = {p:T | p ∈ Tập định nghĩa, T ∈ Kiểu}
M = {(v,a,t,i(p)) | v ∈ Tập hiển thị, a ∈ truy cập, t ∈ kiểu
i ∈ tập định nghĩa, p ∈ tham số}
E = {e:T | e ∈ sự kiện, T ∈ kiểu}
I : 2P × 2M × 2
E
Cấu phần ở mức ứng dụng có thể được sử dụng, nhưng khả năng sử dụng
lại cấu phần phần mềm mức ứng dụng là chưa đủ thích hợp. Thiếu sót của việc
sử dụng lại xảy ra bởi vì các ứng dụng là quá thô, chúng thiếu hỗ trợ kết hợp, và
C = ( P, M, E, I )
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 7
hệ điều hành thiếu các chuẩn đặc tả miền. Các thiếu sót đó được thể hiện qua
một số đặc điểm:
Thiếu tính chất hạt nhân – Lack of granularity – Các ứng dụng là quá thô
để có thể cải thiện việc sử dụng lại. Các nhà phát triển ứng dụng thường được
yêu cầu thiết kế và cài đặt các chức năng chung chung mà bất kỳ ứng dụng nào
cũng có thể có. CBSE tìm ra các nhân tố chung đưa vào các các dịch vụ được
cung cấp bởi sự cài đặt mô hình cấu phần hoặc các cấu phần đã được đặt hàng
và tích hợp vào hạ tầng cấu phần. Tư tưởng trọng tâm của CBSE là phát triển
các công nghệ chi tiết hơn, các cấu phần được làm mịn dần và cho phép sử dụng
lại ở mức các ứng dụng thành phần tương tự như tại mức ứng dụng.
Thiếu sự hỗ kết hợp – lack of composition support –Trên thực tế, các hệ
điều hành đảm bảo rằng các ứng dụng thực thi hoàn toàn độc lập với nhau. Cơ
chế giao tiếp quy trình nội bộ được nói đến là khả năng trao đổi dữ liệu giữa các
ứng dụng, nhưng các giao diện ứng dụng thường đặc tả kém và thiếu các chuẩn
kết hợp.
Thiếu các chuẩn đặc tả miền – (Lack of domain - specific standards) – Các
dịch vụ trong một hệ điều hành là quá chung chung không hỗ trợ được các miền
ứng dụng đặc tả. Ví dụ, một hệ thống đồng bộ cần các dịch vụ khác nhau và giao
diện lập trình ứng dụng (APIs-Application programming Interfaces) hơn là một
hệ thống điều khiển quy trình hoặc một ứng dụng viễn thông.
Mục tiêu của CBSE là phát triển các hệ thống phần mềm bằng cách tạo ra
các cấu phần có thể sử dụng lại tách biệt thì tốt hơn là các gắn vào ứng dụng.
Một cách tự nhiên, các cấu phần thô này cần có các chuẩn tương tác và kết hợp,
cũng như chuẩn hóa các hạ tầng và các dịch vụ. Sự tham gia của CBSE là để
định nghĩa các mô hình cấu phần theo các chuẩn như vậy và để cung cấp các cài
đặt mô hình cấu phần kết hợp để kích hoạt các cấu phần và các hạ tầng cấu phần
được thiết kế, cài đặt, và triển khai.
Cấu phần vận hành trên cơ sở các mô hình cấu phần gồm hai mức vận
hành: [3]
Mức thứ nhất: Một mô hình cấu phần định nghĩa cách xây dựng từng cấu
phần riêng lẻ.
Mức thứ hai: Một mô hình cấu phần điều khiển hoạt động chung một tập
cấu phần trong hệ thống trên cơ sở cấu phần giao tiếp và tương tác với nhau.
Một mô hình cấu phần tạo nên sự kết hợp bằng việc định nghĩa một chuẩn tương
tác và nâng lên thành giao diện đặc tả tường minh. Nó có thể được tạo từ cấu
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 8
phần khác hoặc phần tử phần mềm khác bằng cách tạo ra các kết nối được tập
hợp hoặc tích hợp riêng.
Mô hình cấu phần định nghĩa cơ chế cấp phép cho việc tạo các kết nối được
tập hợp hoặc tích hợp. Theo D’Souza và Wills (1999) thì “khả năng lắp ghép”
chỉ thành công nếu một cấu phần biểu thị được chính xác yêu cầu của cấu phần
khác mà nó kết nối tới. Quy trình đó cần phải đủ phức tạp để thu được kết quả
đặc tả chính xác. Chúng ta sử dụng khái niệm gắn kết cho các cấu phần viết ra
chẳng hạn như bao gói, liên kết tĩnh - động, “plug-and-play”.
Mô hình cấu phần có thể định nghĩa các cơ chế tuỳ biến để mô tả cách mà
các cấu phần có thể mở rộng mà không cần có sự sự hiệu chỉnh. Chúng ta coi
việc hiệu chỉnh như một dạng cải tiến của tương tác. Một mô hình cấu phần có
thể cũng định nghĩa các thuộc tính cấu phần bắt buộc như định dạng mã, các
chuẩn tài liệu hoặc các giao diện độc lập của nhà sản xuất.
[3]Mô hình cấu phần định nghĩa một tập các chuẩn bao gồm: cài đặt cấu
phần, đặt tên, khả năng vận hành nội bộ, tuỳ biến, kết hợp, phát triển và triển
khai. Một mô hình cấu phần cũng định nghĩa chuẩn cho việc triển khai mô hình
liên kết các cấu, tập các đối tượng phần mềm thực thi được yêu cầu hỗ trợ thực
thi của các cấu phần tuân theo mô hình.
Một số các mô hình cấu phần đang được sử dụng hiện nay là mô hình thành
phần CORBA của OMG, COM+/DOM, và SUN -javabean, Enterprise
JavaBeans của Microsoft. Không nhất thiết khi phát triển cấu phần phải tuân
theo một chuẩn, nhưng tại một thời điểm không nên có quá nhiều chuẩn.
Các phần tử cơ bản của một mô hình cấu phần được Weinreich và
Sametinger liệt kê chi tiết - 2001. Hình dưới đây tổng hợp lại các phần tử trong
mô hình cấu phần, nó chỉ ra rằng các phần tử đã được phân loại theo các giao
diện cấu phần, các phần tử liên quan đến thông tin mà ta cần sử dụng đến cấu
phần đó trong một chương trình và các phần tử tập trung vào việc triển khai cấu
phần.
Hình 1. Các phần tử cơ bản của một mô hình cấu phần[1]
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 9
Các phần tử cấu phần được định nghĩa dựa trên giao diện của nó. Mô hình
cấu phần đặc tả cách định nghĩa các phần tử đó, như tên hàm, tham số, các ngoại
lệ. Một số mô hình cấu phần yêu cầu các giao diện đặc tả phải được định nghĩa
bởi một cấu phần.
Một phần quan trọng của mô hình cấu phần là định nghĩa cách mà các cấu
phần nên được đóng gói triển khai độc lập, để các đối tượng thực hiện được. Bởi
vì các cấu phần là những thực thể độc lập, chúng phải được đóng gói một cách
độc lập với hạ tầng cấu phần xác định hoặc không được định nghĩa trong một
giao diện yêu cầu.
Các phần tử của một mô hình cấu phần
Trong thị trường cấu phần phần mềm toàn cầu, các cấu phần được triển
khai một cách độc lập và tùy thuộc vào sự kết hợp với bên thứ 3. Thị trường này
cần có các chuẩn. Các chuẩn giao tiếp và chuẩn trao đổi dữ liệu giữa các cấu
phần khác nhau của các nhà sản xuất cấu phần là rõ ràng. Như vậy, một chuẩn
hoạt động nội bộ – đôi khi gọi là chuẩn lắp ráp hoặc kết nối – là một phần tử
trung tâm trong một mô hình cấu phần. Các phần tử cơ bản khác của một mô
hình cấu phần là các chuẩn: giao diện, đặt tên, siêu dữ liệu, tuỳ biến, kết hợp,
phát triển và triển khai.
Một mô hình cấu phần có thể cũng có các chuẩn đặc trưng để mô tả các
tính năng đặc tả miền cần thiết trong các ứng dụng. Ví dụ, sự kết hợp các cấu
phần trong các miền với các hoạt động đang diễn ra đòi hỏi tiếp cận các mô hình
chuỗi được chuẩn hoá và các cơ chế đồng bộ. Một hệ xử lý phân tán mở đòi hỏi
các chuần lời gọi phương thức từ xa, và chuẩn bảo mật. Các ứng dụng nghiệp vụ
3 lớp cần các dịch vụ giao dịch được chuẩn hoá và cơ sở dữ liệu APIs. Cuối
cùng, một mô hình cấu phần với các tài liệu kết hợp (như OLE) cần đặc tả từng
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 10
phần, các quan hệ bao hàm và giao diện. Các mô hình cấu phần đặc tả miền gọi
tới các chức năng đặc biệt trong cài đặt mô hình cấu phần.
Giao diện, thỏa thuận và ngôn ngữ định nghĩa giao diện
Mục đích của các cấu phần là được sử dụng lại trong phần mềm. Hai hình
thức sử dụng lại là sử dụng lại hộp trắng và sử dụng lại hộp đen.
Sử dụng lại hộp trắng nghĩa là mã nguồn của cấu phần phần là có sẵn đầy
đủ và có thể nghiên cứu, sử dụng lại, lắp ghép hoặc chỉnh sửa. Sử dụng lại hộp
trắng thể hiện vai trò chính trong các nền tảng hướng đối tượng, đáp ứng sức
mạnh kế thừa cho các cài đặt phần mềm sử dụng lại. Nhược điểm của sử dụng
lại hộp trắng là các khách hàng sử dụng cấu phần có thể thay đổi mã nguồn cấu
phần đó nếu có sự thay đổi bên trong chương trình.
Sử dụng lại hộp đen dựa trên nguyên tắc che giấu thông tin. Người dùng
cấu phần chỉ có thể dựa trên vào các giao diện. Các giao diện này là sự mô tả
hoặc đặc tả hành vi cấu phần. Thông qua các giao diện, các lời gọi cấu phần có
thể được thay đổi tiếp tục thỏa mãn yêu cầu định nghĩa. Giao diện thể hiện một
cách tường minh và qua các công cụ chẳng hạn như bộ biên dịch, có thể kiểm
chứng tĩnh khả năng tương thích với các cấu phần client.
Một giao diện không phải là phần hợp thành của cấu phần, mà các phần
hợp thành cấu phần là các dịch vụ chẳng hạn như một thoả thuận giữa một cấu
phần với các client quan hệ với nó. Một giao diện đặc tả các dịch vụ yêu cầu từ
client đến cấu phần; cấu phần phải cung cấp một cài đặt các dịch vụ này. Thêm
vào đó, một giao diện có thể bao gồm các ràng buộc trên các dịch vụ được sử
dụng, nó phải được xét trên cấu phần và các client của nó. Các đặc tả giao diện
là phần tử trung tâm trong một mô hình cấu phần. Một mô hình cấu phần định
nghĩa cách mà một hành vi cấu phần được mô tả – dựa trên giao diện, các đặc tả
khác (phi chức năng) và các tài liệu thích hợp. Một mô hình cấu phần định nghĩa
các phần tử, mỗi phần tử có thể cấu thành một giao diện. Các phần tử của một
giao diện gồm có:
• Tên của các phép toán liên quan đến ngữ nghĩa.
• Các tham số của chúng
• Kiểu tham số
Các giao diện gồm các ngoại lệ được đưa ra, các điều kiện trước, điều kiện
sau phải được đáp ứng khi sử dụng các thao tác riêng lẻ, và các đặc tả từng phần
hành vi mong muốn của một giao diện cài đặt cấu phần. Nhiều mô hình cấu
phần có một ngôn ngữ định nghĩa giao diện (IDL – Interface definition
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 11
language) với các giao diện mô tả và các phần tử của nó sử dụng một ký hiệu
độc lập cài đặt.
Mô hình cấu phần có thể định nghĩa một tập các giao diện đặc tả cần được
cài đặt bởi các cấu phần. Các giao diện này được sử dụng qua cài đặt mô hình
cấu phần cung cấp các dịch vụ đã có sẵn chẳng hạn như các giao dịch hoặc bảo
mật.
Đóng gói và triển khai
Các chuẩn mô hình cấu phần đã được chứng nhận, như các kết nối Internet
băng thông rộng, sẽ làm thay đổi công việc triển khai của phần mềm đóng gói
sẵn. Điều này trở nên không cần thiết khi thực hiện gói các hệ thống phần mềm
khổng lồ và các tài liệu đi kèm vào thành 1 sản phẩm dùng ngay được. Thêm
vào đó, để các cài đặt mô hình cấu phần được tường minh, các cấu phần nhỏ
được lắp ghép vào xây dựng ứng dụng. Các kết nối internet nhanh hỗ trợ người
dùng tải các cấu phần đã đóng gói và tài liệu đi kèm để phát triển các hệ thống
phần mềm.
Một mô hình cấu phần mô tả cách mà các cấu phần được đóng gói, bởi vậy
chúng có thể được triển khai độc lập. Một cấu phần được triển khai nghĩa là nó
được cài đặt và cấu hình trong một hạ tầng cấu phần. Cấu phần được đóng gói
thường gồm mã chương trình, dữ liệu cấu hình, các cấu phần khác và các tài
nguyên đi kèm. Một mô tả triển khai cung cấp thông tin bên trong của gói (hoặc
các gói liên quan) và các thông tin khác cần thiết cho quy trình triển khai. Chuẩn
triển khai đặc tả cấu trúc và ngữ nghĩa cho các mô tả triển khai và nó quy định
định dạng các gói. Thêm vào nữa, mô hình cấu phần có thể định nghĩa các quy
trình triển khai bao gồm cả việc đăng ký cấu phần.
Sự cài đặt mô hình cấu phần và các dịch vụ
Nếu một cấu phần thực hiện một công việc cụ thể và cung cấp một giao
diện thì bên gọi có thể sử dụng cấu phần đó nếu tuân theo các đặc tả của giao
diện cấu phần. Các đặc tả cấu phần bao gồm sự định nghĩa chặt chẽ về cú pháp
các phương thức, cũng như mô tả về ngữ nghĩa của giao diện. Các tiếp cận hiện
tại ở mức đăng ký là sử dụng các ngôn ngữ đặc tả giao diện - IDLs cho việc mô
tả các giao diện. IDLs được định nghĩa bởi CORBA, COM và COM+ là các ví
dụ điển hình. Việc cài đặt mô hình cấu phần được thiết kế cho tập các phần tử
phần mềm hỗ trợ thực hiện các cấu phần trong một mô hình cấu phần. Một mô
hình cấu phần có thể được nhúng trong một HĐH nhưng nó sẽ chỉ khiến HĐH
trở nên phức tạp thêm, và hạn chế tính ứng dụng của mô hình cấu phần. Việc cài
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 12
đặt mô hình cấu phần tiêu biểu cho một lớp mỏng thực thi ngay trên HĐH. Các
HĐH đa nhiệm có thể di chuyển lớp này để đảm bảo khả năng ứng dụng tối đa
của mô hình cấu phần.
Chuẩn tương tác cho một mô hình cấu phần xác định cách một giao diện
phải được đăng ký với sự cài đặt mô hình cấu phần trước khi sử dụng. Các giao
diện được định nghĩa một cách tường minh bằng việc sử dụng ngôn ngữ định
nghĩa giao diện IDL và được lưu trữ lại, kết hợp với cài đặt mô hình cấu phần.
Chuẩn kết hợp cho một mô hình cấu phần xác định cấu phần đăng ký với sự
thực thi mô hình cấu phần trước khi sử dụng nó. Nhà phân phối cài đặt mô hình
cấu phần cung cấp các công cụ như chương trình biên dịch IDL nhằm hỗ trợ sự
phát triển của các cấu phần. Như vậy, sự cài đặt mô hình cấu phần giúp khả
năng thực thi các cấu phần tuân theo mô hình. Khi nhà sản xuất mô hình cấu
phần cũng là nhà thiết kế mô hình cấu phần, mô hình cấu phần đó có thể bị trở
thành độc quyền.
Một phần quan trọng của mô hình cấu phần là sự chuẩn hoá môi trường
chạy thật để hỗ trợ thực thi cấu phần. Điều này bao gồm đặc tả giao diện cho cả
hai dịch vụ chung và các dịch vụ đặc tả miền tại thời điểm chạy. Các dịch vụ
chung nhằm hỗ trợ các hệ thống cấu phần trên cơ sở đối tượng bao gồm việc tạo
đối tượng, quản lý chu trình, hỗ trợ gắn kết đối tượng (object-persistence
support) và bản quyền. Mô hình cấu phần trong hệ thống phân tán phải định
nghĩa các dịch vụ:
• Các dạng giao tiếp khác, chẳng hạn như
các hàng đợi thông điệp
• Cảnh báo trên cơ sở sự kiện từ xa
• Các dịch vụ định vị từ xa
• Bảo mật
Mô hình cấu phần hỗ trợ việc xây dựng các hệ thống thông tin đa lớp đặc tả
giao diện lập trình ứng dụng (APIs) truy cập dữ liệu và các dịch vụ cho quản lý
giao dịch và cân bằng tải.
Một thiết kế trên cơ sở cấu phần sẽ phản án quy trình chuẩn hóa đặc trưng
đến các dịch vụ đặc tả miền. Một ví dụ về một tập các chuẩn được xây dựng trên
một mô hình cấu phần chung là kiến trúc quản lý đối tượng (OMA- Object
management architechture). OMA được định nghĩa bởi nhóm quản lý đối tượng
(OMG – Object management group), một tổ chức phi lợi nhuận với khoảng 800
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 13
công nhân có kỹ năng và tay nghề. Trọng tâm của mô hình này là kiến trúc
CORBA, một chuẩn vận hành cho các ứng dụng trên cơ sở đối tượng phân tán
hỗ trợ các ngôn ngữ cài đặt khác nhau.
Các mô hình cấu phần nổi tiếng khác như COM của Microsoft và JavaBean
của Sun định nghĩa các dịch vụ giống nhau có ích trong các hệ thống đa miền.
Tất cả các nhà cung ứng cài đặt mô hình cấu phần cũng đang phát triển các
tương tác đặc tả miền và các chuẩn kết hợp.
Hình 2. Chuẩn đặc tả miền [3]
Hiện nay, một số HĐH như Microsoft Windows đã kết hợp các cài đặt mô
hình cấu phần. Như vậy, các hệ điều hành có thể tiến hành phục vụ trực tiếp các
cài đặt mô hình cấu phần trên CBSE.
Như thế ta có một số các tổng kết sau:
Các HĐH cung cấp:
• Sự trừu tượng dưới góc độ phần cứng (hạ tầng)
• Môi trường thực thi
• Các dịch vụ nền cho ứng dụng
Các mô hình cấu phần: Mô hình cấu phần định nghĩa các chuẩn đặt tên,
siêu dữ liệu, đặc tả hành vi cấu phần, sự cài đặt cấu phần, sự vận hành trong cấu
phần, sự tuỳ biến, sự kết hợp và triển khai.
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 14
Cài đặt mô hình cấu phần: cài đặt mô hình cấu phần là dựa trên từng mô
hình cấu phần riêng lẻ. Nó cung cấp:
• Môi trường chạy.
• Các dịch vụ cơ bản.
• Các dịch vụ ngang có tác dụng trong các miền đa nhiệm.
• Dịch vụ dọc cung cấp chức năng cho từng miền trong các cấu phần
phần mềm.
1.3.3 Nguyên tắc của COP.
Cụm từ “cấu phần” đã tồn tại trong ngành công nghiệp máy tính trong một
thời gian dài. Như một vấn đề thực tế, khái niệm về cấu phần đã hình thành ngay
cả trước khi máy tính được phát minh. Một nhà xây dựng sử dụng thành phần từ
các ngành công nghiệp khác để xây lên một ngôi nhà. Một ví dụ thực tế phổ biến
nhất là các nhà sản xuất ô tô sử dụng nhiều cấu phần từ các ngành công nghiệp
khác để sản xuất ra một chiếc xe hơi. Trong công nghiệp phần cứng máy tính,
các kỹ sư thiết kế không cần phải sản xuất các chi tiết phần cứng cơ bản từ đầu
cho mỗi sản phẩm. Chip vi xử lý, chip bộ nhớ, bảng mạch, và card mạng luôn có
sẵn để xây dựng một hệ thống máy tính lớn và mạnh mẽ.
Mặc dù có nhiều định nghĩa khác nhau về cấu phần phần mềm [Allen năm
1997; Garlan 2000; Liskov 2000; Luck năm 2000; 2000 Wang, 2002], các
nguyên tắc về cấu phần phần mềm vẫn giữ nguyên. Tiếp theo, ta sẽ tìm hiểu một
số nguyên tắc cơ bản trong công nghệ phần mềm dựa trên cấu phần nói chung
và trong lập trình hướng cấu phần nói riêng.
Nguyên tắc 1: Trừu tượng hóa và phân tích các cấu phần đại diện.
Chiến lược cơ bản và hiệu quả cho việc giải quyết bất kỳ vấn đề lớn và
phức tạp trong khoa học máy tính là “chia để trị”. Một ý tưởng lớn trong phát
triển phần mềm dựa trên cấu phần là tạo ra mô-đun phần mềm tự khép kín và
triển khai độc lập. Vì vậy các nhà phát triển khác nhau sẽ có thể làm việc trên
các cấu phần khác nhau một cách độc lập, không cần giao tiếp nhiều với nhau,
nhưng các cấu phần sẽ làm việc với nhau liền mạch. Ngoài ra, trong giai đoạn
bảo trì phần mềm, nó sẽ có khả năng sửa đổi một số cấu phần mà không ảnh
hưởng đến tất cả các cấu phần khác.
Khi ta phân tích một hệ thống thành các cấu phần riêng biệt mà:
• mỗi cấu phần ở cùng một mức độ ;
• mỗi cấu phần có thể được giải quyết độc lập;
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 15
• các triển khai của các cấu phần này có thể được tích
hợp để đáp ứng các yêu cầu hệ thống ban đầu.
Trừu tượng hóa là một cách để phân tích sản phẩm bằng cách thay đổi mức
độ chi tiết được xem xét. Các cấu phần phần mềm ẩn các chi tiết nhất định để
chỉ cung cấp thông tin cần thiết cho khách hàng thông qua giao diện của chúng.
Trừu tượng hóa và sau đó phân tích là chiến lược điển hình trong quá trình phát
triển phần mềm. Phân tích được sử dụng để tách phần mềm thành các cấu phần
có thể được kết hợp để giải quyết vấn đề gốc; trừu tượng hỗ trợ trong việc đưa ra
một lựa chọn tốt cho các cấu phần. Khoa học máy tính đã trải qua nhiều sự trừu
tượng hóa khác nhau. Các thủ tục trừu tượng cho phép chúng ta phân tách một
vấn đề thành các đơn vị độc lập chức năng. Dữ liệu trừu tượng hoặc kiểu dữ liệu
đóng gói là đối tượng dữ liệu với một tập hợp các hoạt động đặc trưng cho hành
vi của các đối tượng.
Nguyên tắc 2: Tái sử dụng nên đạt được ở các mức độ khác nhau.
Phần mềm tồn tại trong các hình thức khác nhau trong suốt quá trình công
nghệ phần mềm. Theo mô hình và giai đoạn phân tích, các yêu cầu đặc tả được
xem như một hình thức của phần mềm. Trong giai đoạn thiết kế, thiết kế kiến
trúc và thiết kế chi tiết các tài liệu cũng là một phần của phần mềm. Mã nguồn
trong giai đoạn thực hiện và mã thực thi triển khai đến các trang web khách
hàng chắc chắn là phần mềm. Vì vậy, tái sử dụng phần mềm bao gồm tái sử
dụng bất kỳ thuộc tính phần mềm trong các định dạng khác nhau.
Có năm hình thức của các cấu phần phần mềm, cụ thể là : cấu phần đặc tả,
cấu phần giao diện, cấu phần thực thi, cấu phần cài đặt và các cấu phần đối
tượng. Mỗi hình thức của các cấu phần phần mềm có thể được tái sử dụng trong
các giai đoạn khác nhau của một vòng đời phần mềm.
Nguyên tắc 3: Phát triển phần mềm dựa trên cấu phần tăng độ tin cậy
của phần mềm.
Với sự tiến bộ nhanh chóng của phần cứng máy tính với độ tin cậy cao,
mạnh mẽ, rẻ hơn và sẵn sàng cho các ứng dụng khác nhau. Độ tin cậy của một
hệ thống máy tính dựa chủ yếu vào sự tin cậy của phần mềm. Phát triển phần
mềm dựa trên cấu phần và lập trình hướng cấu phần cung cấp một cách có hệ
thống để đạt được các hệ thống đáng tin cậy. Dựa vào trừu tượng hóa các cấu
phần và hệ thống hóa các cấu phần, việc xác nhận yêu cầu trọng tâm và xác
minh an toàn cho các hệ thống dựa trên cấu phần trở nên dễ dàng. Mặt khác, các
cấu phần có thể tái sử dụng thường được thử nghiệm thông qua quá trình xác
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 16
nhận và sử dụng thực sự trong một thời gian dài, và do đó chất lượng của chúng
luôn được đảm bảo.
Nguyên tắc 4: Phát triển phần mềm dựa trên cấu phần có thể tăng
năng suất phần mềm.
Phần mềm dựa trên cấu phần được xây dựng bằng cách lắp ráp các cấu
phần tái sử dụng hiện tại. Quá trình này nhanh hơn nhiều so với phát triển một
ứng dụng từ vạch xuất phát.
Nguyên tắc 5: Phát triển phần mềm dựa trên cấu phần khuyến khích
việc tiêu chuẩn hóa phần mềm.
Như Clemens Czyperski mô tả trong [Clemens 2003], muốn cho thị trường
cấu phần có thể phát triển, tiêu chuẩn cấu phần phải được thực hiện. Tiêu chuẩn
có thể được sử dụng cho việc tạo ra một thỏa thuận chi tiết kỹ thuật cụ thể về
giao diện, cho phép cấu phần có hiệu quả, và đảm bảo COP là một mô hình lập
trình mới trong đó “plug-and-play” trở thành một thực tế trong phát triển phần
mềm giống như trong phần cứng.
1.4 So sánh OOP và COP.
Ngôn ngữ tổng quan của COP.
Chương trình là tập hợp của các yếu tố lập trình cơ bản. Trong ngôn ngữ
máy, các yếu tố lập trình cơ bản là số 0 và số 1. Ngôn ngữ Asembly sử dụng
"chữ" đơn giản như là yếu tố cơ bản để lập trình trừu tượng chuỗi nhị phân.
Ngôn ngữ cấp cao đã thực hiện mã hóa gần với con người nên có thể đọc được.
Các yếu tố cơ bản trong lập trình ngôn ngữ cấp cao là các hàm, cũng được gọi là
thủ tục hoặc thủ tục con. Trong một ngôn ngữ OOP (lập trình hướng đối tượng),
một đối tượng là một yếu tố lập trình cơ bản đóng gói dữ liệu và hành vi. Vì vậy,
OOP là một cách phân vùng chức năng trong mô hình hóa một vấn đề hoặc quá
trình thành các đối tượng thành phần của nó. Các dữ liệu trừu tượng cung cấp
một cách thức tổ chức dữ liệu liên kết với các hoạt động , cho phép các lớp hoặc
đối tượng được sử dụng lại dễ dàng trong một chương trình khác. Trong COP,
các yếu tố lập trình cơ bản là các thành phần, khép kín và tự triển khai. Nó ở
mức cao hơn trong việc tái sử dụng phần mềm.
Tổng quan công nghệ phần mềm COP.
OOP được yêu cầu để hỗ trợ đóng gói, kế thừa, và đa hình. Tuy nhiên, nó
không bao giờ đạt được mục tiêu của nó, vì vi phạm kế thừa thực hiện đóng gói
đúng . Hơn nữa, các đối tượng hoặc các lớp không được tự triển khai. Chúng ta
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 17
có thể phân biệt COP với OOP về khía cạnh kỹ thuật phần mềm khác nhau như
sau:
• COP là dựa trên giao diện, trong khi OOP là dựa trên đối
tượng .
• COP là một công nghệ đóng gói và phân phối, trong khi
OOP là một công nghệ thực thi.
• COP hỗ trợ tái sử dụng cao cấp, trong khi OOP hỗ trợ tái sử
dụng ở mức độ thấp.
• COP, về nguyên tắc, có thể được viết bằng ngôn ngữ nào,
trong khi OOP là bị ràng buộc vào các ngôn ngữ OOP.
• COP đã lỏng hóa các thành phần, trong khi OOP đã kết chặt
chẽ các đối tượng phụ thuộc vào nhau thông qua việc thực hiện kế
thừa.
• COP có các cấu phần là các hạt lớn, trong khi OOP có các
đối tượng là các thành phần mịn.
• COP hỗ trợ đa giao diện, và thiết kế theo định hướng giao
diện, trong khi OOP không cung cấp mối quan hệ rõ ràng về giao
diện giữa các siêu lớp và lớp con.
• COP hỗ trợ các hình thức khám phá động, trong khi OOP
cung cấp hạn chế hỗ trợ cho các đối tượng và cơ chế thu hồi thành
phần thời gian chạy.
• COP có cơ chế tốt hơn cho bên thứ ba, trong khi OOP đã hạn
chế các hình thức kết nối (phương pháp gọi trình).
• COP cung cấp hỗ trợ nhiều hơn cho các dịch vụ bậc cao (an
ninh, giao dịch, vv), trong khi OOP có giới hạn bộ các dịch vụ hỗ
trợ như an ninh, giao dịch, vv.
• Các cấu phần của COP được thiết kế để tuân theo quy định
của khung thành phần cơ bản, trong khi các đối tượng OOP được
thiết kế để tuân theo các nguyên tắc OO.
Bảng 1.2 cho một bản tóm tắt ngắn gọn về tính phổ biến và sự khác biệt
giữa các trình có cấu trúc (SP), OPP, và COP. Trong mục về khả năng sáng tác,
SP là thấp nhất, OOP là cao, và COP là rất cao. Hai đơn vị thực hiện khác nhau
trong SP không bao giờ có thể được hoán đổi cho nhau. Tuy nhiên trong OOP,
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 18
hai đối tượng khác nhau cùng thực hiện các đặc điểm kỹ thuật được hoán đổi
cho nhau.
Tuy nhiên, tại COP, hai thành phần khác nhau với các chi tiết kỹ thuật khác
nhau được hoán đổi cho nhau, miễn là họ đáp ứng những yêu cầu về giao diện
cho tất cả các thành phần khách hàng. Ví dụ, một máy chủ thành phần có thể
thay thế một số khác thậm chí nếu nó có một đặc điểm kỹ thuật khác nhau, miễn
là đặc điểm kỹ thuật của nó bao gồm các giao diện cùng các thành phần do
khách hàng yêu cầu.
Khả năng SP OOP COP
Phân chia và chinh phục.
• Quản lí độ phức tạp.
• Chia các vấn đề lớn thành các vấn đề nhỏ hơn
Yes
Yes Yes
Thống nhất dữ liệu và chức năng.
• Một thực thể phần mềm kết hợp dữ liệu và
chức năng để xử lí dữ liệu đó.
• Cải thiện sự gắn kết.
Yes Yes
Đóng gói.
• Các khách hàng của phần mềm được bảo vệ
khỏi việc làm thế nào để lưu trữ dữ liệu hoặc làm
thế nào để chức năng của chúng được thực hiên.
• Giảm các mối nối.
Yes Yes
Nhận dạng
• Mỗi đơn vị phần mềm đều có bản sắc độc đáo
Yes Yes
Giao diện
• Đại diện phụ thuộc đặc tả.
• Phân chia một cấu phần đặc tả vào giao diện.
• Hạn chế sự phụ thuộc giữa các thành phần.
Yes
Triển khai.
• Các đơn vị trừu tượng có thể được triển khai
độc lập
Yes
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 19
Hình 1.2 So sánh COP, OOP và SP
1.5 .Vì sao COP quan trọng
Làm thế nào để thuần thục hơn trong kỹ thuật xử lý với sự phát triển của
các hệ thống phức tạp?
Xây dựng các hệ thống dựa trên các thành phần là một phần tự nhiên của
các hệ thống kỹ thuật.Ví dụ ngành công nghiệp ô tô, phát triển xe ô tô rất phức
tạp bằng cách sử dụng các thành phần có kích thước từ một ốc vít nhỏ đến các
hệ thống con phức tạp như động cơ và hệ thống truyền lực .
Các nhà máy ô tô hiện đại đã trở thành hệ thống sản xuất và tích hợp các
chi tiết hệ thống .Nó rất dễ dàng để ứng dụng cho nhiều ngành công nghiệp và
các ngành kỹ thuật khác sử dụng hiệu quả các thành phần của với một tập
nghiêm ngặt các tiêu chuẩn xác định khả năng tương tác. Trong hàng trăm năm,
ngành công nghiệp đã áp dụng các tiêu chuẩn thành phần cho các bộ phận lắp
ráp và các công cụ hoán đổi để tăng tốc độ phát triển các sản phẩm phức tạp.
Đây chính là cuộc cách mạng công nghiệp mà đã thay đổi đáng kể tính chất của
sản xuất, trong đó máy móc thay thế các công cụ, hơi nước và các nguồn năng
lượng khác thay thế sức lực của con người hoặc động vật, công nhân không có
kỹ năng thay thế công nhân lành nghề, và các sản phẩm lớn được thực hiện bởi
máy móc và dây chuyền lắp ráp thay thế các sản phẩm thủ công.
Tuy nhiên trong ngành công nghiệp phần mềm, các sản phẩm vẫn còn chủ
yếu là các mặt hàng thủ công. năng suất thấp, chất lượng không được bảo đảm,
và hầu hết các dự án đều tràn lan . Hiện tượng được gọi là "cuộc khủng hoảng
phần mềm". Do sự vượt bậc của công nghệ phần cứng, chi phí của việc phát
triển một ứng dụng máy tính là chủ yếu là do phần mềm. Vấn đề chính của kỹ
thuật phần mềm là làm thế nào để tạo ra phần mềm có chất lượng hiệu quả. Các
cấu phần được nhiều kỹ sư phần mềm coi như một công nghệ quan trọng để giải
quyết cuộc khủng hoảng phần mềm. Cách mạng công nghiệp phần mềm sẽ xảy
ra thông qua công nghệ phát triền phần mềm dựa trên cấu phần.
Có một số lý do vì sao COP là quan trọng. COP cung cấp một mức độ trừu
tượng cao hơn. Có một số lượng ngày càng lớn của các thư viện cấu phần tái sử
dụng mà hỗ trợ cho việc phát triển ứng dụng cho lĩnh vực khác nhau.
Có ba mục tiêu chính của COP: chinh phục sự phức tạp, quản lý thay đổi,
và tái sử dụng.
1. Chinh phục sự phức tạp.
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 20
Chúng ta đang sống trong một thế giới phức tạp ở thời điểm bùng nổ thông
tin. Theo một nhóm nghiên cứu tại UC Berkeley [Sims 2000], “thế giới sản xuất
từ 1 đến 2 exabytes thông tin duy nhất mỗi năm, đó là khoảng 250 MB cho mỗi
người đàn ông, phụ nữ, và trẻ em trên trái đất. Một Exabyte là một tỷ gigabyte,
hoặc 10
18
byte”.Trong khoa học máy tính, kích thước và độ phức tạp của phần
mềm đã được tăng lên đáng kể. Bảng 1.1 cho thấy sự so sánh của một số hệ điều
hành về kích cỡ của chúng. Chuỗi đầu tiên trong mỗi dòng là phiên bản; thứ hai
là số dòng mã nguồn, K = 1.000 và M = 1.000.000. So sánh trong một cột sẽ có
ý nghĩa, trong khi so sánh giữa các cột thì không [Tanebaum 2001]. May mắn
thay, COP cung cấp một cách hiệu quả các phương pháp để đối phó với sự phức
tạp của phần mềm: phân chia và chinh phục.
2. Quản lý thay đổi.
Thay đổi vốn có trong công nghệ phần mềm. Sự thay đổi yêu cầu người
dùng, thay đổi chi tiết kỹ thuật, thay đổi nhân sự , thay đổi ngân sách, thay đổi
công nghệ, vv. Một trong những nguyên tắc cơ bản của kỹ thuật phần mềm là
nhấn mạnh tầm quan trọng của quản lý thay đổi. Điều quan trọng là nhấn mạnh
điểm chính về sự phụ thuộc giữa các thành phần trong kiến trúc và thiết kế, và
về quản lý của những cá nhân có liên quan. COP cung cấp một cách hiệu quả để
thực hiện việc đối phó với thay đổi theo các nguyên tắc công nghệ phần mềm:
lập kế hoạch cho sự thay đổi, thiết kế cho sự thay đổi, và xây dựng cho sự thay
đổi. Các thành phần được dễ dàng thích ứng với yêu cầu và thay đổi mới. Các
kỹ sư phần mềm đã đi đến sự đồng thuận rằng cách tốt nhất đối phó với thay đổi
liên tục là xây dựng các hệ thống bao gồm các thành phần tái sử dụng phù hợp
với tiêu chuẩn cấu phần và kiến trúc plug-in.
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 21
3. Tái sử dụng.
Phần mềm cho phép tái sử dụng để thiết kế và thực hiện một cái gì đó một
lần và sử dụng nó hơn và hơn nữa trong các hoàn cảnh khác nhau. Điều này sẽ
làm tăng tăng năng suất lớn, mang lại các giải pháp tiên tiến nhất, cải thiện chất
lượng, khắc phục hậu quả, vv. Có nhiều mức độ khác nhau về việc tái sử dụng
phần mềm. Ví dụ sao chép mã nguồn, là mức thấp nhất của sử dụng lại. Thư
viện thủ tục, chức năng là một hình thức tốt hơn về tái sử dụng hơn so với sao
chép mã nguồn, nhưng không thể mở rộng. Lớp thư viện là một hình thức tốt
hơn về tái sử dụng, và chúng có thể được mở rộng. Tuy nhiên, nó đòi hỏi rất
nhiều sự hiểu biết trước khi các lớp có thể được tái sử dụng. Hơn nữa, nó chỉ hỗ
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 22
trợ tái sử dụng hộp trắng; khách hàng sẽ bị ảnh hưởng nếu thân của các lớp thay
đổi. Ví dụ, trong một ngôn ngữ OOP như C# hoặc Java, các lớp có nguồn được
liên kết từ các lớp cơ sở. Thay đổi trong bất kỳ các lớp cơ sở trong hệ thống
phân cấp, kế thừa sẽ bị phá vỡ và các lớp nguồn sẽ thay đổi. Hơn nữa, giới hạn
của tái sử dụng là ngôn ngữ cụ thể, không sử dụng lại được mã nguồn trên các
ngôn ngữ khác. COP hỗ trợ mức cao nhất của tái sử dụng phần mềm vì nó cho
phép tái sử dụng các loại bao gồm cả tái sử dụng hộp trắng, tái sử dụng hộp
xám, và tái sử dụng hộp đen. Tái sử dụng hộp trắng có nghĩa là nguồn gốc của
một thành phần phần mềm được làm sẵn và có thể được nghiên cứu, tái sử dụng,
thích nghi, hoặc sửa đổi. Tái sử dụng hộp đen được dựa trên nguyên tắc cất giấu
thông tin. Giao diện quy định cụ thể các dịch vụ một khách hàng có thể yêu cầu
từ các thành phần một. thành phần này cung cấp việc thực hiện các giao diện mà
khách hàng dựa vào. Miễn là các giao diện không thay đổi, các thành phần có
thể được thay đổi trong nội bộ mà không ảnh hưởng đến khách hàng.Tái sử
dụng hộp xám là trung gian giữa tái sử dụng hộp trắng và tái sử dụng hộp đen.
Khi kích thước và độ phức tạp của các hệ thống phần mềm tăng lên, việc
xác định và quản lý phù hợp các mối liên kết giữa các cấu phần của hệ thống trở
thành một mối quan tâm trọng điểm. COP cung cấp các giải pháp quản lý để đối
phó với sự phức tạp của phần mềm, các thay đổi liên tục của hệ thống, và các
vấn đề về tái sử dụng phần mềm. COP hiện nay là mô hình để phát triển hệ
thống phần mềm lớn trên thực tế, ví dụ, phân phối các ứng dụng quy mô doanh
nghiệp, ứng dụng web N-tier, dịch vụ Web.
1.6. Công nghệ phần mềm dựa trên cấu phần.
Lập trình hướng cấu phần (COP – Component Oriented Programming) và
công nghệ phần mềm dựa trên cơ sở cấu phần (CBSE – Component Based
Software Engineering) đôi khi có thể hiểu là một. Tuy nhiên, CBSE là thuật ngữ
rộng hơn, và COP chỉ là một phần trong đó.
CBSE = COA + COD + COP + COM
Trong đó COA (component oriented analysis), COD (Component oriented
design) và COM (Component oriented management) thể hiện các thuật ngữ về
phân tích hướng cấu phần, thiết kế hướng cấu phần và quản lý hướng cấu phần.
Mục tiêu của CBSE là phát triển phần mềm một cách nhanh chóng, và giảm chi
phí bằng cách xây dựng các hệ thống thông qua việc thu thập các cấu phần có
sẵn. Thiết kế, phát triển, và duy trì các cấu phần nhằm mục đích sử dụng lại là
một quy trình rất phức tạp, với các yêu cầu ở mức cao không chỉ đáp ứng được
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 23
tính chức năng và mềm dẻo cấu phần mà còn đáp ứng việc phát triển phần mềm
một cách có tổ chức. CBSE bao gồm rất nhiều các nguyên tắc công nghệ phần
mềm và các kỹ thuật khác nhau.
Trong công nghệ phần mềm truyền thống, quy trình phát triển phần mềm
bao gồm các hoạt động hoặc các trạng thái tuần tự, cách đặt tên, phân tích, thiết
kế, ngôn ngữ lập trình, kiểm thử, và tích hợp. Trong CBSE, các giai đoạn phát
triển chính vẫn tuân thủ theo các bước thực hiện như quy trình phát triển truyền
thống, và bổ sung thêm bước tập hợp và lắp ghép các cấu phần. Ta có thể nhận
thấy rằng, điểm nổi bật trong CBSE so với công nghệ phần mềm truyền thống
chính nằm ở hướng thiết kế, bước thu thập và lắp ghép các cấu phần vào việc
xây dựng một hệ thống hoàn thiện.
Dưới cách nhìn về các cấu phần, có 2 loại hoạt động căn bản đó là: Phát
triển cấu phần để sử dụng lại (DF – Developing for reuse) và sử dụng lại các cấu
phần đã có sẵn (DW - Developing with reuse). Với việc phát triển cấu phần để
sử dụng lại có thể được tổ chức theo cách tiếp cận công nghệ phần mềm truyền
thống, nhấn mạnh vào các chuẩn cấu phần. Mỗi cấu phần cung cấp 2 loại giao
diện: (1) giao diện cung ứng – định nghĩa các dịch vụ quảng bá cấu phần này sẽ
cung ứng và (2) giao diện yêu cầu – đặc tả các dịch vụ mà cấu phần cần đến để
thể hiện khả năng làm việc.
Theo các nhìn hướng quy trình công nghệ, có 5 cách định nghĩa trong
CBSE:
1. Đặc tả cấu phần (Component specification): Nó thể hiện đơn vị đặc tả
của phần mềm, mô tả hành vi của tập các đối tượng cấu phần và định nghĩa một
đơn vị thực hiện. Hành vi được định nghĩa dưới dạng tập các giao diện. Một đặc
tả cấu phần được nhận diện dưới dạng một thực thi cấu phần.
2. Giao diện cấu phần (Component interface): Giao diện thể hiện định
nghĩa tập các hành vi có thể được cung ứng thông qua một đối tượng cấu phần.
3. Sự thực thi cấu phần (Component implementation): Là một sự nhận
diện của đặc tả cấu phần, có khả năng triển khai độc lập. Điều này nghĩa là nó
có thể được cài đặt và thay thế một cách độc lập các cấu phần khác. Như thế
không có nghĩa là nó độc lập với các cấu phần khác – nó có rất nhiều sự phụ
thuộc.
4. Cấu phần được cài đặt (Installed component): Là sự sao chép của một
thực thi cấu phần dưới hình thức cài đặt (hoặc triển khai). Một sự thực thi cấu
phần được triển khai bằng cách đăng ký nó với môi trường khi chạy thật. Môi
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 24
trường chạy thật định nghĩa khả năng của cấu phần được cài đặt nhằm tạo một
thể hiện khi thực hiện bước vận hành nó.
5. Đối tượng cấu phần (Component object): Một đối tượng cấu phần là
một thể hiện của cấu phần được cài đặt. Khái niệm này khá giống với khái niệm
trong lập trình hướng đối tượng, một đối tượng cấu phần trong lập trình hướng
cấu phần là một đối tượng có dữ liệu riêng và định nghĩa duy nhất, nó thực hiện
hành vi thực thi xác định. Một cấu phần cài đặt có thể có các đối tượng cấu
phần đa nhiệm hoặc đơn nhiệm.
Khả năng của cấu phần và cách dùng nó được đặc tả bởi giao diện. Giao
diện là một sự trừu tượng hóa dịch vụ, nó định nghĩa các thao tác mà dịch vụ hỗ
trợ, nó độc lập với bất kỳ sự thực thi đặc biệt nào. Một cấu phần phần mềm giao
tiếp và tương tác với thế giới bên ngoài thông qua giao diện của nó, với tài liệu
đặc tả giao diện và tương tác sẽ cho chúng ta biết được nó làm gì (what), nội
dung của mã thực thi trong cấu phần, quy trình xử lý (how) được ẩn hoàn toàn
và người sử dụng cấu phần không phải quan tâm tới việc nó làm như thế nào.
2.1.1 Chuẩn tương tác [3]
Chuẩn giao diện là các yêu cầu bắt buộc phải sử dụng và tuân theo đối với
cấu phần phần mềm để các phần tử phần mềm tương tác trực tiếp với các phần
tử khác. Chuẩn giao diện khai báo một giao diện có thể chứa cái gì.
Cấu phần cung cấp một giao diện cung ứng nếu cấu phần đó chứa sự cài
đặt tất cả các thao tác được định nghĩa bởi giao diện. Một cấu phần cần một giao
diện yêu cầu, nếu cấu phần đó đòi hỏi một tương tác được định nghĩa trong giao
diện này và nó giả thiết rằng có phần tử phần mềm nào đó sẽ cung cấp giao diện
này. Một cấu phần không thể cung cấp một giao diện cung ứng, nếu thiếu một
trong số giao diện yêu cầu của nó. Vì vậy, lý tưởng nhất, một cấu phần cần được
triển khai với thông tin mô tả đặc tả tất cả các giao diện yêu cầu và giao diện
cung ứng của nó.
Các phần tử phần mềm tương tác với một cấu phần thông qua việc sử dụng
các giao diện được định nghĩa rõ ràng và được tài liệu hóa. Một chuẩn tương tác
định nghĩa các phần tử của một giao diện. Nếu cấu phần chỉ có thể thực hiện
chức năng của nó bằng cách tương tác với phần tử phần mềm khác, tất cả các
phụ thuộc bối cảnh phải được đặc tả tường minh trong tài liệu cấu phần. Chuẩn
tương tác bao gồm các tương tác trực tiếp và gián tiếp giữa các cấu phần.
Một cấu phần có thể có một phụ thuộc bối cảnh tường minh trên HĐH, một
cấu phần phần mềm, hoặc một phần tử phần mềm khác. Một chuẩn tương tác
Bài giảng COP – Chuyên ngành: CNPM - Version 1
Biên soạn: Ngô Thị Lan & Nguyễn Lan Oanh - 25
đặc tả dạng các phụ thuộc bối cảnh tường minh mà cấu phần có thể có. Một
dạng khác của phụ thuộc bối cảnh tường minh xảy ra khi một cấu phần phải
chạy trên một máy tính với một xung nhịp xác định để đạt được hiệu năng mong
muốn. Nếu cấu phần phải tương tác với một thiết bị phần cứng, cấu phần đó sử
dụng các giao diện lập trình ứng dụng (APIs - Application Programming
Interfaces) của HĐH hoặc giao diện của cài đặt mô hình cấu phần. Trong cả hai
trường hợp, thông tin mô tả cấu phần phải định nghĩa rõ ràng phụ thuộc bối cảnh
tường minh này.
Để có thể sử dụng lại và kết nối giữa các cấu phần, nhà sản xuất và người
dùng cấu phần phải thống nhất được tập các giao diện trước khi thiết kế. Kết quả
của sự thoả thuận này là các giao diện được chuẩn hoá. Mặt khác, các giao diện
có thể được mô tả bằng cách sử dụng nhiều ký pháp khác nhau, nó phụ thuộc
vào thông tin mà chúng ta muốn chứa đựng, và mức chi tiết của đặt tả. Phần
giao diện chỉ mô tả tên của các phương thức, kiểu của các tham số, và giá trị trả
về tức là nó chỉ cung cấp các đặc tả của tập các thao tác chứ không phải từng
thao tác đơn lẻ.
2.1.2 Chuẩn kết hợp
Để có thể triển khai độc lập, cấu phần phải cách ly khỏi HĐH và các cấu
phần khác. Do đó, cấu phần phải đóng gói các thuật toán và dữ liệu cần thiết cho
việc thực hiện nhiệm vụ của nó [3].
Cách thức một cấu phần được triển khai phụ thuộc mô hình cấu phần của
nó, thông thường có ba bước triển khai sau:
1) Cài đặt cấu phần.
2) Cấu hình cấu phần và HĐH, nếu cần.
3) Đưa cấu phần vào sử dụng.
Mã nguồn của cấu phần phần mềm là tất cả các file mà máy có thể đọc
được (các thủ tục và mô-đun) và máy có thể thực thi (các thư viện lúc thực thi
và các mã đối tượng được biên dịch sẵn), được đóng gói thành phần tử phần
mềm máy đọc được. Một cấu phần phần mềm được đóng gói dạng nhị phân
nhằm:
• Bảo vệ các thuộc tính mang đặc trưng riêng của nhà sản xuất
cấu phần phần mềm.
• Giảm chi phí cài đặt và triển khai.