1. 程式人生 > >專案管理之資訊系統開發基礎(二、架構設計)

專案管理之資訊系統開發基礎(二、架構設計)

 導語:軟體架構為軟體系統提供了一個結構、行為和屬性的高階抽象,由構建的描述、構建的相互作用(連線件)、指導構建整合的模式以及這些模式的約束組成。 軟體架構不僅制定了系統的組織結構和拓撲結構,並且顯示了系統需求和構件之間的對應關係,提供了一些設計決策的基本原理。

1,軟體架構風格

軟體架構設計的一個核心問題是能否達到架構級的軟體複用,這種可複用的共性,形成了軟體架構的特定風格,有以下五種。

   1)資料流風格

    2)呼叫/返回風格

    3)獨立構件風格

    4)虛擬機器風格

    5)倉庫風格

2,軟體架構的分類

   ① 邏輯架構

     邏輯架構關注的是功能,包含使用者直接可見的功能,還有系統中隱含的功能。或者更加通俗來描述,邏輯架構更偏向我們日常所理解的“分層”,把一個專案分為“表示層、業務邏輯層、資料訪問層”這樣經典的“三層架構”。

   ②開發架構

    開發架構則更關注程式包,不僅僅是我們自己寫的程式,還包括應用程式依賴的SDK、第三方類庫、中間價等。尤其是像目前主流的Java、.NET等依靠虛擬機器的語言和平臺,以及主流的基於資料庫的應用,都會比較關注。和邏輯架構有緊密的關聯。

   ③執行架構

        顧名思義,更關注的是應用程式執行中可能出現的一些問題。例如併發帶來的問題,比較常見的“執行緒同步”問題、死鎖問題、物件建立和銷燬(生命週期管理)問題等等。開發架構,更關注的是飛機起飛之前的一些準備工作,在靜止狀態下就能規劃好做好的,而執行架構,更多考慮的是飛機起飛之後可能發生的一些問題。

   ④物理架構

    物理架構,更關注的系統、網路、伺服器等基礎設施。例如:如何通過伺服器部署和配置網路環境,來實現應用程式的“可伸縮性、高可用性”。或者舉一個實際的例子,如何通過設計基礎設施的架構,來保障網站能支援同時10W人線上、7*24小時提供服務,當超過10W人或者低於10W人線上時,可以很方便的調整部署架構來支撐。

   ⑤資料架構

    資料架構,更關注的是資料持久化和儲存層面的問題,也可能會包括資料的分佈、複製、同步等問題。更貼切來講,如何選擇需要的關係型資料庫、流行的NOSQL,如何保障資料儲存層面的效能、高可用性、災備等等。很多時候,和物理架構是有緊密聯絡的,但它更關注資料儲存層面的,物理架構更關注整個基礎設施部署層面。

3,軟體構架的目標

① 可靠性(Reliable)軟體系統對於使用者的商業經營和管理來說極為重要,因此軟體系統必須非常可靠。
安全性(Secure)軟體系統所承擔的交易的商業價值極高,系統的安全性非常重要。
可伸縮性(SCAlable)軟體必須能夠在使用者的使用率、使用者的數目增加很快的情況下,保持合理的效能。只有這樣,才能適

應使用者的市場擴充套件得可能性。
可定製化(CuSTomizable)同樣的一套軟體,可以根據客戶群的不同和市場需求的變化進行調整。
可擴充套件性(Extensible)在新技術出現的時候,一個軟體系統應當允許匯入新技術,從而對現有系統進行功能和效能的擴充套件。
可維護性(MAIntainable)軟體系統的維護包括兩方面,一是排除現有的錯誤,二是將新的軟體需求反映到現有系統中去。一個易於維護的系統可以有效地降低技術支援的花費。
客戶體驗(Customer Experience)軟體系統必須易於使用。

市場時機(Time to Market)軟體使用者要面臨同業競爭,軟體提供商也要面臨同業競爭。以最快的速度爭奪市場先機非常重要。

4,軟體架構的評估方式

1)基於問卷調查(或檢查表)的方式

2)基於場景的方式(主要評估方式) 架構權衡分析法(ATAM),軟體架構分析法(CBAM),成本效益分析法(SAAM)

3)基於度量的方式

5,軟體設計

1)結構化設計

①概要設計

②詳細設計

2)面相物件設計(OOD)

OOD設計原則

① 單一職責原則

②開放-封閉原則

③李氏替換原則

依賴倒置原則

介面隔離原則

⑥組合重用原則

⑦迪米特原則(最少知識法則)

3)設計模式

①分類模式

②物件模式