建設工程教育網(wǎng) > 建筑文苑 > 工程管理 > 正文
2010-07-21 13:37 來(lái)源于網(wǎng)絡(luò ) 【大 中 小】【打印】【我要糾錯】
管理信息系統實(shí)施成功三大因素依次為:人、數據、技術(shù),也許有些人不完全認同,但是數據的重要性是大家不可否認的。
1.數據管理的組織機構的建立為了更好的進(jìn)行軟件系統的數據管理,應該從組織機構角度來(lái)做考慮,建立單獨的組織機構來(lái)管理數據相關(guān)工作,或者在實(shí)施小組里面專(zhuān)人總負責。
軟件開(kāi)發(fā)商和客戶(hù)核心的業(yè)務(wù)骨干一起制定數據規范,客戶(hù)提供符合規范的業(yè)務(wù)數據,只有符合規范的數據才能進(jìn)入系統。
2.數據管理的原則強調客戶(hù)和軟件開(kāi)發(fā)商的2方項目組成員做到“不能有‘我以為’的思想”,一旦有如此思想,很容易陷入閉門(mén)造車(chē),項目需求很容易走樣,因為客戶(hù)à所有的客戶(hù),也是在‘我以為’。項目組要想做到控制住需求,一定要拋開(kāi)自己的設想。所以任何一個(gè)項目組成員,第一句話(huà)就告訴他,不要有“我以為”的想法。把‘我以為’變成‘客戶(hù)認為’(最好是客戶(hù)和軟件提供商一致認為),這才是最重要的。
3.數據入口的單一性同一數據必須一次、一處進(jìn)入系統,保證其準確性,及時(shí)性和完整性和入口的單一性。管理控制一體化是系統的目的,如果一個(gè)數據在多個(gè)地方存儲,很容易造成數據的不一致。
4.數據副本管理/數據版本管理雖然上面提到了數據存儲的單一性,但是有些時(shí)候也需要存儲副本數據。存儲這些副本數據的目的就是為了在使用數據副本的地方不受到數據源的變化的影響。
例如:數據1在業(yè)務(wù)A進(jìn)入系統,業(yè)務(wù)B使用到了數據1,但是為了避免在業(yè)務(wù)B使用了數據1后,業(yè)務(wù)A又把數據1的修改影響到業(yè)務(wù)B,那就需要業(yè)務(wù)B在使用數據1時(shí)候保存副本。
比如:城市拆遷資源計劃系統的拆遷合同在使用房源業(yè)務(wù)錄入的房源房屋面積信息時(shí),就使用了副本機制,在合同使用房屋面積時(shí)候,把面積信息存儲下來(lái),當合同構筑完成時(shí)候,如果相應的房屋面積信息發(fā)生了變動(dòng),就用另外的業(yè)務(wù)來(lái)處理這個(gè)數據變動(dòng)的相應處理(比如,使用房源的差價(jià)款合同來(lái)處理)。
有朋友建議用配置管理系統,把數據版本機制引入了業(yè)務(wù)數據里面。做過(guò)J2EE的項目,都知道很多地方可以通過(guò)配置來(lái)進(jìn)行管理。其實(shí)這個(gè)思想延伸到數據庫模型的設計時(shí)候,就體現出來(lái)了業(yè)務(wù)數據的配置管理的思想的使用。
我們其實(shí)也有是用這個(gè)思想,但是主要體現在在基于數據表級別上用數據級別+歷史編號來(lái)識別有效的數據。1個(gè)很簡(jiǎn)單的例子:
一個(gè)員工的姓名原來(lái)是aa,后來(lái)改委bb,可以通過(guò)歷史編號找到原來(lái)的信息是bb通過(guò)數據級別識別現在的有效數據是aa,我們把數據版本控制更多的是采用‘數據級別’加‘歷史編號’另外還加上了一個(gè)‘生效日期’,‘截止日期’這2個(gè)時(shí)間戳另外,實(shí)際軟件系統的歷史業(yè)務(wù)數據進(jìn)入系統就比較煩,可能需要使用版本管理機制來(lái)處理才行得通。
5.建立數據等級制度軟件項目實(shí)施中業(yè)務(wù)規則經(jīng)常會(huì )陷入一個(gè)兩難的境地,如果業(yè)務(wù)規則加強,很多數據數據達不到規范化的要求,無(wú)法入機;如果放寬控制,很多垃圾數據就進(jìn)入了,大家都明白一個(gè)道理,對于軟件系統,垃圾數據進(jìn)去,肯定是垃圾數據出來(lái),統計查詢(xún)結果肯定是這樣的。
可以建立數據的等級制度,制定數據進(jìn)入系統的最低要求。達到最低要求才能進(jìn)入系統,比如:
業(yè)務(wù)A,需要數據a1,數據a2,,數據a3,數據4.我們可以制定進(jìn)入系統的關(guān)于業(yè)務(wù)A的條件是必須要有數據a1,a2才可以進(jìn)入系統(也就是最低要求),如果提供的業(yè)務(wù)數據同時(shí)有數據a1,數據a2,,數據a3,那就是更高一級的數據(第二級數據),如果業(yè)務(wù)數據在滿(mǎn)足第二級數據的基礎上,提供了數據4,那就是第三級數據。
如果用過(guò)J2EE平臺的同行理解起來(lái)就比較容易,這實(shí)際上就是JMS基于主題的消息管理思想用于軟件系統一個(gè)具體例子而已,這里不過(guò)是強調的是用于管理數據的信任等級而已。
其實(shí)很多軟件項目開(kāi)始制定的的數據規范,一般到后來(lái)都執行不下去,主要是太理想化了,也許只有到系統真正用起來(lái)了,系統數據的信任等級才能上去。所以我覺(jué)得應該在系統開(kāi)始時(shí)候就把數據分等級,不同的等級,業(yè)務(wù)給與適當不同的處理,這樣也便于后期的業(yè)務(wù)進(jìn)行查詢(xún)統計分析或者數據挖掘。
這種思想實(shí)際上就是將數據可以信任的程度進(jìn)行分類(lèi);而一般的軟件系統是把數據定義為兩類(lèi),可以進(jìn)入系統,不可以進(jìn)入系統;我在這里設想的是,從數據可以信任的角度出發(fā),分成多種類(lèi)別,使用了一個(gè)小數來(lái)描述信任程度,而不是一個(gè)二值邏輯變量來(lái)描述;這樣從建立軟件系統整體模型的時(shí)候,把數據信任管理納入考慮之內,在進(jìn)一步作業(yè)務(wù)分析,決策支持或者數據挖掘時(shí)候是比較有好處的;當然進(jìn)一步延伸可能就需要從OLTP/OLAP混合建模來(lái)考慮,不過(guò)真要到那個(gè)高度,可能項目范圍就擴大了很多,具體怎樣操作,還要看項目具體情形。
當然,在軟件項目實(shí)際操作的時(shí)候,可能還會(huì )遇到另外一個(gè)問(wèn)題,很可能用戶(hù)會(huì )亂用這個(gè)數據信任程度的概念,我個(gè)人的建議是在項目實(shí)施中如果可能的話(huà),優(yōu)先進(jìn)入信任等級高的數據,然后才是信任程度低的數據;當然也可以從人員來(lái)角度作為切入點(diǎn),信任等級越低的數據,進(jìn)入系統就需要的業(yè)務(wù)更熟悉的人員來(lái)操作錄入,而且經(jīng)過(guò)的業(yè)務(wù)處理步驟就越多。一句話(huà),數據信任程度越低,就應該受到的審查/檢察越多。
6.數據來(lái)源管理在現實(shí)中稍微規模大一點(diǎn)的軟件系統涉及到的組織機構都是比較大的,有很多還可能是松散的組織管理模式。在這類(lèi)組織機構中,同樣的業(yè)務(wù)數據可能很多部門(mén)都會(huì )是數據錄入點(diǎn)和數據分析點(diǎn),為此可以從數據采集/來(lái)源角度來(lái)描述數據本身。
從當前項目利益來(lái)說(shuō),數據來(lái)源管理方便數據查詢(xún)分類(lèi),長(cháng)期來(lái)說(shuō)可以建立起數據信任等級。
對于數據來(lái)源的識別,一般需要有特定信息來(lái)記錄數據的來(lái)源,特別是一些大型企業(yè)當然分支機構較多的公司企業(yè)政府,也應該這樣來(lái)管理。
事實(shí)上,數據來(lái)源管理是數據信任管理的進(jìn)一步延伸,是數據信任管理的前置條件。一個(gè)數據,可以是來(lái)自于A(yíng)部門(mén)的也可能是來(lái)自于B部門(mén)的。為了方便統計查詢(xún)和數據信任管理的加強,應該記錄下數據的來(lái)源地。
具體操方式可以有以下幾種:
1)數據錄入人員的工作人員編號,知道了數據錄入人員的編號,就知道數據的來(lái)源地。
當然,實(shí)際工作種存在人員調動(dòng),替操作(1個(gè)人用另外一個(gè)人的身份進(jìn)入系統數錄入),這些都有可能需要考慮到,否則可能造成數據來(lái)源管理失效。
2)另外一種方式就是直接記錄數據錄入的部門(mén)編號。
這種方式弊端就是不能記錄下數據的具體操作人員。
其它說(shuō)明:如果系統中引入了工作流產(chǎn)品,數據來(lái)源這部分工作可以由工作流來(lái)?yè)。具體例子:在現實(shí)的軟件系統中可能存在一個(gè)主數據庫/數據中心,若干分數據庫/數據中心,系統在每過(guò)一定時(shí)間進(jìn)行數據上傳/下載,為了進(jìn)行數據合并和控制數據的修改,應該每個(gè)分數據中心只能處理修改自己的數據,可以查詢(xún)總數據中心/其他分數據中心的數據。如果沒(méi)有引入數據來(lái)源管理(數據屬地管理)和數據版本的控制機制,不知道系統在作數據中心合并會(huì )怎樣子?
7.數據項的分類(lèi)編碼數據項的分類(lèi)編碼,實(shí)際上是數據項來(lái)源管理的一個(gè)具體延伸。數據項編碼的目的就是更快更好的識別數據代表的業(yè)務(wù)意思。一個(gè)典型的例子就是ERP中的BOM表(基本物料清單)。
數據項的分類(lèi)編碼,不只是在系統模型建立上有指導意義,在進(jìn)入系統的業(yè)務(wù)數據的規范化同樣有指導意義。
數據項的業(yè)務(wù)編碼和系統編碼分離。業(yè)務(wù)編碼很多時(shí)候只是為了識別業(yè)務(wù)數據的需要,很難保證業(yè)務(wù)數據的唯一性要求。而且業(yè)務(wù)編碼可能會(huì )發(fā)生變動(dòng),有些單位的總體規劃從調研到討論制訂、到項目審批通過(guò),再到最終實(shí)施,常常幾年過(guò)去了,需求發(fā)生變化,這種編碼規則不發(fā)生變動(dòng)幾乎不可能。2000年我參與的一個(gè)企業(yè)軟件系統,就一個(gè)產(chǎn)品編碼規則2個(gè)月就發(fā)生了5次變動(dòng)。從更長(cháng)的時(shí)間范圍內來(lái)說(shuō),應該考慮數據產(chǎn)生時(shí)期問(wèn)題,不同時(shí)間階段產(chǎn)生的業(yè)務(wù)數據,使用的業(yè)務(wù)規則不一樣,數據編碼這個(gè)層次很多時(shí)候很難識別數據當時(shí)的業(yè)務(wù)環(huán)境。
以一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明:
業(yè)務(wù)數據表的primarykey系統應該是系統定義的,而數據項的業(yè)務(wù)編碼只能作為索引或者備用鍵使用,這樣就減少了數據業(yè)務(wù)編碼規則的變動(dòng)對系統影響減少到更小的程度。
8.算法的版本化本來(lái)我打算在前面的基礎上,再談一下業(yè)務(wù)流程的管理設置問(wèn)題,不過(guò),現在工作流思想深入人心,我也就跳過(guò)了。我打算從數據的核心業(yè)務(wù)處理,算法處理角度來(lái)闡述。
其實(shí)在現實(shí)中的軟件項目中,大家提到的較多的BPR,工作流這些東西,但是很少提到算法這個(gè)單詞。當然,不可否認,很多軟件項目,特別是電子政務(wù)/OA的業(yè)務(wù)主要是體現在流程/文件上,算法這部分比較簡(jiǎn)單(當然,我這樣說(shuō),有人可能不認可,暫且就不爭論它了),就沒(méi)有必要去強調算法的重要性了。
為了避免垃圾數據進(jìn)入系統,垃圾數據出來(lái),有必要對數據進(jìn)行分類(lèi)管理。正如前面提到的那樣,對于進(jìn)入系統的數據,進(jìn)行信任等級劃分,數據來(lái)源的分類(lèi);但是對于系統出口,為了避免出現垃圾數據,需要在數據處理階段,也要進(jìn)行分類(lèi)處理,這里就引入了算法的版本化,來(lái)適應不同的數據/業(yè)務(wù)需要。
在實(shí)際項目中,可能不同信任等級的數據,采用不同的算法去處理數據,這樣才使得數據的處理更有針對性,更符合實(shí)際需要。
從需求變更的角度出發(fā),軟件開(kāi)發(fā)商可以先實(shí)現一些數據信任程度低的算法,然后再根據項目實(shí)際情況,決定是否實(shí)現更高一級數據等級的算法。在現實(shí)軟件項目,數據信任等級低的采用的算法也會(huì )簡(jiǎn)單一些,由于需求變更,增加了新的數據信任等級更高的數據,這時(shí)候可以考慮暫時(shí)采用低等級的算法進(jìn)行處理,然后再結合人工干預,達到數據處理的要求。大家都明白一點(diǎn),算法復雜,測試的難度就大,但是使用這些更高等級的算法的幾率是很少的,處于成本的原因可以把這些算法的實(shí)現滯后。
當然我這樣說(shuō),并不是意味著(zhù)放棄高等級的算法,一些根據項目實(shí)際情形需要來(lái)操作。
數據根據信任程度分成等級,呵呵,這就是所謂工廠(chǎng)方法模式嘛,算法也分成等級結構,這就是所謂的模板方法模式。
數據在處理后,應該記錄下被使用的算法版本,這樣才便于以后統計查詢(xún)分析或者數據挖掘之類(lèi)工作的開(kāi)展。
例如:在一個(gè)商品交易中,一個(gè)商品可能被購買(mǎi)的價(jià)格是正常價(jià)格,節假日優(yōu)惠價(jià),會(huì )員優(yōu)惠價(jià),在交易流水賬中,應該記錄下交易時(shí)候是采用的那個(gè)價(jià)格類(lèi)型,原始價(jià)格多少,實(shí)際購買(mǎi)價(jià)格多少。記錄下原始價(jià)格,是因為,商品的原始價(jià)格本身可能是變化的。
再以拆遷資源計劃系統為例,房屋補償的價(jià)格價(jià)格可能是來(lái)自于管理參數,也可能是來(lái)自于申請,實(shí)際到底是來(lái)自于哪個(gè),算法應該記錄下來(lái)。
9.業(yè)務(wù)規則使用的版本化前面已經(jīng)提到了數據錄入的版本化,還有算法的版本化,也就是計算結果的版本化。但是還沒(méi)有談到一點(diǎn),到底啥時(shí)間該采用哪個(gè)版本算法。
在J2EE項目中,一般是采用配置文件的方式來(lái)控制版本。從配置管理角度的來(lái)說(shuō),一切都根據配置文件來(lái)決定使用哪個(gè)版本的數據錄入的分級(數據信任程度分級),然后根據配置文件決定數據處理使用的算法版本。
其實(shí)在J2EE項目中,可以采用類(lèi)似apachecommons-validator這樣的包,來(lái)進(jìn)行數據錄入的信任等級建立。
前面都已經(jīng)提到了從工廠(chǎng)方法模式的角度來(lái)建立數據信任等級制度,但是并沒(méi)有解決到底啥時(shí)間采用哪個(gè)方法處理數據。也許有人建議,采用工廠(chǎng)方法模式的思想,把數據當成產(chǎn)品,把算法當成工廠(chǎng),來(lái)處理(注意:不是制造)數據。這個(gè)想法也許能夠滿(mǎn)足一些系統的需要,但是更多時(shí)候是失效。
為此,我覺(jué)得有必要把算法的分配使用當成為一個(gè)業(yè)務(wù)管理策略來(lái)管理,通過(guò)單獨的業(yè)務(wù)模塊去設置業(yè)務(wù)的算法管理策略,可以把這些策略保存為配置文件或者直接保存到數據表;在J2EE項目中,常用的方式使用XML的格式保存為配置文件,但是如果這個(gè)策略比較復雜的時(shí)候建議還是保存到數據表。
1、凡本網(wǎng)注明“來(lái)源:建設工程教育網(wǎng)”的所有作品,版權均屬建設工程教育網(wǎng)所有,未經(jīng)本網(wǎng)授權不得轉載、鏈接、轉貼或以其他方式使用;已經(jīng)本網(wǎng)授權的,應在授權范圍內使用,且必須注明“來(lái)源:建設工程教育網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其法律責任。
2、本網(wǎng)部分資料為網(wǎng)上搜集轉載,均盡力標明作者和出處。對于本網(wǎng)刊載作品涉及版權等問(wèn)題的,請作者與本網(wǎng)站聯(lián)系,本網(wǎng)站核實(shí)確認后會(huì )盡快予以處理。
本網(wǎng)轉載之作品,并不意味著(zhù)認同該作品的觀(guān)點(diǎn)或真實(shí)性。如其他媒體、網(wǎng)站或個(gè)人轉載使用,請與著(zhù)作權人聯(lián)系,并自負法律責任。
3、本網(wǎng)站歡迎積極投稿。