軟體開發 Architectural Design (1)

基本介紹

教學目標

為何要進行架構設計有三大原因,Stakeholder Communication、System Analysis 和 Large-Scale Reuse,台灣的軟體業如同變形蟲,彈性很大,但卻很難成長,原因則是來不及撰寫程式,然而國際的軟體業則是恐龍,有良好品質的架構,利用架構標準保持成長與賺錢。

重點概念

基本模式

MVC

以網站為例,簡單來說就是前端網頁,後端邏輯、資料儲存。

  • 優點
    允許資料可單獨去改變其代表性,且支援相同的資料以不同方式來改變顯示。
  • 缺點
    可能會包括額外的 Code ,也就是說當資料模型互動是很簡單時 Code 卻會很複雜度。

Layer

多層次的架構。

  • 優點
    只要 Interface保持不變就允許更換整個階層,且多層設計可以增加系統的可靠性。
  • 缺點
    在實務中,提供清楚的分層是非常困難的,且高層次的階層不能直接與低層次的階層直接互動,且性能可能是問題,因為多層次的服務請求會在每一層處理。

Repository

將所有資料儲存在一個共用的儲存庫,再進行分工來進行開發。

  • 優點
    Components 是可獨立的,由其中一個 Component 所做的更改可進行傳播到所有的 Components ,且所有的資料將會被一致性的管理。
  • 缺點
    因為是 Single point of failure 所以發生問題時會影響整個系統,且因為組織所有的 Communication 皆通過 Repository 所以會比較沒效率,以及要將 Repository 進行分散式是非常困難的。

Pipe and Fliter

資料從輸入後會進行一連串的轉換直到輸出需要的結果。

  • 優點
    易於理解和支持傳輸重用, Workflow 風格皆有符合的業務流程結構所以增加傳輸很直接以及無論是作為循序或並行系統皆可實現。
  • 缺點
    用於資料傳輸的格式,必須有約定的通信傳輸。每次傳輸必須分析其輸入和輸出未分析其約定的形式,這樣提高了系統的負擔,並可能意味著它是不可能再使用不相容的資料結構進行功能轉換。

Client-Server:Client

藉由網際網路的平台向 Server 取得資料。

  • 優點
    Server 可以分佈在網絡上,且只需將一般功能提供給所有客戶,並不需要執行的所有服務。
  • 缺點
    任一服務皆是一個 Single point of failure ,所以容易受到 DDoS 攻擊或 Server failure 。性能可能是不可預知的,因為它依賴於網路和系統。若Server是由不同的組織所擁有的話,可能會造成管理的問題。

面臨問題

而資深架構師則談到台灣軟體業最缺乏的就是 How to team work?

一個 Architect 不只要考量 Development 外,還需考量到 Business 和 Operating 且要看什麼呢?

簡單來說就是 RUP 4+1 Architectural View Model,其中 Scenarios 即是 Use Case 也就是最主要的中心主軸,然而往往架構師所做的設計不是最好的架構,而是最適合的,原因在於存有的系統

工作角色

此外一個 Architect 主要工作則有:

  1. Analysis Model
  2. Design Model
  3. Reference Architecture
  4. Software Architecture Document
  5. Deployment
  6. Implement

當中最重要的責任則是同樣的事情能以 Business 的角度和 IT 的角度來分析,也就是使用者與工程師之間 Mapping 的溝通橋梁。

老闆不會想知道這系統架構用了多厲害的技術,而是想知道這系統架構解決了什麼問題。

相關資源