雖然我們總是期望架構設計師能全面掌握需求,但由于時間和精力的限制,擺在我們面前的現實就是架構設計師沒有時間對所有需求進行深入分析,所以我們的策略就是“把好鋼用在刀刃上”,即把大部分時間和精力花在對決定架構最重要的關鍵需求上。在選擇關鍵需求時要注意:高優先級的需求往往是從用戶的角度來看的,可能并不是真正的關鍵需求。在《RUP實踐者指南》一書中向我們講述了如何確定關鍵功能需求?A.作為應用程序的核心或實現了系統的主要接口的功能,B.必須被實現的功能,即如果這些功能不被實現,則開發出來的軟件就失去了價值,C.覆蓋了系統架構的一些方面,但沒有被其他重要的Use case覆蓋到的功能。
2、分別從各個視角來考慮軟件架構的方方面面。
軟件的架構設計必須考慮到各方面,根據前期工作確立的領域模型,關鍵需求,系統約束等進行設計,必須從系統用戶,開發人員,系統管理員,部署管理員,數據管理員等人員的角度去分析并解決問題。比如說,如果我們的運行架構采用Cluster方式時,就必須小心Cache和Session等的使用;如果我們的業務邏輯要求我們要操作多個數據庫時,就要考慮采用支持二階段事務提交的方式。
只有將這些方方面面的問題都考慮到了,這樣的架構設計才是完整的。至于每一個視圖中,我們應該設計到什么細節這一問題,實際上與整個項目的過程定義有關。例如,如果我們有專門安排數據庫概要設計的活動,那我們在架構設計的過程中就可以只需要關注更高層次的數據庫特性及數據庫之間的關系,而每一張表的數據字典可以在后續的相關活動中進行設計,但如果沒有這樣的活動,那我們就要細化到每一張表的每一個欄位,以及表之間的關系。
3、解決技術面的重點問題和難題
在軟件架構設計的過程中,我們往往會需要攻克一些技術面的重點問題和難題,這完全是一項極其需要扎實的理論知識和豐富的實踐經驗支撐的工作。例如,我們如何提高整個系統的性能?如何能很好的導出極其復雜的“中國式報表”(一般比西方國家產出的報表要復雜很多,而且很多開源的BI類的框架并不能完全解決問題)?
當遇到確實是很困難的問題,可以去百度一下或Google一下,也可以去請教公司的資深技術人員或專家,或者召開小范圍的技術專題討論會議,采用腦力激蕩的方法試著找找答案,這樣才能提高工作的效率。
文章來源于領測軟件測試網 http://www.kjueaiud.com/