Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Đại cương Cấu thành phần mềm hướng đối tượng...

Tài liệu Cấu thành phần mềm hướng đối tượng

.PDF
36
22
58

Mô tả:

MERSTRASZ & TSICHRn ZIS OBJECT-ORIENTED SOFTWARE COMPOSITION PR EN T IC E-H A LL 1992 CÂU THÀNH PHẦN MỂM HƯỚNG ĐỔI TƯƠNG HÀ NỒI 1998 Mục lục Lời nói đ ầ u ..............................................................................................................I L ờ i giới th iệ u .........................................................................................................I I Những Icri cảm ơ n ................................................. ...................................... " I X 3 0 1 8 ^ 4.^ 4 ^ 7 1 1 3 ' 6 ' ^ 7 X 7 7 ' 9 6 o 5 9 ' ' Chương 3, Tương tác của các ứng dụng hướng đối tượng........................ 3. ISử dụng lại các đối tượng từ những môi trường khác nhau....................... 3.2 Tương ĩác hướng thủ tục............................................................................ 3.3 Tương tác hướng đối tượng...................................................................... 3-4 So sánh các cách tiếp cận hỗ trợ tương tác................................................ 3.5 Tương tác hướng đối tượng-Kết nối giao diện.......................................... 3.6 Thích nghi giao d iệ n ................................................................................. 3.7 ánh xạ đối tư ợng................................ -........................................ .............. 3.8 Những kết luận và các phương pháp nghiẽn cứu...................................... 8 w 2 2 Chương 2. Tương tranh trong các ngòn ngữ lập trình hướng đòi tượng, 2.1 Giới thiệu.................................................................................................... 2.2 Không gian thiết kế..................................................................................... 2.3 Tiêu chuẩn đánh giá những lựa chọn thiết kế ngôn ngữ.......................... 2.4 Khám phá không gian thiết kế ngỏn ngữ.................................................. 2.5 Kết luậ n............................................................. ......................................... I8 一 Chương !• cỏ n g nghệ phần mém hướng thành phần.......................................1 1.1 Lời giới th iê u ........................................................................................... .. 1 1.2 Đối tượng và thành phần..................................................................................5 1.3 K ỹ thuật hỗ trợ cho các thành phần................................................................ 7 1.4 Công nghệ thành phần................................................................................. 18 1.5 Kết luân.._______ " .................................................................................... 22 o ^ « L H 1L t i o o o . 1 1 1 Ỉ 1 1 li - Ii ỉ 0 3 6 ^ ^ C M l u Chương 6 H àm , Bản ghi và tính tương thích trong phép tính 入N ......... 6.1 Giới thiệu................................................................................................... 6.2 Phép tính Lambda vói tham số có tên...................................................... 6.3 Tính toán tại lúc thực hiện...................................................................... 6.4 Mối quan hệ tương th ích .......................................................................... 6 s Kết l i i A n .................................. .............................................................................. .................. 60 66 71 7h 2 1 1 Chương 5 Phối cảnh thòi gian của những đối tượng phức h ọ p .............. . 5. ỉ Lòi giới th iệ u ............................................................................................ 5.2 Logic mênh để có yếu tố thời g ia n .......................................................... 5.3 Đặc tả các đặc tính có thời giaiì............................................................... 5.4 Sự kiểm đ ịn h ........................................................................ .................... 5.6 Những nhận xét và tổng kết...................................................................... ^ Chương 4 Các kiểu chính qui cho những đối tượng tích c ự c ................... 4.1 Lời giới th iệ u ............................................................................................. 4-2 Các kiểu khả năng thay thế và các đối rích cực........................................ 4.3 Giao các kiểu dịch vụ................................................................................ 4.4 Khả năng thay thế yèu cầu..................... .................................................. 107 4.5 Xem các đối iưọìig như quá trình chính qui............................................ 4.6 Kiểu chính qui con................................................................................... 4.7 Tính thỏa mãn yêu cầu.............................................................................. 4.8 Những vấn đề còn bỏ ngỏ......................................................................... 4.9 Những nhận xét và kết luận...................................................................... C hương 7 Sự phân loại thành phan tro ng co sở thòng tin phần m è m ,." 179 7.1 G iới thiệu........................................................................................................ 179 7.2 Cơ sờ thỏne tin phâiig mềm........................................................................... 181 7.3 Sự khôi phục thồng tin và người d ù n g ......................................................... 186 7.4 Sơ đồ phần lớ p ............................................................................................... 189 7.5 Sắp xếp hợp lý hóa quá trình phân lớ p ......................................................... 195 7.6 K inh nghiệm ................................................................................................... 197 7.7 Kết lu ậ n ............................................................................................................202 C hương 8 Quản lý sự tiến hóa lớp tro n g các hệ thống hướng đối tưọng. 205 8.1 Thiết kế và tái thiết kế đối tượng................................................................... 205 8.2 May ghép lớ p ................................................................................................... 207 8.3 Giải phẫu lớ p ...................................................................................................209 8.4 Phiên bản hóa lớp............................................................................................ 216 8-5 Tổ chức lại lớ p .................................................................................................222 8.6 Thay đổi sự hủy bỏ.......................................................................................... 235 8.7 Sự chuyển đ ổ i................................................................................................. 238 8.8 L ọ c ....................................................................................................................241 8.9 Kêì lu ậ n ........................................................................................................... 245 一 Chương 9 Bộ du vệt thủn thu ộc..........................................................................251 9.1 G iới thiệu. . . . . ................... .............................................................................. 251 9.2 Yêu cầu duỵột..................................................................................................257 9-3 Bộ duyệt thân thu ộc....................................................................................... 258 9.4 Bộ duyệt thân thuộc qua ví d ụ ....................................................................... 265 Q s Kết liiA n ..... ....... ............................. ........... ................................................. 278 o s s ơ 8 ữỵ V u .9 T-', i i yc , i ^ Tì ỉ 2 6 ỉ ChưuTìg 10 Sự họp thành trự c quan của các ứng dụng phẩn mềm 10-1 Giới thiệu........................................................................................... 10.2 Cổng việc liên quan........................................................................... 10.3 Khung họp thàỉìh trực quan.............................................................. 10.4 Vista- mẫu thử công cụ hợp thành trực quan.................................. 10.5 Các ứng dụng m ẫ u ............................................................................ 10.6 Thảo luận........................................................................................... 10 7 Kết lu A ĩi........................... ......................... ..................................... 06 Chương 11 K hung thành phần đa phưong tiệ n .........................................310 11.1 Phương tiện số và đa phương tiệ n ............................................................310 11.2 Hệ thống đa phương tiện và hợp thành đa phương tiện......................... 311 11.3 Khung đa phương tiệ n ................................................................................313 11.4 V í dụ vể khung đa phương tiện-Các thành phần.....................................314 11.5 Các ví dụ ứng dụng Video W idgest........................................................ 318 11.6 Tóm lươc........ :.......................................................................................... 322 I■ Chương 12 Gluons và sự hợp tác giữa những thành phần phần mềm .... 325 12.1 G i^ thiêu............... :…二 … 二 … ............. r .......... ........... ........... ........... ........... ........... . 12.2 Tổng quan vể kiểu mẫu hợp tấc................................................................ 328 12.3 Yêu cầu cho một khung tài chính............................................................. 337 12.4 G luons......................................................................................................... 342 12.5 Gluons và khung tài chính......................................................................... 345 12.6 Kết lu â n .......................................................................................................352 Lời nói đầu Có lẽ, "Vượt ra ngoài các Đ ối tượng " phải là tiêu đề con của tập sách này, vì phần lớn Iiội dung trái với hình ảnh về "những Đối tượng" quen biết như đã được thừa nhận từ lâu. Dạiig thức lập trình hướng đối tương bây giờ đã được chấp nhận vững chắc ĩrong cộng đổng làm phần mềm vì nó đề xuất một cổng nghệ mạnh và hứa hẹn nhất cho sự phát triển phán mềnì trong số các công nghệ hiên có, cũng như khả năng diễn đạt và sức mạnh mô hình hóa của nó được đánh giá cao. Tuy nhiên, một trong những hứa hẹn lớn nhất mà nó đưa ra vào giai đoạn đầu của nó là một sự cải tiến vượt bậc trong sự biên soạn và việc sử dụng lại phần mềm, điều mà nó vẫn chưa đạt được. (Con người đòi khi làm phức tạp hóa với nhữne mạng của những phftn cấp lớp). Và sự nghiên cứu liếp diễn. Khoảng mười năm vể trước, Dennis và Oscar, đến từ Toronto, đã thành lập Nhóm các Hệ thống Đối tượng tại Trườns đại học Geneva, và bắt đầu một số dự án nghiên cứu nhằm inở rộng dạng thức hướng đối tượng theo những cách khác nhau. Chỉ vài năm sau. nhóm này đă trờ thành một tru!ì'j; tâm nghiên cứu về công nghệ hướng đối tượĩis đáng chú ý và nâng nổ ĩihất châu Au. CĨUÌR trong thời gian đó, một bộ phạn của nhóm đã bị cuốn hút vào dự án ESPRIT lớn được gọi là IT H A C A , dự án này hướn2 tới việc sản xuất một môi í rường phát triển ứng dụng trên-cư sờ công nghệ hướng đối tượng- Tập sách nằv giới íhiội! những thành quả của mười năm nghiên cứu và phát triển của nhóm, dưới sư điều khiển bởi triết học sáng sủa của Deiinis về nehiẻn cứu và sáng tạo. Nhóm đà giải quyết các vấn đề thực tiễn và những vấn để có cơ sơ thực tiễn vững chắc. Nghể nghiệp trước đó của Deniìis là nhà lý thuyết hàm đệ quy học được ờ Alonzo Church tại Princetoỉi, đồng thời được khích lệ bỏi công việc nềiì tảng trong nhóm, môt vài chương trone tập sách nàv giới thiệu những kết quả đó. "Vượt ra ngoài các Đ ối tượng" là tiêu đề của chương trình thảo luận ờ Hội nghị châu Âu vể lập trình hướng đối tượng (EC00P'91), được tổ chức bởi Oscar Nierstrasz và Dennis Tsichritzis ở Geneva vào tháng 7/ 1991. Họ đã có cái nhìn rõ ràng về việc chúng ta/họ đi tới đâu từ "những Đối tượng" mà hứa hẹn trước đây chỉ hoàn tất phần nào. M ột trong những cái nhìĩì của họ là sự tiếp cận "trên cơ sở thành phần" cho sự kiến truc phần mểm. Xây dựng phần inềm tương ỉai cho ứng dụng mở linh hoạt phải được thực hiên bởi sự hợp thành và cấu hình của các thành phần phần inểm khớp tươim thích mà chúng khái quát hóa các đối tượng, các thành phần và các hàm. Oscar và Laurent giải thích sự tiếp cận IIày trong chương đầu của tập sách này. Bây giờ vào giữa thập niên 90’ các nhà nghiên cứu tiên phong đang đấu tranh để vượt ra ngoài "những Đ ối tượng" trong sự tìm kiếm các cách tiếp cận phát triển phầa mềm tốt hơn. Thành phần thông minh, những Ngôn ngữ phối hợp, sự tích hợp của những ràns buộc và những Đối tượng, Phát triển Trên cơ sở Thành phần,.. Những đóng góp trong tập sách này để xuất những chìa khóa quí giá và những gợi ý cho những người nào muốn vượt lên ưèn "những Đ ối tượng". ưniversity o f Tokyo, January 1995 A kinori Yonezawa Lời giới thiệu Công nghê Hướng đối tượĩig đã cùng với chúng ta từ giữa những nâm 1960, nhưng nó chỉ bắt đầu có một sự tác đông công nghiệp đáng kể từ giữa những năm 1980. Có cả các lý do tốt lẫn xấu cho việc tiếp nhận cỏng nghè này, và thậm chí những câu chuyện thành công cũng nói lên rằng thật không dẻ dàng gì để đưa kỹ thuật hướng đối tượng vào nơi mà trước kia chưa hề đươc sử dụng. Một vài những lý do đáng ngờ cần phải thảo thuận "việc đi theo hướng đối tương" là: • "Lập trình hướng đối tượng là một kiểu tốt hơn của lập trình có cấu trúc" Có lẽ, nhưng những phương pháp lặp trình có cáu trúc sẽ không giúp bạn nhiểu trong viêc phát triển các ứng dung hướng đối tượng. Lập trình hướng đối tượng không phầbchỉ là lập trình có cấu trúc được khoác lẻn một cái mũ mới. • X h ú n g ta sẽ có khả năng xây dựiig những ứng dụng nhanh chóng hơn vì những đối tượng là sử dụng lại được" - có thể có một chỗ trống lớn giữa phần mểm được viết ừong một ngôn ngữ hướng đối tượng và một cơ cấu của những lớp đối tượng có thể thật sự sử dụng lại được. Các cơ cấu khó phát triển, và luôn luôn không dể dàng để sử dụng. • "Sẽ là dể dàng hơn để bán các sản phẩm của chúns ta nếu như chúng ta có thể nói với những khách hàng của ta rằng chúng là hướng đối tượng" - chi phí và sự mạo hiểm của việc tiếp nhận công nghê hướng đôi tượng có thể là rát cao, và sẽ không được tiếp nhận dễ dàng. Hơn nữa, có lý do tốt cho việc tiếp nhận công nghệ hướng đối tượng: nó dường như để xuất phương tiên tốt nhất để đối phó với sự phức tạp và sự biến đổi trong các hê thống lớn. Khi nào những họ pủa các hệ (hống giống nhau cần phải xây dưng, hoặc các hẻ thống đơn độc cần phải trải qua sự thay đổi thường xuyên theo yẻu cầu, các ngôn ngữ hướng đối tượng, những cồng cụ và những phương pháp đề xuất phương tiện để nhìn những hệ thốíìs như vậy như sự hợp thành linh hoạt của những thành phần phần mềm. Điều đó có thể vảii còn yêu cầu nhiều kỹ nâng xây dựng hệ th ố n g linh h o ạ t m à nó phù hợp với Iihiểu nhu c ầ u k h ác nhau, n h im s lối thiểu cồng nghệ hướng đối tượng đơn giản hóa nhiệnì vụ. Sự hợp thành phần mềm hướng đối tượng tiếp nhận quan điểm rằng công nghê hướng đối tượng chủ yếu là kiến tạo những ứng dụng phần mềm linh hoại từ những thành phần phần mềm. Mặc dù những còng cụ và những phương pháp ngôn ngữ hướng đối tượiìg,đã trải qua một chặng đường dài kể từ khi ra đời lập trình hướng đối tượng, công nghê vẫn chưa được hoàn thiện. Cuốn sách này giới thiệu một loạt kết quả của những dự án nghiên cứu liên quan tới sự hợp thành phần mềm hướng dôi tượng mà được thực hiên trong nhóm các hệ thống đối tượng tại Trường đại học Geneva, hoặc bởi những cộng sư trong các dự ăn nghiên cứu phối hợp, kéo dài khoảng mười năm. Cho nên, quyển sách này là một sự nỗ lực để tổng hợp và sắp xếp những ý tường mà đã được phát triển bởi một nhóm những người cùng sát cánh làm việc qua vài năm. Mặc dù nhiều chủ đề khác nhau được nghiên cứu, khi cùng trình bày chúiig, chúng tôi dự định chỉ ra những ý tưởng và những nguyên lý liên quan chặt chẽ với sự họp thành phần mềm, khi xem xét thiết kế ngôn ngữ lập trình, đạc tả hình thức , những công cụ và những môi trường, hoặc sự phái triển ứng dụng. Những sợi chỉ đồng hành xuyên suốt quyển sách bao eồm tính tương thích như một cách hình thức hóa những cách có hiệu lực của cấu thành những thành phán, những đối tượng động như là nền tảng cơ bản cho sự phát triển của những hệ thống mở, những thủ tục như một khía cạnh cần thiết của khớp tùv thích cho những đối tượng động, sự hợp thành chức năng bậc cao hơn nhir sự bổ sung tới sự họp thành đối tượng, và sự tiến triển của những đối tượng vh những khung đối tượng như mộl khía cạnh quan trọng đối với sự bắt nhập trong chu kỳ sốne phần mểni. Quyển sách này lôi cuốn những nhà nghiẽn cứu và những người đang hành nghể quen thuộc với công nghệ hướng đối tượng, những ai quan tâm đến những phương hướng nghiên cứu có quan hệ tói sự hợp thànli phán mềm. Mạc dù quyển sách này chưa được thiết kế như một sách giáo khoa, nó thích hợp cho một xêiniiia tiền tiến về sự nghiên cứu hướng đối tượng. Những chương riêng lẻ có thể được đọc độc lập. Thứ tự giới thiệu đã được lựa chọn chủ yếu để minh họa một chuỗi những ý tưởng toát ra từ thiết kế ngôn ngữ lập trình tới những môi trường và những ứng dụng. K hổng chì "khung nhìn Genever" của sự phát triển hướng đối lượng được giới tliiệu, nià đă có cỏ' gắng đáng kể tiên tới đặt cône việc trong ngữ cảnh, và một vài chươne chứa đựng những sự kiểm soát rộne, lớn của công việc Uên quan. Nhóm các Hệ thống Đối tương dược thành lập bởi Dennis Tsichritzis vào năm 1985, sau đó Ông ta niấl vài ĩiăm hướng dẫn nghiên cứu trong ĩĩnh vực những Hệ thống Thông tin Văn phòng. Vào lúc đó, ngày càng rõ ràng (1) mô hình hướng đối lượng quan trọng cho việc mô hình hóa những hệ íhống văn phòng, nhưng những rnô hình kiểu này vẫiì chưa được phái triển, và (2) các nguyên mẫu của những công cụ văn phòng tiền tiến sẽ dễ dàng phát triển hơn khi sử dụng những cổng cụ và kỹ thuật hướng đối tượng, tuy vậy công nshệ vẫn chưa có sẩn. Hai quan sát này cho phép chúng ta kết hiận rằng, từ khi tính hưởng đối tượng trở nên một nhân tố đặc biệt tới hạn cho việc xây dựng các ứng dụng tiền tiến và phức tạp, chúng ta phải tập trung phát triển công nghê này nhiều hơn là theo đuổi nghiên cứu trong những hệ thống văn phòng với những công cụ khổng tương xứng và sự hỗ trợ mang tính phương pháp luận. Chương đầu tiên của quyển sách này tổng kết m ối liên hệ giữa những cách tiếp cận hướng đối tượng và sự phát triển hướng thành phần, tổng quan Iihững vấ【 i để nghiên cứu nguyên lý trong thiết kế các ngổn ngữ lập trình, các công cụ, các môi trường và những phương pháp để hỗ trợ sự phát triển hợp thành. Sự phân biệt giữa những đối tượng và những thành phần được tranh luận m ội cách chi tiết và ảnh hưởng của sự phát triển tạo dựng vào những chu kỳ sống phần mềm cũng được giới thiệu. Một chủ đề quan trọng xuyên suốt quyển sách này là khái niệm vể vai trò của niột kỹ sư thành phần - như một người chịu trách nhiẹm xác định những khung thành phần - cần phải được thể hiện tường minh trong chu kỳ sống phần mềm. Mặc dù qu y ển s á c h này tập trung vào nội d u n e CÔIÌH nghệ, nó c ó sự liến bộ liên quan giữa ngôn ngữ và các hệ thống lập trình với những công cụ, những khung và những phương pháp. H ai dự án nghiên cứu đầu của nhóm tập trung vào nội dung ngồn ngữ lập trình. L a i tạo là một cố gắng trưóc đâv để tích hợp những lớp và thừa kế những đặc tính "trực giao" khác, như chặt chẽ về kiểu, sự trùng nhau và tính liên tục. Knos là những đối tưựiig động mà có thể di trú lừ máy tính tới máy tính bên trong mạng cục bộ, và thay hành vi của nó một cách động theo những quy tắc được khởi động bởi những điều kiện bên trong hoặc trạng thái của nhữns tấm bảng đen truyền tin. Knos quan hệ chạt với cái mà bây giờ được biết như là "những tác nhân thồng m inh". Cồng việc lai tạp cuối cùng đưa đến những khảo sát chi tiết hơn bởi Michael Papathomas trong mối liên hộ giữa sự trùng nhau và sử dụng iại (chương 2), và bời D im itri Konstantas trong việc hỗ trợ sự phản tán cho những hệ thống inở linh hoạt (chương 3). Công việc ưén Knos dẫa tớ i cóng việc nền tảng của Eduardo Casais vào trong những dạng quy củ hơn của sự tiến hóa những thư viện hướng đối tượng và tới kỹ thuẠl m ới để tổ chức lai những hệ phàĩì cấp lớp (chương 8). Pha khởi đầu của ihí nghiệm này cho phép chúng ta có được sự hiểu biết sâu sắc cần thiết cả nội dung lý thuyết lẩn thực hành của những hệ thống đối tượng. Như một hệ quả đầu tiên, mối quan tàm của nhóm về những khía cạnh hình thức của ngữ nghĩa nsỏĩì ngữ lập trình và những đặc đi em của những hệ thống đối tượng trở thành sâu sắc hơii, và dẫn dắt đến công việc thực thi bởi Michael Papathomas và Oscar Nierstrasz về những khái niệm ,'khóp tương thích" cho những đối tượng động (chương 4), của CostasArapis về việc mô hình hóa và lập luận vể những khía cạnh thường tình của việc cộng lác các hệ thống đối tượng (chương 5), và của Laurent Danii vể những mô hình mới của khả Iiãng hợp thành, tăng cường sự lạo kiểu con cho Iihữns. đối tượng (chương 6). Song song với những khảo sát Iv thuyết này, nhóm đà phát Iriển những mối quan tâm inới về lĩnh vực những dựng cụ phần mềm và những niôi trường phát triểii. Eugenc Fiume, (người đã đến viếng thăm từ Trưởng đại học Toronto,) và Laiircnt Dami vào năm 1988 phái triển nguyên mẫu của "ngôn ngữ thảo chương tạm thời" cho nhữns đối tượng sống động. Đây là đột phá đấu ĩiêĩì của nhóm vào việc áp dụng công nghệ hướng đối tượng cho lĩnh vực của những ứiig dụng đa phương tiện. Khái niệm "nguyên bản " như một đặc tả mức cao của sự phối hợp trong một tập những đối tượĩiH được đóng gói sẵn trở thành một đề tài theii chốt trong nhóm vào ihời gian đó, tuy ý tưởng về việc có thể được chuyên từ phạm vi của lính linh hoạt tơi Iihững đối tượng phần mềm nói chung như thế nào. Vào khoảng thời gian này, chúng tỏi bi lôi cuốn vào trong IT H A C A , một Dự án tích hợp Công nghê lớn chương trình ESPRIT của Cộng đồng châu Au. Đối tác đầu tiên là N ix d o rí của hê thống thông tin Berlin (về sau Siemens-NixdorO, và các cộng tác viên bao gồm Bull (Paris), Datamont (M ilan), T A O - Tècnics en Autom atitzaciò d'oficines (Barcelona) và FORTH - Quỹ Nghiên cứu và Công nghệ, Hellas (H eraklion). Mục đích của dự án là sản xuất một môi trường phát triển ứng dụng đầy đủ, trên nền tảng cồng nghệ hướng đối tượng, bao gồm inột ngôn ngữ lập Những iời cảm ơn Có nhiều người tham gia trong nhữiis dự án được thôiig báo ò đây hơn là các tác giả có thể kể hết. Marc Stadelmaiin và Jan V iie k thực hiện mẫu thử VST đầu liên. Betty Junod vàSerge Renfer đã góp phần vào IT H A C A và những dự án khác. Gdrald Bumand, Philippe Comu, Jean-Henry M orin, Prdddric Bình, Vassilis Prevelakis và D idier Vallet đã đóng góp rất nhiều cho nhóm làm việc. Nhóm cũng thu được nhiều từ sự íhain gia của những khách mời đà có mặt khắp nơi từ vài tháng tới vài năm. Jeaiì Chuông, Tín đổ Cơ đốc Breiteneder, Eugene Fiume, Rosario Girardi, Nhà vệ sinh Hogg,Nigel Horspool, Gerti Kappel, Barbara Pemici, Claudio Trotta’ Peter W egĩier và Claudia W emer giúp đỡ nhiều tới những ý tưởng của chúng tồi. Đóng góp của một số người là vô giá trone việc chuẩn bị quvển sách năv. Chúng tôi đặc biệt cám ơn Jiri Dvorak, Karl Guggisberg, Thilo Eielmann, Markus Luiĩipe, Theo D irk M e ijler, Jean-Guy Schiieider, Palrick Varone và Jan V itek vì những sự hiệu đính kỷ lưỡng vài chương của quyển sách này. Chúng tôi đồns ihời cám ơn những tác giả, và đậc biệi Eduardo Casais, Laurent Dami' Simon Gibbs' D im itri Konstantas và V icki de Mev vì Iihữns:đóng góp của họ tới những chương mà họ khổng phải là đồng tác giả. Cuối cùng, chúng tôi cám ơn Isabelle H iiber và Angela Margiotta vè giilp đỡ của họ trong việc chuẩn bị bản thảo cuối cùng. Chung tôi đặc biệt biết ơn sự hỗ trợ về tài chính của Qùy Quốc gia Thụy sĩ cho Sự nghiên cứu Khoa học (FNRS) đã tài trợ một loạt dự án trong nhiều năm. Chúng tôi cám ƯII ủy ban Thúc đẩv Nghiên cứu Khoa học (CERS) vì iihữnR đóng Q,óp vào sự tham gia của chúng tỏi trong dự áĩì IT H A C A . Chúng tôi cấm ơn Trường đại học Geneva vì sự cung cấp cơ sơ hạ tđng và sự hổ trợ cho viộc thực hiện lìhữiis; nghiên cứu này. Chíing tôi đổng thời cám ơn phương tiên nghiên cứu của Nsân hàns Liên bang Ubilab của Thuv sỹ vì sự hỗ trợ vể tài chính hào phỏng của muih. Cuối cùng chung tôi muốn cám ơn nhữìiR đối tác cồng nghiệp và hàn lâm khác nhau về những sự khuyến khích không ngừns trong thời gian qua. Geneva May, J995 Oscar Nierstrasz Deniiis Tsichritzis Chương 1 Công nghệ Phần mềm Hướng Thành phần Oscar Nierstrasz và Laurent Dami 'ĩổ n g quan. Nhửns hộ thống phần mềm hiện đại ngày càng tâng đòi hỏi để trở thành hê thống mở và phân tán. Nhữns hệ thống mở như vậy không chỉ ờ giới hạn ơ trong các kết nối mạng và hổ trợ tính tương tác đối trên nền phần cứng và phần mém không đổne nhất, mà còn trên hết là việc phát triển và thay đổi yêu cầu. Mặc dù công nghệ hướng đối tượng siới hạn một phần phạm vi rộng cho các neôii ngữ, nhưns các phương thức và công cụ chưa tập trung vào những yêu cầu cua hệ thống mỏ. bời V'1 chúng ta khốns thoát khỏi mô hình phát triển phần mềm iruvển ihống và cho rằng yêu cầu hệ thống khép kín và ổn định. Chúng tôi muốn chứng minh rằng những yêu cầu hệ thống mờ có thể chỉ được nói đến một cách đá\ đủ bởi việc chấp nhận cách liếp cận ,'hướng thành phần" đối ngược hoàn toàn vói phái triển phán mềm hướng đối tượng, bằng cách hướng trọng tâm của việc láp trình vào sáns tao phần mềm chuyên biệt. J .1 Lòi giói thiệu Đă có một xu hướĩìs tiếp tục phát triển ứng dụng phán mềm thoát khỏi những hệ ĩhóiìg khép kín' liến tới cái được gọi là những hệ thống mờ. Khuynh hướng này dược áp dụng ĨỘI12 rải cho những cải tiến của công nghệ phần cứng máy tính làm lãns tliêm khả năng tính toán cho những ứng dụng người dùng cuối cùng. Khả năng hình thành nhu cầu mới: để tồn tại, những nhà kinh doanh có tính cạnh iraiih cần phải có khả nàng khai thác công nghệ mới một cách hiệu quả khi nó có 2Ìấ trị, IIhư vậy ứns dụng hiện nay cần phải có khả nãng làm việc theo cách m ới, pháĩ triển độc lập vói các hệ thống. Lúc đó, chúng ta có thể nhận thấy những hệ thống mở đó cán phải " mở " theo ít nhất ba cách quan trọng [49]: 1. Tôpô: ứng dụng mỏf chạy trên những mạiig định hình được. 2. Nềii: nền phần cứng và phần mềm là khôiìg đồng nhất. 3. Sự tiến hóa: yêu cầu không ổn định và thường xuyên thay đổi. Việc phất triển phần mềm hướng đối tượng đáp ứng một phần các yêu cầu ỉKÌy qua việc khỏng thể hiện dữ liệu và các chi liếl ihanh phần trên các giao diện hướng đối tượng, như vậy cho phép nhiều thành phần của đối tượng cùng tổn tại trong khi vẫn bảo vẽ những khách hàng khối những sự thay đổi về thành phần hoặc thể hiên. Tuy nhiên, sự tiến hóa chỉ được quan tâm một phần, vì những thay đổi trong các yêu cầu có thể kéo theo những thay đổi theo cách mà đối tượng được xây dựng cấu trúc và được định hình. Trên thực tế, để chú trọng đến tiến hóa, cắn phải coi mỗi ứng dụng chỉ là thể hiện một lớp có đặc tính chung của các ứns dụng, mỗi một gia tăng của những thành phần phần mềm có cấu hình thay đổi được. Khái niệm thành phần tổng quát hơn là khái niệm đối tượng và trong trường hợp đặc biệt có thể tốt hơn hoặc thô hơn. M ột đối tượng đóng gói dữ liệu và hành VI của đối tượng có liên quan đến dữ liệu, còn thành phần đóng ẹm trừu tương hóa phần mẻm có ích bất kỳ. Không phải tất các trừu tượng có ícH lihát thiết phải là đối tượng, chúng ta có thể đánh mất những cơ hội sử dụng lại phần mém linh hoạt vì quan tâm quá nhiều đến đối tượng. Xem những ứng dụng mờ giống như những sáng tao cùa các thành phần có thể sử dụng lại và định hình đươc, chúng tôi hy vong có thể đối phó với yèu cầu tiến hóa băng cách chỉ tháo rời và định hình lại những phần bị ảnh hưòmg. 1.1.ỉ Thành phần là gì? Nếu chúng tôi chấp nhận rằng những hệ thống mở cần được xây dựng sẩn một phương thức hướng thành phần, chúng tôi vẫn cần phải trả lờ i câu hỏi sau: Những thành phần đích thực là gì, và chúng khác đối tượng như thế nào? Những cơ chế, ngôn ngữ lập trình và môi trường nào hỗ trợ sự phát triển hướng thành phần? Những thành phần xuất phát từ đâu trong vòng đời của sự phát triển phần mềm, tiến trình và phương thức phần mềm chứa đựng chúng như thế nào? Để thử ưả lời những càu hỏi này, chúng tôi cần phải phân biệt rõ các khía cạnh phương pháp luận và kỹ thuật, ờ mức phường pháp luận, chúng ta muốn chỉ ra rằng một thành phần là một thành phần vì đã được thiết kế để hợp thành với những thành phần khác. Điếu này có nghĩa một thành phần không được thiết kế bình thường theo cách cô lập, mà là một phần của một khung những thành phần hợp thành. M ột khung có thể được hiểu như một hệ phân cấp lớp trừu tượng trong môt ngôn ngữ hướng đối tượng [23]' nhưng tổng quát hơn, những thành phán không cần là lớp, và những khung không cần là những hệ phàn cấp lớp trừu tượng. M ixin, hàm, macro, thủ tục, những bảng mẫu và những mô đun tất cả có thể là ví dụ hợp lệ của thành phầii [3], và những khung thành phần có thể liêu chuẩn hóa những giao diện và mã chùng loại cho các loại khác nhau của sự trừu tượng hóa phần mềm. Vả lại, những thành phần trong một khung cũng có thế !à thực thể khác với phần mểm đích thực, tức là những mò tả, tài liệu, dữ liệu thử, những ứng dụng thử,.... Tuy nhiên, những thành phần này, sẽ khône được khảo sát chi tiết trong bài báo này; phần lớii chúng tôi sẽ tập trung vào một vài khía cạnh kỹ thuật liồn quan tới những thành phần phần mềm. ở mức công nghệ phần mềm, V tưởng phát triển hướng thành phần là một ý tường rất cũ, điểu này thể hiện trong những tiến hóa đầu tiên của lập trình có cấu trúc và tính mồđun [32]. Tuy nhiên, người ta tiếp thu được ý tưởng mới qua cơ cấLi biêii soạn của những ngôn ngữ lập trình hướng đối tượng, phát triển phần rnềin hướrie thành nhẩn không dễ dàng thưc hiện vì cả hai Iv do công nghệ và phương pháp luận. Static assembty of components Dynamic assembty of cooperating and communicating ''entities" (ob)ects. agenls,...) ( g ) ~ o ------- H ình 1.1 Cái nhìn tĩnh và động của m ột ứng dụng Đối với một ngôn ngữ lập trình để hỗ trợ phát triển hướng thành phần, cán phải kết hơp một cách chặt chẽ cà hai khía canh tính toán và biên soan phát triển phán mém. M ôt ứng dụng có thể đồng thời đươc xem xét như một thực thể tính toán đưa ra những kết quả, và như kiến trúc nhữne thành phần phần mẻm thích hop đé đat đươc những kết quả đó (Hình 1.1). M ỗi mỏt thành phần không thực hiện sự tính toán bất kỳ, nhưng có thể được kết hợp với những phần khác sao cho hơp thành của chúng thực hiện những tính toán có ích, phần lớn theo cách là mỗi phần của máy không cẩn thiết thực hiện chức năng riêng nào, nhưng hợp thành chúng sẽ thực hiện. Tuy nhiên, việc tích hợp của hai khía cạnh này không đơn giàn, vì những mục tiẻu của chúng có thể xung đột. Lấy ví dụ cụ thể, những cơ chế tranh chấp tính toán có thẻ xung đột với sự thừa kế, đó là một đặc tính hợp thành, bời vì những chi tiết bổ sung thường cần phải được đật ngoài các lớp con kế thừa [26] [31] (xem chương 2 để biết chi tiết về khảo sát các nội dung). Phức tap hơn nữa là sư khác biệt giữa "thời gian bièn soạn' và "thời gian chạy" khổng luôn rõ như trong bức tranh ở ưèn: với kỹ thuật như tải đông, tra cứu hoậc khòi phục thòne điệp động, những ứng dụng cũng có thể hièn soan một phần hoặc biên soạn lại tại thời gian chay. ^ Để đat ■ đươc • một • sư• tích hơp •£ tốt các đãc tính tính toán và bièn soạn, cần một nền tảng ngữ nghĩa chung nhờ nó người ta có thể suy luận vẻ các loại đăc tính và tác động qua lại giữa chúng. Kết quả là, chúng tôi sẽ chấp nhàn một định nghĩa của thành phần phần mềm mỏt cách đủ trừu tượng trẻn những dang thức khác nhau này. Nói tóm lại, chúng tỏi cho rằng một ihành phần là "trừu tưcmg hóa tĩnh kèm theo các khớp". Qua từ "tĩnh", chúng tôi muôn nói răng một thành phần phần mém là môt thưc thể sống lâu có thể đươc cất giữ trong một cơ sò phần mềm, độc làp với những ứng dụng tại đó nó đã được sử dụng. Theo " trừu tượng hóa ", chúng tôi cho răng một thành phần đặt ranh giới rõ hơn hay mờ hơn qua phán mểm nó đóng gói. H ình 1.2 Thảnh phần phần mềm và những khớp cua nó. "V ớ i các khớp" có nahĩa là có cách định nghĩa tốt để tương tác và truyén tin \ ới thảnh phàn (tham số, những cổng, những thông điệp, vàn vàn...). Như thế’ nhìn lừ bèn ngoài, một thành phần có thể trên hình 1.2: là một thực thể đơn, có thế được bao xung quanh và sao chép, trong trường hợp riêng có thể được khởi tạo trong một ngữ cảnh đặc biệt, nơi các khớp (những hlnh chữ nhặt màu đen nhỏ) sẽ là ranh giới với các giá trị hoặc với những thành phần khác. Trong thực tế, sự trình bày trực quan như vậy của những thành phần có thể rất lièn lợi cho hỗ trợ hợp thành tương tác những ứng dụng từ những khung thành phần ( xem chương 10). Lúc đó, bièn soạn phần mểm là quá trình xàv dựng ứii^ dụng từ những thành phần phần mềm ràng buộc nhau qua các khớp của chúng). Bản chất của các khớp, những cơ chế liẻn kết và tính tương thích quyết định các thành phần liên kết có thể thay đổi khá ít’ như chúng ta biết, khái niệm cơ bàn tâm đến những nhu cầu của tất ca thư viện thành phần, kết quả thực sự đó là việc đóng gói phải thường được thẩm tra để đạt được mức độ mong muốn của phần mềm sử dụng lại được. M ộ t ngôn ngữ lập trình hoàn toàn hợp lý để phát triển hệ thống mở không chỉ cung cấp những đối tượng và sự thừa kế, mà còn cần phân rã kiểu, tương tranh mạnh. Các kiểu cần hình thức hóa, bảo trì đối tượng và giao diên thành phần, các đặc tính tương tranh cần phải có sự tương tác giữa các hê thống con tương tranh, phân tán. Tính song song mịn đồng thời được quan tâm, nhưng không phải là mối quan tàm hơn hết. Mặc dù các kiểu và tính tương tranh được giả thiết trực giao với các đối tượng và sự thừa kế, việc tích hợp chúng không phải là vấn đề đơn giản. Nguồn gốc của khó khăn đối với các kiểu là ở chỗ những đối tượng không đơn giản là giá trị đơn lấy riêng lẻ, giống như những số nguyên, chuỗi, hàm bậc cao, hoặc thậm chí những cấu trúc phức hợp như kiểu dữ liệu trừu tượng. Các đối tượng chủ yếu thuộc vào một nơữ cảnh toàn cục, và có thể chứa đựng các tham khảo tới những đối tượng khác cùng ngữ cảnh, v ả lại, vì chúng là những thực thể động, chúng có thể thay đổi hành vi hoặc trạng thái, và do đó ý nghĩa của những tham khảo thay đổi theo thời gian. Từ đây, việc rút thông tin kiểu tĩnh từ những hệ thống động như vậy khó hơn nhiều. Việc làm mô hình thừa kế cũng mơ hồ, vì hai vai trò khác được thể hiện bời những lớp. Nhiều khó khăn trong những nỗ lực trước đây để xác định sự thừa kế và tạo kiểu con. Ngược lại, điều trên cho thấy việc tạo kiểu con và sự thừa kế được công nhận tốt nhất như những khái niệm độc lập [ I ] [7]. Thậm chí có thể tiện lợi cho cả khái niệm tách biệt vể kiểu giao diện thừa kế [28]. K h i tính tương tranh cũng được mang vào trong bức tranh, chính những xung đột đó đã được để ý ở một mức độ cao: 1. Những đặc tính tương tranh có thể xung đột với đóng gói đối tượng nên khách hàng cần phải ý thức được việc sử dụng những đậc tính nàv của đối tượng[45] ( xem chương 2). 2. Đóng gói lớp có thể bị xâm phạm nếu những lớp con cần phải cảm nhộn những chi tiết thành phần [26] [31]. 3. Những hệ thống kiểu nói chung quên nhấn mạnh khía cạnh hành vi tương tranh của những đối tượng mà có thể quan tám tới những khách hàng (như yêu cầu tuân theo một thủ tục nhất định trong phát sinh những yêu cầu - xem chương 4). Nguồn gốc của những khó khăn kỹ thuật này, chúng tôi cho là do sự thiếu một quan điểm hướng thành phần đầy đủ của những đối tượng. Những thành phần cần được đoán nhận như những thực thể theo quyền hạn của chúng không phụ thuộc vào đối tượng. M ột lớp là một bảng mẫu để khởi tạo đối tượng như một loại của thành phần với một kiểu đặc biệt của giao diện. M ộ t đối tượng là một loại khác của thành phần với một giao diên đáp ứng yêu cầu khách hàng. M ột lớp là cha của những lớp phụ vẫn là một loại khác của thành phẩn với một loại giao diện khác. M ỗ i thành phần có giao diện riêng cho mục đích rất khác nhau. Nó có thể cung cấp cú pháp bổ trợ để tránh phát sinh những tên cho tất cả vai trò khác nhau, nhưng những vai trò cần phải được nhận ra k h i ngữ nghĩa biên soạn được công nhận. Bài học khác cho biết rằng mỗi phần tử không đơn giản là "phụ kiện để mờ rộng" cho những phần tử khác. Một nền tảng ngữ nghĩa thích hợp được yêu cầu để liohièii cứu íihững vấn để lích hợp. Nếu sư thay đổi va tương tranh là íihữns vèu cửu mo hìiih hóa, thì mội ngữ nghĩa chức íiáng hoàn toàn khòng thích hợp. Nó như mòl inó hình tính toán đê mô hình hóa cả đối tượng lẫn thành phần và cán phái hơp nhát cá hai tác nhàn từ những đôi tượng, như thực thè tính todn, và có thé đươc xem như loại đăc biệt cùa những tác nhàn truyén tin. Trong khi những thành phán giống như thưc thể cấu tạo thành phần, có thẻ được xem như những khái niệm trừu tương, hoảc chức riảng trèn không gian đối tượng. Ngoài ra, vì những thành pháii có thế là các giá in của lớp đầu tiẻn, đãc biệt trong những mòi trường lạp trình, nơi mà thành phần mới có thế tạo ra một cách linh hoat’ điểu CÒI yếu là những cái nhìn vể tác nhàn và chức năng đươc tích hcrp đáy đủ. Từ quan điếm hè thòrm kiểu, ca đối tượng lản những thành phân đươc định nghĩa như những thực thẽ, mặc dù chúng có thè có các loại kiểu khác nhau. 1.3 Kỹ thuật hỗ trợ cho những Thành phần Sư phát triển phần mềm hướng thành phần khổng chỉ yèu cầu một sự thay đói của tập hợp và phương pháp luận mà nó đồng thời yêu cầu sự hổ trợ của công nghệ mới. Trong phần này, chúng tôi muốn xem xét những nôi dung: . Các dạng thức và những cơ chế để liên kết các thành phần với nhau ỉà cái gì? . Cấu trúc của một thành phần phần mểm là cái gì? . Trong giai đoạn nào những quyết định hợp thành xảy ra, tức là' chúng ta có thể mô tả quá trình hợp thành như thế nào? . Chúng ta xày dựng mô hình hình thức các thành phần và sự hợp thành như thế nào, và chúng ta có thể kiểm tra những đoạn ấy đã xảy dựng chính xác như ra sao? . M ớ rộng một mô hình tính toán tương tranh có ảnh hưởng gì đến sáng tạo phần mểm? Những câu hỏi này rõ ràng có liên hệ mật thiết; ngoài ra, chúng phụ thuộc nặng ỉié vào dạng thức hợp thành được sử dụng, v ể ý tưởng, chúng ta đã lập luận rằng, mỏt mỏi trường đầy đủ cho sáng tạo phần mềm cung cấp bằng cách này hay bằng cách khác một tổ hợp của những đối tượng, những hàm và những tác nhàn. Như Vày, những dạng thức này quả đă có tiến hóa độc lập. Đê kết hợp chúng vào trong mòt mòi trường chung cần phải tích hợp chúng một cách thuán khiết. Tiẽp theo, chúng tồi khảo sát những đóng góp đạc biệt của mỏi dạng thức với sáĩig tao phần mểm, chúng tôi thảo luàn vièc chúng có thể tích hơp như thế nào và chun« tòi tổng những ván để rìÊ^hièii cứu mở. L ỈA N hữnẹ dạng thức cho việc lắp ráp các thành phần Chãc chản, cơ chế horp thành cãn bản nhất đế bàn đến là hợp thành chức nãng. Trong dang thức này một thực thể trưóc hết được đóng gói và đươc tham sò hóa giống như môt sự trừu rương hóa chức năng, và '*được hoat hóa,, (khơi tao) hỡi vièc nhàn những đối số đươc gán với những tham sò cua nó. Rõ ràns: cơ chế hơp thàiih luiỵ XIKÚ hièn Irong hâu lìét mòi trường lập trinh, và khàng cỏ chi haii che những Iigòn ngữ lủp irình hàm. Tuv nhiồn, Iihiéu lìíỊòii ngữ khỏnsĩ cho phép những ĩhưc ihc [)hán mém luy V dươc xem như những gia trị, và bơi vậy khòng CUÍIÍỊ cáp sư hơp thành chức nảng ờ dạng chung nhát. Chảng han, nhữĩiíí mò đun đươc tham sô' hóa, ma về sau có thể đươc gán cho các mỏ dun khác vần còn íhiéii trong nhiéu ngốn ncữ lập trình. Khía canh khác của phạm VI Iiày, những ngón ngữ hãm sir d iiiìị :hợp thàiih chức nãiií:tai mỏi mức và bởi vộv cho biêt: khía canh bá ỉ ky cua mòi doaii phan m èm c ó ihc đươc tham s ố hoa vii sau clo dươc gan VOI thanh phan khấc, do đo cuim cấp lính liỉih hoai cao cho viẹc xác (linh giới han cua nhữnc thành phân. Va lại, lập trình hàm hồ trợ cho sự hợp thành bậc cao, tưc la ban thãn các thành phần là dữ liệu, Két quà là, sư hợp thành qiiyél dịiih chính chúnc có thè được đóng gói như những thành phán, và bởi vậy mối vài bộ phan của quá trình hợp thành có thể được lự động hóa. Cuối cùng, sự hợp thành chưc nàng có ưu điểm là dẻ dàng thẩm tra lại’ vì hàm c ó thể đươc xem xét theo Iiehla rộng gióng như những hộp đen: vói một vài giả thiết về các tham só cua mól hàm. có thể suy diẻn mổt vài đặc tính của kết quả, từ đó có thế biết kéi qua kia co ihc được chuvéii an toàn cho hàm khác khống. Các ngón ngữ lập ưình hàm hiện thòi đã phát ĩriến những hệ thống kiểu phức tạp để kiểm ưa tính chính xác của phán mẻm đươc biên soan [ 3 7 ] 【21]- Sự hợp thành chức nàng là một cơ chế hợp thành địa phương, theo nghĩa nó chỉ kéo theo một sự trừu tượng hóa và những giá trị bi tuyển như những tham số. Ngược lại, những mỏi trường tác nhân chú vếu sử dụiie một cơ chế hợp thành toàn cục, thường được gọi bảng đen. Bảng đen là khóne gian dùng chung, mà mổi thành phần đều nhận biết, tại đó thống tin có thể đươc đem vào và lấy ra tại những vị trí xác định. Đ ối với những hê thống các tác nhân truyền tin qua các kênh, bảng đen là không gian loàn cục của các tên kênh. Thậm chí khống có các tác nhân, bộ nhó toàn cục trong lập trình dòng lệnh ưuyền thống cũng tạo ra một loại bảng đen. Su hợp thành bảng đen hỗ trợ những lắp ráp n-lần của các thành phần (trong khi những cơ chế sự hợp thành cục bộ là hai); vả lại, tự do ưuy nhập tới vùng dùng chung ràng buộc ít hơn vào giao diện các thành phần. Tuy nhiên, mặt khác của vấn đề là những hệ thống hợp thành bảng đen kia khó khăn hơn nhiều để kiểm tra tính chính xác do sự tương tác giữa những thành phần đã không được địa phương hóa một cách chính xác. Giống như phần bù cho vấn đề, những hệ thống hợp thành bảng đen thường hợp nhất những cơ chế đóng gói cho việc thiết đật nhữiig ranh giới trong khỏng gian toàn cục, mà trong đó sự can thiệp được hạn ché cho tập con hiển nhiên của những thành phần. Nhờ phương tiện này, ít nhất một vài đậc lính địa phương một hệ thống bảng đen có thể được xác minh tĩnh. Chẳng hạn, f?chữ ký hiệu pi?)-calculus [35] có một toán tử để hạn chế độ nhìn rõ cua tên; trong thế giới của các đối tượng, các hòn đảo [19] đã được để xuất như mộĩ phương tiên để bảo vệ tên địa phương và tránh các vấn đề truyền thống chắc chắn với việc đật bí danh. Cuối cùng, hệ thống hướng đối tương đã giới thiệu một dạng thức mới cho biên soạn phần mém với tính khái niệm có thể mở rộng - khả nàng bò SUI12 chức lìãng cho một thành phán trong khi phần còn lại "tương thích" với các còng duiiị : trước của nó. Tính có thể mơ rộng,tiêu biểu thu được trong những Iigóii ncữ hướng đối tượng qua sự thừa kế hoậc uy nhiệm, là m ói nhàn tỏ quan trong cho sư tiến hóa trôi chảv cua những cấu hình phần mém. Tuy nhién, hiếu chính xác lính tương thích có nghĩa là gì đó là cáu hỏi tế nhị. Chẳng hạn, lính tương thích giữa các lớp thường được xác định trén cơ sờ của tập hợp những phương thức mà chúng cung cấp, có thế cùng với những biểu hiộn của chúng; trong ngữ cảnh của các đói tượng tích cực, quan điểm Iiày khống quan lâm đến những chuỗi yêu cáu nào của phương thức được chấp nhàn bời môt đối tượng. Chương 4 nghiên cứi) cách nắm bắt khía cạnh này qua cái 2ỌÌ là kiéu bình thirờng. Neoài ra, tính tươne ihích có thể có ý nghĩa không chỉ cho những lơp, mà còn cho nhiều những thực thể phầii mềm tổng quát; đặc biệt, trong những hê thống hướng đối tượng trên nềĩi các nguyên mẫu và những ủy nhiệm cắn phải hiểu tính tương thích trực tiếp tại mức của những đối tượng. Chương 6 khảo sát mộ! phép tính chức năng trong đó tính tương thích được định nghĩa ờ một mức cơ sở, trực tiếp trên những hàm. Hình 1.3 là một nỗ lực trình bày trực quan những dạng thức khác nhau. Biên soạn chức năng được mố tả qua hình ảnh thông thường của các chúc năng như các hộp, với những tham số đại diện cho các cổng đầu vào và các kết quả tính toán đại diện cho các cổng đầu ra. Những liên kết giữa các thành phần được thiết lập trực tiếp và đại diện cho các ràng buộc của những giá trị đối với các tham số hình thức. Dạng thức bảng đen có một sơ đồ đăiih địa chỉ mà tạo nên không gian toàn cục; nó đôi khi cũng sử dụng các liên kết trực tiếp, nhưng thêm vào đó, các thành phần được đặt tại những vị trí xác định, và chúng nó có thể thiết lập những liên kết với các thành phần khác qua các định vị của chúng, ở đây các định vị được niồ tả như những tọa độ trong m ột không gian hai chiểu vì mục đích minh họa trực quan. Trong thực tiễn, thường xuyêii nhất không gian chung sẽ được xây đựng bòi những fên hoặc bởi những địa chỉ bộ nhớ tuyến tính. Cuốĩ cùng, khả năng mở rộns được mỏ tả bởi các cổiis bổ sung và những liên kết được bổ sung cho một thành phẩn hiện hữu, mà khốns ảnh hường đến những đặc tính đã có. Hình 1.3 N h ữ n g dạng thức khác nhau. Quan sát ở mức không hình thức này, khá rõ ràng rằng sự chung sống nào đó của những dạng thức có thể hiểu được, nhưng nó đồng thời nhiều chi tiết cần phải nghiên cứu cẩn thận. Những mục con tiếp theo thảo luận các khái niệm của những thành phần (các hộp), những cơ chế (các mũi tên), và những cấu hình phần mểm (những lắp ráp). 1.3 J Thành phần n h ư khái niệm trừu tượng tình Trong lời giới thiệu, chúng ta mô tả các thảnh phần bằng thuật ngữ của cách sừ dune của chúng: môt đoan phần mềm là môt thành phần nếu như nó được thiết kế đế sư dung lại và là bộ phận cùa một khung. Điều này không kể nhiều vè nhữns khía canh cấu trúc cùa một thành phán. Môt vai bất bi}n toàn cục có vẻ hợp lệ bẻn trong dane thức soạn thảo bất kỳ; những thành phần tièu biểu là những thưc thè tĩnh; neoài ra,chúng luôn luôn bao 2 Óm một vài loại khái niệm trừu tượng. Cả hai khái niêm, tuv nhiên, xứng đáng được khảo sát cẩn thận hơn. Có nhiều loại khác nhau của những thưc thể phần mềm tĩnh: các thủ tục, các hàm, các mò đun, các lớp và vàn vàn... Trong mỗi trường hợp, chúng có một sự tồn tại bển vững độc lập với ngữ cảnh xung quanh chúng, cho phép chúng được thao tác và cất giữ riẽng. M ột khi ráp vào trong một chương trìíih, những thực thể tĩnh này điều khiển sự tạo thành và sự tiến hóa của những thực thể động, mà trong những ngôn ngữ hiện hữu thường không là những thành phần (những kích hoạt thủ tục, những đối tượng, những cấu trúc dữ liêu động). Tuy nhiên vài ví dụ có thể được tìm thấy, của những thực thể động mà có thê đang quan tâm như những đoạn phần mềm có thể dùng lại, nhưng không thể trực tiếp tham gia vào một soạn thảo vì những giới hạn của môi trường phần mềm. Chẳng hạn trong hầu hết những ngôn ngữ hướng đối tượng các lớp là tĩnh' nhưng những đối tượng (những thể hiện) thì không. Trong những ngôn ngữ như vậy những chiến lược khác nhau tiêu biểu đươc sử dung bởi những người lập trình để có những đối tượng như những thực thể có thể biên soạn, như xác định một lớp đóng bao một đối tượng (sự thể hiện) đơn độc. Chiến lược khác, được sử dụng nhiểu trong môi trường Next Step [39], phải xác định những thủ luc lưu trữ phức hợp sao cho các nhóm cùa những đối tươiis có thể được cất giữ vào trong các lập tin (gọi là những tập tin ,'【 ùb"); khi đó những tập tin tương ứng có thể được cáu thành và cấu hình phát sinh trong khi chav thường tái tạo lại tập hợp những đối tượng được xác định trong những nhóm rièng rẽ. Trong những trường hợp giống như òf đày, khi cấu trúc những đối tượng cấu thành một giao diện người dùng đươc biết là tĩnh và không được tạo ra khi thực hiện, khả năng để trực tiếp cất giữ những đối tượng sẻ tiện lợi hơn nhiểu so với việc lập trình hoặc những tập tin mò tả tái tạo động cấu hình của các đối tượng. Hạn chế khác cho việc biên soạn xuất hiên trong tĩnh huống hoàn toàn đào ngược: nói rằng những thành phán là những thực thể tĩnh không có nghĩa rằng chúng phải luôn luôn được tập hợp tĩnh. Những hệ thống mờ có một nhu cầu ngày càn2 tăng để thao tác động và trao đối những thành phần, và liên kết động chúng với một ứng dụng đang thực hiện. Các ngổn ngữ mới đâv cho những tác nhàn phân tán như Telescript [56] hoặc O bliq [5] là những ví dụ tốt của phương hướng mới nàv. Sự lắp ráp động có nghĩa rằng phần mềm có thể được định hình ở giai đoạn muộn nhất, theo những nhu cầu của người dùng, hoặc vài ứng dụng đang thực hiện có thể hợp tác động để trao đổi thông tin. Khái niệm một thành phần cũng quan hệ mật thiết tới khái niêm trừu tượng, một thực thể kín, với một vài loại ranh giới xung quanh nó, mà về sau có thể được cấu thành bởi những thực thể khác. M ột thủ tục là một sự trừu tượng cho một dăy các càu lênh; một lớp là một sự trừu tượng đối với một tập hợp những đối tượng; một mô đun là một tập hợp của những khái niệm trừu tượng được đặt tên. Việc nhữns khái Iiiệm trừu tượng có nhữne ranh siới quyẽì định cho sự hơp thành phần mềm, từ khi nó cung cấp một phương tiện cho việc cấu trúc phần mềm, kiểm soát sự tương tác giữa những thành phần, và xác minh sự lắp ráp riêng. Đáng tiếc, hầu hết những mói trường phần mềm áp đặt một vài sự hạn chế lên việc sử dụng những khái niệm trừu tượng: những ranh giới không thể kéo dài một cách tùy tiện, theo nhu cầu của người dùng, mà cần phải tuân theo những khuôn mẫu đặc trưng. Chẳng hạn, hầu hết trong những hệ thống hướng đối tượng, những ranh giới không thể đan chéo những đường dẫn thừa kế, tức là, m ột lớp khỏng thể được định nghĩa không có sự tham khảo hiển tới siêu lớp của nó. Chỉ CLOS [27] cung cấp một khái niệm thừa kế thông qua mixins trong đó siêu lớp không cần được biết và có thể được giới hạn muộn hơn. Tính linh hoạt đầy đủ để phác họa những ranh giới khái niệm trừu tượng yêu cầu lất cả các thành phần phần mềm phải được xem xét như những giá trị của lớp thứ nhất mà có thể được Luyền như những tham số tới những thành phần khác. Như đã tranh luận ở trên, những ngồn ngữ tiên tiến nhất theo chiều hướng đó là nhữne ngôn ngữ hàm, ở đó "mọi thứ là một hàm", và các hàm là dữ liệu. K h i khái niệm trừu tượng hàm chỉ ỉà cơ chế trừu tượng, những người lập rrình có tính linh hoai cao troiig việc chọn lựa những khía cạnh để cố định định nghĩa hàm và để cho phép để ngỏ những tham số. Hơn nữa xem xét những thành phồn như những giá írị, đặc tính khác của những khái niệm trừu tượng có tác động lớn đến tính tạo dựng là tính có thể phân mức, lức là khả năng để sử dụng chính những khái niệm trừu tượng và cơ chế sự hợp thành tại m ồi mức của mội cấu hình. M ột lần nữa rõ ràng đày là trường hợp với các hàm, mà trong đó một sự lắp ráp của các hàm lại là một hàm. Cái thuận lợi là tính kinh tế của những khái niệm và sự kiện mà khổng hề có giới hạn về hạt các thành phần. Thônsi qua siao diện thừa kế của chúng, những lớp có thể được coi như biến đổi được, từ những thay đổi tăng cường của một lớp con, cùng với lớp cha, lại một lần nữa tạo thành một lớp. Trái lại, những mố đun thườĩìe. không biến đổi được: sự lắp ráp các mỏ đun không còn là một mô đun. Một mỏi trường không có tính biến đổi được áp đạt một hạt cố định của sự hợp thành (những mô đun chỉ có thể được ráp vào trong những chương trình), và bời vậy hạn chế tính có thể sử dụng lại của những thành phần, vả lại, việc thiếu vắng tính biến đổi được thường tạo ra cho những vấn để cho việc nghiên cứu hình thức của những mồi trường lập trình và sự hợp thành, bời vì những lý thuyết hình thức thành cỏng nhất khi chúng có thể cậy vào một lặp nhỏ những toán tử vạn nàng. Một ví dụ hấp dẫn có thể được quan sát trong miền trùng hợp, nơi mà các nhà lý luận thường sử dụng phép tính quá trình với tính biến đổi được (một bộ chứa của những tác nhân hoặc những quá trình chính nó là một quá trình), hầu hết sự thao tác thực tế kéo theo sự trùng nhau giữa một quá trình và một hệ thống các quá trình. 1 .3 3 Quá trình soạn thảo Trong những môi trường truyền thống cho sự phát triển phần mềm những pha khác nhau để xây dựng một ứng dụng được định nghĩa rõ và riêng biệt: trước hết cần phải viết một tập hợp các mô đun, có lẽ với một vài phụ thuộc bên trong và với một vài phụ thuộc đối với những mô đun đặt sẵn được cất giữ trong những thư viện; sau đó cần phải biên dịch những mô đun, để phát sinh mã máy và trong những hê thống có kiểu chặt chẽ, để kiểm tra tính chính xác về kiểu của những
- Xem thêm -

Tài liệu liên quan