可重用性 计算机科学和软件工程中的可重用性reusability是指可以重新使用以某種软件开发过程下產生的已有資產assets資產是指在軟體開發生命週期中產生的產品以及副產品可以是程式碼軟體模組測試套件設計以及文件代碼複用就是程式碼可重用性的呈現另外一種概念稱為槓桿leverage是指為了符合特定的系統需求修改現有的資產因為重用可以減少同一資產的不同版本因此在版本管理上會比槓桿要好 以程式碼來說子程序或函式是可以重用的最小單位一長串的程式碼一般會用模块或命名空间進行管理區分為不同的層次一些支持者認為对象以及軟體組件是可重用性更高的型式不過很難客觀的衡量可重用性為其定義等級或是評分 可重用性非常依賴由較小的部份建構出較大東西的能力而且要可以識別出這些部份的共性英语commonality可重用性是系统平台軟體必要的特質可重用性也帶出許多软件开发中的不同層面若沒有可重用性這些層面可以不需要考慮 可重用性表示對於軟體組建包裝分销安裝程式組態英语computer configuration软件部署軟體維護和升級有一些具體的管理方式若沒有考慮這些議題可能在软件设计的觀點來看可以復用程式但在實務上仍然無法復用 軟體可重用性更多的是指軟體單元或是許多軟體單元在設計上的特質這個特質使其適合於復用 許多復用的設計原則是在WISR的workshop中提出的 以下是一些軟體重用旳設計特徵 适应性英语Adaptability 簡短長度不長 一致性 正确性 可扩展性 速率 灵活的 泛型 不穩定可變英语Changeable design設計假設的本地化David Parnas 模块化编程 正交英语Orthogonality programming 參數化英语Parameterization 簡單低複雜性 在需求變化下可以保持穩定英语Stability Model 有關上述特徵中哪一個比較重要或是在特定應用下那一個議題影響比較大目前也還沒有共識