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