在面向?qū)ο蟮男枨蠓治龇椒ㄖ泻暾琔ML的地位是不容動(dòng)搖的奏路。
在和很多做產(chǎn)品做需求的小伙伴聊過后發(fā)現(xiàn)大家對(duì)UML的了解非常的少,在之前組織的需求分析實(shí)戰(zhàn)中也發(fā)現(xiàn)了這一點(diǎn)举哟。
反而對(duì)程序員GG來說思劳,UML的普及率會(huì)更高一些。
有的人會(huì)說妨猩,我不用UML潜叛,需求分析的也挺好的啊,產(chǎn)品做的也沒什么問題啊壶硅。
如果你正面臨著下面這些問題威兜,我建議你看一下這篇文庐椒,并且學(xué)習(xí)并應(yīng)用UML约谈。
- 我對(duì)自己的產(chǎn)品功能了如指掌,但是卻無法總結(jié)出所有的系統(tǒng)角色特征
- 測(cè)試寫的用例我提不出意見泼橘,但是測(cè)試結(jié)束后我卻經(jīng)常發(fā)現(xiàn)之前沒有想到過的用例
- 在做原型及需求文檔時(shí)炬灭,有時(shí)候會(huì)遺漏某個(gè)功能或者場(chǎng)景
- 與程序猿經(jīng)常無法溝通重归,我覺得自己寫的文檔厦凤、畫的原型已經(jīng)很清晰了较鼓,但是他們就是看不懂
- 我完全不知道產(chǎn)品中的業(yè)務(wù)主流程在執(zhí)行的過程中會(huì)有哪些對(duì)象參與
什么是UML?
統(tǒng)一建模語言(UML拓哺,UnifiedModelingLanguage)是面向?qū)ο筌浖臉?biāo)準(zhǔn)化建模語言士鸥。UML因其簡(jiǎn)單、統(tǒng)一的特點(diǎn)讼积,而且能表達(dá)軟件設(shè)計(jì)中的動(dòng)態(tài)和靜態(tài)信息脚仔,目前已成為可視化建模語言的工業(yè)標(biāo)準(zhǔn)。在軟件無線電系統(tǒng)的開發(fā)過程中们颜,統(tǒng)一建模語言可以在整個(gè)設(shè)計(jì)周期中使用猎醇,幫助設(shè)計(jì)者縮短設(shè)計(jì)時(shí)間,減少改進(jìn)的成本阻问,使軟硬件分割最優(yōu)称近。
簡(jiǎn)而言之就是一種語言煌茬,一種規(guī)范彻桃。
就好像音樂用五線譜邻眷、簡(jiǎn)譜表達(dá)肆饶,數(shù)學(xué)用公式表達(dá)驯镊,需求模型用UML來表達(dá)。
曾經(jīng)有的人希望在需求階段將UML做的很規(guī)范橄镜,并可以由此直接生成代碼冯乘。就像現(xiàn)在的原型可以直接生成頁面代碼一樣洽胶。
現(xiàn)在已經(jīng)有很多工具可以做到這些了,雖然生成的代碼不是那么的讓人滿意裆馒。
但是不排除未來掌握UML和業(yè)務(wù)的人員直接跳過程序員編寫軟件產(chǎn)品。
UML帶給需求分析什么喷好?
以小婧使用UML的經(jīng)驗(yàn)來看翔横,UML會(huì)給需求分析及需求相關(guān)人員提供更清晰梗搅、明確的目標(biāo)禾唁。
我經(jīng)常說,用UML重點(diǎn)是要充分應(yīng)用它面向?qū)ο蟮姆治龇椒ā?br> 也就是在做業(yè)務(wù)分析的時(shí)候些膨,將信息抽象成對(duì)象進(jìn)行分析,可以使得自己避開“干擾”信息订雾,抓住“主線”肢预。
你會(huì)對(duì)你的解決方案更加有信心洼哎,知道哪些地方存在改善的空間烫映,會(huì)給用戶帶來什么價(jià)值。
如果發(fā)生需求變更,你也會(huì)很清晰的識(shí)別出影響點(diǎn)识补。
你設(shè)計(jì)出來的產(chǎn)品和業(yè)務(wù)流程會(huì)更加連貫、合理切油、有邏輯性,模塊及功能之間的耦合關(guān)聯(lián)也非常清晰娩鹉。
就好像你看蜘蛛網(wǎng)仿佛毫無章法,但是仔細(xì)看來卻是一件完美的藝術(shù)品稚伍。
UML適用于哪些階段弯予?
我們從UML的定義也可以看出,UML主要是服務(wù)于設(shè)計(jì)的槐瑞。在需求分析階段熙涤,我們?nèi)绻芎芎玫氖褂肬ML,將會(huì)為代碼設(shè)計(jì)提供很好的支持困檩。
UMLChina在《軟件方法》一書中提出了一個(gè)概念叫核心工作流祠挫。使用核心工作流可實(shí)現(xiàn)“低成本制造好賣的產(chǎn)品”。
1 業(yè)務(wù)建牡垦兀——組織要解決什么問題
做產(chǎn)品需求的人都知道等舔,我們需要去找甲方的痛點(diǎn)也就是問題,如果我們的產(chǎn)品可以很好的解決問題糟趾,那么人家就愿意付錢慌植,我們就能盈利。
而你的產(chǎn)品能帶給用戶什么價(jià)值义郑,這個(gè)價(jià)值到底是否足夠大到吸引用戶來付費(fèi)蝶柿。你可以通過業(yè)務(wù)建模來進(jìn)行分析。要知道引進(jìn)一個(gè)軟件系統(tǒng)非驮,和招聘一名新員工沒有本質(zhì)的區(qū)別交汤。我以前經(jīng)常會(huì)被challenge的問題是:我為什么要買你們的系統(tǒng),我用Excel也管的挺好的劫笙。
業(yè)務(wù)建模階段思考的焦點(diǎn)是:組織內(nèi)系統(tǒng)之間
推薦UML元素:用例圖芙扎、類圖、序列圖
2需求——為了解決組織的問題填大,待開發(fā)系統(tǒng)應(yīng)該提供什么功能和性能
這里強(qiáng)迫我們從“賣”的角度思考哪些是干系人在意的戒洼,哪些不是。
需求階段思考的焦點(diǎn)是:系統(tǒng)邊界
推薦的UML元素:用例圖允华、文本
3分析——為了提供功能圈浇,系統(tǒng)內(nèi)部應(yīng)該有什么樣的核心機(jī)制
在用戶的整個(gè)業(yè)務(wù)流程中,你的產(chǎn)品是在哪個(gè)部分起什么作用的靴寂。大部分的軟件產(chǎn)品的作用就是取代人工磷蜀,實(shí)現(xiàn)自動(dòng)化。以前我們?nèi)ゲ宛^點(diǎn)菜需要服務(wù)員拿個(gè)小單子來寫你點(diǎn)了哪些菜榨汤,或者直接人腦記憶;付款的時(shí)候怎茫,老板要收集小單子或者記錄在小本子上收壕,以便休息的時(shí)候計(jì)算營(yíng)業(yè)額妓灌。但是現(xiàn)在我們?nèi)コ燥垼苯右粋€(gè)IPAD蜜宪,菜單虫埂、點(diǎn)菜、消費(fèi)記錄全部自動(dòng)化圃验。裝在IPAD里的系統(tǒng)是通過分析得到的掉伏。
在分解階段思考的焦點(diǎn)是:系統(tǒng)內(nèi)核心域
推薦的UML元素:類圖、序列圖澳窑、狀態(tài)機(jī)圖
4設(shè)計(jì)——試了提供性能斧散,系統(tǒng)的核心機(jī)制如何選定技術(shù)實(shí)現(xiàn)
主要聚焦:系統(tǒng)內(nèi)各域之間
UML:不畫,代碼即設(shè)計(jì)
從上面幾個(gè)階段我們可以看出摊聋,對(duì)于我們產(chǎn)品需求人員需要掌握的UML其實(shí)只有那么幾種:用例圖鸡捐、序列圖、類圖麻裁、狀態(tài)圖箍镜。
有人會(huì)問,為什么沒有活動(dòng)圖(流程圖)煎源?
我覺得如果你和用戶或者業(yè)務(wù)人員溝通色迂,可以使用活動(dòng)圖、但是如果你是為研發(fā)手销、設(shè)計(jì)服務(wù)歇僧,建議使用序列圖。因?yàn)?strong>序列圖會(huì)強(qiáng)迫你去思考所有的動(dòng)作背后的目的原献。
怎么畫UML馏慨?
關(guān)于各種圖的具體畫法我覺得大家去問度娘會(huì)得到比我這有限篇幅更詳細(xì)的信息。
而針對(duì)用例圖姑隅,我最近看到一種說法写隶,覺得很有意思,在本文中做一個(gè)分享讲仰。
潘加宇老師在《軟件方法》中提到了兩種用例圖:業(yè)務(wù)用例圖和系統(tǒng)用例圖慕趴。
之前有小伙伴說,測(cè)試和開發(fā)看不懂他畫的用例圖鄙陡,很苦惱冕房。我仔細(xì)看了下,確實(shí)是有些表述不清趁矾。因?yàn)樗褬I(yè)務(wù)用例圖和系統(tǒng)用例圖弄在一起了耙册。
業(yè)務(wù)用例圖
業(yè)務(wù)用例圖主要是用在業(yè)務(wù)建模的階段,目的是從甲方的角度來定位系統(tǒng)應(yīng)該提供的價(jià)值毫捣。
所以業(yè)務(wù)用例圖研究的對(duì)象是甲方組織详拙。甲方的組織里面包括哪些角色帝际,哪些軟件系統(tǒng),哪些部門饶辙?而我們的系統(tǒng)將承擔(dān)這些對(duì)象中的哪些對(duì)象的大部分職責(zé)蹲诀?
另外一方面,業(yè)務(wù)用例圖的Actor執(zhí)行者是業(yè)務(wù)執(zhí)行者弃揽,即組織外與組織交互的人群或組織脯爪。
比如你的甲方是某商業(yè)銀行,其Actor是儲(chǔ)戶矿微、企業(yè)用戶痕慢、人民銀行。研究的是他們將會(huì)與商業(yè)銀行產(chǎn)品什么用例冷冗。
系統(tǒng)用例圖
系統(tǒng)用例圖主要使用在需求階段守屉,我們其實(shí)最常用的是系統(tǒng)用例圖。系統(tǒng)用例圖的主要研究對(duì)象是系統(tǒng)蒿辙,也就是我們待開發(fā)的軟件系統(tǒng)拇泛。
系統(tǒng)用例圖的執(zhí)行者是在系統(tǒng)外與系統(tǒng)發(fā)生功能性交互的其他系統(tǒng)。所以重點(diǎn)在于這個(gè)執(zhí)行者與系統(tǒng)發(fā)生功能性交互思灌。
比如前些日子小婧的身份證過期了去辦身份證(我又暴露年齡了)俺叭。身份證辦理系統(tǒng)的執(zhí)行者包括:辦證人員、數(shù)碼相機(jī)泰偿、指紋采集儀熄守。這里要注意的是我并不是系統(tǒng)的執(zhí)行者,至少在這個(gè)非自助的系統(tǒng)中耗跛,我不是裕照。
寫在最后
在實(shí)際的產(chǎn)品需求分析過程中使用UML,不論對(duì)你的產(chǎn)品還是你自己而言都會(huì)收益頗多调塌。
但是和所有的方法一樣晋南,在學(xué)習(xí)和實(shí)踐一種新的方法時(shí)會(huì)面臨很多的挑戰(zhàn),也會(huì)有很多的問題羔砾。
單純就從UML的角度來說负间,我覺得有這樣幾個(gè)方法可以來學(xué)習(xí)實(shí)踐:
- 對(duì)自己產(chǎn)品進(jìn)行梳理,嘗試用UML的用例圖姜凄、序列圖(時(shí)序圖)繪制現(xiàn)有系統(tǒng)業(yè)務(wù)政溃,并與開發(fā)人員討論。通常來說态秧,開發(fā)對(duì)UML的了解會(huì)更深入董虱,這可能是和現(xiàn)在常見的開發(fā)語言,比如C系列申鱼、Java等也是面向?qū)ο蟮恼Z言有關(guān)愤诱。
- 度娘UML的繪制方法〔厝担現(xiàn)在很多文章和博客都介紹的很詳細(xì)。
- 通過閱讀一些比較經(jīng)典的UML書籍转锈。
- 歡迎和小婧進(jìn)行溝通交流。
小婧是一名行走在產(chǎn)品路上的資深業(yè)務(wù)分析師(BA)楚殿,如果想與我同行撮慨,就請(qǐng)關(guān)注我吧!