欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
敏捷思維: 架構設計中的方法學(xué)(1)

2002 年 3 月 01 日

方法論對軟件開(kāi)發(fā)而言意味著(zhù)什么?我們如何看待軟件開(kāi)發(fā)中的方法論?方法論能夠成為軟件開(kāi)發(fā)的救命稻草嗎?在讀過(guò)此文后,這些疑惑就會(huì )得到解答。

在第一篇文章中,我們來(lái)了解標題中的一些詞的含義。

  • 方法學(xué)是什么?
  • 敏捷是什么?
  • 為什么討論架構?

方法論

方法論的英文為Methodology,詞典中的解釋為"A series of related methods or techniques"我們可以把它定義為軟件開(kāi)發(fā)(針對軟件開(kāi)發(fā))的一整套方法、過(guò)程、規則、實(shí)踐、技術(shù)。關(guān)于方法論的出現的問(wèn)題,我很贊同Alistair Cockburn的一句話(huà),"方法論源于恐懼。"出于對項目的超期、成本失控等等因素的恐懼,項目經(jīng)理們從以前的經(jīng)驗出發(fā),制定出了一些控制、監測項目的方法、技巧。這就是方法論產(chǎn)生的原因。

在A(yíng)gile Software Development一書(shū)中,作者提到了方法論的十三個(gè)要素,基本能夠函蓋方法論的各個(gè)方面:

  • 角色(Roles)
  • 個(gè)性(Personality)
  • 技能(Skills)
  • 團隊(Teams)
  • 技術(shù)(Techniques)
  • 活動(dòng)(Activities)
  • 過(guò)程(Process)
  • 工件(Work products)
  • 里程碑(Milestones)
  • 標準(Standards)
  • 質(zhì)量(Quality)
  • 工具(Tools)
  • 團隊價(jià)值(Team Values)

它們之間的關(guān)系可以用一幅圖來(lái)表示:


圖 1. 方法論的十三個(gè)要素

很多的方法論,都涉及了上面列舉的十三要素中的部分要素,因此,我們可以把方法論看作是一個(gè)抽象的、無(wú)窮的超集,而現實(shí)中的方法論都是指超集的一個(gè)有限的子集而已。它們之間的關(guān)系就好像有理數和1到100之間的整數的關(guān)系一樣。不論是XP,還是UI設計經(jīng)驗之類(lèi),都屬于方法論的一個(gè)子集,只是這兩個(gè)子集之間有大小的差別而已。我們還應該看到,討論一個(gè)完備的方法論是沒(méi)有意義的,因此這種方法論鐵定不存在,就好像你視圖窮舉出所有的有理數一樣荒唐。因此,我們關(guān)于一個(gè)通用的方法論的說(shuō)法也是無(wú)意義的。好的方法論,比如說(shuō)XP、水晶系列,它們都有一個(gè)適合的范圍,因為它們了解一點(diǎn),自己并不是一個(gè)無(wú)所不能的方法論。

在現實(shí)中,我們其實(shí)不斷的在接觸方法論。比如說(shuō),為了控制項目的進(jìn)度,項目經(jīng)理要求所有的開(kāi)發(fā)人員每周遞交一份詳細的進(jìn)度報告,這就是一種方法、一種技巧。如果把開(kāi)發(fā)過(guò)程中的這些技巧系統的組織起來(lái),就能夠成為一種方法論。你可能會(huì )說(shuō),那一種方法論的產(chǎn)生也太容易了吧。不,這樣產(chǎn)生的方法論并沒(méi)有太大的實(shí)用價(jià)值,沒(méi)有實(shí)用價(jià)值的方法論根本就沒(méi)有存在的必要。因此,一個(gè)成功的方法論是要能夠為多個(gè)的項目所接受,并且能夠成功實(shí)現軟件的交付的方法論。

我和我的同事在實(shí)踐中做了一些試驗,希望能夠把一些好的方法論應用于開(kāi)發(fā)團隊。試驗的結果很無(wú)奈,方法論實(shí)施的效果并不理想,一開(kāi)始我們認為是方法本身的原因,到后來(lái),我們發(fā)現事情并不是這么簡(jiǎn)單。在試驗的過(guò)程中,開(kāi)發(fā)人員一致認同方法論的優(yōu)勢所在,但是在實(shí)施過(guò)程中,鮮有堅持的下來(lái)的。在A(yíng)gile Software Development中,我發(fā)現作者遇到了和我們一樣的問(wèn)題。

Alistair Cockburn在和大量的項目團隊的訪(fǎng)談之后,寫(xiě)成了Agile Software Development一書(shū)。在訪(fǎng)談之前,他篤定自己將會(huì )發(fā)現高度精確的過(guò)程控制是成功的關(guān)鍵所在,結果他發(fā)現事實(shí)并非如此,他把他的發(fā)現歸結為7條定律。而我在實(shí)際中的發(fā)現也包含在這七條定律中,總結起來(lái)就只有兩點(diǎn):溝通和反饋。

只要能夠保證良好的溝通和即時(shí)的反饋,那么開(kāi)發(fā)團隊即使并沒(méi)有采用先進(jìn)的方法論,一樣可以成功。相反,那些"高質(zhì)量"的團隊卻往往由于缺乏這兩個(gè)因素而導致失?。ㄎ覀冞@里指的失敗是用戶(hù)拒絕使用最終的軟件)。最有效,而成本也最低的溝通方法就是面對面(face to face)的溝通,而隨著(zhù)項目團隊的變大,或是另外一些影響因素的加入(比如地理位置的隔絕),面對面的溝通越來(lái)越難實(shí)現,這導致溝通的的成本逐漸加大,質(zhì)量也慢慢下降。但這并不是說(shuō)非面對面的溝通不可,重要的是我們需要知道不同的溝通方式的成本和質(zhì)量并不相同。XP方法尤為強調面對面的溝通,通過(guò)現場(chǎng)客戶(hù)、站立會(huì )議、結對編程等方式來(lái)保證溝通的有效。在我的經(jīng)驗中,一個(gè)開(kāi)發(fā)團隊其實(shí)是需要多種溝通方式的結合的。完全的面對面的溝通對某些團隊來(lái)說(shuō)是很難實(shí)現的,那么問(wèn)題的關(guān)鍵就在于你如何應用溝通的方式來(lái)達到你希望的效果。在前不久結束的歐萊雅創(chuàng )業(yè)計劃大賽上,有一支團隊特別引人注目,他們彼此間素未謀面,僅僅憑借Internet和電話(huà)完成了高效的合作。他們雖然沒(méi)有使用面對面的溝通方式,但是仍然達成了既定的目標。軟件開(kāi)發(fā)也是一樣的,面對面的溝通是非常有必要的,但其它的溝通方式也是需要的。

再看反饋,不論是控制進(jìn)度,還是保證客戶(hù)的滿(mǎn)意度,這些活動(dòng)都需要管理成本。軟件開(kāi)發(fā)中的管理成本的一個(gè)通性就是伴隨有中間產(chǎn)出物(intermediate delivery)。比如說(shuō)我們的需求規約、分析文檔、設計文檔、測試計劃,這些都屬于中間產(chǎn)出物。中間產(chǎn)出物的增加將會(huì )帶來(lái)效率下降的問(wèn)題,因為開(kāi)發(fā)人員的時(shí)間都花在了完成中間產(chǎn)出物的工作上,花在給軟件新功能上的時(shí)間就減少了。而中間產(chǎn)出物的主要目的是兩個(gè),一個(gè)是為了保證軟件如客戶(hù)所愿,例如需求規約;另一個(gè)是為了作為團隊中的其他成員工作的輸入,例如開(kāi)發(fā)計劃、測試計劃等。因此,我們也可以針對這兩點(diǎn)來(lái)商討對策,一種是采用迭代的思想,提高軟件發(fā)布的頻率,以保證客戶(hù)的需求被確實(shí)的滿(mǎn)足,另一種就是縮小團隊的溝通范圍,保證成員能夠從其他人那里得到新的思路,而不是撰寫(xiě)規范的內部文檔(內部文檔指那些僅為內部開(kāi)發(fā)人員之間的溝通所需要的文檔)。

因此,一個(gè)軟件項目的成功和你采用的開(kāi)發(fā)方法論并沒(méi)有直接的關(guān)系。





回頁(yè)首


重量

我們根據把擁有大量artifact(RUP官方翻譯為工件,意思是軟件開(kāi)發(fā)過(guò)程中的中間產(chǎn)物,如需求規約、設計模型等)和復雜控制的軟件開(kāi)發(fā)方法稱(chēng)為重型(Heavy Weight)方法,相對的,我們稱(chēng)artifact較少的方法為輕型(Light Weight)方法。在傳統的觀(guān)念中,我們認為重型方法要比輕型安全許多。因為我們之所以想出重型方法,就是由于在中大型的項目中,項目經(jīng)理往往遠離代碼,他無(wú)法有效的了解目前的工程的進(jìn)度、質(zhì)量、成本等因素。為了克服未知的恐懼感,項目經(jīng)理制定了大量的中間管理方法,希望能夠控制整個(gè)項目,最典型的莫過(guò)于要求開(kāi)發(fā)人員頻繁的遞交各種表示項目目前狀態(tài)的報告。

在Planning XP一書(shū)中有一段討論輕重型方法論的精辟論述,它把重型方法論歸結為一種防御性的姿態(tài)(defensive posture),而把輕型方法論歸結為一種渴望成功(Plan to win)的心態(tài)。如果你是采用了防御性姿態(tài),那么你的工作就集中在防止和跟蹤錯誤上,大量的工作流程的制定,是為了保證項目不犯錯誤,而不是項目成功。而這種方法也不可謂不好,但前提是如果整個(gè)團隊能夠滿(mǎn)足前面所提到的兩個(gè)條件的話(huà),項目也肯定會(huì )成功,但是重型方法論的一個(gè)弊端就在于,大家都在防止錯誤,都在懼怕錯誤,因此人和人之間的關(guān)系是很微妙的,要達到充分的溝通也是很難的。最終,連對人的評價(jià)也變成是以避免錯誤的多寡作為考評的依據,而不是成就。我們在做試驗的時(shí)候,一位項目經(jīng)理開(kāi)玩笑說(shuō),"方法論源自項目經(jīng)理的恐懼,這沒(méi)錯。但最糟糕的是整個(gè)團隊只有項目經(jīng)理一個(gè)人恐懼,如果能夠做到人人的恐懼,那大家也就沒(méi)有什么好恐懼的了。"這句話(huà)提醒了我們,如果一個(gè)團隊的精神就是力求成功,那么這支團隊的心態(tài)就和其它的團隊不同了,尤其是對待錯誤的心態(tài)上。根本就沒(méi)有必要花費大量的精力來(lái)預防錯誤,錯誤犯了就犯了,即時(shí)改正就可以了。這其實(shí)就是渴望成功的心態(tài)。





回頁(yè)首


方法論的藝術(shù)

管理,被稱(chēng)為科學(xué)和藝術(shù)的融合體,而管理的藝術(shù)性部分很大程度的體現為人的管理上。我說(shuō),方法學(xué),一樣是科學(xué)和藝術(shù)的融合體。這是有依據的,其實(shí)方法論和管理學(xué)是近親關(guān)系,管理學(xué)中有一門(mén)分支是項目管理,而在軟件組織中,項目管理是非常重要的,方法學(xué)就是一種針對軟件開(kāi)發(fā)的一種特定的項目管理(或是項目管理的一個(gè)子集)。

重型方法最大的一個(gè)問(wèn)題就在于他不清楚或忽略了藝術(shù)這個(gè)層次,忽視了人的因素,把人做為一個(gè)計量單位,一種資源,一種線(xiàn)性元素。而人的要素在軟件開(kāi)發(fā)中是非常重要的,軟件開(kāi)發(fā)實(shí)際上是一種知識、智力的轉移過(guò)程,最終形成的產(chǎn)品是一種知識產(chǎn)品,它的成本取決于開(kāi)發(fā)者的知識價(jià)值,因此,人是最重要的因素。而人這個(gè)要素是很難衡量的,每個(gè)人都有不同的個(gè)性、想法、經(jīng)驗、經(jīng)歷,這么多復雜的因素加在一起,就導致了人的不可預見(jiàn)性。因此,我們強調管人的藝術(shù)。

最簡(jiǎn)單的例子是,在重型方法中,我們的基本假設是對人的不信任。項目經(jīng)理要控制項目。但不信任就會(huì )產(chǎn)生很多的問(wèn)題,比如士氣不高,計劃趕不上變化,創(chuàng )新能力低下,跳槽率升高等等。人都是希望被尊重的,技術(shù)人員更看重這一點(diǎn),而很多公司也口口聲聲說(shuō)自己多么多么以人為本,可是采用的卻是以不信任人為前提的開(kāi)發(fā)方法,言行不一。我們說(shuō)敏捷方法的出發(fā)點(diǎn)是相互信任,做到這一點(diǎn)是很難的,但是一旦做到了,那這個(gè)團隊就是非常具有競爭力的。因此,這就產(chǎn)生了一個(gè)問(wèn)題,在沒(méi)有做到完全的相互信任之前,我們到底相不相信他人呢,這就是我提到的藝術(shù)性的問(wèn)題,什么時(shí)候你要相信人?什么時(shí)候你不相信人,這些都是需要權衡的問(wèn)題,也都是表現你藝術(shù)性的問(wèn)題。





回頁(yè)首


敏捷

敏捷代表著(zhù)有效和靈活。我們稱(chēng)那些輕型的、有效的方法為敏捷方法。在重型方法中,我們在一些不必要、重復的中間環(huán)節上浪費了太多的精力,而敏捷則避免了這種浪費。我們的文章將會(huì )重點(diǎn)的討論敏捷(Agile)方法論的思想,敏捷這個(gè)名字的前身就是輕型。目前已經(jīng)有了一個(gè)敏捷聯(lián)盟,他們制定了敏捷宣言:

  • Individuals and interactions over processes and tools.
  • Working software over comprehensive documentation.
  • Customer collaboration over contract negotiation.
  • Responding to change over following a plan.

而我對敏捷的理解包括了幾個(gè)方面:

  • 較低的管理成本和高質(zhì)量的產(chǎn)出。軟件開(kāi)發(fā)存在兩個(gè)極端:一個(gè)是沒(méi)有任何的管理成本,所有的工作都是為了軟件的產(chǎn)出,但是這種方式卻往往導致軟件開(kāi)發(fā)過(guò)程的混沌,產(chǎn)品的低質(zhì)量,團隊士氣的低落。另一個(gè)是大量管理活動(dòng)的加入,評審、變更管理,缺陷跟蹤,雖然管理活動(dòng)的加入能夠在一定程度上提高開(kāi)發(fā)過(guò)程的有序性,但是成本卻因此提高,更糟糕的是,很容易導致團隊的低效率,降低創(chuàng )新能力。因此,敏捷方法視圖尋找一個(gè)平衡點(diǎn),用低成本的管理活動(dòng)帶來(lái)最大的產(chǎn)出,即軟件的高質(zhì)量。

  • 尊重人性。敏捷方法尊重人性,強調效率。軟件開(kāi)發(fā)可以說(shuō)是一種腦力的投入,如果不能保證開(kāi)發(fā)人員的自愿投入,產(chǎn)品就肯定要打折扣。事實(shí)多次的證明,一個(gè)愿意投入的開(kāi)發(fā)人員和一個(gè)不愿意投入的開(kāi)發(fā)人員效率相差在三倍以上,對組織的貢獻更是在十倍以上。

  • 溝通和反饋是一切的基礎。我們已經(jīng)討論過(guò)溝通的重要程度,而即時(shí)的反饋是擁抱變化的前提條件。

  • 客戶(hù)是上帝。沒(méi)有客戶(hù)就沒(méi)有一切,客戶(hù)的重要性可以用一句話(huà)來(lái)形容,就是以合理的成本建造合適的軟件(build the right system at the right cost)。

敏捷其實(shí)也有輕重之分,關(guān)鍵在于是否能夠做到有效和靈活。因此,敏捷方法論提倡的一個(gè)思想是"剛好夠(barely sufficient)"。不過(guò)這個(gè)"剛好夠"可不是那么容易判斷的。一支8個(gè)人的團隊采用XP方法,隨著(zhù)方法的熟練使用,團隊的能力在不斷的增強,能夠處理的問(wèn)題越越來(lái)越復雜,也許他們能夠處理采用重型方法的20個(gè)人團隊能夠處理的問(wèn)題??墒侨绻麍F隊的人數突然增加到12人,這支團隊肯定就會(huì )出問(wèn)題,他的表現可能還不如那支20個(gè)人的團隊了。人數增加了的時(shí)候,原先的方法肯定還做適當的調整,比如說(shuō),在原先的敏捷方法上增加一些重型方法的技巧。我們不能夠要求一支6個(gè)人的團隊和一支20個(gè)人的團隊用同樣的方法,前者可能采用輕一些的敏捷方法,后者可能采用重一些的敏捷方法,關(guān)鍵的問(wèn)題在于,兩支團隊都把重點(diǎn)放在溝通、反饋、頻繁交付軟件這些關(guān)鍵的因素上,也就是做到有效和靈活。





回頁(yè)首


架構設計

架構(Architecture)(也有被稱(chēng)為體系結構的)是軟件設計中非常重要的一個(gè)環(huán)節。軟件開(kāi)發(fā)的過(guò)程中只要需求和架構確定之后,這個(gè)軟件就基本上可以定型了。這就好比骨骼確定了,這個(gè)人的體形就不會(huì )有很大的變化。因此我選擇了架構設計來(lái)討論敏捷軟件開(kāi)發(fā)(需求我已經(jīng)寫(xiě)過(guò)了)。我們在前面討論過(guò)超集和子集的概念,因此我們接下去要討論的架構設計也是一個(gè)很小的子集。方法論如果沒(méi)有經(jīng)歷過(guò)多個(gè)項目的檢驗是不能稱(chēng)為成功的方法論的,我也并不認為我的架構設計就是一個(gè)好的方法論,但引玉還需拋磚,他的主要目的是為了傳播一種思想。因此,我采用了模式語(yǔ)言(PLOP)做為寫(xiě)作架構設計的形式,主要的原因就是模式是一種很好的組織思想的方法。

因此,在我們接下去的歷程中,我們集中討論的東西就圍繞著(zhù)架構、方法學(xué)、敏捷這三個(gè)要素展開(kāi)。這篇文章并不是討論如何編碼實(shí)現軟件架構的,也不要單純的把它看作架構設計的指南,其實(shí)文中的很多思想來(lái)自于方法論,因此提到的很多架構設計的思想也適用于其它工作,如果能夠了解這一點(diǎn),看這篇文章的收獲可能會(huì )更多一些。



本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
敏捷思維- 架構設計中的方法學(xué)(7)
SOA和敏捷:是朋友?還是敵人?
敏捷開(kāi)發(fā)方法學(xué)及應用
現代軟件開(kāi)發(fā)方法
MDA模型驅動(dòng)介紹
正確地做事與做正確的事同樣重要
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久