淺談需求:軟件需求的分類到底有哪些?
當(dāng)需求需要被文檔化描述,這就要求產(chǎn)品經(jīng)理弄清楚需求有哪些類型,每種類型該如何進行表達(dá)。
在軟件行業(yè),人們討論的“需求”通常指的是軟件應(yīng)用需求,但還是具有其他不同類型的需求,如下圖
- 項目需求:大Boss要求團隊需要在3個月內(nèi)完成項目并上線,其對象針對項目的時間進度、成本、資源等。
- 過程需求:項目經(jīng)理要求提交需求規(guī)格說明文檔、產(chǎn)品原型圖等報告,其對象是在開發(fā)過程中的開發(fā)人員、工具方法等。
- 系統(tǒng)級需求,包括軟件需求(這就是我們常討論的需求)、硬件需求(怎么樣規(guī)格的服務(wù)器、顯示屏等),其他需求(如某些toB軟件投入使用要需要對用戶進行培訓(xùn)講解)。
對于上述的所講的項目需求、過程需求、硬件需求、其他需求也是要寫進需求文檔里去的,一般是寫在開頭或末尾,這根據(jù)自己的個人習(xí)慣。講了辣么多,我的主體還是我們所常提起的軟件需求。
從嚴(yán)格意義上的軟件需求分類具有:功能需求(functional requirement),非功能需求(non-functional requirement),就好比我在某寶想買一雙鞋子,球鞋、高跟鞋、過膝靴、紅色、黑色等是明顯可知的(功能需求),但鞋跟牢不牢固、鞋底會不會脫膠等是不清楚的(非功能需求)。其中非功能需求包括性能需求(performance requirement),質(zhì)量屬性(quality attribute),對外接口(external interface),約束(constraint)。
功能需求:
是最常見和最重要的需求,體現(xiàn)在系統(tǒng)與用戶之間的交互,幫助用戶解決問題,完成任務(wù)。功能也有復(fù)雜簡單之分,對于復(fù)雜的功能需要一層一層分離,如公司做的核銷功能,在賬單模塊,分離各種支付類型,支付類型又分為具有流水號和無流水號的等等?;蛘擢毩⒊啥鄠€部分,如公司的某項目,分成機票模塊、酒店模塊、用車模塊等等,然后再分別交給開發(fā)人員進行開發(fā)。
功能需求是整個系統(tǒng)產(chǎn)生價值的基礎(chǔ),是使得一個軟件應(yīng)用得以存在的原因。
性能需求:
我們會經(jīng)常討論到手機性能怎么樣,卡不卡,耗電量怎么樣,存儲量有多大……而軟件也具有性能,是指某指定功能的程度,如速度,精確度,內(nèi)存使用程度等
常見的性能:
- 速度:系統(tǒng)完成指定任務(wù)的時間。如航班搜索出來的結(jié)果必須在3s內(nèi)展示出來。
- 容量:系統(tǒng)所能存儲的數(shù)據(jù)量。如財務(wù)系統(tǒng)能存儲至少10萬條的核銷數(shù)據(jù)。
- 并發(fā)性:系統(tǒng)可以承載的并發(fā)工作量。如某軟件允許多少個用戶同時使用。
- 實時性:嚴(yán)格的實時要求。如降艙軟件中當(dāng)發(fā)現(xiàn)合乎條件的艙位,系統(tǒng)需在1s內(nèi)執(zhí)行降艙指令。
對于性能需求,如要不是很大的用戶量或大公司,其他則比較少去考慮該方面的需求,但對于系統(tǒng)的后期發(fā)展,這也是一個極其重要需求探討。
質(zhì)量屬性:
質(zhì)量屬性包括性能需求,只是性能需求比較特殊,所以單獨出來。
常見的質(zhì)量屬性:
- 可靠性:指在一定時間或條件下,系統(tǒng)執(zhí)行所要求功能的無故障執(zhí)行能力。
- 可用性:系統(tǒng)在使用中可操作或訪問程度。
- 可維護性:為改進系統(tǒng)或修復(fù)bug而修改系統(tǒng)或某功能模塊的難易程度。
- 安全性:阻止對其程序和數(shù)據(jù)進行未授權(quán)訪問的能力。
- 可移植性:將系統(tǒng)從一個硬件或軟件的運行環(huán)境換置到另一個環(huán)境。
- 易用性:系統(tǒng)易于使用的程度。
另外常見的質(zhì)量模型為[IOS/IEC 9126-1]和[IEEE 1061-1992,1998],點擊即可跳到鏈接查看,為26和27條
對外接口
對于接口需要進行說明:
- 接口的用途;
- 接口的輸入輸出;
- 數(shù)據(jù)格式;
- 命令格式;
- 異常處理要求;
如某數(shù)據(jù)包為XML格式,HotelProduct表示酒店接口,接口的輸入為Destination目的地,Date住店及離店日期,輸出的數(shù)據(jù)類型為數(shù)字文本,0代表操作正確,1代表數(shù)據(jù)錯誤,2代表網(wǎng)絡(luò)故障,3代表其他錯誤,而對于0還輸出具有目的地的酒店信息,其中一個字段為HotelID,酒店編號,Number類型,18位數(shù)據(jù)代碼。
約束
常見的約束:
- 系統(tǒng)開發(fā)以及運行的環(huán)境:包括計算機,操作系統(tǒng),編程語言、數(shù)據(jù)庫管理系統(tǒng)等
- 問題域內(nèi)的相關(guān)標(biāo)準(zhǔn):包括法律法規(guī)、合作協(xié)議等
- 社會性因素:文化、信仰等社會性因素
對于軟件需求的分類大致就是以上這幾類,這是最近在看需求工程書籍歸納的。另外自己的原型設(shè)計會對某界面或某功能進行需求描述,如行為的觸發(fā)條件,行為的前置條件、行為流程、后置條件、異常情況、和對數(shù)據(jù)的需求(類型、初始值、取值范圍、單位等)、使用什么接口,接口的描述等等,對于該如何完備性的描述一個界面或功能的需求下回見分曉~~如大家有什么建議或補充,歡迎留言。
本文由 @Halona 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自unsplash,基于CC0協(xié)議
很棒!約束類需求里文化信仰這塊有實例么
和我現(xiàn)在干的工作幾乎全一致