"軟件工程"是指我們?cè)趯W(xué)校中學(xué)習(xí)的那些理論,經(jīng)過(guò)多年的開(kāi)發(fā)實(shí)踐和技術(shù)交流中,我們不斷在對(duì)傳統(tǒng)的軟件工程理論進(jìn)行反思。在將軟件開(kāi)發(fā)分為3個(gè)階段(需求分析、設(shè)計(jì)和編程)時(shí),我們很自然地會(huì)提出一個(gè)問(wèn)題,"軟件開(kāi)發(fā)者應(yīng)該繼續(xù)提高專業(yè)化程度嗎?"畢竟,勞動(dòng)的分工是工業(yè)革命的基礎(chǔ)。正是由于將制造業(yè)分解成多個(gè)精確定義的小任務(wù),一組工人的生產(chǎn)率才能得到突飛猛進(jìn)。所以,我們想當(dāng)然地認(rèn)為:對(duì)于軟件開(kāi)發(fā),這種"專業(yè)化"的方式也將同樣有效。
這看起來(lái)顯而易見(jiàn),不是嗎?讓一些人成為專業(yè)的分析師,專門(mén)獲取和記錄用戶的需求;讓一些人成為設(shè)計(jì)師,負(fù)責(zé)從需求文檔制造出設(shè)計(jì)規(guī)格文檔;程序員則負(fù)責(zé)根據(jù)設(shè)計(jì)規(guī)格進(jìn)行編碼。很顯然,這應(yīng)該是一種更加高效的工作方式,不是嗎?答案是否定的。
問(wèn)題的分析
1. 忽略了溝通的成本
同一件任務(wù)被切分而成的小步驟越多,人與人之間傳遞信息所耗費(fèi)的時(shí)間總量就越多。因此,在不需要大量交流工作中(例如制造業(yè)中的很多體力勞動(dòng))中,流水式生產(chǎn)線能夠運(yùn)轉(zhuǎn)得很好;但在需要大量交流的腦力勞動(dòng)(尤其是軟件開(kāi)發(fā))中,這種方式一敗涂地。
軟件開(kāi)發(fā)的絕大部分工作都是在團(tuán)隊(duì)成員的頭腦中完成的。如果要強(qiáng)迫每個(gè)人專門(mén)從事某一項(xiàng)特定的工作,那么任何一個(gè)簡(jiǎn)單的項(xiàng)目都會(huì)需要傳遞更多額外的中間產(chǎn)品。每一次的傳遞都可能帶來(lái)潛在的錯(cuò)誤和缺陷,因此,每次傳遞都是相當(dāng)昂貴的。沒(méi)錯(cuò),如果要求每個(gè)人都編寫(xiě)大量的文檔,以降低其他人作出錯(cuò)誤理解或假設(shè)的風(fēng)險(xiǎn),我們當(dāng)然可以將"由于交流而出錯(cuò)"的可能性降到最低。但是,"編寫(xiě)更多文檔"的工作量同樣也是計(jì)算在項(xiàng)目的開(kāi)銷中的。正如Fred Brooks所指出的,如果決定某項(xiàng)任務(wù)成敗的因素是項(xiàng)目組成員之間的交流效率,那么加入更多的人就只會(huì)延緩項(xiàng)目的進(jìn)展。
當(dāng)同一個(gè)開(kāi)發(fā)者對(duì)需求、設(shè)計(jì)和源代碼都有著深入的理解時(shí),軟件開(kāi)發(fā)就能夠獲得最好的效果。Steven Levy所采訪的所有黑客都是獨(dú)自進(jìn)行設(shè)計(jì)和編碼的。在對(duì)"影響了(個(gè)人)計(jì)算機(jī)產(chǎn)業(yè)的19個(gè)程序員"的采訪中,Susan Lammers也提到了同樣的現(xiàn)象。在這些偉大的程序員中,沒(méi)有任何一個(gè)使用過(guò)軟件工程風(fēng)格的分工方式,他們通常都是獨(dú)自深入整個(gè)設(shè)計(jì)和編碼工作。很有趣的是,他們幾乎每個(gè)人都有自己獨(dú)特的工作風(fēng)格。
2. 導(dǎo)致混亂
將傳統(tǒng)的勞動(dòng)分工強(qiáng)加于軟件開(kāi)發(fā),結(jié)果是導(dǎo)致分析師、設(shè)計(jì)師、程序員、測(cè)試員、用戶界面專家、文檔工程師、技術(shù)支持工程師之間不斷地傳遞信息。過(guò)多的交流極大地降低了效率,項(xiàng)目被不斷拖延。任何一點(diǎn)變化出現(xiàn)時(shí),都必須將信息沿整條開(kāi)發(fā)鏈傳遞下去,并導(dǎo)致一片混亂。項(xiàng)目結(jié)束后不久,軟件就變成了"遺留系統(tǒng)",因?yàn)闆](méi)人清楚它究竟時(shí)如何工作的。
軟件工程對(duì)技術(shù)進(jìn)行人為的細(xì)分,結(jié)果導(dǎo)致任何一個(gè)人都不可能了解整個(gè)應(yīng)用程序。軟件工程解決這個(gè)問(wèn)題的辦法不是再開(kāi)發(fā)者之間進(jìn)行交叉培訓(xùn),讓他們了解全局,而是不斷強(qiáng)調(diào)文檔的神話-良好的文檔能讓任何人理解整個(gè)應(yīng)用程序。不幸的是,盡管文檔能夠很好地記錄軟件中的抉擇和協(xié)議,但卻無(wú)法有效地保留、傳遞關(guān)于具體問(wèn)題的詳細(xì)信息,而這些具體細(xì)微的知識(shí)才是最重要的。
軟件工程的另一個(gè)貽害是:它把文檔搞得聲名狼藉。很多項(xiàng)目實(shí)際上根本沒(méi)有任何文檔,因?yàn)槟贻p的開(kāi)發(fā)者們本能地拒斥這種"軟件工程的產(chǎn)物"。
3. 缺乏科學(xué)量化的手段
"科學(xué)管理"用科學(xué)取代了經(jīng)驗(yàn)法則。在"科學(xué)管理"的方法中,數(shù)字支配一切。如果要改進(jìn)什么東西,你首先必須對(duì)它進(jìn)行度量。如果什么東西不能被度量,就不可能對(duì)它進(jìn)行改進(jìn)。管理者知道一切。任何工作都必然有一條最佳途徑。
所以,看到軟件工程師發(fā)明了許許多多軟件開(kāi)發(fā)的度量方法,我們也就不會(huì)覺(jué)得太驚奇了。甚至,由"科學(xué)管理"帶來(lái)的"時(shí)間-動(dòng)作研究"(time-and-motion study)已經(jīng)被用于研究軟件的使用情況了。在某些特定的問(wèn)題上,人們已經(jīng)規(guī)定出一些定量法則,例如將光標(biāo)移動(dòng)到按鈕上需要多長(zhǎng)時(shí)間(Fitts 法則)、在概率相當(dāng)?shù)男袨橹g作出選擇需要多長(zhǎng)時(shí)間(Hick法則)等等。
在對(duì)量化管理的狂熱之中,人們常常忽視了機(jī)械活動(dòng)與智力活動(dòng)之間的差異。Fitts法則主要時(shí)針對(duì)機(jī)械活動(dòng)的-盡管移動(dòng)鼠標(biāo)、點(diǎn)擊按鈕的動(dòng)作需要眼睛和手的協(xié)調(diào),但它仍然只是一個(gè)(比較復(fù)雜的)機(jī)械活動(dòng)。Hick法則則試圖度量人大腦中的活動(dòng)。這正是軟件工程犯下的一個(gè)經(jīng)典錯(cuò)誤:它認(rèn)為能夠度量的東西時(shí)最重要的,但情況并非如此。
從根本上來(lái)說(shuō),軟件開(kāi)發(fā)還是一項(xiàng)智力活動(dòng)。打字的速度從來(lái)不是、也永遠(yuǎn)不可能是軟件開(kāi)發(fā)的瓶頸。要談?wù)撘豁?xiàng)智力活動(dòng),唯一的方式就是通過(guò)不精確的討論,因?yàn)槟隳芏攘康臇|西對(duì)于提升效率根本無(wú)濟(jì)于事。軟件工程之所以有害,因?yàn)樗鲆暳碎_(kāi)發(fā)者之間討論的價(jià)值-而那是我們理解軟件開(kāi)發(fā)、提高開(kāi)發(fā)效率的唯一途徑。
軟件工廠總是表現(xiàn)出一種傾向:它們?cè)噲D模仿制造業(yè)從前的模式。但是,就連制造業(yè)也在不斷發(fā)展?,F(xiàn)在,哪怕是最熱衷于生產(chǎn)線的人也早已不再談?wù)?quot;完全集成的制造業(yè)"了。如今,汽車(chē)企業(yè)不再擁有鋼鐵工廠、煤礦和橡膠種植園。他們不再自己制造輪胎,而是向擅長(zhǎng)制造輪胎的企業(yè)購(gòu)買(mǎi)輪胎。對(duì)于軟件組件,道理也是一樣:借助于唾手可得的組件,小型團(tuán)隊(duì)也可以開(kāi)發(fā)出優(yōu)秀的軟件。
"軟件工廠"的概念沒(méi)有真正流行,因?yàn)檐浖闹圃鞂?shí)在太容易了。如何與用戶協(xié)作、交流,創(chuàng)建一個(gè)良好的設(shè)計(jì),并使其不斷演進(jìn)發(fā)展,這才是軟件業(yè)中真正的難題。
忠告
如果你的項(xiàng)目擁有實(shí)際上無(wú)限的資源,那么軟件工程就是一條有效的軟件開(kāi)發(fā)途徑。但是,如果你的資源有限,如果你養(yǎng)不起數(shù)百名軟件工程師,請(qǐng)及時(shí)放棄軟件工程。你必須認(rèn)識(shí)到:軟件開(kāi)發(fā)更多地是一項(xiàng)智力的、社會(huì)性的工作,而非機(jī)械性的工作。認(rèn)識(shí)到這一點(diǎn)之后,你將可以從軟件工程中學(xué)到有用的東西。
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,信管網(wǎng)網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)以權(quán)威部門(mén)公布的內(nèi)容為準(zhǔn)!
信管網(wǎng)致力于為廣大信管從業(yè)人員、愛(ài)好者、大學(xué)生提供專業(yè)、高質(zhì)量的課程和服務(wù),解決其考試證書(shū)、技能提升和就業(yè)的需求。
信管網(wǎng)軟考課程由信管網(wǎng)依托10年專業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過(guò)深研歷年考試出題規(guī)律與考試大綱,深挖核心知識(shí)與高頻考點(diǎn),為學(xué)員考試保駕護(hù)航。面授、直播&錄播,多種班型靈活學(xué)習(xí),滿足不同學(xué)員考證需求,降低課程學(xué)習(xí)難度,使學(xué)習(xí)效果事半功倍。
發(fā)表評(píng)論 查看完整評(píng)論 | |