軟件開發(fā)基本原則(一)—— 策略和因素
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
前 言 前段時間一直在寫技術(shù)方面的文章,現(xiàn)在想轉(zhuǎn)轉(zhuǎn)口味,從軟件開發(fā)過程和項目管理的角度來談論軟件開發(fā)。本座也知道,從這兩個角度來談論軟件開發(fā)對談論者來說是非常冒險的一件事情,它不像技術(shù),對就對錯就錯,有一個客觀的評判標準,別人想噴你也得自己先好好研究等拿到了足夠的論據(jù)才能噴,但開發(fā)過程和項目管理就不同了,別人僅憑一點點所謂的管理經(jīng)驗甚至是主觀推斷就能噴得你體無完膚,搖搖欲墜 ~ 因為沒有什么所謂的事實標準與放之四海皆有效的軟件開發(fā)過程和項目管理方法。保守估計,100個人中至少有150種想法。本座也深知其中的兇險,因此避重就輕,從基本原理談起,宏觀的角度闡述相關(guān)問題,盡量減少中彈的機會。歡迎大家暢所欲言 ^_* 注:本文大量圖片和素材來自《Rapid Development》(Steve McConnell 1996)
1 概 述 時間 -- 成本 -- 質(zhì)量(或特性)是評價軟件項目成敗的三個關(guān)鍵指標,這三個指標之間相互影響和制約,形成了所謂的“項目管理三角形”。要提高質(zhì)量或增加特性意味著成本和時間的增加,或兩者都增加;要在時間不變的前提下縮減開發(fā)成本或成本不變的前提下縮減時間則意味著質(zhì)量的下降或特性的削減。
圖 1-1 項目管理三角形
上述分析其實只是理論上的“理想平衡”狀態(tài)?,F(xiàn)實工作中往往出現(xiàn)的情形是:要么時間超過計劃,要么成本超過預算,要么質(zhì)量達不到要求,要么三個指標都達不到預期。 典型例子: 由于客戶的壓力需要盡量縮減開發(fā)時間,由于企業(yè)間的競爭和盈利壓力需要盡量節(jié)約成本,因此需要一個人做兩個人的工作,一個月做兩個月的工作,同時壓縮需求分析、設(shè)計、測試、評審和項目會議等活動??上攵?,即使軟件的構(gòu)建階段能夠按時完成,但做出的軟件質(zhì)量是難以保證的。更糟糕的還在后面:由于質(zhì)量的低劣,構(gòu)建階段結(jié)束后對系統(tǒng)進行集成測試時,很多問題就會暴露出來:對某些需求的理解有誤差,導致這部分功能要重新分析、設(shè)計、編碼和測試;架構(gòu)設(shè)計缺乏整體思維導致系統(tǒng)不同模塊各自為政,產(chǎn)生大量重復的難以維護的代碼;編碼太倉促導致一大堆的Bug;溝通不暢順導致模塊接口不兼容……從而項目被帶入了修改無限循環(huán)地帶,即使勉強上線發(fā)布,修改還是一直持續(xù),直至最后,沒有人再敢接近這套代碼,對這個項目談虎色變。 軟件開發(fā)項目有其自身規(guī)律和原則,只有遵守其原則并付諸相應的實踐才可能使項目健康穩(wěn)定地前進。本文講述的是軟件開發(fā)的基本原則,它是通用的,幾乎適用于所有的軟件開發(fā)項目。不同項目可以根據(jù)自身特點在原則的指導下定義相應的項目開發(fā)實踐。
2 策略和因素 2.1 總體策略要避免混亂低效的開發(fā),就要求每個人能夠放棄他們自己的一些壞習慣,通過采取以下四種策略實現(xiàn)快速開發(fā): 1、 避免典型錯誤 2、 打好開發(fā)基礎(chǔ) 3、 管理風險,避免災難發(fā)生 4、 采用面向進度的實踐 圖 2.1-1 快速開發(fā)的四跟支柱 典型錯誤:是指一些經(jīng)常被許多人使用的無效的開發(fā)實踐,如:不現(xiàn)實的預期,缺乏計劃,功能蔓延和銀彈綜合癥等。將在第3章詳細講解。 開發(fā)基礎(chǔ):是指項目開發(fā)過程中管理、技術(shù)、質(zhì)量保證等方面行為和活動,如:計劃編制,需求管理和技術(shù)回顧等。將在第4章詳細講解。 風險管理:是指對有可能影響項目的風險進行評估和控制。將在第5章討論進度計劃相關(guān)的風險。 面向進度的實踐有以下三類:
圖 2.1-2 面向進度的實踐 圖2.1-1所示的前三根柱子為可能的最佳進度提供了最重要的支撐,雖然可能不是最理想的,但卻是最需要的。也就是說,即使不借助于面向進度的實踐方法,也可能實現(xiàn)較優(yōu)化的項目進度;但是,如果僅僅依賴面向進度的實踐卻不可以支撐可能的最佳進度計劃。 圖 2.1-3 僅僅依賴面向進度的實踐不足以支撐最佳進度計劃 2.2 軟件開發(fā)的四維每個軟件項目都有四個重要的維:
圖 2.2-1 開發(fā)速度的四維 2.2.1 人員 研究數(shù)據(jù): 人件極大地影響著生產(chǎn)效率,任何關(guān)注提高生產(chǎn)效率的組織首先必須有一套良好的人員激勵、團隊合作、員工選擇及培訓機制。 發(fā)揮人員最大潛能,縮短項目周期的方法: 1、 項目成員的選擇 五個原則:
2、 團隊組織結(jié)構(gòu) 人員的組織方式對人員的工作效率有很大影響,調(diào)整項目團隊以使之與項目規(guī)模、產(chǎn)品特點以及進度目標相匹配。特定的軟件項目也可以從適宜的專門組織中受益。 3、 人員激勵 人員激勵能激發(fā)人的動力,從而付出額外的努力工作;它適用于不同組織、不同項目和不同人員。人員激勵是達成快速開發(fā)的最具潛力方法。 2.2.2 過程 研究數(shù)據(jù): Hughes Aircraft、Lockheed、Motorola、NASA、Raytheon和Xerox等組織通過對開發(fā)過程的改進將產(chǎn)品上市時間縮短了一半,降低成本、減少錯誤為原來的1/3~1/10。 過程是指軟件開發(fā)生命周期中定義的一系列工作流程和活動的集合??梢愿爬橐韵氯悾?/P>
忽略過程容易造成工作效率低下,工作目的交叉重復,產(chǎn)品質(zhì)量難以保證等問題;另一方面,如果過程過于嚴格、過于官僚同樣會挫傷人員的積極性,或者由于執(zhí)行過程的成本過高而影響實際的工作效率。 組織可以對現(xiàn)有的過程進行裁剪和調(diào)整,制定出適合特定項目的過程;或者可以為項目從頭開始定義過程。無論是裁剪過程或是定義過程,應該把關(guān)注點放在以下幾個方面: 1、 避免返工 軟件項目節(jié)省時間一個最直接的方式就是確定過程,避免重復工作。如果在項目最后階段改變需求,就可能不得不重新設(shè)計、編碼和測試;如果直到系統(tǒng)測試階段才發(fā)現(xiàn)設(shè)計有問題,就可能不得不扔掉已經(jīng)細化的設(shè)計和編碼。 2、 質(zhì)量保證 質(zhì)量保證有兩個目的:
應盡早在錯誤發(fā)生的時候就查出來,錯誤在產(chǎn)品中停留的時間越長,清楚錯誤所花費的時間和成本就越多。質(zhì)量保證是任何開發(fā)過程中必不可少的部分。 3、 開發(fā)基礎(chǔ) 一系列的軟件工程實踐活動形成了開發(fā)基礎(chǔ),如:分析、設(shè)計、構(gòu)建、集成和測試等。在過程中對開發(fā)基礎(chǔ)加以關(guān)注,并定義良好的工作規(guī)范和任務集合能防止項目失控。 4、 風險管理 與進度相關(guān)的風險管理是開發(fā)過程必要的組成部分。風險管理雖然不能直接提高開發(fā)速度,但它是避免項目災難的有效實踐。 5、 資源目標 資源包括人力資源、環(huán)境資源和軟硬件資源等。優(yōu)化資源的調(diào)配有助于提高生產(chǎn)率。 6、 生命周期計劃 生命周期計劃是基本的管理計劃,有助于確定軟件項目要進行的活動集合和資源分配。每種周期模型都有其適用范圍和缺點,為項目選擇適當?shù)纳芷谀P湍苡行岣吖ぷ餍驶蚪档晚椖匡L險。
圖 2.2.2-1 純瀑布模型
圖 2.2.2-2 瀑布模型的另一種形式——鮭魚生命期模型
圖 2.2.2-3 編碼修正模型(一種不規(guī)范的模型)
圖 2.2.2-4 螺旋模型
圖 2.2.2-5 生魚片模型
圖 2.2.2-6 包含子項目的瀑布模型
圖 2.2.2-7 能夠降低風險的瀑布模型(對需求分析和架構(gòu)設(shè)計階段采用螺旋模型)
圖 2.2.2-8 漸進原型模型
圖 2.2.2-9 階段交付模型
圖 2.2.2-10 面向進度模型
圖 2.2.2-11 漸進交付模型
圖 2.2.2-12 面向開發(fā)工具的設(shè)計模型
7、 面向客戶開發(fā) 誰是客戶? 對客戶的理解取決于場合,可能是項目委托人,最終用戶,市場人員或者老板。 現(xiàn)代軟件開發(fā)非常關(guān)注客戶的需求與期望,開發(fā)出合符產(chǎn)品規(guī)格的軟件只是完成了一半工作,另一半是幫助客戶配置出產(chǎn)品能夠?qū)崿F(xiàn)的功能,而實現(xiàn)這些功能所花費的時間通常遠遠多于確定紙面上的產(chǎn)品規(guī)格所需要的時間。 將自己站在客戶的角度考慮問題是避免大量返工的最好方法。同時應該建立有效的客戶溝通渠道,合理控制客戶的期望值。
2.2.3 產(chǎn)品 在軟件開發(fā)的四維中,最切實的維是產(chǎn)品維。對產(chǎn)品規(guī)模和產(chǎn)品特性的關(guān)注,意味著巨大的縮短計劃進度的機會。削減了產(chǎn)品功能通常就可以縮短產(chǎn)品開發(fā)周期。 1、 產(chǎn)品規(guī)?! ?/STRONG> 產(chǎn)品規(guī)模是對開發(fā)進度影響最大的一個因素。構(gòu)建軟件所需的工作量的增長比產(chǎn)品規(guī)模的增長要快得多,并且增長是不成比例的,所以產(chǎn)品規(guī)模的縮小將大大提高開發(fā)速度。將中等規(guī)模的軟件削減一半通??梢允构ぷ髫摵上鳒p2/3。 2、 產(chǎn)品特性 產(chǎn)品的一些非功能性需求或額外關(guān)注點會影響設(shè)計的復雜度和構(gòu)建的工作量,如對性能、穩(wěn)定性、可維護性和可擴展性等要求很高的產(chǎn)品比沒有這些特性要求的產(chǎn)品需要更長的開發(fā)周期。
2.2.4 技術(shù) 從使用低效的工具轉(zhuǎn)為使用高效的工具是提高開發(fā)速度的快捷方法。選擇有效的工具并管理好由此帶來的風險也是提高開發(fā)速度的方法。 該文章在 2012/4/9 10:30:55 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |