項目需求分析定義的靈魂拷問

關注、星標嵌入式客棧,精彩及時送達

[導讀] 項目開發,一般都是按照需求驅動開發整個開發過程的。需求是開發的源頭,即便是自己DIY一個小東西,心中所想也是一種需求,所以一個項目是否成功,需求分析做的是否到位也是至關重要的。七夕情人節剛過完了,想來有的盆友或許深思倦怠,今天來分享一篇輕鬆的文章吧。

從搞笑開始

客戶想要一款集美麗、智慧於一身的機器人,理想很豐滿,可是現實很骨感。項目中不同的角色對這個需求理解各不相同,而表現傳遞的信息又有可能會大打折扣,所以最後交付造出來的產品與客戶想要的相去甚遠。

那麼問題出在哪裏呢?我以爲需求失真是罪魁禍首!

  • 客戶自己對需求理解失真

  • 設計人員對需求理解失真

  • 需求文檔對需求描述失真

  • 開發人員對需求設計失真

  • .......

    那麼對於需求的定義在項目的成功執行,就顯得尤爲重要了。再看一個關於小龍女形象的經典段子:

這不是終極版本,來看下顛覆三觀的終極失控版本:

注:圖片來源於網絡,純屬調侃搞笑,不帶任何歧視,侵刪

所以對一個成功的項目而已,需求的作用就顯得尤爲重要了。

需求的SMART原則,SMART依次英文含義爲聰明的,SMART對於需求而言,有哪些度量維度呢?

  • S:Specific 明確的

  • M:Measurable 可度量的

  • A:Achievable 可實現的

  • R:Realizable  可實現的

  • T:Traceable and Testable 可追溯及可測的

Specific明確原則

明確原則主要涵蓋這樣一些要點:

  • 需求描述的正確性?描述的需求本身必須是正確的界定某個功能,如果本身就是一個錯誤的描述,則設計實現就一定是錯誤的!需求描述的內容是否是需求方(可能是最終客戶或者來源於市場產品管理人員)。這項需求真的是需求方所需嗎?或者部分所需?或者完全錯誤?

  • 需求描述的唯一性?好的做法是將需求拆分成一個個條目,每一個條目描述一項明確精準的需求,相互之間不存在包含關係。

  • 需求條目是否在項目的範圍內?有的需求可能天馬行空,超出了項目預期的範圍的事情時有發生。

  • 需求描述時否明確了該項需求的前提條件或者約束?

Measurable可度量原則

可度量,我的理解是體現精確性:

  • 需求描述的精確性?需求不要用模棱兩可的描述,比如不可使用左右,上下,可能等,而儘量用精準的數字去描述。比如需要描述響應時間,推薦描述爲響應時間須滿足:

  • 需求描述的客觀性?需求描述應採用客觀描述語言,忌諱採用具有主管色彩的詞彙,比如需求一個產品經理要求設計的UI界面,美觀大方,容易操作,這樣的需求是非常不易度量的,相信很多盆友或許又遭遇過這樣的需求,也一定是非常惱火的。這樣的需求你讓設計咋整?一千個讀者眼中就有一千個哈姆萊特,這樣的描述太過主觀,最後一定是撕逼扯皮的結局。

Achievable 可實現原則

凡是寫入項目需求規格書中的條款理論上就是一份技術合同,需求方就是甲方,項目團隊相當於乙方。所以界定需求是需要與甲方反覆溝通,反覆確認的,否則一旦寫入規格書,臨了發現臣妾做不到!最後又不免撕逼扯皮!

要實現需求規格書的可實現原則,並不是簡單成員坐在一起,拍拍腦袋想想就定下來,這裏對於一些具有挑戰的技術難點、技術指標是需要做技術預研的,否則可實現就變成了覺得可實現,而非客觀上真的可實現!對於是否可實現,可以提出這樣些問題:

  • 項目團隊是否具有這樣的技術?

  • 關鍵技術指標能否滿足要求?

  • 項目資源配置能滿足要求?

  • 可實現是原則不是描述如何實現!需求描述的就是功能性或非功能性的要求,而不要描述設計方案

  • .......

雙T可追溯可測原則

可追溯原則:

  • 後向追溯:所有的需求條目,理論上應有甲方(需求方)的源頭

  • 後向追溯:所有的需求條目,都應有設計能對應保證,都應測試用例可驗證。

可測試原則:

  • 需求條目,需要應儘量具有可測性

  • 需求階段,理論上測試人員就應該參與討論,從測試的角度來進行覈定。

不良需求描述栗子

無法追溯(無標號)

  • 按下急停開關,系統須停機。(這裏其實還不精確,應描述在多少時間內停機)

不可測

  • SR-1:系統須永不崩潰。

不精確

  • SR-2:系統應向用戶提供快速反饋。(多快?)

無測量公差

  • SR-3:LED燈應閃爍間隔100毫秒(應定義正負偏差)

過於複雜

  • SR-4:按紅色按鈕將激活功能A,按藍色按鈕應使LED 1 閃爍而不是LED 2點亮,點亮LED 2通過黃色按鈕實現。(應拆分)

描述實現

  • SR-5:按下按鈕W將導致兩個16位整數值相加,然後…

需求描述方法

實際項目中,不同的公司實際落地都各有各的特點,這裏大致列舉一些常見做法:

  • 文檔描述法:屬於常規方法,很多公司採用這樣方案描述項目需求。

  • UML 用例法:利用UML用例圖描述需求,這種方法比較直觀,比如下圖

  • 敏捷項目管理,採用用戶故事描述(user story)

總結一下

項目開發,需求階段是一個至關重要的階段。如果在需求階段不做足確認工作,需求分析描述做的很隨意,開發過程及交付時不免掉進各種坑裏。

本文辛苦原創,如喜歡請點贊/在看/分享支持,不勝感激!

END

往期精彩推薦,點擊即可閱讀

▲Linux內核中I2C總線及設備長啥樣? 

▲學Linux驅動:應先了解總線驅動模型

▲看思維導圖:一文帶你學Verilog HDL語言

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章