天天看點

需求管理一:需求的分析

(原創文章,歡迎轉載,請注明出處)

引言:最近找工作,就把幾年來做需求的想法感受總結一下,一是提高自己,二也是請您斧正。

CMMI 将需求管理過程域(PA)分為5個:

sp1.1 了解需求:與需求的提供者對需求的含義達成一緻

SP1.2 獲得對需求的承諾:獲得項目組成員對需求的承諾

SP1.3 管理需求的變更:在項目進行中,管理需求的變更

SP1.4 維護需求的雙向可跟蹤性:維護需求和工作産品之間的雙向可跟蹤性

SP1.5 确定項目工作與需求間的差異:識别項目計劃、工作産品和需求之間的不一緻

這5個特殊實踐(SP)為項目中的需求工作明确了方向和具體工作内容。然而需求的收集和分析并非易事。

需求的分析有如下的困難:

1.需求經常變動

有些變得快的客戶可能話剛出口就翻了。我去客戶那裡聽需求,往往要到簽字畫押的時候,客戶又反水了。網上有些朋友引用:“妖要是有了仁慈之心,就不再是妖,是人妖。”(——唐僧 《大話西遊之大聖娶親》)來說明需求的變化。我覺得很貼切,哈哈……

2.客戶說不清楚

不要以為客戶對熟悉的事情就能說清楚,事實上包括我們,對熟悉的東西都不能說清楚。比如說去買個橡皮手套,手指頭的粗細,手掌的寬厚,恐怕要佩戴一下才知道,不能僅憑橡皮手套的外包裝上的大、中、小三個字去選擇。橡皮手套的廠家也了解了這點,于是把手掌的小拇指根部外緣到虎口的位置在外包裝上做了個尺子,拿自己的手對比一下這個尺子,即可知道這個橡皮手套适合不适合自己。

3.分析人員或客戶了解有誤

分析人員和客戶所占的角度不同,造成了解不同,記得當年有人質疑電視劇裡插播廣告太多的時候,一個電視台的專業人士回應說:“你弄錯了,我們是在廣告裡插播電視連續劇!”往往因為立場不同,造成了解上差别非常大。

4.使用者與開發人員溝通障礙

這個是在需求工作中遇到得比最棘手的問題,我在一家工控企業工作,主要是自動化領域。而我們的客戶是做電池的,屬于電化學領域。當然有一定的交叉,但還是差别很大,溝通起來非常費力。遇到比較強勢的客戶,甚至會要求你的怎麼做怎麼做,但實際上他一點都不了解,溝通的過程異常艱辛。同時,我們有時從專業角度去分析為什麼不能這樣實作,但客戶聽了以後,就說誰誰實作了(理論上根本實作不了,忽悠人的),你們也必須實作! 如果是同一個領域的,有相關的知識作為溝通基礎的話,難度會大幅度下降。

5.隐含需求

一個需求其實往往包含着很多方面,由此衍生出很多的需求。比如說一個功能需求,客戶要界面盡可能顯示出所有的資訊。這個問題就很複雜,因為電腦螢幕的分辨率有大有小,全屏的時候和是一個不是全屏的視窗,所擁有的繪圖面積是不一樣的。是以隐含着,不同界面大小下,應該怎麼組織界面元素的問題。

6.很多其他的原因

……

馬克思說過一句話,一切的節約歸結為時間的節約。并且,哲學上有一個原理,即存在即合理。 通常,客戶看似提出得不合理的需求,背後都有一個非常合理的原因所支撐着。是以我認為,一個産品的需求:

  • 需求一定是成體系的,彼此呼應,互相支撐;
  • 需求是階層化的,高層次的需求支配着低層次的需求,低層次的需求支撐着高層次的需求;
  • 需求一定是合理的,所謂不合理的需求,一定是背後的原因不合理,而不是需求本身。

促使功能需求産生的根源 最終都是基于對時間的節約。當然,這個對時間的節約對實踐的指導意義不大,可以從以下幾個方面考慮需求産生的根源:

1.技術

2.易用性

3.安全性

4.成本

5.利益

6.其他

這裡所說的是需求産生的根源,并不是需求非功能方面的特性。我們逐一看看:

  • 技術 往往能帶來巨大的市場需求。使得原來客戶天馬行空的幻想變為現實,可以産生實際的效果。比如典型的Intel看到桌面級别沒有一個合适的消費級總線,于是發明了USB,您現在看一看,隻要沾到消費類的東西,還有不支援Usb的嗎?Intel即使不做晶片,靠專利也能賺得瓶滿缽溢。
  • 易用性 這個對需求的影響最大。易用性包含多個方面:容易了解,容易學習,容易操作。從客戶來說,易用性往往是需求産生的最重要的根源之一。如symbain 的智能手機比 Android真的差多少嗎?不見得吧,從功能上說,我覺得symbain比Android要好用。但它的易用性絕對沒有Android好,是以,人們會摒棄它,當然這隻是原因之一。又如汽車的自動檔和手動檔,其實是從易用性的角度去考慮得到的需求。當然,這個需求還會附帶的提高了安全性。

       對于一個産品,客戶不是唯一的“客戶” ,一個需求出來以後,需要開發人員開發,測試人員測試,維護人員維護。易用性也展現在開發、測試、維護上。于是,就演變成一些非功能性的需求:可靠性需求、效率需求、維護性需求、可移植性需求等。如,開發人員需要開發這個需求的代碼能很輕松的被其他人員所了解,那麼就需要對接口統一化、算法标準化等等的工作;測試人員希望這個需求是好測試的,如汽車一般會把内部的CAN總線預留出來,便于汽車的測試。維護人員很輕松的維護裝置,如汽車是預留了個CAN接口,但我們又不是開發人員,我怎麼知道協定對不對?好不好?于是又開發了汽車的×××,給維護或維修人員,便于他們定位問題和故障。

  • 安全 ,也是産生影響需求的重要因素之一。如為了防止人們不寄安全帶,是以發明了汽車安全氣囊。為了防止小車撞大車,大車的車廂高,而小車的駕駛室正好沒有防護,國家都強制大車的車廂底部兩側都裝有防撞欄。諸如此類的需求其實非常多,不勝枚舉,當往往現實中該原因會被成本原因所制約。
  • 成本 ,成本往往是最重要的影響需求的原因。如客戶為了節約生産中的成本,可能會斥巨資去發明一個裝置去提高生産效率。又如,防撞欄的事情,大車的防撞欄本來是一條重要的生命線,國家明文要求大車必須安裝,但因為成本的原因,大車的防撞欄有些地方基本上就是用細細的鐵絲紮一個,更本起不到效果,由于汽車廠商不負責安裝防撞欄,并由此催生了一大批為大車加裝這種“紙糊防撞欄”的第三産業。是在是汗啊。像福島核電站的洩漏、BP在美國的石油洩漏,都是成本戰勝安全的典型例子。這個因素要在需求分析時和安全因素綜合考慮。
  • 利益, 利益産生的需求往往看起來不是個合理的需求,得不到其他需求的支撐。如一個客戶中的某個代表,想彰顯自己的存在與價值,提了個與産品的整體架構、市場背離甚至是抵觸的需求。又如,一些管理不正規的地方,極個别的别有用心的人想快速緻富,提出一些需求根本無法實作。公司為了生存隻能采用商業手段擺平。
  • 其它因素,其它因素其實還有很多,如客戶的心理、道德等等一些較為主觀的因素也會影響需求的産生。如有些客戶就是喜歡Apple、就是不喜歡Android,而有一些客戶就是喜歡Android、不喜歡Apple。讓他說為什麼,他說不出來。Apple時尚嗎?Android的也有時尚的機型。Apple遊戲多嗎?Android也有不錯的遊戲。不過是心理因素作祟吧。又如,該行業有A、B、C三家公司,客戶以前經常使用A公司的産品,B公司進入這個客戶時,這個客戶就會提很多類似A公司的需求,其實并不是B公司的産品用起來不如A公司,甚至有些超過了A公司,客戶的心理接受有一個過程,他可能認為隻有A公司做得好……

再回頭看看需求為什麼變動。需求變動往往是通過這幾個原因權衡鬥争的結果。需要通過分析,才能把握變動的規律。

案例: 一家大公司需要紅外熱像儀做測試監控,需要在測試過程中的最後幾分鐘内對測試對象拍照。

需求到了我的桌子上,我問了如下問題:

  1. 為什麼要使用紅外熱像儀?
  2. 為什麼不用熱電偶、熱敏電阻或紅外點溫計?

原來客戶需要得到測試過程中,測試物體的面溫度,需要得到整個測試面的最高溫、平均溫度以及環境溫度。一是了解測試對象的發熱情況,進而确定其安全情況。同時,在測試過程中,有裸露的金屬片上有較大的電場,會對接觸式測溫産生嚴重的影響。測量點的溫度基本就否定了。于是我分析,這是一個安全 原因産生的需求。

客戶後來又提了個需求,需要一台紅外熱像儀測量多個測試對象。

我提出了以下問題:

1.測試對象全部同時到達拍照時間怎麼辦?

2.誰來移動紅外熱像儀?

第一個是技術問題,第二個是個易用性問題。但支配産生這這個需求的是成本 因素。因為紅外熱像儀一台需要10W RMB左右。客戶想減少成本。提出來後,因為客戶不能解決測試對象的一緻性問題,即測量對象都在測試時間是相同的,通過先後啟動測試,規避測試對象同時達到測試時間的問題。隻要時間足夠,配合軟體,讓人工移動紅外熱像儀即可。最終還是選擇一個測試對象一台熱像儀。

恩,仔細考慮這兩個需求,案例中安全戰勝了成本 ,但實際生活中大部分的例子是成本戰勝了安全,如最近的福島核電站的事情。是以,對于這種需求,一定要手拿兩套解決方案,防止需求的變動帶來的分險。設計軟體時,我們是先按照簽訂的合同上開發的,但實際上,對兩個需求都做了分析,抽象出大部分相同的地方,如果客戶改變主意了,呵呵,改動起來代價也很小。

繼續閱讀