從猴子說起
有這樣一個笑話:一個旅客走進硅谷的一家寵物店,瀏覽展示的寵物。這時,走進一個顧客,對店主說:"我要買一只C猴。"店主點了點頭,走到商店一頭的獸籠邊,抓出一只猴,遞給顧客說:"總共5000美元。"顧客付完款,然后帶走了他的猴子。這位旅客非常驚訝,走到店主跟前說:"那只猴子也太貴了!"店主說:"那只猴子能用C編程,非常快,代碼緊湊高效,所以值那么多錢。"這時,旅客看到了籠子中的另一只猴子,它標(biāo)價10000美元。于是又問:"那只更貴了!它能做什么?"店主回答:"哦,那是一只C++猴;它會面向?qū)ο蟮木幊?,會用Visual C++,還懂得一點Java,是非常有用的。"旅客又逛了一會兒,發(fā)現(xiàn)了第三只猴子,它獨占一個籠子,脖子上的標(biāo)價是50000美元。旅客倒抽一口氣,問道:"那只猴子比其他所有猴子加起來都貴!它究竟能做什么?"店主說:"我們也不知道它究竟能做什么,不過它是做項目顧問出身的。"
雖然這只是一個笑話,但是有一點是可以肯定的,項目管理是非常重要的,而項目管理的人才又是極為缺乏的。在軟件工業(yè)發(fā)達的國家,大家多少都知道點軟件工程規(guī)劃的重要性。在我們身邊的臺灣、印度、日本,都不乏因?qū)嵤┸浖こ潭晒Φ能浖F體,更不用說身為軟件大國的美國,已經(jīng)從較低級的軟件實現(xiàn)擺脫出來,進入了設(shè)計和營銷的境界。 軟件首先是一種產(chǎn)品(軟件是服務(wù)還是產(chǎn)品的問題,向來未有定論),看看世界上制造業(yè)的發(fā)展歷程,就會發(fā)現(xiàn)一些很有意思的現(xiàn)象。在本世紀(jì)早些的年代,西方國家的制造業(yè)經(jīng)歷了規(guī)模生產(chǎn)、提高質(zhì)量等等促進生產(chǎn)力提高的過程。可是由于西方國家的人力資源成本不斷的攀升,越來越難降低產(chǎn)品成本,所以西方國家又不可避免的經(jīng)歷了一次將制造業(yè)外移的過程(制造業(yè)外移的結(jié)果是成本大幅下降、國際貿(mào)易頻繁、接受制造業(yè)的國家發(fā)展了自身的制造業(yè)),而西方國家只留下營銷和設(shè)計的能力,掌握了產(chǎn)品生產(chǎn)的重點。 同樣,IT行業(yè)也在經(jīng)歷這種過程:美國將軟件外包給印度,硬件外包給臺灣。而中國的硬件也在崛起,但是在軟件行業(yè),中國和其他國家的差距還是太大了,且不說在軟件行業(yè)中處于核心地位的操作系統(tǒng)、數(shù)據(jù)庫。即便是應(yīng)用軟件,中國的軟件水平也實在低的可憐。在國外制造業(yè)剛剛遷移進中國的時候(改革開放),中國的小企業(yè)家同樣沒有任何管理經(jīng)驗、質(zhì)量意識。但是隨著制造業(yè)的發(fā)展和國外先進思想的進入,中國也誕生了極為出色的全球制造業(yè)巨頭。而中國的軟件行業(yè)現(xiàn)在正是處于剛剛有了一點管理思想,但還沒有成熟的地步。我們有理由相信,在不久的將來中國也會誕生出出色的全球性軟件企業(yè)。 憧憬歸憧憬,現(xiàn)實的問題還是必須要考慮的。軟件這個產(chǎn)品很奇特,軟件企業(yè)的管理思想同樣很奇特。不同于現(xiàn)在企業(yè)推崇的各種管理思想,軟件企業(yè)的管理思想主要是針對項目的管理,確保項目的成功。
項目和需求
笑話里的猴子對應(yīng)到項目就是指項目管理人員,這里要引入一個角色的概念(同樣的人可以擔(dān)任多種的角色),通常的項目管理角色包括:項目經(jīng)理、項目復(fù)審員、變更控制經(jīng)理、企業(yè)流程分析師、業(yè)務(wù)模型設(shè)計師、需求分析員、需求復(fù)審員、系統(tǒng)分析員…在一個成功的項目里,多種角色職責(zé)明確,分工合作,共同完成項目的設(shè)計實施。那么這?quot;猴子"在項目中都做了些什么呢?RUP(Rational Unified Process 瑞理統(tǒng)一過程,本文采用了眾多的RUP的思想)把一個項目分成10個核心工作流程(Core Workflows)和4個階段(Phases),并以核心工作流程為Y軸,階段為X軸建立起一個項目視圖(圖一)。
本文將主要對先啟階段做介紹。在先啟階段,需求是重中之中,這里指的需求不僅僅是RUP的一個工作流程(在業(yè)務(wù)建模下),而是比較廣義的概念,包括了RUP的工作流程中的業(yè)務(wù)建模、需求、一部分的分析、測試計劃、配置和變更管理。
需求是根本
由于忽略需求過程造成的項目返工是惡性的,大量的項目在需求階段就注定了它的失敗。以下是需求過程不科學(xué)的典型例子:
1.開發(fā)人員在用戶處呆了兩三天就埋頭開發(fā);
2.用戶告訴開發(fā)人員我要開發(fā)一個XX系統(tǒng),但是我很忙,你先開發(fā)一個讓我看看;
上面的這兩種態(tài)度都意味著項目的不成功,應(yīng)該說上面的開發(fā)人員和用戶都應(yīng)該對此負(fù)責(zé)。需求是開發(fā)者和用戶交互的一個過程,任何一方的不投入都會導(dǎo)致項目的失敗。當(dāng)然,由于用戶不是專業(yè)人士,開發(fā)者有權(quán)利告訴用戶應(yīng)該采用何種態(tài)度來對待項目的需求。曾經(jīng)和幾個朋友聊過他們公司開發(fā)過的項目,最后得出一個結(jié)論,所有最成功的項目都有一個重要的特性:用戶非常的支持。 評判一個軟件項目成功的標(biāo)準(zhǔn)是看它是否解決了用戶的問題,而用戶的問題就是體現(xiàn)為用戶的需求,需求也就順理成章的成為項目的成功標(biāo)準(zhǔn)。而需求階段的一個不慎都有可能導(dǎo)致軟件實現(xiàn)階段的大量返工,而需求的不慎不是說你小心就可以的,因為很多需求是隱性的,連用戶都不清楚自己的需求。這時候就需要一種科學(xué)的方法來幫助軟件組織實施需求過程。 需求是變化的
大師說:"沒有不變的需求,世上的軟件都改動過3次以上,一個只改動過兩次的軟件的擁有者已經(jīng)死了,死在去修改需求的路上。"
目前眾多的軟件項目有什么樣的問題呢?早些時候上ERP的企業(yè)在企業(yè)發(fā)展的時候發(fā)現(xiàn)原有的ERP系統(tǒng)需要改進,可是要改進或者是更改現(xiàn)有的ERP系統(tǒng),的方法就是重新開發(fā)一個ERP系統(tǒng)。這對于企業(yè)來說是筆不小的支出。此時,落后的信息系統(tǒng)就成為制約企業(yè)發(fā)展的重要因素。是什么原因造成了這種情況呢?主要的因素是傳統(tǒng)的系統(tǒng)分析是在假定需求不變的情況下進行的,這樣可以把企業(yè)的資源配置到的程度??墒窃诂F(xiàn)代瞬息萬變的社會,一個企業(yè)固守舊有模式,勢必會在競爭中處于劣勢(因此現(xiàn)在也出現(xiàn)了"組件化"的ERP,這是題外話)。既然企業(yè)的需求是變化的、不穩(wěn)定的,那么以變化的需求為基礎(chǔ)建立起來的企業(yè)信息系統(tǒng)當(dāng)然也就不穩(wěn)定了。這時候,有個問題就產(chǎn)生了,前面我們已經(jīng)說過,需求是項目的根本,既然需求都是不穩(wěn)定的,那么何以建立起穩(wěn)定的企業(yè)信息系統(tǒng)呢?
要回答這個問題,首先要比較面向過程和面向?qū)ο蟮拈_發(fā)方法的差別,傳統(tǒng)的面向過程的開發(fā)方法在前20年大行其道,為中國企業(yè)的信息化建設(shè)立下了汗馬功勞。之所以稱為面向過程,是因為開發(fā)的焦點集中于過程,開發(fā)者集中于以函數(shù)為核心的過程,例如前些年很多人試圖編寫一些通用轉(zhuǎn)賬函數(shù)來滿足銀行的需求。面向過程的開發(fā)語言包括:Cobol、Pascal、C及C的變形語言。面向?qū)ο蟮母拍钍窃诮?0年才進入中國的,而它的思想至今也沒有真正意義上得到普及。簡單的說,面向?qū)ο缶褪敲嫦蚴澜?,世界上的任何事物都是對象,因此面向?qū)ο笫呛茏匀坏乃枷?,是符合我們的思維習(xí)慣的。面向?qū)ο蟮恼Z言包括了Smalltalk、C++、Java,還有Object Pascal,以及剛剛誕生的C#。
需求是不穩(wěn)定的,那么需求之中是不是沒有穩(wěn)定的東西呢?有的,就是對象。世界都是由對象組成的,而對象都是持久的,例如動物、植物已經(jīng)有相當(dāng)長的時間。雖然對象也在變化,動物,植物也在不斷的進化。但對象在一個相當(dāng)長的時期內(nèi)都存在,動植物的存在時間肯定比任何一家企業(yè)長久。面向?qū)ο蟮拈_發(fā)方法的精髓就是從企業(yè)的不穩(wěn)定需求中分析出企業(yè)的穩(wěn)定對象,以企業(yè)對象為基礎(chǔ)來組織需求、構(gòu)架系統(tǒng)。這樣得出的系統(tǒng)就會比傳統(tǒng)的系統(tǒng)要穩(wěn)定得多,因為企業(yè)的模式一旦變化,只需要將穩(wěn)定的企業(yè)對象重新組織就行了。這種開發(fā)的方法就被稱為OOAD(Object Orient Analysis & Design 面向?qū)ο蟮姆治龊驮O(shè)計),而分析出的企業(yè)對象就被稱為Common Business Object。
需求是什么
在RUP中定義了需求工作流程的工作目的:
1.客戶和其他涉眾*在系統(tǒng)的工作內(nèi)容方面達成并保持一致。
2.使系統(tǒng)開發(fā)人員能夠更清楚地了解系統(tǒng)需求。
3.定義系統(tǒng)邊界(限定)。
4.為計劃迭代的技術(shù)內(nèi)容提供基礎(chǔ)。
5.為估算開發(fā)系統(tǒng)所需成本和時間提供基礎(chǔ)。
6.定義系統(tǒng)的用戶界面,重點是用戶的需要和目標(biāo)。
* 涉眾:涉眾是所有會受到項目結(jié)果重大影響的人。如客戶(或客戶代表) 用戶(或用戶代表) 、投資者 、股東 、生產(chǎn)經(jīng)理 、買方 、設(shè)計員 、測試員 、文檔編寫員等。
從上面的目的我們可以大致想到需求過程中要做些什么事。事實上,用簡單的話來說明需求過程,就是確定系統(tǒng)該做些什么以及該符合什么條件。話雖然簡單,實現(xiàn)起來可沒有那么容易。所以科學(xué)的需求過程有一整套完整的理論、工具、方法來實現(xiàn)。就像任何企業(yè)要盈利都必須要有業(yè)務(wù)和伴隨業(yè)務(wù)的管理一樣,需求過程也分為需求分析過程和需求管理過程。企業(yè)的業(yè)務(wù)是盈利性的,需求分析過程在項目中也是產(chǎn)出型的;企業(yè)要保證業(yè)務(wù)的開展就必須要有管理,而需求分析過程也同樣離不開需求管理。小企業(yè)沒有成為體系的管理方法,企業(yè)規(guī)模小的時候還能夠?qū)Ω叮墒瞧髽I(yè)一大,各種問題都接踵而來,管理上的不足直接導(dǎo)致了業(yè)務(wù)開展的低效性。同樣,需求管理的不足可能可以應(yīng)付小型的軟件項目,可是對于大型的項目,管理的不足就會暴露出來,而直接的后果就是項目的失敗。
插句題外話,很多人認(rèn)為需求管理的目的是為了控制需求過程,這是沒有錯,但是在RUP的思想中,更重要的思想是迭代*。迭代的目的是為了發(fā)展,為了進化,為了完善。所以RUP中的軟件生命周期是分為多個迭代周期的。 * 迭代:迭代包括產(chǎn)生產(chǎn)品發(fā)布(穩(wěn)定、可執(zhí)行的產(chǎn)品版本)的全部開發(fā)活動和要使用該發(fā)布必需的所有其他外圍元素。所以,在某種程度上,開發(fā)迭代是一次完整地經(jīng)過所有工作流程的過程:(至少包括)需求工作流程、分析設(shè)計工作流程、實施工作流程和測試工作流程。實質(zhì)上,它類似小型的瀑布式項目。
需求分析過程主要做的事情無非就是獲取涉眾對系統(tǒng)的要求,可是需求是多變的,而你不可能告訴客戶等到他們把一切都固定下來再開發(fā)軟件。所以需求管理過程做的事情就是保證需求變更的可管理性。
需求的層次
《軟件需求》一書中有對需求層次的詳細(xì)定義:
軟件需求包括三個不同的層次--業(yè)務(wù)需求、用戶需求和功能需求--也包括非功能需求。業(yè)務(wù)需求(business requirement)反映了組織機構(gòu)或客戶對系統(tǒng)、產(chǎn)品高層次的目標(biāo)要求,它們在項目視圖與范圍文檔中予以說明。用戶需求(user requirement) 文檔描述了用戶使用產(chǎn)品必須要完成的任務(wù),這在使用用例(use case)文檔或方案腳本(scenario)說明中予以說明。功能需求(functional requirement)定義了開發(fā)人員必須實現(xiàn)的軟件功能,使得用戶能完成他們的任務(wù),從而滿足了業(yè)務(wù)需求。所謂特性(feature)是指邏輯上相關(guān)的功能需求的集合,給用戶提供處理能力并滿足業(yè)務(wù)需求。軟件需求各組成部分之間的
有這樣一個笑話:一個旅客走進硅谷的一家寵物店,瀏覽展示的寵物。這時,走進一個顧客,對店主說:"我要買一只C猴。"店主點了點頭,走到商店一頭的獸籠邊,抓出一只猴,遞給顧客說:"總共5000美元。"顧客付完款,然后帶走了他的猴子。這位旅客非常驚訝,走到店主跟前說:"那只猴子也太貴了!"店主說:"那只猴子能用C編程,非常快,代碼緊湊高效,所以值那么多錢。"這時,旅客看到了籠子中的另一只猴子,它標(biāo)價10000美元。于是又問:"那只更貴了!它能做什么?"店主回答:"哦,那是一只C++猴;它會面向?qū)ο蟮木幊?,會用Visual C++,還懂得一點Java,是非常有用的。"旅客又逛了一會兒,發(fā)現(xiàn)了第三只猴子,它獨占一個籠子,脖子上的標(biāo)價是50000美元。旅客倒抽一口氣,問道:"那只猴子比其他所有猴子加起來都貴!它究竟能做什么?"店主說:"我們也不知道它究竟能做什么,不過它是做項目顧問出身的。"
雖然這只是一個笑話,但是有一點是可以肯定的,項目管理是非常重要的,而項目管理的人才又是極為缺乏的。在軟件工業(yè)發(fā)達的國家,大家多少都知道點軟件工程規(guī)劃的重要性。在我們身邊的臺灣、印度、日本,都不乏因?qū)嵤┸浖こ潭晒Φ能浖F體,更不用說身為軟件大國的美國,已經(jīng)從較低級的軟件實現(xiàn)擺脫出來,進入了設(shè)計和營銷的境界。 軟件首先是一種產(chǎn)品(軟件是服務(wù)還是產(chǎn)品的問題,向來未有定論),看看世界上制造業(yè)的發(fā)展歷程,就會發(fā)現(xiàn)一些很有意思的現(xiàn)象。在本世紀(jì)早些的年代,西方國家的制造業(yè)經(jīng)歷了規(guī)模生產(chǎn)、提高質(zhì)量等等促進生產(chǎn)力提高的過程。可是由于西方國家的人力資源成本不斷的攀升,越來越難降低產(chǎn)品成本,所以西方國家又不可避免的經(jīng)歷了一次將制造業(yè)外移的過程(制造業(yè)外移的結(jié)果是成本大幅下降、國際貿(mào)易頻繁、接受制造業(yè)的國家發(fā)展了自身的制造業(yè)),而西方國家只留下營銷和設(shè)計的能力,掌握了產(chǎn)品生產(chǎn)的重點。 同樣,IT行業(yè)也在經(jīng)歷這種過程:美國將軟件外包給印度,硬件外包給臺灣。而中國的硬件也在崛起,但是在軟件行業(yè),中國和其他國家的差距還是太大了,且不說在軟件行業(yè)中處于核心地位的操作系統(tǒng)、數(shù)據(jù)庫。即便是應(yīng)用軟件,中國的軟件水平也實在低的可憐。在國外制造業(yè)剛剛遷移進中國的時候(改革開放),中國的小企業(yè)家同樣沒有任何管理經(jīng)驗、質(zhì)量意識。但是隨著制造業(yè)的發(fā)展和國外先進思想的進入,中國也誕生了極為出色的全球制造業(yè)巨頭。而中國的軟件行業(yè)現(xiàn)在正是處于剛剛有了一點管理思想,但還沒有成熟的地步。我們有理由相信,在不久的將來中國也會誕生出出色的全球性軟件企業(yè)。 憧憬歸憧憬,現(xiàn)實的問題還是必須要考慮的。軟件這個產(chǎn)品很奇特,軟件企業(yè)的管理思想同樣很奇特。不同于現(xiàn)在企業(yè)推崇的各種管理思想,軟件企業(yè)的管理思想主要是針對項目的管理,確保項目的成功。
項目和需求
笑話里的猴子對應(yīng)到項目就是指項目管理人員,這里要引入一個角色的概念(同樣的人可以擔(dān)任多種的角色),通常的項目管理角色包括:項目經(jīng)理、項目復(fù)審員、變更控制經(jīng)理、企業(yè)流程分析師、業(yè)務(wù)模型設(shè)計師、需求分析員、需求復(fù)審員、系統(tǒng)分析員…在一個成功的項目里,多種角色職責(zé)明確,分工合作,共同完成項目的設(shè)計實施。那么這?quot;猴子"在項目中都做了些什么呢?RUP(Rational Unified Process 瑞理統(tǒng)一過程,本文采用了眾多的RUP的思想)把一個項目分成10個核心工作流程(Core Workflows)和4個階段(Phases),并以核心工作流程為Y軸,階段為X軸建立起一個項目視圖(圖一)。
本文將主要對先啟階段做介紹。在先啟階段,需求是重中之中,這里指的需求不僅僅是RUP的一個工作流程(在業(yè)務(wù)建模下),而是比較廣義的概念,包括了RUP的工作流程中的業(yè)務(wù)建模、需求、一部分的分析、測試計劃、配置和變更管理。
需求是根本
由于忽略需求過程造成的項目返工是惡性的,大量的項目在需求階段就注定了它的失敗。以下是需求過程不科學(xué)的典型例子:
1.開發(fā)人員在用戶處呆了兩三天就埋頭開發(fā);
2.用戶告訴開發(fā)人員我要開發(fā)一個XX系統(tǒng),但是我很忙,你先開發(fā)一個讓我看看;
上面的這兩種態(tài)度都意味著項目的不成功,應(yīng)該說上面的開發(fā)人員和用戶都應(yīng)該對此負(fù)責(zé)。需求是開發(fā)者和用戶交互的一個過程,任何一方的不投入都會導(dǎo)致項目的失敗。當(dāng)然,由于用戶不是專業(yè)人士,開發(fā)者有權(quán)利告訴用戶應(yīng)該采用何種態(tài)度來對待項目的需求。曾經(jīng)和幾個朋友聊過他們公司開發(fā)過的項目,最后得出一個結(jié)論,所有最成功的項目都有一個重要的特性:用戶非常的支持。 評判一個軟件項目成功的標(biāo)準(zhǔn)是看它是否解決了用戶的問題,而用戶的問題就是體現(xiàn)為用戶的需求,需求也就順理成章的成為項目的成功標(biāo)準(zhǔn)。而需求階段的一個不慎都有可能導(dǎo)致軟件實現(xiàn)階段的大量返工,而需求的不慎不是說你小心就可以的,因為很多需求是隱性的,連用戶都不清楚自己的需求。這時候就需要一種科學(xué)的方法來幫助軟件組織實施需求過程。 需求是變化的
大師說:"沒有不變的需求,世上的軟件都改動過3次以上,一個只改動過兩次的軟件的擁有者已經(jīng)死了,死在去修改需求的路上。"
目前眾多的軟件項目有什么樣的問題呢?早些時候上ERP的企業(yè)在企業(yè)發(fā)展的時候發(fā)現(xiàn)原有的ERP系統(tǒng)需要改進,可是要改進或者是更改現(xiàn)有的ERP系統(tǒng),的方法就是重新開發(fā)一個ERP系統(tǒng)。這對于企業(yè)來說是筆不小的支出。此時,落后的信息系統(tǒng)就成為制約企業(yè)發(fā)展的重要因素。是什么原因造成了這種情況呢?主要的因素是傳統(tǒng)的系統(tǒng)分析是在假定需求不變的情況下進行的,這樣可以把企業(yè)的資源配置到的程度??墒窃诂F(xiàn)代瞬息萬變的社會,一個企業(yè)固守舊有模式,勢必會在競爭中處于劣勢(因此現(xiàn)在也出現(xiàn)了"組件化"的ERP,這是題外話)。既然企業(yè)的需求是變化的、不穩(wěn)定的,那么以變化的需求為基礎(chǔ)建立起來的企業(yè)信息系統(tǒng)當(dāng)然也就不穩(wěn)定了。這時候,有個問題就產(chǎn)生了,前面我們已經(jīng)說過,需求是項目的根本,既然需求都是不穩(wěn)定的,那么何以建立起穩(wěn)定的企業(yè)信息系統(tǒng)呢?
要回答這個問題,首先要比較面向過程和面向?qū)ο蟮拈_發(fā)方法的差別,傳統(tǒng)的面向過程的開發(fā)方法在前20年大行其道,為中國企業(yè)的信息化建設(shè)立下了汗馬功勞。之所以稱為面向過程,是因為開發(fā)的焦點集中于過程,開發(fā)者集中于以函數(shù)為核心的過程,例如前些年很多人試圖編寫一些通用轉(zhuǎn)賬函數(shù)來滿足銀行的需求。面向過程的開發(fā)語言包括:Cobol、Pascal、C及C的變形語言。面向?qū)ο蟮母拍钍窃诮?0年才進入中國的,而它的思想至今也沒有真正意義上得到普及。簡單的說,面向?qū)ο缶褪敲嫦蚴澜?,世界上的任何事物都是對象,因此面向?qū)ο笫呛茏匀坏乃枷?,是符合我們的思維習(xí)慣的。面向?qū)ο蟮恼Z言包括了Smalltalk、C++、Java,還有Object Pascal,以及剛剛誕生的C#。
需求是不穩(wěn)定的,那么需求之中是不是沒有穩(wěn)定的東西呢?有的,就是對象。世界都是由對象組成的,而對象都是持久的,例如動物、植物已經(jīng)有相當(dāng)長的時間。雖然對象也在變化,動物,植物也在不斷的進化。但對象在一個相當(dāng)長的時期內(nèi)都存在,動植物的存在時間肯定比任何一家企業(yè)長久。面向?qū)ο蟮拈_發(fā)方法的精髓就是從企業(yè)的不穩(wěn)定需求中分析出企業(yè)的穩(wěn)定對象,以企業(yè)對象為基礎(chǔ)來組織需求、構(gòu)架系統(tǒng)。這樣得出的系統(tǒng)就會比傳統(tǒng)的系統(tǒng)要穩(wěn)定得多,因為企業(yè)的模式一旦變化,只需要將穩(wěn)定的企業(yè)對象重新組織就行了。這種開發(fā)的方法就被稱為OOAD(Object Orient Analysis & Design 面向?qū)ο蟮姆治龊驮O(shè)計),而分析出的企業(yè)對象就被稱為Common Business Object。
需求是什么
在RUP中定義了需求工作流程的工作目的:
1.客戶和其他涉眾*在系統(tǒng)的工作內(nèi)容方面達成并保持一致。
2.使系統(tǒng)開發(fā)人員能夠更清楚地了解系統(tǒng)需求。
3.定義系統(tǒng)邊界(限定)。
4.為計劃迭代的技術(shù)內(nèi)容提供基礎(chǔ)。
5.為估算開發(fā)系統(tǒng)所需成本和時間提供基礎(chǔ)。
6.定義系統(tǒng)的用戶界面,重點是用戶的需要和目標(biāo)。
* 涉眾:涉眾是所有會受到項目結(jié)果重大影響的人。如客戶(或客戶代表) 用戶(或用戶代表) 、投資者 、股東 、生產(chǎn)經(jīng)理 、買方 、設(shè)計員 、測試員 、文檔編寫員等。
從上面的目的我們可以大致想到需求過程中要做些什么事。事實上,用簡單的話來說明需求過程,就是確定系統(tǒng)該做些什么以及該符合什么條件。話雖然簡單,實現(xiàn)起來可沒有那么容易。所以科學(xué)的需求過程有一整套完整的理論、工具、方法來實現(xiàn)。就像任何企業(yè)要盈利都必須要有業(yè)務(wù)和伴隨業(yè)務(wù)的管理一樣,需求過程也分為需求分析過程和需求管理過程。企業(yè)的業(yè)務(wù)是盈利性的,需求分析過程在項目中也是產(chǎn)出型的;企業(yè)要保證業(yè)務(wù)的開展就必須要有管理,而需求分析過程也同樣離不開需求管理。小企業(yè)沒有成為體系的管理方法,企業(yè)規(guī)模小的時候還能夠?qū)Ω叮墒瞧髽I(yè)一大,各種問題都接踵而來,管理上的不足直接導(dǎo)致了業(yè)務(wù)開展的低效性。同樣,需求管理的不足可能可以應(yīng)付小型的軟件項目,可是對于大型的項目,管理的不足就會暴露出來,而直接的后果就是項目的失敗。
插句題外話,很多人認(rèn)為需求管理的目的是為了控制需求過程,這是沒有錯,但是在RUP的思想中,更重要的思想是迭代*。迭代的目的是為了發(fā)展,為了進化,為了完善。所以RUP中的軟件生命周期是分為多個迭代周期的。 * 迭代:迭代包括產(chǎn)生產(chǎn)品發(fā)布(穩(wěn)定、可執(zhí)行的產(chǎn)品版本)的全部開發(fā)活動和要使用該發(fā)布必需的所有其他外圍元素。所以,在某種程度上,開發(fā)迭代是一次完整地經(jīng)過所有工作流程的過程:(至少包括)需求工作流程、分析設(shè)計工作流程、實施工作流程和測試工作流程。實質(zhì)上,它類似小型的瀑布式項目。
需求分析過程主要做的事情無非就是獲取涉眾對系統(tǒng)的要求,可是需求是多變的,而你不可能告訴客戶等到他們把一切都固定下來再開發(fā)軟件。所以需求管理過程做的事情就是保證需求變更的可管理性。
需求的層次
《軟件需求》一書中有對需求層次的詳細(xì)定義:
軟件需求包括三個不同的層次--業(yè)務(wù)需求、用戶需求和功能需求--也包括非功能需求。業(yè)務(wù)需求(business requirement)反映了組織機構(gòu)或客戶對系統(tǒng)、產(chǎn)品高層次的目標(biāo)要求,它們在項目視圖與范圍文檔中予以說明。用戶需求(user requirement) 文檔描述了用戶使用產(chǎn)品必須要完成的任務(wù),這在使用用例(use case)文檔或方案腳本(scenario)說明中予以說明。功能需求(functional requirement)定義了開發(fā)人員必須實現(xiàn)的軟件功能,使得用戶能完成他們的任務(wù),從而滿足了業(yè)務(wù)需求。所謂特性(feature)是指邏輯上相關(guān)的功能需求的集合,給用戶提供處理能力并滿足業(yè)務(wù)需求。軟件需求各組成部分之間的