構件與軟件重用java
構件(componet,又稱組件)是一個功能相對獨立的、具備可複用價值的軟件單元。在面向對象方法中,一個構件有一組對象構成,包含了一些協做的類的集合,他們共同工做來提供一種系統功能。程序員
軟件重用算法
可重用性(可複用性)是指系統和(或)其組成部分能在其餘系統中重複使用的程度。軟件開發的全生命週期都有可複用價值,包括項目的組織、軟件需求、設計、文檔、實現、測試方法和測試用例,都是能夠被重複利用和借鑑的有效資源。可重用性體如今軟件的各個層次,通用的、可重用性高的軟件模塊每每已經由操做系統或開發工具提供,如通用庫、標準組件和標準模板庫等,他們並不須要程序員從新開發。數據結構
軟件重用(軟件複用)是使用已有的軟件產品(如設計、代碼、文檔等)來開發新的軟件系統的過程。軟件重用的形式大致能夠分爲垂直式重用和水平式重用。水平式重用是重用不一樣應用領域中的軟件元素,如數據結構、排序算法、人機界面構件等。標準函數庫是一種典型的原始的水平式重用機制。垂直式重用是在一類具備較多公共性的應用領域之間重用軟件構件。因爲在兩個大相徑庭的應用領域之間進行軟件重用潛力不大,因此垂直式重用受到普遍關注。架構
垂直式重用活動的主要關鍵點在於領域分析:根據應用領域的特徵和相識性,預測軟件構件的可重用性。一但根據領域分析確認了軟件構件的可重用價值,便可進行軟件構件的開發,並對具備可重用價值的軟件構件作通常化處理,使他們可以適應新的相似的應用領域。而後將軟件構件和他們的文檔存入可重用構件庫,成爲可供將來開發項目使用的可重用資源。分佈式
軟件重用的範圍不只涉及源程序代碼,Caper Jones定義了10種可能重用的軟件要素,分別是項目計劃、成本估計、架構、需求模型和規格說明、設計、源程序代碼、用戶文檔和技術文檔、用戶界面、數據結構和測試用例。函數
有一個組織叫作基於面向對象技術的重用(Reuse Based on Object-Oriented Techniques, REBOOT)開發了支持重用的兩種過程模型,分別是爲重用開發和利用重用進行開發。該組織還開發了一系列工具,稱爲REBOOT環境。它們強調的一個原則是「將來重用者的需求,就是對可重用構件的信心」。開發者的傾向是抵制重用,由於他們缺少這種信心。爲了克服這種狀態,REBOOT推薦一種文檔結構,包括測試信心和重用者的經驗。工具
美國國防部的一項稱爲可適應、可靠性的軟件技術(Software Technology for Adaptable, Reliable Software,STARS)關注過程、架構和重用三者的集成。STARS認爲軟件產品線開發的軟件週期應該包括過程驅動、軟件架構、領域工程、可重用構件庫這四個概念。開發工具
系統的軟件重用由可重用的資產(構件)的開發、管理、支持和重用4個過程組成。工做在重用資產開發過程當中的是構件開發者和領域工程師,工做在應用項目開發過程當中的是應用工程師。若是要系統地實施重用,須要遵循如下原則:測試
(1)須要高層領導支持,並須要有長期的經費支持。
(2)爲了漸進地推行系統的重用,須要規劃和調整系統的架構、開發過程、組織結構,並以小規模的先行項目爲典型示範,然後在鋪開。
(3)爲了重用,先規劃架構及其逐步實施的過程。
(4)過渡到明確的重用組織機構,將可重用構件的建立工做與重用工做分離開,而且提供明確的支持職能。
(5)在真實的環境中,進行可重用構件的建立和改進工做。
(6)要將應用系統和可重用構件做爲一個經濟覈算的產品總體進行管理,應當注重公用構件在應用系統及其子系統領域中的高盈利做用。
(7)要認識到單獨的對象技術或者單獨的構件技術是不夠的。
(8)採用競賽和更換負責人的辦法,進行開發單位的文化建設和演化。
(9)對基礎設施、重用教育、技巧培訓,要投資和持續地改進。
(10)要採用度量方法測量重用過程,並要優化重用程序。
構件標準
構件是軟件系統可替換的、物理的組成部分,它封裝了實現體(實現某個職能),並提供了一組接口的實現方法。能夠認爲構件是一個封裝的代碼模塊或大粒度額運行時模塊,也能夠將構件理解爲具備必定功能、可以獨立工做或與其餘構件組合起來協調工做的對象。
對於構件,應當按可重用的要求進行設計、實現、打包、編寫文檔。構件應當是內聚的,並具備至關穩定的、公開的接口。爲了使構件更切合實際、更有效地被重用,構件應當具有可變性,以提升其通用性。構件應向重用者提供一些公共特性,另外一方面還要提供可變的特性。針對不一樣的應用系統,只須要對其可變部分進行適當的調整,重用者要根據重用的具體須要,改造構件的可變特性,即客戶化。須要進行客戶化的構件稱爲抽象構件,而能夠直接重用的構件稱爲具體構件。通用性越好,其被重用的面就越廣。變化性越好,構件就越易於調整,以便適用於具體的應用環境。
爲了將不一樣軟件生產商在不一樣軟硬件平臺上開發的構件組裝成一個應用系統,必須解決異構平臺各構件間的互操做問題,目前已出現了一些支持互操做的構件標準,3個主要流派爲OMG(Object Management Group,對象管理集團)的CORBA(Common Object Request Broker Architecture,公共對象請求代理)、Microsoft 的COM(Common Object Model,構件對象模型)/DCOM(Distributed Component Object Model,分佈式構件對象模型)和Sun的EJB(Enterprise JavaBean,企業JavaBean)。
CORBA是由OMG制定的一個工業標準,其主要目標是提供一種機制,使得對象能夠透明地發出請求和得到應答,從而創建起一個異質的分佈式應用環境。CORBA技術規範的主要內容包括接口定義語言、接口池、動態調用接口、對象適配器等。
EJB是用於開發和部署多層結構的、分佈式的、面向對象的java應用系統的跨平臺的構建架構。
Microsoft的分佈式DCOM擴展可COM,使其能偶支持在局域網、廣域網甚至Internet上不一樣計算機的對象之間通訊。