《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.1.2 架构师的职责
生活随笔
收集整理的這篇文章主要介紹了
《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.1.2 架构师的职责
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.1.2?? 架構(gòu)師的職責(zé)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
既然已經(jīng)了解架構(gòu)的含義,那我們?cè)賮砜纯簇?fù)責(zé)創(chuàng)建架構(gòu)的責(zé)任人:架構(gòu)師。 架構(gòu)師這個(gè)角色在任何軟件開發(fā)項(xiàng)目中都是最有挑戰(zhàn)性的。 ?1. 架構(gòu)師的領(lǐng)導(dǎo)與決策能力
??? 首先,架構(gòu)師是一位技術(shù)領(lǐng)導(dǎo),這意味著架構(gòu)師除了擁有專門的技能外,還必須擁有領(lǐng)導(dǎo)能力,領(lǐng)導(dǎo)能力也要能體現(xiàn)在組織中的職位上。 ? ??? 從職位上來講,架構(gòu)師是項(xiàng)目中的技術(shù)領(lǐng)導(dǎo),應(yīng)該擁有進(jìn)行技術(shù)決策的權(quán)威。不過,很多時(shí)候架構(gòu)師和項(xiàng)目經(jīng)理的職責(zé)很容易讓人混淆,下面用電影行業(yè)的職位來打一個(gè)比方,幫助大家了解他們的不同:項(xiàng)目經(jīng)理是制片人(確保事情完成),而架構(gòu)師是導(dǎo)演(確保事情正確地完成)。架構(gòu)師和項(xiàng)目經(jīng)理代表了這個(gè)項(xiàng)目的公共角色,對(duì)于項(xiàng)目外的關(guān)注人員來說,他們是主要的聯(lián)系點(diǎn)。架構(gòu)師尤其應(yīng)該是創(chuàng)建一個(gè)架構(gòu)及給組織帶來價(jià)值的投資倡導(dǎo)者。 ? ??? 在決策方面,架構(gòu)師要綜合考慮,果斷下決定。例如,在某些情況不清楚或沒有充足的時(shí)間探究所有的可能性及有交付壓力的情況下,如果架構(gòu)師不能進(jìn)行決策,那是不行的。而且這樣的環(huán)境會(huì)很常見,架構(gòu)師要接受這個(gè)現(xiàn)實(shí)而不是設(shè)法改變它。 ? ??? 有些時(shí)候,架構(gòu)師會(huì)在決策時(shí)咨詢其他人并營造其他人共同參與決策的環(huán)境,但是進(jìn)行適當(dāng)?shù)臎Q策仍然是架構(gòu)師的職責(zé),即使有時(shí)候這些決策并不總是正確的(當(dāng)然,是事后才發(fā)現(xiàn)這些決策不正確的)。因此,架構(gòu)師必須是厚臉皮的,因?yàn)樗麄兛赡鼙仨毤m正他們的決策并原路返回。 ? ??? 沒有決策能力的架構(gòu)師會(huì)使項(xiàng)目慢慢被破壞。項(xiàng)目團(tuán)隊(duì)會(huì)對(duì)架構(gòu)師失去信心,項(xiàng)目經(jīng)理將會(huì)擔(dān)心,因?yàn)檫@些等待架構(gòu)師決策的事項(xiàng)沒有進(jìn)展。更加危險(xiǎn)的是:如果架構(gòu)師沒有制定關(guān)于架構(gòu)的決策并編寫成文檔,團(tuán)隊(duì)成員會(huì)開始制定他們自己的(可能是不正確的)決策。2. 架構(gòu)師的角色可能由一個(gè)團(tuán)隊(duì)來履行
? ??? 角色和人之間是存在差異的。一個(gè)人可能會(huì)履行很多個(gè)角色,一個(gè)角色也可能會(huì)由許多人來履行。由于架構(gòu)師需要非常廣泛的技能,所以,架構(gòu)師這個(gè)角色可能會(huì)由多個(gè)人來履行,這時(shí),架構(gòu)團(tuán)隊(duì)中的每個(gè)人都可以充分運(yùn)用他自己的經(jīng)驗(yàn)來履行此角色。特別是在理解業(yè)務(wù)領(lǐng)域和各方面技術(shù)所必需的技能時(shí),往往需要多人合作才能達(dá)到相關(guān)要求。有一點(diǎn)很重要,就是最終的團(tuán)隊(duì)必須平衡。 ? ??? 如果架構(gòu)師角色由一個(gè)團(tuán)隊(duì)來履行,擁有一個(gè)首席架構(gòu)師就非常重要了,他是架構(gòu)團(tuán)隊(duì)的協(xié)調(diào)人,經(jīng)常會(huì)有先見之明。沒有這個(gè)協(xié)調(diào)人,要讓架構(gòu)團(tuán)隊(duì)的成員創(chuàng)造出內(nèi)聚的架構(gòu),或做出決策是很困難的。 ? ??? 對(duì)于一個(gè)不熟悉架構(gòu)概念的團(tuán)隊(duì)來說,為了達(dá)成共同的目的,建議團(tuán)隊(duì)?wèi)?yīng)該創(chuàng)建并頒布一個(gè)團(tuán)隊(duì)規(guī)章。 優(yōu)秀的架構(gòu)師知道他們的優(yōu)勢和弱勢。最優(yōu)秀的架構(gòu)通常由一個(gè)團(tuán)隊(duì)而不是個(gè)人創(chuàng)建的,這都是因?yàn)椤氨娙肆α看蟆?#xff0c;人多則見識(shí)更廣和更深。
3. 架構(gòu)師要理解軟件開發(fā)流程
? ??? 大部分架構(gòu)師曾經(jīng)都做過開發(fā)人員(幾乎是絕大部分架構(gòu)師都是從開發(fā)人員走過來的),同時(shí),架構(gòu)師應(yīng)該了解軟件開發(fā)流程,因?yàn)檫@個(gè)流程能確保團(tuán)隊(duì)的所有成員協(xié)調(diào)的工作。 ? ??? 這種協(xié)調(diào)性可以通過定義涉及的角色、從事的任務(wù)、創(chuàng)建的工作產(chǎn)品、不同角色之間的移交點(diǎn)來獲得。因?yàn)樵谌粘9ぷ髦屑軜?gòu)師會(huì)影響許多團(tuán)隊(duì)成員,所以理解團(tuán)隊(duì)成員的角色和職責(zé),理解他們正在生產(chǎn)和使用的東西對(duì)于架構(gòu)師來說很重要。實(shí)際上,團(tuán)隊(duì)成員也非常希望架構(gòu)師能夠指導(dǎo)他們的工作。 ?
4. 架構(gòu)師掌握技術(shù)與設(shè)計(jì)知識(shí)
? ??? 架構(gòu)設(shè)計(jì)會(huì)涉及技術(shù)知識(shí),所以,一個(gè)架構(gòu)師應(yīng)該擁有一定程度的技術(shù)技能。不過,架構(gòu)師不必是一個(gè)技術(shù)專家,他要關(guān)注的是技術(shù)相關(guān)重要因素,而不是細(xì)節(jié)(其實(shí)很多時(shí)候,架構(gòu)師也是技術(shù)專家,而且對(duì)細(xì)節(jié)理解得非常深入)。架構(gòu)師需要理解像Java EE或.NET這樣的平臺(tái)上可用的關(guān)鍵框架,但是不必理解這些平臺(tái)程序編程接口(API)的細(xì)節(jié)。 ? ??? 架構(gòu)師必須與項(xiàng)目中的開發(fā)人員打交道,只有當(dāng)架構(gòu)師承認(rèn)開發(fā)人員的工作價(jià)值時(shí),在架構(gòu)師和開發(fā)人員之間的溝通才是有效的。這也說明了,架構(gòu)師應(yīng)該具有一定的編程技能,即使他們?cè)陧?xiàng)目中不必編寫代碼,也必須跟上技術(shù)更新的腳步。 ? ??? 架構(gòu)師應(yīng)該有組織地參與開發(fā),并且盡可能地參與代碼的編寫。如果架構(gòu)師參與實(shí)現(xiàn),開發(fā)團(tuán)隊(duì)會(huì)從架構(gòu)師那兒獲得見識(shí)。架構(gòu)師還可以通過查看他們決策和設(shè)計(jì)的第一手結(jié)果來進(jìn)行學(xué)習(xí),從而對(duì)開發(fā)流程給出反饋。 ? ??? 大部分成功的軟件架構(gòu)師都曾經(jīng)是核心的編程人員。某種程度上來說,他們就是通過這段經(jīng)歷了解到業(yè)務(wù)的某些情況的。如果沒有這些知識(shí),要實(shí)架構(gòu)上的重要元素(如源代碼的組織、采用的編程標(biāo)準(zhǔn))時(shí),架構(gòu)師將無法進(jìn)行決策,架構(gòu)師和開發(fā)人員之間將會(huì)存在溝通障礙。 ? ??? 另外,設(shè)計(jì)是架構(gòu)設(shè)計(jì)的核心。架構(gòu)使關(guān)鍵設(shè)計(jì)決策具體化,因此,架構(gòu)師應(yīng)該擁有很強(qiáng)的設(shè)計(jì)技能。關(guān)鍵設(shè)計(jì)決策指的是關(guān)鍵結(jié)構(gòu)的設(shè)計(jì)決策、特定模型的選擇、指導(dǎo)規(guī)格說明書等。 ? ??? 一個(gè)人不可能在短時(shí)間內(nèi)獲得設(shè)計(jì)能力,這是多年經(jīng)驗(yàn)累積的結(jié)果。某些設(shè)計(jì)專家在回顧他們?cè)缙诘墓ぷ鲿r(shí)都會(huì)驚訝他們?cè)瓉淼脑O(shè)計(jì)是如此的不好。在學(xué)習(xí)一項(xiàng)新技能時(shí),想要對(duì)此精通則必須進(jìn)行設(shè)計(jì)實(shí)踐。 ?
5. 架構(gòu)師要掌握業(yè)務(wù)領(lǐng)域的知識(shí)
? ??? 架構(gòu)師除了掌握軟件開發(fā)技術(shù)之外,還要理解業(yè)務(wù)領(lǐng)域相關(guān)知識(shí)(可以說是必須理解),以便擔(dān)任利益相關(guān)者、用戶(他們理解業(yè)務(wù))及開發(fā)團(tuán)隊(duì)成員(他們更熟悉技術(shù))之間的中間人。 ? ??? 業(yè)務(wù)領(lǐng)域的知識(shí)除了使架構(gòu)師更好地理解系統(tǒng)的需求之外,還能夠確保他們及時(shí)捕獲恰當(dāng)?shù)男枨蟆A硗?#xff0c;一個(gè)特定領(lǐng)域通常與應(yīng)用到這個(gè)解決方案中的特定架構(gòu)模型組(和其他資源)相關(guān),知道這個(gè)對(duì)照關(guān)系可以極大地幫助架構(gòu)師。 ? ??? 因此,一個(gè)優(yōu)秀的架構(gòu)師通常會(huì)平衡掌握軟件開發(fā)知識(shí)和業(yè)務(wù)領(lǐng)域知識(shí)。當(dāng)架構(gòu)師理解軟件開發(fā)但不理解業(yè)務(wù)模型時(shí),可能會(huì)開發(fā)出只反映出他所熟悉內(nèi)容但無法滿足需求的解決方案。 ? ??? 熟悉業(yè)務(wù)領(lǐng)域使架構(gòu)師能夠預(yù)見到架構(gòu)中可能發(fā)生的改變。既然架構(gòu)受其部署的環(huán)境(包括業(yè)務(wù)領(lǐng)域)影響很大,對(duì)業(yè)務(wù)領(lǐng)域的正確認(rèn)識(shí)會(huì)使架構(gòu)師在可能改變的區(qū)域和穩(wěn)定性方面做出更全面的決策。舉例來說,如果架構(gòu)師認(rèn)識(shí)到在將來的某點(diǎn)必須符合新的調(diào)整標(biāo)準(zhǔn),他會(huì)在架構(gòu)中考慮這個(gè)需求。 ?
6. 架構(gòu)師是優(yōu)秀的溝通人員
? ??? 在架構(gòu)師相關(guān)的所有軟技能中,溝通最重要。有效溝通所涉及的各個(gè)方面架構(gòu)師必須全部精通。架構(gòu)師尤其要擁有較強(qiáng)的口頭、書面表達(dá)能力同時(shí),溝通是雙向的,架構(gòu)師應(yīng)該既是優(yōu)秀的聆聽者,也是優(yōu)秀的觀察者。 ? ??? 有許多理由說明有效溝通是項(xiàng)目成功的基礎(chǔ)。很明顯,與利益相關(guān)者的溝通對(duì)于理解他們的需求,以及就架構(gòu)相關(guān)問題與他們達(dá)成(并保持)一致來說非常重要。 ? ??? 與項(xiàng)目團(tuán)隊(duì)溝通也是十分重要的,因?yàn)榧軜?gòu)師不能只是簡單地把信息傳達(dá)給團(tuán)隊(duì),他還要激發(fā)團(tuán)隊(duì),比如他必須要傳達(dá)(并強(qiáng)調(diào))系統(tǒng)的愿景,讓大家都了解這個(gè)愿景,而不是只有他自己理解并相信。 ? ??? 同時(shí),架構(gòu)師也必須是一位比較好的談判專家。對(duì)于架構(gòu)設(shè)計(jì)的許多方面,架構(gòu)師需要與眾多利益相關(guān)者進(jìn)行交流,其中的一些交流則需要談判技巧。 ? ??? 另外,架構(gòu)師應(yīng)特別關(guān)注如何在項(xiàng)目中盡可能早地把風(fēng)險(xiǎn)降到最小,因?yàn)檫@會(huì)對(duì)穩(wěn)定架構(gòu)所花的時(shí)間有直接影響。風(fēng)險(xiǎn)與需求(及需求中的變化)有關(guān),消除風(fēng)險(xiǎn)的一個(gè)途徑是精煉需求,以便這種風(fēng)險(xiǎn)不再出現(xiàn),那么這就需要回退需求并和利益相關(guān)者達(dá)成一致意見了。在這種情形下,如果架構(gòu)師是一位談判高手,能夠清晰明白地表明不同折中的后果,相信一定會(huì)事半功倍。
7. 架構(gòu)師了解組織政策
??? 成功的架構(gòu)師并不只是關(guān)心技術(shù),他們還要對(duì)政治足夠敏感,并且知道組織中的權(quán)力所在。他們可利用這些知識(shí)與恰當(dāng)?shù)娜藴贤?#xff0c;確保在項(xiàng)目的適當(dāng)周期中獲得相應(yīng)的支持。 ? ??? 政策包括大量的不確定性,這會(huì)使許多技術(shù)人員緊張,讓他們感覺仿佛在“客場”比賽,他們正處于一個(gè)不利的位置,因?yàn)樗麄兊募夹g(shù)不能發(fā)揮出多大的威力。 ? ??? 實(shí)際上,組織中起作用的許多強(qiáng)制約束位于項(xiàng)目交付的系統(tǒng)之外,并且這些約束是必須考慮的。為了解決不同的意見,一個(gè)政策性流程是不可避免的。因此,與其譴責(zé)它,倒不如把政策理解成是處理不同意見的必然需求。 ? 當(dāng)當(dāng)網(wǎng):http://product.dangdang.com/product.aspx?product_id=22574513 京東地址:http://book.360buy.com/10893935.html 卓越地址:http://www.amazon.cn/mn/dp/B006NS2N0S轉(zhuǎn)載于:https://blog.51cto.com/yanyangtian/746208
總結(jié)
以上是生活随笔為你收集整理的《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.1.2 架构师的职责的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 干姜粉自制方法
- 下一篇: 《大话设计模式》6个原则 转帖