軟件開發(fā)中的破窗效應(yīng)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2012/6/18 14:02:37 ] 推薦標(biāo)簽:
測試運(yùn)行太慢
實際上測試運(yùn)行太慢是一種信號,該信號告訴我們耦合的太緊了。運(yùn)行一個測試,需要編譯加載很多模塊。如果運(yùn)行一個測試需要20分鐘,你希望頻繁的運(yùn)行測試么?如果運(yùn)行一套測試需要10個小時,你希望測試多久運(yùn)行一次?測試運(yùn)行太慢是第一個被打破的窗戶,如果不趕快修補(bǔ),后面會有更多的窗戶被打破。
測試運(yùn)行太慢,我們不會頻繁的運(yùn)行測試,測試也不能提供立即的反饋,這樣測試的作用大打折扣了。上面主要從代碼實踐方面來闡釋編碼中的破窗和如何防止破窗,其實在軟件開發(fā)的很多方面都存在類似的情況。
源代碼管理
有很多團(tuán)隊因為各種各樣的原因采用了難以使用的源代碼管理工具,或者完全因為廠商對管理層的廣告宣傳,采用了一個無比重型,好看但不中用的工具。在經(jīng)受一兩次工具的折磨之后,團(tuán)隊成員會產(chǎn)生懼怕的心理,盡量的推遲提交代碼。提交代碼需要足夠的頻繁,甚至一次有意義的重命名都可以作為一次提交,這樣在代碼復(fù)查的時候光閱讀提交代碼的注釋能演示出代碼的演化過程。而且,如果每一次成功都有保存,這樣在犯錯的時候我們有機(jī)會后悔,我們有機(jī)會回滾到一個成功的狀態(tài)。人的大腦雖然非常聰明,但也非常易于出錯,特別是在疲勞的時候,如果我們小步前進(jìn),小步提交,我們能停在任何地方。你還記不記得那種必須到某個時候才能保存當(dāng)前狀態(tài)的電腦游戲?
有的時候并不是工具難以使用,而是環(huán)境使然。在分布式的團(tuán)隊里,有可能網(wǎng)絡(luò)不穩(wěn)定,遠(yuǎn)程源代碼倉庫經(jīng)常不可訪問,或者在提交代碼時需要連上VPN,然后再提交,久而久之也會讓團(tuán)隊成員懶于提交代碼。這樣我們應(yīng)該采用分布式的源代碼管理工具,比如Git。
難以集成
代碼寫完了并不是開發(fā)任務(wù)的結(jié)束。你還記不記得多少次為了集成產(chǎn)品,解決幾個模塊之間的沖突而加班加點。敏捷強(qiáng)調(diào)及時的反饋,持續(xù)的交付。如果集成一次產(chǎn)品需要幾天時間,我們?nèi)绾巫龅郊皶r反饋呢?如果集成太困難,大家都會懼怕集成,會盡量的避免集成,但產(chǎn)品終是要集成的,所以到了后期限的時候,大家都在加班加點,但卻不是寫代碼,而是為了集成。
如果集成太困難,我們?yōu)槭裁床怀掷m(xù)的集成呢?所有團(tuán)隊成員都工作在同樣的分支上。持續(xù)集成服務(wù)器不斷的簽出新的代碼,運(yùn)行各種各樣的測試,后構(gòu)建出可用的軟件出來。只要需要,任何時候我們都可以提供可以工作的軟件。
可視化
可視化是管理中的鐵三角之一。很多管理人員喜歡使用各種各樣絢麗的工具繪制出絢麗的圖表。比如使用Project做出精確到天的人員計劃,使用PowerPoint做出產(chǎn)品的宏偉藍(lán)圖。好像將這些做出來,然后發(fā)給大家有一種這個項目都在我的控制之內(nèi)的感覺一樣。其實不管怎么的軟件工具還是比不上紙和筆。軟件打開需要時間,隨著軟件更新?lián)Q代,軟件體積越來越大,打開一個龐大的Project文件甚至需要一兩分鐘的時間,而且文檔埋藏在電腦文件系統(tǒng)的深處。找到文檔,打開,幾分鐘已經(jīng)過去了,別看這幾分鐘,久而久之我們不想再去看這些東西了,我們以為這些東西都裝在了我們的腦中,但實際卻沒有;撕芏嗑帉懙男枨笪臋n,后成了一紙空文,當(dāng)發(fā)現(xiàn)與需求不符的時候已經(jīng)晚了。要防止這種事情的發(fā)現(xiàn),我們不要打破第一扇窗。
雖然到了二十一世紀(jì),豐田公司還是在很多方面采用原始的看板。軟件開發(fā)中也是一樣,拋棄那些精美的軟件吧,將計劃,進(jìn)度,用戶故事用簡單的紙和筆繪制,然后貼在開發(fā)人員抬頭可見的墻上。不需要畫的多精美,因為越精美越不想去修改,但軟件開發(fā)中永恒不變的是變化,我們必須隨需而變。
笨重的流程
有的公司給開發(fā)、測試、部署規(guī)定了嚴(yán)格的流程。開發(fā)人員想將產(chǎn)品功能部署到測試環(huán)境都需要與很多相關(guān)人員交互,提交申請單,然后才能由專人將剛剛修改的一行代碼部署到測試環(huán)境中,進(jìn)行測試。首先不說這個過程中有多少等待,多少浪費(fèi)。光這笨重的流程讓大家望而卻步,進(jìn)而導(dǎo)致懼怕修改,連好的改進(jìn)都會受到抵制。
后記
軟件開發(fā)的方方面面像一扇扇窗戶,不要打破第一扇窗戶,打破了也要趕快去修補(bǔ),不然軟件會隨著窗戶一樣,一扇扇的被打破,慢慢的腐化下去。
相關(guān)推薦
相關(guān)產(chǎn)品

最新發(fā)布
性能測試之測試環(huán)境搭建的方法
2020/7/21 15:39:32軟件測試是從什么時候開始被企業(yè)所重視的呢?
2020/7/17 9:09:11Android自動化測試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項目適合做自動化?自動化測試人員應(yīng)具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測試工具測評
2020/7/17 8:52:11RPA機(jī)器人能夠快速響應(yīng)企業(yè)需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測試基本概念是怎么來的?軟件測試生命周期的形成歷經(jīng)了什么?
2020/7/16 9:11:10