軟件架構定義
軟件架構是一個系統的草圖。軟件架構描述的對(duì)象是直接構成系統的抽象組件。各個組件之間的連接則明确和相對(duì)細緻地描述組件之間的通訊。在實現階段,這些抽象組件被細化爲實際的組件,比如(rú)具體某個類或者對(duì)象。在面向對(duì)象領域中,組件之間的連接通常用(yòng)接口來實現。
軟件體系結構是構建計算機軟件實踐的基礎。與建築師設定建築項目的設計原則和目标,作爲繪圖員畫圖的基礎一樣,一個軟件架構師或者系統架構師陳述軟件構架以作爲滿足不同客戶需求的實際系統設計方案的基礎。
架構設計的目标
正如(rú)同軟件本身有其(qí)要(yào / yāo)達到的目标一樣,架構設計要(yào / yāo)達到的目标是什麽呢?一般而(ér)言,軟件架構設計要(yào / yāo)達到如(rú)下(xià)的目标:
可(kě)靠性(Reliable)。軟件系統對(duì)于(yú)用(yòng)戶的商業經營和管理來說極爲重要(yào / yāo),因此軟件系統必須非常可(kě)靠。
安全性(Secure)。軟件系統所(suǒ)承擔的交易的商業價值極高,系統的安全性非常重要(yào / yāo)。
可(kě)伸縮性(SCAlable)。軟件必須能(néng)夠在用(yòng)戶的使用(yòng)率、用(yòng)戶的數目增加很快的情況下(xià),保持合理的性能(néng)。隻有這樣,才能(néng)适應用(yòng)戶的市場擴展得(dé / de / děi)可(kě)能(néng)性。
可(kě)定制化(CuSTomizable)。同樣的一套軟件,可(kě)以根據客戶群的不同和市場需求的變化進行(háng / xíng)調整。
可(kě)擴展性(Extensible)。在新技術出現的時候,一個軟件系統應當允許導入新技術,從而(ér)對(duì)現有系統進行(háng / xíng)功能(néng)和性能(néng)的擴展。
可(kě)維護性(MAIntainable)。軟件系統的維護包括兩方面,一是排除現有的錯誤,二是将新的軟件需求反映到現有系統中去(qù)。一個易于(yú)維護的系統可(kě)以有效地降低技術支持的花費。
客戶體驗(Customer Experience)。軟件系統必須易于(yú)使用(yòng)。
市場時機(Time to Market)。軟件用(yòng)戶要(yào / yāo)面臨同業競争,軟件提供商也要(yào / yāo)面臨同業競争。以最快的速度争奪市場先機非常重要(yào / yāo)。
系統架構
系統的非功能(néng)性特征,如(rú)可(kě)擴展性、可(kě)靠性、強壯性、靈活性、性能(néng)等。
系統架構的設計要(yào / yāo)求架構師具備軟件和硬件的功能(néng)和性能(néng)的過(guò)硬知識,這一工作無疑是架構設計工作中最爲困難的工作。
此外,從每一個角度上看,都可(kě)以看到架構的兩要(yào / yāo)素:元件劃分和設計決定。
首先,一個軟件系統中的元件首先是邏輯元件。這些邏輯元件如(rú)何放到硬件上,以及這些元件如(rú)何爲整個系統的可(kě)擴展性、可(kě)靠性、強壯性、靈活性、性能(néng)等做出貢獻,是非常重要(yào / yāo)的信息。
其(qí)次,進行(háng / xíng)軟件設計需要(yào / yāo)做出的決定中,必然會(huì)包括邏輯結構、物理結構,以及它們如(rú)何影響到系統的所(suǒ)有非功能(néng)性特征。這些決定中會(huì)有很多是一旦作出,就(jiù)很難更改的。
一個基于(yú)數據庫的系統架構,有多少個數據表,就(jiù)會(huì)有多少頁的架構設計文檔。比如(rú)一個中等的數據庫應用(yòng)系統通常含有一百個左右的數據表,這樣的一個系統設計通常需要(yào / yāo)有一百頁左右的架構設計文檔。