好的架構會有那些屬性呢?這些屬性也許感覺和架構設計目標有點像,但是會需要考慮這些屬性的原因,其實是為了達到架構設計的目標。例如說,伸縮性與容錯性都是為了使此架構成為一個高可靠的系統。
常見的軟體架構屬性包含:伸縮性、高容錯、易用性、低耦合、可移植性、可重用性
由於系統使用量的多變化性,架構設計會考慮其各項需求伸縮的容易度。易於伸縮的系統可依照需求即時調整。在系統需求量高時,增加資源以快速消化需求。在系統需求量低時,減少資源以節約成本。在系統的各方面都需要考慮伸縮性,包含計算、檔案讀寫、資料庫讀寫、網路流量等。
高容錯的架構可以避免單點故障造成系統無法使用或出現重大錯誤。
系統設計時應該盡可能易於使用以減少不熟悉的使用者初次使用時的挫折感,並減少操作的多餘動作。這有助於吸引更多客群並帶來更多利潤。
系統的低耦合性指的是模組之間的相互依賴程度低。在大型系統中,通常會根據功能性質將系統拆分為多個模組,例如訂單模組、使用者資訊模組等。儘管這些模組可能需要相互協作,但為了更好地管理模組,應該減少模組之間的直接相依性。這樣可以避免耦合度過高,從而使各模組更容易進行變更,因為一旦進行變更可能對其他模組產生重大影響。
開發應用程式時應考慮可移植性,因為同樣的商業邏輯未來可能要在不同環境下執行。例如,本來是網頁後端伺服器須執行此邏輯,後來需要在Batch或排程作業中也要可以執行此邏輯。讓應用程式可移植性高,未來轉移環境時可減少修改的幅度。
在軟體開發過程中,強調將相似或重複的元件從程式碼中抽離,以減少重複編寫程式碼的情況。