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