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