需求分析:功能角色分析與用例圖

需求分析不是一項(xiàng)一蹴而就就可以完成的工作朝抖,它需要一個(gè)長(zhǎng)期的過程糊闽,而這個(gè)過程是一個(gè)由粗到細(xì)的過程,它體現(xiàn)了人類認(rèn)識(shí)事物的客觀規(guī)律爹梁。在需求分析的初期右犹,我們對(duì)需求的認(rèn)識(shí)往往是整體的、宏觀的姚垃,隨著分析工作的逐漸深入念链,一步步細(xì)化。按照這個(gè)思路莉炉,我們對(duì)需求的分析钓账,首先應(yīng)當(dāng)從功能角色分析開始。所謂功能角色分析絮宁,就是從一個(gè)外部用戶的視角分析整個(gè)軟件系統(tǒng)能夠提供的功能梆暮,以及這些功能到底是提供給哪些角色使用。


對(duì)一個(gè)系統(tǒng)進(jìn)行功能和角色方面的梳理和分析绍昂,可以采用的比較主流的方法之一就是繪制用例圖啦粹。用例圖是UML的4+1視圖中的一種,準(zhǔn)確地說就是那個(gè)“+1”窘游。用例圖是貫穿整個(gè)面向?qū)ο蠓治?設(shè)計(jì)(OOA/D)的核心視圖唠椭,它描述的是系統(tǒng)到底為用戶提供了哪些功能,以及到底是哪些用戶在使用這些功能忍饰,是溝通用戶與技術(shù)人員的橋梁贪嫂。

運(yùn)用用例視圖對(duì)業(yè)務(wù)需求進(jìn)行分析、抽象艾蓝、整理力崇、提煉,進(jìn)而形成抽象模型的過程稱之為用例建模赢织,而這個(gè)模型就是用例模型亮靴。 一般地,在一個(gè)用例圖中通常有三種元素:參與者(Actor)于置、用例(Use Case)與系統(tǒng)邊界(Boundary)茧吊。

用例描述的是系統(tǒng)為用戶提供的功能,也就是系統(tǒng)能為用戶做什么八毯,通常被繪制成一個(gè)橢圓搓侄;參與者,我認(rèn)為稱為角色更加合適宪彩,也就是系統(tǒng)為哪些類型的用戶提供服務(wù)休讳,他們都各自承擔(dān)哪些不同的職責(zé),通常被繪制成一個(gè)小人兒尿孔;最后是系統(tǒng)邊界,也就是系統(tǒng)是對(duì)現(xiàn)實(shí)世界哪個(gè)范圍的內(nèi)容進(jìn)行的模擬,它涉及到軟件設(shè)計(jì)的工作范圍與工作量活合,通常被繪制成一個(gè)方框雏婶。但是,通常情況下系統(tǒng)邊界只是一個(gè)概念而不用真正繪制出來白指,因?yàn)楸焕L制成用例的必然是系統(tǒng)內(nèi)部的功能留晚,被繪制成參與者的必然是系統(tǒng)外部事物。從這個(gè)意義上講告嘲,用例圖中的參與者不僅包括人错维,還包括那些外部系統(tǒng)和自動(dòng)觸發(fā)器。根據(jù)這樣一個(gè)思路橄唬,我以往常常將外部系統(tǒng)和自動(dòng)觸發(fā)器繪制成一個(gè)小人赋焕,這常常令客戶感到困惑。隨后我改變了思路仰楚,將外部系統(tǒng)和自動(dòng)觸發(fā)器繪制成另一種表達(dá)形式——類元符號(hào)表示法隆判,并在構(gòu)造型上標(biāo)注為Actor。

上圖是一個(gè)考核系統(tǒng)中一個(gè)子模塊的用例圖僧界。圖中的用例就是這個(gè)系統(tǒng)提供給用戶的各項(xiàng)功能侨嘀。注意,這里僅僅是在羅列功能而不表示它們之間諸如流程調(diào)用等相互關(guān)系捂襟,這是一些初學(xué)者常常犯的毛病咬腕。

參與者與用例通過實(shí)線關(guān)聯(lián)起來,代表的是一種使用關(guān)系葬荷。箭頭代表的是一種導(dǎo)航涨共,即動(dòng)作施與的方向。

在這個(gè)用例圖中闯狱,普通用戶執(zhí)行查詢操作煞赢,查詢系統(tǒng)提供的“預(yù)警監(jiān)控單項(xiàng)查詢”、“預(yù)警監(jiān)控匯總查詢”等查詢報(bào)表哄孤;每日自動(dòng)觸發(fā)器觸發(fā)自動(dòng)考核功能照筑,自動(dòng)考核功能從“稅收征管系統(tǒng)”這樣一個(gè)外部系統(tǒng)中采集數(shù)據(jù)。 圖中考核管理員和執(zhí)法人員代表的是兩個(gè)完全不同的角色瘦陈,但他們?cè)谶@個(gè)圖中體現(xiàn)的是一些共有的特性凝危,即對(duì)這堆報(bào)表的查詢,因此被繪制成繼承自普通用戶晨逝。繼承是參與者間唯一的關(guān)系蛾默,代表繼承者擁有被繼承者所有的功能與權(quán)限。除了參與者以外捉貌,用例與用例直接也存在著一些類型的關(guān)系支鸡,這我們?cè)诤竺嬖敿?xì)講述冬念。 在繪制用例圖時(shí)一個(gè)值得思考的細(xì)節(jié)是,用例是怎樣通過分析獲得的牧挣。這個(gè)問題急前,在一些客戶對(duì)信息化管理比較有經(jīng)驗(yàn)的項(xiàng)目中不存在問題,因?yàn)樵诳蛻籼峁┙o我們的需求文檔中就清晰地劃分出了一項(xiàng)一項(xiàng)的功能瀑构。這些功能可能會(huì)在日后的需求分析工作中有所調(diào)整裆针,但它從整體上形成了一個(gè)雛形,成為我們進(jìn)行用例分析進(jìn)而形成用例的依據(jù)寺晌。 但當(dāng)我們面對(duì)的是一些對(duì)信息化管理沒有經(jīng)驗(yàn)的客戶世吨,情況就有些不妙了。在這種情況下呻征,通吃呕椋客戶只能給我們一些管理目標(biāo)、基本想法怕犁,其它的調(diào)研工作就需要我們自己去做了边篮。這時(shí),我給大家的建議是奏甫,首先從組織機(jī)構(gòu)上劃分清楚系統(tǒng)涉及哪些部門戈轿、哪些科室,然后在這個(gè)基礎(chǔ)上劃分出來這些部門這各個(gè)科室的人員都扮演哪些不同職能的角色阵子,以及完成哪些業(yè)務(wù)操作思杯。系統(tǒng)中的一個(gè)功能,在一般情況下是組織機(jī)構(gòu)中某個(gè)(或多個(gè))角色挠进,為該機(jī)構(gòu)某項(xiàng)業(yè)務(wù)流程完成的某個(gè)操作色乾,并且這個(gè)操作應(yīng)當(dāng)有某個(gè)確定的結(jié)果(即產(chǎn)出物)。而這個(gè)功能就是我們需要提取出來的用例领突。雖然功能角色分析在整個(gè)需求分析過程中可能會(huì)隨著認(rèn)識(shí)的深入而不斷調(diào)整暖璧,但分析過程大體是這樣進(jìn)行的。 有人說君旦,我們繪制的用例圖拿給客戶看不懂澎办。這樣一個(gè)清晰明了的用例圖,輔之以我們對(duì)圖形的描述金砍,客戶怎么會(huì)看不懂呢局蚀?關(guān)鍵問題在于,我們沒有將用例圖的精髓弄明白恕稠,再加上出現(xiàn)一些常見問題琅绅,使得用例圖畫得不倫不類,客戶當(dāng)然就看不明白了鹅巍。

現(xiàn)在我們看看用例繪制都有些什么常見問題千扶。
  1. 沒有正確理解用例圖的視角料祠。前面我反復(fù)強(qiáng)調(diào)了,用例圖的視角是用戶县貌,也就是說术陶,站在用戶的角度來觀察的我們需要設(shè)計(jì)的系統(tǒng)凑懂。從這個(gè)視角煤痕,用戶看到的系統(tǒng)是什么呢?當(dāng)然是一項(xiàng)一項(xiàng)的功能接谨,這些功能是客戶能夠理解的摆碉、具體的、對(duì)客戶存在價(jià)值的功能脓豪。從這個(gè)意義上說巷帝,那些技術(shù)性的功能不應(yīng)當(dāng)出現(xiàn)在這里,或者應(yīng)當(dāng)描述為用戶可以理解的文字扫夜,比如“自動(dòng)考核”楞泼。而那些應(yīng)當(dāng)繪制的用例,在取名時(shí)也應(yīng)當(dāng)站在用戶角度去取名笤闯。舉個(gè)簡(jiǎn)單的例子堕阔,一個(gè)員工檔案信息系統(tǒng),以往我們總愛將用例取名為“添加員工信息”颗味、“更新員工信息”超陆、“刪除員工信息”,這就是典型的技術(shù)人員編寫的用例浦马∈毖剑“添加員工信息”對(duì)于用戶來講應(yīng)當(dāng)是做什么呢——填寫新員工資料;“更新員工信息”對(duì)于用戶來講又是做什么呢——更改員工資料晶默;“刪除員工信息”又是什么呢——員工注銷谨娜。不論是“填寫新員工資料”、“更改員工資料”磺陡,還是“員工注銷”趴梢,對(duì)于客戶都是日常工作中需要完成的操作,將用例命名為這些名字必然為用戶所理解仅政。同時(shí)垢油,每一個(gè)用例對(duì)于用戶來說應(yīng)當(dāng)是有價(jià)值的,也就是說圆丹,用戶使用這個(gè)功能是要完成一項(xiàng)操作滩愁,或獲得什么信息。比如上圖的“自動(dòng)考核”會(huì)產(chǎn)生一批考核結(jié)果辫封,執(zhí)行“預(yù)警監(jiān)控單項(xiàng)查詢”可以獲得預(yù)警監(jiān)控結(jié)果數(shù)據(jù)硝枉。
  2. 圖形繪制雜亂無章廉丽。一個(gè)系統(tǒng),特別是一個(gè)大型系統(tǒng)妻味,提供給用戶的功能是繁雜的正压。如果你想將所有的功能,不管粗的細(xì)的责球,都試圖繪制在一個(gè)用例圖中焦履,幾乎沒人看得懂。我們之所以將分析設(shè)計(jì)圖形化雏逾,是因?yàn)閳D形能給人形象立體的感官嘉裤,使人立即就明白了其中的意思,但前提是栖博,這個(gè)圖形是主題清晰的屑宠、形象生動(dòng)的。因此仇让,我們繪制用例圖要學(xué)會(huì)拆分典奉,由粗到細(xì)地一個(gè)一個(gè)繪制。先整體的繪制丧叽,再劃分成各個(gè)模塊一個(gè)一個(gè)詳細(xì)繪制卫玖,再進(jìn)一步細(xì)化。所以蠢正,描述一個(gè)系統(tǒng)應(yīng)當(dāng)有許許多多的用例圖骇笔。
  3. 用例是一個(gè)場(chǎng)景。在現(xiàn)實(shí)世界中嚣崭,我們常常面對(duì)的是一個(gè)個(gè)長(zhǎng)而復(fù)雜的操作流程笨触,但在軟件世界里,我們要將它們拆分成一個(gè)個(gè)的用例雹舀,怎樣拆分芦劣?一個(gè)用例必須有一個(gè)場(chǎng)景,也就是時(shí)間相近说榆、地點(diǎn)單一的一系列操作虚吟,并且這些操作最終應(yīng)當(dāng)有一個(gè)明確的結(jié)果。

    如上所示這個(gè)用例圖签财,“申辯申請(qǐng)”就是過錯(cuò)責(zé)任人填寫了一張申辯申請(qǐng)單串慰,最終的結(jié)果是將申辯申請(qǐng)單提交給考核管理員;“申辯受理”就是考核管理員接收了過錯(cuò)責(zé)任人的申辯申請(qǐng)單并予以受理唱蒸,當(dāng)然另一個(gè)結(jié)果是對(duì)其不予受理邦鲫,該申請(qǐng)單被退回給過錯(cuò)責(zé)任人。每個(gè)用例都有確定的場(chǎng)景,明確的目的和結(jié)果庆捺。 功能角色分析是對(duì)系統(tǒng)宏觀的古今、整體的需求分析,它用簡(jiǎn)短的圖形繪制出了一個(gè)系統(tǒng)的整體輪廓滔以。但僅僅進(jìn)行功能角色分析是遠(yuǎn)遠(yuǎn)不夠的捉腥,我們還需要在它的基礎(chǔ)上做更加詳盡的分析。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末你画,一起剝皮案震驚了整個(gè)濱河市抵碟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撬即,老刑警劉巖立磁,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異剥槐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)宪摧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門粒竖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人几于,你說我怎么就攤上這事蕊苗。” “怎么了沿彭?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵朽砰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我喉刘,道長(zhǎng)瞧柔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任睦裳,我火速辦了婚禮造锅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘廉邑。我一直安慰自己哥蔚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布蛛蒙。 她就那樣靜靜地躺著糙箍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪牵祟。 梳的紋絲不亂的頭發(fā)上深夯,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音课舍,去河邊找鬼塌西。 笑死他挎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的捡需。 我是一名探鬼主播办桨,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼站辉!你這毒婦竟也來了呢撞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤饰剥,失蹤者是張志新(化名)和其女友劉穎殊霞,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汰蓉,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绷蹲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了顾孽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祝钢。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖若厚,靈堂內(nèi)的尸體忽然破棺而出拦英,到底是詐尸還是另有隱情,我是刑警寧澤测秸,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布疤估,位于F島的核電站,受9級(jí)特大地震影響霎冯,放射性物質(zhì)發(fā)生泄漏铃拇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一肃晚、第九天 我趴在偏房一處隱蔽的房頂上張望锚贱。 院中可真熱鬧,春花似錦关串、人聲如沸拧廊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吧碾。三九已至,卻和暖如春墓卦,著一層夾襖步出監(jiān)牢的瞬間倦春,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留睁本,地道東北人尿庐。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像呢堰,于是被迫代替她去往敵國(guó)和親抄瑟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,797評(píng)論 25 707
  • 概要 用例(Use Case)是一種描述系統(tǒng)需求的方法枉疼。運(yùn)用用例這種方法來描述系統(tǒng)需求稱之為用例建模皮假。用例也是UM...
    林海舟閱讀 43,595評(píng)論 0 34
  • 開會(huì)。 很多部門的領(lǐng)導(dǎo)和專業(yè)人士匯聚一堂骂维。主持人就會(huì)議議題逐個(gè)展開惹资,相關(guān)部門逐個(gè)發(fā)表意見。這個(gè)時(shí)候航闺,誰有準(zhǔn)備誰無準(zhǔn)...
    dj青墨閱讀 1,086評(píng)論 0 2
  • 引言: 生命是一條長(zhǎng)河来颤,旅途中汰扭,你會(huì)不斷刷新自己的極限、發(fā)現(xiàn)自己的不足福铅、觸摸到曾經(jīng)無法企及事情,你會(huì)不斷失...
    熱血青年1993閱讀 195評(píng)論 0 0
  • 每天早起都會(huì)想起她项阴,我好像沒有辦法控制住自己的情緒滑黔,我好像一直都在騙自己,這種欺騙也不容易被其他人察覺环揽,我可...
    寕致遠(yuǎn)閱讀 305評(píng)論 2 1