若是你對項目管理、系統架構有興趣,請加微信訂閱號「softjg」,加入這個PM、架構師的你們庭 編程
軟件架構有三個主要來源:拿取、方法以及直覺。拿取也就是可重用資源。對於一個標準的系統而言,可能包含80%的拿取、19%的方法和1%的直覺。而嶄新的系統則包含30%的拿取、50%的方法和20%的直覺。因而可知,拿取在軟件架構中的重要性,本節我來帶領你們瞭解可重用架構資源。 設計模式
一個可重用資源能夠表明一個可重用需求(在不一樣系統裏反覆出現的需求)、可重用的解決方案元素(一個架構模式或者可重用代碼)、可重用測試、可重用的方法等。可重用資源減小了架構師必須關注的事情的數量,使他們沒必要再作無用功,所以可重用資源會對項目的時間計劃、成本和交付系統的質量產生重大的影響。一個成功的架構師一般是懂的可重用資源的人。 服務器
對於架構資源來講,它分爲開發期資源和運行期資源。其中開發期資源包括開發方法、架構風格、架構機制、模式、參考模型和架構決策,而運行期資源則包括現有的應用程序、應用程序框架和組件庫。開發期資源和運行期資源的元模型以下圖所示。 微信
開發方法 架構
開發方法包括最佳實踐和相關的指導、技術以及標準,還有與建立工做產品相關的可重用元素,如模板和樣例。咱們對開發方法的重用一般是指某些自動化的適當工具,如建模工具Rose、編譯器Eclipse、調試器RestClient等。 框架
架構風格 工具
架構風格定義組件和鏈接器類型的詞彙及它們如何進行組合的一組約束。架構風格總體應用於系統。架構風格能夠指面向服務的架構(SOA),客戶端-服務器模型,管道和過濾器模型等。 測試
架構機制 設計
架構機制表明常常遇到的問題的共同的具體解決方法。持續機制、錯誤記錄機制、通訊機制和購物車都屬於架構機制。 調試
模式
模式是在給定的上下文中針對一個常規問題的一個常規解決方法。模式的範圍很是廣,包括需求模式、架構模式、設計模式、編程模式、測試模式、項目管理模式、方法模式和組織模式等。
對架構模式的重用例子有基於電子商務的IBM模式,基於金融系統的IBM模式等。對與設計模式的重用主要是對經典的Gof設計模式的重用。
參考模型
參考模型是一個特定關注領域的實體、它們的關係和行爲的一個抽象表示,它一般爲更具體的元素的開發造成概念基礎。
參考模型的例子有不少,好比業務模型、信息模型和術語表等。參考模型最典型的一個例子是IBM的保險應用架構(IIA,Insurance Application Architecture),這個模型提供了表明保險行業廣泛使用的最佳實踐的200多個業務流程和700個獨立的業務活動。
架構決策
架構決策是關於一個軟件系統總體或它的一個或多個核心組件的刻意設計決策。這些決策決定系統的非功能特性和質量指標。
把架構決策看做是可重用資源,是一個正在造成的領域,目前支持這類資源的方法和工具也相對不成熟。
現有的應用程序
任何現有的應用程序都是高可重用的資源。這些應用程序一般是指遺留應用程序,沒有經驗的架構師把遺留應用程序看做是要回避的東西而不是真正的有價值的資源。
當咱們把現有應用程序集成到架構中時,這項工做的主要精力在集成而不是定製開發,重用的水平明顯提升。這種集成有時候是指遺留集成或企業應用集成(EAI)。
封裝的應用程序
封裝的應用程序是提供不少能力(和重用)的一個粗粒度的商業化成熟產品,如一個客戶關係管理(CRM)應用程序或企業資源計劃(ERP)應用程序。Siebel和SAP是典型的封裝應用程序的例子。
若是封裝的應用程序佔待開發系統的很大一部分,須要定製的開發量就會顯著減小,精力會移動到封裝應用程序的配置和集成上。
應用框架
應用框架表明一個應用程序的特定領域的部分實現。應用框架的範圍很是廣闊,它能夠指完整的平臺,如J2EE和.NET;也能夠指一個特定的領域,如數據訪問(Hibernate)或用戶界面(JSF、ASP.NET)。
本節只是基於可重用架構資源的分類介紹,並對其中的關鍵概念作了簡單介紹。稍後,我將在案例方面介紹可重用架構資源及其餘方面的關於架構的設計。
若是你對項目管理、系統架構有興趣,請加微信訂閱號「softjg」,加入這個PM、架構師的你們庭