- 實用軟件架構:從系統環境到軟件部署
- (印)蒂拉克·米特拉
- 601字
- 2019-09-02 17:48:36
2.3.3 關注非功能方面的能力
對軟件系統在非功能方面的能力加以關注,是軟件架構的一項關鍵職責。我們通常都說:如果在進行系統架構工作時沒有對非功能型需求(nonfunctional requirement,NFR)給予足夠重視,那么系統通常就會出現故障或發生崩潰,事實也確實如此。
在系統的非功能型需求中,可擴充性(extensibility)、可伸縮性(scalability)、可維護性,以及性能和安全程度,是其中比較重要的幾個需求。NFR的特殊之處在于,它們本身雖然未必是組件實體,但是卻需要架構中能夠有一個或多個功能組件對其進行特別的關照。就這一點來說,架構中的非功能型需求,可以對這種功能組件的屬性施加影響,并促使我們去增強其屬性??紤]這樣一個用例:系統需要把響應時間控制在1秒以內。系統架構師決定把C1、C2和C3這三個組件結合起來,以實現該用例。在這種情況下,組件的特性所具備的本質特點及復雜程度,就規定了每個組件必須要在多長時間內完成其職責,例如C1可能必須在300毫秒內完成,C2可能必須在500毫秒內完成,C3可能必須在200毫秒內完成。由此或許可以發現一些線索,使我們能夠看出為了展現、支持或遵照某些特性,還需要給ABB添加哪些屬性。
要想做出設計精良、考慮周到的架構,就應該對系統中那些非功能型需求給予適當的關注。在軟件開發的生命期中,這些需求應該放在架構定義階段來考慮,而不能等架構確定好之后再去考慮。
從技術角度來看,如果我們在進行系統架構時,能夠適當地關注并考慮非功能方面的需求,那么系統的故障風險就會大幅度降低。
推薦閱讀
- Go Web編程
- UML和模式應用(原書第3版)
- 數字媒體應用教程
- JavaScript全程指南
- Getting started with Google Guava
- Vue.js前端開發基礎與項目實戰
- 趣學Python算法100例
- Practical DevOps
- Instant 960 Grid System
- Hands-On C++ Game Animation Programming
- PHP+MySQL+Dreamweaver動態網站開發實例教程
- 搞定J2EE:Struts+Spring+Hibernate整合詳解與典型案例
- 從零學Java設計模式
- Ext JS 4 Plugin and Extension Development
- Learning Kotlin by building Android Applications