在規(guī)劃一個信息系統(tǒng)時漓糙,常常有很多人一開始就畫原型并且做一些主菜單子菜單的劃分铣缠,這樣的方法是存在很大問題的,對系統(tǒng)邏輯的理解只停留在表面。
沒錯蝗蛙,在設(shè)計系統(tǒng)時最開始確實是要定義好模塊結(jié)構(gòu)的劃分蝇庭,但是劃分的方法不應(yīng)該按照功能模塊而是按照業(yè)務(wù)邏輯進行劃分。信息系統(tǒng)只有兩個作用捡硅,一個是解決問題哮内,另一個是業(yè)務(wù)提升。首先在規(guī)劃系統(tǒng)時要思考這個系統(tǒng)的作用到底是解決了什么問題或者對企業(yè)帶來了怎么樣的提升壮韭。在這個大的環(huán)境下確定了之后北发,需求分析的階段,應(yīng)該按照業(yè)務(wù)的職責區(qū)塊來劃分子系統(tǒng)泰涂。
這張圖應(yīng)該是很普遍而且典型的后臺管理系統(tǒng)鲫竞,但是這樣的系統(tǒng)無論是在開發(fā)還是使用我認為都是達不到出色的。圖中的板塊劃分采用"業(yè)務(wù)名詞+管理"來進行命名逼蒙,實際上也就是以"物"為線索貫穿整個系統(tǒng)。但是在實際操作中物與物之間的傳遞都是交錯在一起的寄疏,例如圖中的項目管理板塊中包含了"合同管理"是牢,在合同管理板塊中又包含了"合同管理"那么究竟是哪個進行管理呢,項目管理中是否又包含權(quán)限的區(qū)分呢陕截,這樣的劃分明顯是有問題的驳棱。我在另一個回答上提到過"窮盡不重復"的劃分方法,其實在這里就可以體現(xiàn)出作用來农曲。
那么正確的后臺劃分子系統(tǒng)的方式應(yīng)該是按照業(yè)務(wù)流程來劃分社搅,以"事"為線索貫穿系統(tǒng)。采用業(yè)務(wù)流程的環(huán)節(jié)進行劃分可以有效的避免重復和混亂的現(xiàn)象乳规,對整個系統(tǒng)的架構(gòu)都是非常清晰明了的形葬。想要以"事"為線索進行梳理,有一個很好的方法就是使用UML中的構(gòu)件圖的來解決暮的。對于產(chǎn)品人員笙以,只需要理解構(gòu)件圖的思想,畫出一個輕量級的框架冻辩。
首先在構(gòu)件圖中兩個最重要的概念構(gòu)件和接口對應(yīng)著事件和流程猖腕,接口與接口之間只存在實現(xiàn)(代表這個流程由這個事件提供的)和使用(代表這個事件要使用這個流程)這兩個關(guān)系。理解了這一概念之后就可以對事與事恨闪,事與流程倘感,流程與流程之間進行連接。
畫構(gòu)件圖咙咽,第一步是識別建模的構(gòu)建集合老玛,也就是對主題域進行劃分。可以按照工作職責范圍(部門)劃分成不同的主題域逻炊,劃分的時候也可以根據(jù)需要進行多級的嵌套互亮,這樣可以更容易理解上下級之間的關(guān)聯(lián)。例如軟件開發(fā)商可以按照開發(fā)人員余素,產(chǎn)品人員豹休,銷售人員職責不同進行第一級區(qū)塊劃分,然后再根據(jù)開發(fā)人員負責的不同環(huán)節(jié)進行第二級部門的劃分桨吊。那么根據(jù)區(qū)塊就可以很容易劃分出"銷售"和"研發(fā)"兩個主題域威根。
在研發(fā)這個主題域內(nèi)主要負責針對軟件研發(fā)進行管理,經(jīng)過設(shè)計视乐,研發(fā)洛搀,測試這幾個階段生產(chǎn)出成型的軟件。那么這塊就可以命名為"研發(fā)管理系統(tǒng)子系統(tǒng)"佑淀。
在銷售這個主題域內(nèi)主要負責對客戶的銷售留美,客戶培訓,售后服務(wù)等伸刃,因此這塊可以命名為"客戶服務(wù)管理子系統(tǒng)"谎砾。
在一般的系統(tǒng)中往往會加入后勤板塊,在這個板塊內(nèi)含有硬件捧颅,財政和人員這些基本模板景图,可以劃分成“硬件服務(wù)管理子系統(tǒng)”,"財政管理子系統(tǒng)"和"人員管理子系統(tǒng)"碉哑。后面兩個子系統(tǒng)按照范圍界定的原則相對獨立挚币,所以在前期設(shè)計中暫不考慮。
第二步需要把功能不同的模塊劃分成構(gòu)件扣典,同時確定構(gòu)件與構(gòu)件之間的接口妆毕,也就是開始繪制構(gòu)件圖。首先每一個主題域就是一個構(gòu)件激捏,這個比較好理解设塔。先分析各個主題域之間的關(guān)系,四個系統(tǒng)兩兩之間有不同的關(guān)系远舅。因為人員管理子系統(tǒng)相對比較獨立闰蛔,所以這塊可以最后考慮。
"研發(fā)管理系統(tǒng)子系統(tǒng)"與"客戶服務(wù)管理子系統(tǒng)":研發(fā)管理需要獲取客戶服務(wù)管理中的訂單詳情图柏、研發(fā)要求序六、客戶資料等;而客戶服務(wù)管理需要獲取研發(fā)管理中的項目進展蚤吹、功能設(shè)置等例诀。
"研發(fā)管理系統(tǒng)子系統(tǒng)"與"硬件服務(wù)管理子系統(tǒng)":研發(fā)管理需要知道數(shù)據(jù)庫和服務(wù)器的情況随抠,后臺資源占用的情況;硬件服務(wù)管理需要獲取研發(fā)團隊的項目進度繁涂,功能規(guī)劃和版本維護的情況拱她。
"客戶服務(wù)管理子系統(tǒng)"與"硬件服務(wù)管理子系統(tǒng)": 硬件服務(wù)管理需要知道客戶的基本信息以便確定投入什么硬件支持;客戶服務(wù)管理系統(tǒng)一般就不需要從后臺服務(wù)系統(tǒng)獲取信息扔罪。
(上圖是一個比較簡單的原型秉沼,實際規(guī)劃還要考慮主題域之間更多關(guān)聯(lián))
最后一步進行主題域范圍的明確,界定每個主題域內(nèi)進行的功能以及相關(guān)的事件矿酵。在一些書籍中也把這個關(guān)系成為上下文關(guān)系唬复,即主題域與功能之間父級與子級的概念。在這個階段要考慮到Customer與Worker之間的關(guān)系全肮。找到系統(tǒng)中所有的客戶敞咧,考慮這些客戶會引起什么事件的發(fā)生,這些事件會引起Worker什么樣的工作辜腺,講這些都考慮進來休建。然后再補充Worker主動發(fā)起的動作,那么一個系統(tǒng)的所有事件就能沒有遺漏地梳理完整了哪自。這里值得注意的是丰包,對于研發(fā)管理子系統(tǒng)而言,其他的客服管理壤巷,財政管理都屬于是客戶關(guān)系。他們對于研發(fā)關(guān)系系統(tǒng)屬于消費者的動作瞧毙。
通過以上三步可以把一個系統(tǒng)大致的框架搭建起來胧华。這樣搭建的好處在于系統(tǒng)的業(yè)務(wù)流程很清晰,無論是對于研發(fā)還是使用者而言都是有好處的宙彪,每個人都能清楚地意識到自己在做什么事情矩动。上述分析方法是徐峰老師提出的SERU需求分析法中關(guān)于主題域確定,也就是系統(tǒng)框架結(jié)構(gòu)確定的第一步释漆,這也是設(shè)計一個系統(tǒng)最根基的地方悲没,然后才是去考慮更細化,更精準的業(yè)務(wù)流程設(shè)計男图。把根基打好再去做子系統(tǒng)內(nèi)部的規(guī)劃就變得比較簡單示姿。對于一個系統(tǒng),在設(shè)計時一定要有“自上而下”的思想逊笆,從最大的環(huán)境去考慮問題栈戳,這樣才不會在后期規(guī)劃中因為突然插入的東西變得混亂。(圖片有部分來自網(wǎng)絡(luò)难裆,侵刪)子檀。
最后
我分享最近幾年的收集的java視頻資料镊掖,希望可以幫助到大家的技能提升