軟件架構師
軟件架構師是什么?需要什么樣的知識體系?如何成為優秀的軟件架構師呢?
第一個問題:
軟件架構師一詞應該是對應系統架構師,都是架構師,但側重不同。在4+1視圖中,我覺得如果把架構師分為這兩種的話,軟件架構師應該是站在邏輯視圖和開發視圖的角度,而系統架構師則更多的是過程視圖和物理視圖。當然,這兩個角色就象是人的兩個眼睛,缺少一個都會定位不準確,容易是系統目標偏離。
當然了,現實世界中,一般這兩中角色集中在一個人身上體現出來,或者一個小組。很多公司都不設置此類職位;有的公司則分工很細。
第二個問題:
知識體系不好說,只說重點的吧。
軟件架構師的職責是把需求轉換為軟件世界的模型。4+1視圖中以use case作為核心,其中功能性需求以及部分非功能性需求會被軟件架構師通過分析和設計,映射為各種軟件設計模型。從OOA/OOD角度說,use case 在這個過程中是要轉換為各種UML,其中類圖,序列圖,狀態圖是最常用到的。這個轉換過程是需要智慧的,use case是目的,各種OO的原則是指導,設計模式是經驗,靈活運用是能力。里面蘊涵了設計的美感,我覺得這個過程是衡量一個軟件架構師的最重要的指標。
當然這個過程是迭代和反饋的,我覺得概要設計和詳細設計只是思考同一個問題的粒度不同而已。
另外就是我們要熟悉語言,詳細設計是要轉換為代碼的,而且跟語言是有關系的。語言比如java/c++等,詳細設計的模型是有很多不同的。就需要軟件架構師有過這個過程,并且是非常良好的映射。
除了語言就是要熟悉某個技術領域,比如J2EE/DOTnet.從J2ee來說,可能需要了解比如jsp/servlet/ejb/jndi/jta/jdbc等。還需要了解各種web framework,o/rmapping,ioc/aop容器等等。還有的就是一些技術組件和業務組件,不如workflow,rules engine等等。另外比如各種database.熟悉這些東西的目的,是把這些軟件和組件合理并且有機的組織起來成為一個開發的架構。這個過程是需要創造力和想象力的。可能很多人認為這個地方正是軟件架構師體現能力的地方。
第三個問題:
我不是很清楚,但我認為意志和想象力能夠使每個有目標的人達到彼岸。
msn:gdq123@hotmail.com
posted on 2006-05-30 13:31 人要有夢想 閱讀(5637) 評論(1) 編輯 收藏 所屬分類: software architecture