• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 論“軟件工程”中的分工有效嗎?

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    論“軟件工程”中的分工有效嗎? NetReptile推薦[2005-2-20] 出處:cci .net 作者:www.InnovateDigital. "軟件工程"是指我們在學校中學習的那些理論,經過多年的開發實踐和技術交流中,我們不斷在對傳統的軟件工程理論進行反思。 問題的提出 在將軟件開發分

    論“軟件工程”中的分工有效嗎?


    NetReptile推薦 [2005-2-20]
    出處:clearcase/" target="_blank" >cci.net
    作者:www.InnovateDigital.
     

    "軟件工程"是指我們在學校中學習的那些理論,經過多年的開發實踐和技術交流中,我們不斷在對傳統的軟件工程理論進行反思。

    問題的提出

    在將軟件開發分為3個階段(需求分析、設計和編程)時,我們很自然地會提出一個問題,"軟件開發者應該繼續提高專業化程度嗎?"畢竟,勞動的分工是工業革命的基礎。正是由于將制造業分解成多個精確定義的小任務,一組工人的生產率才能得到突飛猛進。所以,我們想當然地認為:對于軟件開發,這種"專業化"的方式也將同樣有效。

    這看起來顯而易見,不是嗎?讓一些人成為專業的分析師,專門獲取和記錄用戶的需求;讓一些人成為設計師,負責從需求文檔制造出設計規格文檔;程序員則負責根據設計規格進行編碼。很顯然,這應該是一種更加高效的工作方式,不是嗎?答案是否定的。

    問題的分析

    1. 忽略了溝通的成本

    同一件任務被切分而成的小步驟越多,人與人之間傳遞信息所耗費的時間總量就越多。因此,在不需要大量交流工作中(例如制造業中的很多體力勞動)中,流水式生產線能夠運轉得很好;但在需要大量交流的腦力勞動(尤其是軟件開發)中,這種方式一敗涂地。

    軟件開發的絕大部分工作都是在團隊成員的頭腦中完成的。如果要強迫每個人專門從事某一項特定的工作,那么任何一個簡單的項目都會需要傳遞更多額外的中間產品。每一次的傳遞都可能帶來潛在的錯誤和缺陷,因此,每次傳遞都是相當昂貴的。沒錯,如果要求每個人都編寫大量的文檔,以降低其他人作出錯誤理解或假設的風險,我們當然可以將"由于交流而出錯"的可能性降到最低。但是,"編寫更多文檔"的工作量同樣也是計算在項目的開銷中的。正如Fred Brooks所指出的,如果決定某項任務成敗的因素是項目組成員之間的交流效率,那么加入更多的人就只會延緩項目的進展。

    當同一個開發者對需求、設計和源代碼都有著深入的理解時,軟件開發就能夠獲得最好的效果。Steven Levy所采訪的所有黑客都是獨自進行設計和編碼的。在對"影響了(個人)計算機產業的19個程序員"的采訪中,Susan Lammers也提到了同樣的現象。在這些偉大的程序員中,沒有任何一個使用過軟件工程風格的分工方式,他們通常都是獨自深入整個設計和編碼工作。很有趣的是,他們幾乎每個人都有自己獨特的工作風格。

    2. 導致混亂

    將傳統的勞動分工強加于軟件開發,結果是導致分析師、設計師、程序員、測試員、用戶界面專家、文檔工程師、技術支持工程師之間不斷地傳遞信息。過多的交流極大地降低了效率,項目被不斷拖延。任何一點變化出現時,都必須將信息沿整條開發鏈傳遞下去,并導致一片混亂。項目結束后不久,軟件就變成了"遺留系統",因為沒人清楚它究竟時如何工作的。

    軟件工程對技術進行人為的細分,結果導致任何一個人都不可能了解整個應用程序。軟件工程解決這個問題的辦法不是再開發者之間進行交叉培訓,讓他們了解全局,而是不斷強調文檔的神話-良好的文檔能讓任何人理解整個應用程序。不幸的是,盡管文檔能夠很好地記錄軟件中的抉擇和協議,但卻無法有效地保留、傳遞關于具體問題的詳細信息,而這些具體細微的知識才是最重要的。

    軟件工程的另一個貽害是:它把文檔搞得聲名狼藉。很多項目實際上根本沒有任何文檔,因為年輕的開發者們本能地拒斥這種"軟件工程的產物"。

    3. 缺乏科學量化的手段

    "科學管理"用科學取代了經驗法則。在"科學管理"的方法中,數字支配一切。如果要改進什么東西,你首先必須對它進行度量。如果什么東西不能被度量,就不可能對它進行改進。管理者知道一切。任何工作都必然有一條最佳途徑。

    所以,看到軟件工程師發明了許許多多軟件開發的度量方法,我們也就不會覺得太驚奇了。甚至,由"科學管理"帶來的"時間-動作研究"(time-and-motion study)已經被用于研究軟件的使用情況了。在某些特定的問題上,人們已經規定出一些定量法則,例如將光標移動到按鈕上需要多長時間(Fitts 法則)、在概率相當的行為之間作出選擇需要多長時間(Hick法則)等等。

    在對量化管理的狂熱之中,人們常常忽視了機械活動與智力活動之間的差異。Fitts法則主要時針對機械活動的-盡管移動鼠標、點擊按鈕的動作需要眼睛和手的協調,但它仍然只是一個(比較復雜的)機械活動。Hick法則則試圖度量人大腦中的活動。這正是軟件工程犯下的一個經典錯誤:它認為能夠度量的東西時最重要的,但情況并非如此。

    從根本上來說,軟件開發還是一項智力活動。打字的速度從來不是、也永遠不可能是軟件開發的瓶頸。要談論一項智力活動,唯一的方式就是通過不精確的討論,因為你能度量的東西對于提升效率根本無濟于事。軟件工程之所以有害,因為它忽視了開發者之間討論的價值-而那是我們理解軟件開發、提高開發效率的唯一途徑。

    軟件工廠總是表現出一種傾向:它們試圖模仿制造業從前的模式。但是,就連制造業也在不斷發展?,F在,哪怕是最熱衷于生產線的人也早已不再談論"完全集成的制造業"了。如今,汽車企業不再擁有鋼鐵工廠、煤礦和橡膠種植園。他們不再自己制造輪胎,而是向擅長制造輪胎的企業購買輪胎。對于軟件組件,道理也是一樣:借助于唾手可得的組件,小型團隊也可以開發出優秀的軟件。

    "軟件工廠"的概念沒有真正流行,因為軟件的制造實在太容易了。如何與用戶協作、交流,創建一個良好的設計,并使其不斷演進發展,這才是軟件業中真正的難題。

    忠告

    如果你的項目擁有實際上無限的資源,那么軟件工程就是一條有效的軟件開發途徑。但是,如果你的資源有限,如果你養不起數百名軟件工程師,請及時放棄軟件工程。你必須認識到:軟件開發更多地是一項智力的、社會性的工作,而非機械性的工作。認識到這一點之后,你將可以從軟件工程中學到有用的東西。

     

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>