您的位置:軟件測(cè)試 > 軟件項(xiàng)目管理 > 項(xiàng)目案例分析 >
軟件行業(yè)_微軟公司軟件開(kāi)發(fā)模式簡(jiǎn)介
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/10/25 11:08:40 ] 推薦標(biāo)簽:

  北京大學(xué)出版社96年底所出的《微軟的秘密》一書(shū)是目前我所見(jiàn)到的對(duì)微軟公司軟件產(chǎn)品開(kāi)發(fā)過(guò)程介紹的專(zhuān)業(yè)、深入的一本書(shū)。通過(guò)本書(shū),我們可以看到微軟公司是如何對(duì)科學(xué)地對(duì)軟件產(chǎn)品開(kāi)發(fā)進(jìn)行有效地管理,我想這些經(jīng)驗(yàn)對(duì)于中國(guó)的廣大軟件開(kāi)發(fā)人員,尤其是關(guān)心中國(guó)軟件產(chǎn)業(yè)發(fā)展的各位朋友是大有益處的。所以特將此書(shū)中涉及軟件產(chǎn)品開(kāi)發(fā)的部分內(nèi)容摘錄出來(lái)(第四章“產(chǎn)品定義與開(kāi)發(fā)過(guò)程”),加上我在微軟中國(guó)工作的實(shí)際經(jīng)驗(yàn)總結(jié)出這篇文章,希望與大家共同分享。本文作為摘錄,自然是掛一漏萬(wàn),所以建議大家若有時(shí)間還是找來(lái)原書(shū)一讀。

  在微軟的產(chǎn)品定義與開(kāi)發(fā)過(guò)程中,微軟軟件開(kāi)發(fā)遵循著一種可稱(chēng)之為“靠改進(jìn)特性(Feature)與固定資源(Resource)來(lái)激發(fā)創(chuàng)造力”的戰(zhàn)略。該戰(zhàn)略可分為五個(gè)原則:

  將大項(xiàng)目分成若干里程碑式(Milestone)的重要階段,各階段之間有緩沖時(shí)間,但不進(jìn)行單獨(dú)的產(chǎn)品維護(hù)。 
  運(yùn)用想象描述和對(duì)特性的概要說(shuō)明(Program Specification)指導(dǎo)項(xiàng)目。 
  根據(jù)用戶(hù)行為(User Behavior)和有關(guān)用戶(hù)的資料確定產(chǎn)品特性及其優(yōu)先順序。 
  建立模塊化的和水平式的設(shè)計(jì)結(jié)構(gòu),并使項(xiàng)目結(jié)構(gòu)反映產(chǎn)品結(jié)構(gòu)的特點(diǎn)。 
  靠個(gè)人負(fù)責(zé)和固定項(xiàng)目資源實(shí)施控制。 
原則一:將大項(xiàng)目分成若干里程碑式的重要階段,各階段之間有緩沖時(shí)間,但不進(jìn)行單獨(dú)的產(chǎn)品維護(hù)。

項(xiàng)目進(jìn)度安排與里程碑 
微軟通常采用“同步-穩(wěn)定產(chǎn)品開(kāi)發(fā)法”。典型項(xiàng)目的生命周期包括三個(gè)階段:

計(jì)劃階段:完成功能的說(shuō)明和進(jìn)度表的后制定 
開(kāi)發(fā)階段:寫(xiě)出完整的的源代碼 
穩(wěn)定化階段:完成產(chǎn)品,使之能夠批量生產(chǎn)(Roll Out) 
這三個(gè)大階段以及階段間內(nèi)在的循環(huán)方法與傳統(tǒng)的“瀑布”(Water Fall)式開(kāi)發(fā)方式很不相同,后者是由需求、詳盡設(shè)計(jì)、模塊化的代碼設(shè)計(jì)與測(cè)試、集成測(cè)試以及系統(tǒng)測(cè)試組成的。而微軟的三個(gè)階段更像是風(fēng)險(xiǎn)驅(qū)動(dòng)的、漸進(jìn)的“螺旋”式的生命周期模型。

  計(jì)劃階段的產(chǎn)品是想象性描述與說(shuō)明文件,用來(lái)解釋項(xiàng)目將做什么和怎么做。在管理人員擬定進(jìn)度表、開(kāi)發(fā)員寫(xiě)出代碼之前,這些東西都促進(jìn)了人們對(duì)設(shè)計(jì)問(wèn)題的思考與討論。開(kāi)發(fā)階段圍繞三次主要的內(nèi)部產(chǎn)品發(fā)布來(lái)進(jìn)行;穩(wěn)定化階段集中于廣泛的內(nèi)部與外部測(cè)試。在整個(gè)產(chǎn)品生產(chǎn)周期中,微軟都使用了緩沖時(shí)間的概念。緩沖時(shí)間使開(kāi)發(fā)組能夠?qū)Ω兑馔獾睦щy和影響到時(shí)間進(jìn)度的變故,它也提供了一種手段,可以緩和及時(shí)發(fā)貨與試圖精確估計(jì)發(fā)貨時(shí)間之間的矛盾。

  在開(kāi)發(fā)和穩(wěn)定化階段的所有時(shí)間中,一個(gè)項(xiàng)目通常會(huì)將2/3的時(shí)間用于開(kāi)發(fā),1/3的時(shí)間用于穩(wěn)定化。(Office部門(mén)副總裁曾這樣概述通常的進(jìn)度:“一般說(shuō)來(lái),在總的進(jìn)度表中,用一半的時(shí)間寫(xiě)出產(chǎn)品,留下另一半的時(shí)間調(diào)試或應(yīng)付意外事故。這樣,如果我有一個(gè)兩年的項(xiàng)目,我會(huì)用一年來(lái)完成事先想好的東西……如果事情有點(diǎn)麻煩,我便去掉我認(rèn)為不太重要的特性。”)。這種里程碑式的工作過(guò)程使微軟的經(jīng)理們可以清楚地了解產(chǎn)品開(kāi)發(fā)過(guò)程進(jìn)行到了哪一步,也使他們?cè)陂_(kāi)發(fā)階段的后期有能力靈活地刪去一些產(chǎn)品特性以滿(mǎn)足發(fā)貨時(shí)期的要求。

計(jì)劃階段 
  計(jì)劃階段是在一個(gè)項(xiàng)目的生命周期中,所有于開(kāi)發(fā)前進(jìn)行的計(jì)劃所占用的時(shí)間。計(jì)劃階段產(chǎn)生出想象性描述、市場(chǎng)營(yíng)銷(xiāo)計(jì)劃、設(shè)計(jì)目標(biāo)、一份初的產(chǎn)品說(shuō)明、為集成其他組開(kāi)發(fā)的構(gòu)件而規(guī)定的接口標(biāo)準(zhǔn)、初的測(cè)試計(jì)劃、一個(gè)文檔策劃(印刷品和聯(lián)機(jī)幫助形式的)以及一份可用性問(wèn)題清單(Usability List)。計(jì)劃階段從想象性描述開(kāi)始。想象性描述來(lái)自產(chǎn)品經(jīng)理以及各產(chǎn)品單位的程序經(jīng)理;它是對(duì)規(guī)劃產(chǎn)品的市場(chǎng)營(yíng)銷(xiāo)設(shè)想,包括了對(duì)競(jìng)爭(zhēng)對(duì)手產(chǎn)品的分析以及對(duì)未來(lái)版本的規(guī)劃。想象性描述也可能討論在前一次版本中發(fā)現(xiàn)面必須解決的問(wèn)題以及應(yīng)添加的主要功能。所有這些都基于對(duì)顧客和市場(chǎng)的分析以及從產(chǎn)品支持服務(wù)組處得到的資料。

  說(shuō)明文件從一個(gè)大綱開(kāi)始,然后定義出新的或增加的產(chǎn)品特性,并對(duì)其賦以不同的優(yōu)先級(jí)。說(shuō)明文件只是產(chǎn)品特性的一個(gè)預(yù)備性概覽;從開(kāi)始開(kāi)發(fā)到項(xiàng)目完成它要增加或變化20% - 30%。雖然在生命周期的后期說(shuō)明變化一般較小,但越到后期,開(kāi)發(fā)員越是必須具充分的理由來(lái)作改變。

  通常程序經(jīng)理使用VB創(chuàng)建項(xiàng)目原型。他們也開(kāi)展設(shè)計(jì)可行性研究以了解設(shè)計(jì)中的取舍情況,盡快做出涉及產(chǎn)品說(shuō)明的決定。對(duì)于重要產(chǎn)品的說(shuō)明需由公司高層領(lǐng)導(dǎo)進(jìn)行復(fù)審。對(duì)于不太重要的產(chǎn)品,則由部分經(jīng)理去完成。

開(kāi)發(fā)階段 
  開(kāi)發(fā)階段的計(jì)劃對(duì)三四個(gè)主要的里程碑版本都逐個(gè)分配一組特性,規(guī)定出特性的細(xì)節(jié)和技術(shù)上的相關(guān)性,記錄下單個(gè)開(kāi)發(fā)員的任務(wù)以及對(duì)進(jìn)度的估計(jì)。在開(kāi)發(fā)階段中,開(kāi)發(fā)員在功能性說(shuō)明的指導(dǎo)下寫(xiě)源代碼,測(cè)試員寫(xiě)出測(cè)試項(xiàng)目組以檢查產(chǎn)品的特性與工作范圍是否正常,用戶(hù)教育人員(User Education)則編寫(xiě)出文檔草案。

  當(dāng)測(cè)試員發(fā)現(xiàn)錯(cuò)誤時(shí),開(kāi)發(fā)員并不是留待以后處理,而是馬上改正,并在整個(gè)開(kāi)發(fā)階段內(nèi)使測(cè)試不斷地、自動(dòng)地進(jìn)行。這改善了產(chǎn)品的穩(wěn)定性并且使版本發(fā)布日期更易估計(jì)。當(dāng)達(dá)到項(xiàng)目中的一定階段點(diǎn)后(40%時(shí)),開(kāi)發(fā)員試圖“鎖定”產(chǎn)品的主要功能要求或特性,從此只允許小范圍的改動(dòng)。如果在此點(diǎn)之后開(kāi)發(fā)員想作大的改動(dòng),他們必須與程序經(jīng)理以及開(kāi)發(fā)經(jīng)理進(jìn)行討論協(xié)商,也許還要征求產(chǎn)品部門(mén)經(jīng)理的意見(jiàn)。

  一個(gè)項(xiàng)目是圍繞著3或4個(gè)主要的內(nèi)部版本,或“里程碑子項(xiàng)目”來(lái)組織開(kāi)發(fā)階段的。一般用2至4個(gè)月來(lái)開(kāi)發(fā)每一個(gè)主要的里程碑版本。每個(gè)版本都包括其自身的編碼、優(yōu)化、測(cè)試以及調(diào)試活動(dòng)。項(xiàng)目為意外事故保留總開(kāi)發(fā)1/3的時(shí)間,即“緩沖時(shí)間”(Padding Time)。(蘋(píng)果公司的小組是割裂的、獨(dú)立的,各自開(kāi)發(fā)各自的東西。在還有3個(gè)月要發(fā)貨時(shí),才會(huì)將所有的東西集成起來(lái);Borland公司以一種漸近的方式進(jìn)行開(kāi)發(fā),即把工作分成許多小的部分,并且總是讓開(kāi)發(fā)的東西能夠運(yùn)轉(zhuǎn)?雌饋(lái)似乎這種漸進(jìn)的方法費(fèi)時(shí),但實(shí)際上幾乎沒(méi)有用過(guò)很長(zhǎng)時(shí)間,因?yàn)檫@使你總是能掌握住事情真實(shí)的情況。)

  當(dāng)對(duì)后一個(gè)主要的里程碑版本做了測(cè)試與穩(wěn)定化之后,產(chǎn)品要進(jìn)行“外觀固定”(UI Freeze),即確定產(chǎn)品的主要用戶(hù)界面,如菜單、對(duì)話(huà)框以及文件窗口等。此后有關(guān)用戶(hù)界面將不再進(jìn)行大的改動(dòng),以免引進(jìn)同步修改相應(yīng)文檔的困難。

穩(wěn)定化階段 
  穩(wěn)定化階段著重于對(duì)產(chǎn)品的測(cè)試與調(diào)試。項(xiàng)目在此階段盡量不再增加新的功能,除非是競(jìng)爭(zhēng)產(chǎn)品或者市場(chǎng)發(fā)生了變化。穩(wěn)定化階段也包括了緩沖時(shí)間,以應(yīng)付不可預(yù)見(jiàn)的問(wèn)題或者延遲。

  下面我將Micosoft開(kāi)發(fā)軟件的模式用以下這張簡(jiǎn)圖加以描述:(這張圖對(duì)微軟的測(cè)試進(jìn)行了比較詳細(xì)的描述,我個(gè)人認(rèn)為微軟的測(cè)試是Microsoft軟件產(chǎn)品開(kāi)發(fā)中一個(gè)十分重要也是十分有特色的分工。這是通過(guò)在微軟將近一年的觀察和與國(guó)內(nèi)同類(lèi)企業(yè)的分析,我才得出這樣的結(jié)論。大家都很明白,國(guó)內(nèi)的軟件開(kāi)發(fā)商在這方面做得很不夠,尤其不重視軟件的內(nèi)部測(cè)試,在他們的思想中,可能有一個(gè)誤區(qū):認(rèn)為測(cè)試應(yīng)該完全去由用戶(hù)去負(fù)責(zé),其實(shí)不然,在軟件的開(kāi)發(fā)流程中,軟件的測(cè)試與開(kāi)發(fā)是一種“矛與盾”的關(guān)系,互為補(bǔ)充,缺一不可。在微軟,可能這種關(guān)系發(fā)揮到了極至:有時(shí)開(kāi)發(fā)部門(mén)與測(cè)試部門(mén)互相較著勁,開(kāi)發(fā)經(jīng)理和測(cè)試經(jīng)理的地位是相同的,有時(shí)甚至測(cè)試經(jīng)理的地位甚至凌駕于開(kāi)發(fā)經(jīng)理之上,但他們之間沒(méi)有根本的利益沖突,只有一個(gè)共同的目標(biāo):將產(chǎn)品的質(zhì)量提高。)

  補(bǔ)充一點(diǎn):(對(duì)微軟的測(cè)試流程加以簡(jiǎn)要的描述一下)微軟內(nèi)部,專(zhuān)門(mén)有一個(gè)小組負(fù)責(zé)為微軟的工程師們提供日常工作和管理的工具軟件,他們是非盈利機(jī)構(gòu),其主要任務(wù)是開(kāi)發(fā)微軟內(nèi)部所需要的工具軟件:例如:

  SLM(Source Library Tree),源代碼管理工具,負(fù)責(zé)管理軟件開(kāi)發(fā)過(guò)程中各個(gè)程序員的源碼,各個(gè)程序員負(fù)責(zé)寫(xiě)自己的模塊,每天將完成的代碼Check-in到一個(gè)中央服務(wù)器的SLM樹(shù)中,這個(gè)SLM樹(shù)由預(yù)先定義好的腳本在固定的時(shí)間開(kāi)始編譯,通常這個(gè)過(guò)程需要好幾個(gè)小時(shí),所以微軟內(nèi)部根據(jù)各個(gè)項(xiàng)目組的情況有各自的規(guī)定:比如開(kāi)發(fā)員必須在下班前(比如下午6:00)之前將當(dāng)天修改的代碼Check-in進(jìn)去,這樣SLM才開(kāi)始編譯。 
  第二天,QA組的各個(gè)測(cè)試員從服務(wù)器上下載前的一個(gè)Build開(kāi)始測(cè)試,將測(cè)試的情況及時(shí)的反映到另外一個(gè)工具軟件中:RAID(Raid is a tool for entering, tracking, analyzing, and reporting product defects during development and maintenance.).這個(gè)工具負(fù)責(zé)管理產(chǎn)品的BUG情況,每個(gè)BUG包含很多屬性:比如狀態(tài)(活動(dòng)的、解決的、關(guān)閉的)、嚴(yán)重級(jí)、優(yōu)先級(jí)、哪個(gè)區(qū)域、哪個(gè)版本出現(xiàn)的、發(fā)現(xiàn)者、要將這個(gè)BUG賦給哪一個(gè)開(kāi)發(fā)員等等一系列屬性。還可以根據(jù)這個(gè)工具查詢(xún)哪個(gè)開(kāi)發(fā)員當(dāng)天的BUG活動(dòng)的、解決的數(shù)量,哪個(gè)測(cè)試員的BUG質(zhì)量數(shù)目等等一些基本的產(chǎn)品質(zhì)量情況,這樣項(xiàng)目經(jīng)理可以很容易的掌握該項(xiàng)目的具體進(jìn)展情況。如果在項(xiàng)目的開(kāi)發(fā)中期,發(fā)現(xiàn)的BUG數(shù)目比解決的BUG數(shù)目持續(xù)的多(意味著該產(chǎn)品的活著的BUG越來(lái)越多),可能意味著這個(gè)項(xiàng)目出現(xiàn)了問(wèn)題,決策者可以迅速的作出相應(yīng)的決策,及時(shí)的糾正產(chǎn)品開(kāi)發(fā)中出現(xiàn)的失誤(微軟曾經(jīng)有很多產(chǎn)品因?yàn)檫@樣的因素被Cancel了)。還有項(xiàng)目經(jīng)理可以根據(jù)這個(gè)工具,及時(shí)的掌握、了解每個(gè)測(cè)試員和開(kāi)發(fā)員的工作狀態(tài),這一點(diǎn)很重要。有很多人曾經(jīng)說(shuō)過(guò):Microsoft憑借著SLM和RAID打敗了無(wú)數(shù)的競(jìng)爭(zhēng)對(duì)手,通過(guò)我在微軟的經(jīng)歷,我看這話(huà)一點(diǎn)也不假。這兩個(gè)工具確實(shí)是非常杰出的工具,微軟將它們使用到了十分藝術(shù)的程度上,對(duì)微軟的成功起著非常重要的作用。更難能可貴的是,目前這些工具在功能上還在不斷的進(jìn)行改進(jìn)、升級(jí),使得微軟的工程師們工作起來(lái)更加如虎添翼、虎虎生風(fēng),這樣的企業(yè)哪有不成功的道理? 
  在測(cè)試過(guò)程中,也不是隨便的對(duì)軟件產(chǎn)品毫無(wú)目的的瞎使用、亂使用,微軟也有一套十分先進(jìn)的方法和工具支撐著測(cè)試的每個(gè)方面:比如ATCM( Access Test Case Management),一種基于Test Case(測(cè)試用例)的測(cè)試管理工具承擔(dān)著這方面的工作。 
  微軟也許正是靠著“程序員的聰明和測(cè)試員的勤奮”構(gòu)建起軟件帝國(guó)的大廈、譜寫(xiě)著軟件事業(yè)的輝煌。

 

Product Developing Process in Microsoft

  QA是微軟大的產(chǎn)品部門(mén)下設(shè)的一個(gè)比較專(zhuān)業(yè)的測(cè)試部門(mén)(Quality Assurance Dept)

項(xiàng)目進(jìn)度表中的緩沖時(shí)間(Padding Time) 
  微軟使用緩沖計(jì)劃,以在高的效率與較好地對(duì)未來(lái)作預(yù)計(jì)之間求得平衡。這種應(yīng)付突發(fā)事件的時(shí)間在開(kāi)發(fā)和穩(wěn)定化過(guò)程中是每一個(gè)主要里程碑的一部分。緩沖時(shí)間主要用于彌補(bǔ)由于對(duì)特性(Feature)的不完全理解,或者是技術(shù)困難或是由于疏忽而忘記把任務(wù)寫(xiě)入進(jìn)度,或者是未料到的難題而形成的漏洞。緩沖時(shí)間有助于一個(gè)項(xiàng)目適應(yīng)意料之外的事件。

原則二:運(yùn)用想象性描述和對(duì)特性的概要說(shuō)明指導(dǎo)項(xiàng)目

  為了給出足夠的開(kāi)發(fā)框架以使工作能持續(xù)進(jìn)行,并且能容納開(kāi)發(fā)過(guò)程中出現(xiàn)的變化并保持足夠的靈活性,微軟采用想象性描述和概要的說(shuō)明來(lái)指導(dǎo)項(xiàng)目開(kāi)發(fā),而不是在一開(kāi)始努力寫(xiě)出一份完整和詳細(xì)的說(shuō)明。所謂想象性描述是由程序經(jīng)理和來(lái)自市場(chǎng)營(yíng)銷(xiāo)組的產(chǎn)品計(jì)劃人員共同編寫(xiě)的一份非常短的文件,在其中主要是定義產(chǎn)品開(kāi)發(fā)的目標(biāo)(不涉及產(chǎn)品的具體細(xì)節(jié)。。通常對(duì)一個(gè)全新的產(chǎn)品,想象性描述一般會(huì)相對(duì)較詳細(xì),在其中還含有一份粗略的說(shuō)明文件?偟膩(lái)說(shuō),微軟對(duì)于想象性描述的要求是:

上一頁(yè)123下一頁(yè)
關(guān)鍵詞閱讀
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd