軟件工程實踐者的思想[2]
]5.工程
最狹義的工程,是描述"做什么"和"做到什么".
也就是說,是對目標的描述和成果的檢測,
軟件工程實踐者的思想[2]
。至于這個工程目標的實現,是"過程"和"方法"的事;而有效、快速地實現"過程"和"方法"所需的,就是"工具".這種軟件工程體系層次(SoftwareEngineeringArchitecturalLayers)被描述成一張圖。
過程伴隨工程而出現,解決的是工程中"步調一致"的協作問題。那么工程是因為什么而出現的?
很顯然,軟件規模的不斷增大是導致軟件工程出現的根本原因。所以你會看到在幾年前,開發一個小工具可以不講工程;或者現在在你的Word中,為了將半角替換成全角字符而寫的那個宏,也不需要工程。
接下來,即使軟件規模增大,如果有一個牛人中的超牛人,愿意用20年來寫一個任意龐大和復雜的操作系統,他也是能做到的。然而現實中不會有軟件公司給他這樣的機會。
項目的"復雜"可能要求不同知識領域的角色參與,而"龐大"則要求更多(人力、技術與管理)資源。"團隊"作為開發行為的模式,是軟件規模和復雜度漸次累積的結果。
團隊必將越來越龐大,因為(與工程對應的)軟件規模必將越來越復雜。沒有團隊意識的軟件公司將在高度過程化、通曉方法理論、擁有大量工具的集團軍面前一觸即潰。
6.組織
工程理論其實是包含組織學的。然而我在上面的那張圖中,將組織與工程分離開來,并在二者之間畫下了一道縱向的線,
資料共享平臺
《軟件工程實踐者的思想[2]》(http://salifelink.com)。如果說工程關心的是"需求"、"配置"和"文檔"等等這些要素,那么這樣的工程還是停留在技術層面:關注的仍是工程實現細節,而非目標。從角色角度來看,這是項目經理和技術經理共同關注的那一部分。
然而項目經理還必須關注于人力資源、項目資金以及多個項目之間的協調等問題。這些問題與工程本身并沒有直接關系,而是"組織"方面的內容。
所以在工程環節里,"文檔管理"和"配置管理"等詞匯中的那個"管理",是管理的具體技術和方法;而在"組織"這個環節中的"管理",才是真正的管理學上的用詞。
在這張圖上,我試圖從這個角度上來說明:作為項目經理,你必須有一部分的工作是非技術性的。甚至,你可能絕大部分的工作是非技術性的'。因為與技術相關的管理技能(需求、配置、過程管理等)可以由開發經理來做,或者公司對于這一方面有較統一且成熟的規范,因而無需投入過多的精力。
你必須更關注于對這個(或這些)工程的組織與計劃。站在"組織者"這個角色上,你現在要考慮的內容可能會是:
為項目的各個階段建立計劃,并逐漸地細化計劃內容,以及確立項目過程中每一個環節、每一個計劃階段的優先級和復雜度;
確立項目或者產品階段目標,成果的準確描述、定位,以及整個項目的質量目標及其考核辦法;
對團隊中的不同角色展開培訓,以指導并協調角色間的工作,從而消除因為工作習慣的差異帶來的影響;
為每一個人準備他所需要的資源,這不單單是把一套shareware變成正式版或者把512M內存變成2G,還包括準確地評估他的工作量,以及決定是否為他增加一個(能協同工作的)副手;
【軟件工程實踐者的思想[2]】相關文章:
7.軟件工程自我鑒定
8.軟件工程筆試題1