コンテンツにスキップ

ソフトウェアフレームワーク

Xuất điển: フリー bách khoa sự điển 『ウィキペディア ( Wikipedia ) 』

ソフトウェアフレームワーク(Anh:software framework) とは,プログラミングにおいて,アプリケーションソフトウェアĐẳng の thật trang に tất yếu となる nhất bàn đích な cơ năng や định hình コードを,ライブラリとしてあらかじめ dụng ý したものである. Lệ えば,Javaなどのオブジェクト chỉ hướng ngôn ngữHướng けのクラスライブラリとして thật trang されている tràng hợp は, tái lợi dụng khả năng なソフトウェア bộ phẩm (ソフトウェアコンポーネント) として dụng ý されているクラスインスタンスを tự do に tổ み hợp わせたり, cơ bổn đích な cơ năng を trì つ cơ để クラスを継 thừa した phái sinh クラスをユーザープログラマーが định nghĩa し, 仮 tưởngメソッドによって công khai されているカスタマイズポイントを tuyển 択 đích に thượng thư きしたり đặc hóa させたりする. Ngôn ngữ によってはコールバック quan sổデリゲートを lợi dụng するなど, tha にもさまざまな hình thái がある. Văn mạch から minh xác な tràng hợp は単に “フレームワーク” としたり, đặc にアプリケーションソフトウェアKhai phát hướng けであることを minh xác にした “アプリケーションフレームワーク”など, tiền hậu に biệt の ngữ をつなげた phục hợp ngữ を sử ったりすることもある.

ソフトウェアフレームワークは, minh xác に định nghĩa されたAPIを trì ち, cụ thể đích な thật trang を tái lợi dụng khả năng な hình で ẩn tế しているという điểm でライブラリとよく tự ている. Lạng giả の gian に minh xác な cảnh giới は vô いし, phân loại のための minh xác な cơ chuẩn も vô い. Quan điểm のひとつとしては, いわゆる “メインループ” あるいは “イベントループ”をアプリケーション trắc が trì つか phủ か, という phân loại がある. メインループをアプリケーション trắc が trì っていてそこから hô び xuất される hình thái のものがライブラリであり, nhất phương フレームワークではメインループはフレームワーク trắc にあり, アプリケーションはそちら trắc から hô ばれるイベントハンドラによって駆 động される ( これについて “Chế ngự の phản 転”という ngữ で thuyết minh されることがある[1]).

しかしこの phân loại は, lạng giả を đặc trưng づけるはっきりした phân loại というわけではない. アプリケーションのmainQuan sổ はランタイムライブラリTrung のスタートアップルーチンから hô び xuất される. また, quảng く sử われているようなフレームワークでは, たいていはメインループをアプリケーション trắc が trì つことができるようなメカニズムが dụng ý されている.

ソフトウェアフレームワークは, tối chung đích にアプリケーションソフトウェアにリンクされるライブラリコードだけでなく, khai phát に tất yếu となる các chủngプログラミングツールも hàm んでいることがある. また,Thống hợp khai phát hoàn cảnh(IDE) に tổ み込まれたプロジェクトテンプレートやソースコードジェネレータを hoạt dụng したTự động プログラミングの sĩ tổ みが dụng ý されていることもある.

Bối cảnh と phê phán[Biên tập]

ソフトウェアフレームワークは, システム cấu trúc に tất tu な tiêu chuẩn đích かつ hạ vị レベルの tường tế を thiết kế giả やプログラマが kiểm thảo する thời gian を tỉnh き, thượng vị レベルのYếu cầu sĩ dạng( ビジネスロジック ) の thật hiện に đa くの thời gian を cát けるようにし, ソフトウェア khai phát を dung dịch にすることを mục chỉ している[2].Lệ えば, ngân hành のWebサイト cấu trúc にWebアプリケーションフレームワークを sử っている khai phát チームは, yếu cầu 処 lý や trạng thái quản lý の cơ cấu を kiểm thảo する thời gian を tước giảm して, khẩu tọa からの dẫn き lạc としといった thao tác に chú lực できる. また, このような soa phân プログラミングの dụng đồ に thích しているという lý do で, フレームワークの thật trang にオブジェクト chỉ hướng ngôn ngữ が tuyển ばれることが đa い.

Phê phán としては, フレームワークは toàn thể đích なコードを phì đại hóa させるという chủ trương もある. これは phục sổ のフレームワークで trọng phục ・ cạnh hợp する bộ phân や bổ い hợp う bộ phân があり, APIも phục tạp に lạc み hợp っているためでもある.

フレームワークの sử い phương を học ぶ thời gian がかかるという chủ trương もある. ただし nhất độ フレームワークの sử い phương を học べば, đồng じフレームワークを lợi dụng する thứ のプロジェクトからはより tố tảo く xác thật な ứng dụng が khả năng となる. また, đa くのフレームワークは cơ bổn đích な thiết kế が tự thông っていることが đa く, loại thôi ( アナロジー ) により biệt のフレームワークにも khảo え phương が ứng dụng できることが đa い.

フレームワークは tha のプラットフォーム chế phẩm (OS,DBMSなど ) と đồng dạng に, đặc định のフレームワーク・ベンダーや, đặc định のバージョンに y tồn ( ロックイン ) されるリスクがあるとの chủ trương もある. このため cơ năng nội dung や đại thế chế phẩm などの xác nhận も tất yếu である. フレームワークのバージョンアップによって động tác sĩ dạng が変わったり, API/ABIの hỗ hoán tính がなくなってしまったりすることもある.

Di thực の thủ gian を giảm らして dạng 々なOSに triển khai しやすくするための,クロスプラットフォームなフレームワークの khai phát も thịnh んである. Đặc にGUIアプリケーションは thông lệ OS cố hữu のウィンドウシステムを lợi dụng する tất yếu があり, またウィンドウの biểu kỳ や2D/3Dグラフィックスの biểu kỳ に tất yếu となる chuẩn bị ( sơ kỳ hóa や hậu thủy mạt ) に thủ gian がかかり, định hình コードの lượng も đa くなるため, tường tế を ẩn tế して trừu tượng hóa したクロスプラットフォームなフレームワークが uy lực を phát huy する.

フレームワークのソースコードが công khai されていないプロプライエタリな chế phẩm では, bất cụ hợp が kiến つかったときに nguyên nhân の đặc định と giải tiêu が trì れるリスクもある. Nhất phương, オープンソースのフレームワークや nội chế フレームワークであっても, ユーザー sổ や thật tích が thiếu なく vị thành thục な tràng hợp は, tương đối đích に đa sổ のバグが tàn されている khả năng tính が cao い.

いずれにしても, thích thiết なフレームワークの tuyển định は đặc に trọng yếu である. Khai phát đồ trung で, tuyển 択したフレームワークが khai phát yếu kiện を mãn たさないと phán minh した tràng hợp や, そのフレームワークの khai phát ・ đề cung が đả ち thiết られた tràng hợp などは, khai phát đồ trung で biệt のフレームワークに di hành して ( tràng hợp によっては cơ bổn thiết kế から ) tái khai phát する tất yếu が phát sinh するためである.

Lệ[Biên tập]

ユーザーアプリケーションを lập ち thượng げるのを trợ けるため, ソフトウェアフレームワークには nhất bàn にかなりの tạp đa なコードやユーティリティコードが hàm まれているが, toàn thể としては đặc định の vấn đề lĩnh vực に chú mục した cơ năng を đề cung している. Dĩ hạ に lệ を cử げる.

アーキテクチャ[Biên tập]

Preeによれば[9],ソフトウェアフレームワークには “Đống った bộ phân (frozen spot)” と “Nhiệt い bộ phân (hot spot)” がある. “Đống った bộ phân” はソフトウェアシステム toàn thể のアーキテクチャ ( cơ bổn コンポーネント quần とそれらの tương hỗ quan hệ ) を định nghĩa する. それらはそのフレームワークを sử って hà を thật trang した tràng hợp でも thường に変 hóa しない. Nhất phương, “Nhiệt い bộ phân” はプログラマがプロジェクト cố hữu の cơ năng に đối ứng したコードを truy gia できる bộ phân である.

ソフトウェアフレームワークには,ソフトウェアアーキテクチャNội でアプリケーションプログラマが đặc định の cơ năng に đối ứng したコードを trí ける tràng sở ( すなわち “Nhiệt い bộ phân” ) が định nghĩa してある.

オブジェクト chỉ hướngNgôn ngữ で, かつそれがクラスベースCụ tượng クラスTrừu tượng クラスがある tràng hợp には, tiền thuật の “Đống った bộ phân” を cụ tượng クラスで thật trang し, “Nhiệt い bộ phân” のAPIを trừu tượng クラスで tuyên ngôn する, というスタイルでフレームワークを tác る, という định hình đích thủ pháp がある. Lợi dụng giả ( khai phát giả ) は, “Nhiệt い bộ phân” の trừu tượng クラスを継 thừa した[10]Cụ tượng クラスを tác り, メソッドなどに tất yếu な cơ năng を tác り込む[11].

Mạo đầu bộ で ngôn cập したChế ngự の phản 転について, “ハリウッドの nguyên tắc” と ngôn われることがある ( tường tế はChế ngự の phản 転#ハリウッドの nguyên tắcを tham chiếu ). つまり “Chế ngự の phản 転” を tiền đề として thiết kế されているフレームワークを sử う tràng hợp, khai phát giả が thư くコードが tất yếu な thời にフレームワークのコードを hô ぶスタイルではなく, フレームワークのコードから, ユーザーのインタラクション ( マウスクリックや họa diện タップなど ) によって phát sinh するイベントなどに ứng じて khai phát giả が thư くコードが hô ばれるというスタイルになる, ということを, ( mãi い thủ thị tràng の ) ハリウッドでは, sĩ sự が đắc られる kiến 込みがあるのならば điện thoại が quải かってくるし, tự phân から điện thoại を quải けても kiến 込みは bạc い, と lệ えたジョークである.

Phiếm dụng フレームワークの nhất lãm[Biên tập]

Quan liên hạng mục[Biên tập]

Cước chú ・ xuất điển[Biên tập]

  1. ^Riehle, Dirk (2000),Framework Design: A Role Modeling Approach,Swiss Federal Institute of Technology,http://www.riehle.org/computer-science/research/dissertation/diss-a4.pdf
  2. ^Framework”.DocForge.2008 niên 12 nguyệt 15 nhậtDuyệt lãm.
  3. ^Vlissides, J M; Linton, M A (1990), “Unidraw: a framework for building domain-specific graphical editors”,ACM Transactions of Information Systems8(3): 237-268
  4. ^Johnson, R E (1992), “Documenting frameworks using patterns”,Proceedings of The Conference on Object Oriented Programming Systems Languages and Applications(ACM Press): 63-76
  5. ^Johnson, R E; McConnell, C; Lake, M J (1992), Giegerich, R; Graham, S L, eds., “The RTL system: a framework for code optimization”,Proceedings of the International workshop on code generation(Springer-Verlag): 255-274
  6. ^Birrer, A; Eggenschwiler, T (1993), “Proceedings of the European conference on object-oriented programming”,Frameworks in the financial engineering domain: an experience report(Springer-Verlag): pp. 21-35
  7. ^Hill, C; DeLuca, C; Balaji, V; Suarez, M; da Silva, A (2004), “Architecture of the Earth System Modeling Framework (ESMF)”,Computing in Science and Engineering:18-28
  8. ^Gachet, A (2003), “Software Frameworks for Developing Decision Support Systems - A New Component in the Classification of DSS Development Tools”,Journal of Decision Systems12(3): 271-281
  9. ^Pree, W (1994), “Meta Patterns-A Means For Capturing the Essentials of Reusable Object-Oriented Design”,Proceedings of the 8th European Conference on Object-Oriented Programming(Springer-Verlag): 150-162
  10. ^Javaなどではインタフェースの tràng hợp もあり, その tràng hợp は “インタフェースを thật trang した” となる
  11. ^Buschmann, F (1996),Pattern-Oriented Software Architecture Volume 1: A System of Patterns. Chichester,Wiley,ISBN0471958697

Ngoại bộ リンク[Biên tập]