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