星期五, 1月 20, 2006

prototype 與 pre-β 的差異

這幾天頗為忙碌,但卻總覺得在實質上沒有取得什麼進展。

上週五實驗室 meeting。項老師說,希望以我目前的 prototype 為基礎,弄個「系統」讓歷史系的一些人試用看看。聽到這樣的「需求」,我的臉一下子就綠了。哎,prototype 與 pre-β 差異是「很大」的耶!

對我而言,prototype 的幾項主要功能是:提供團隊成員研究討論的基底、素材、與系統概貌,並在原型開發中,辨識出系統開發前期可能產生的風險。pre-β 版本,目的則在於提供真實的使用者試用,取得良好的回饋,並提供對正式系統的建議。要給他人試用,需要考慮相當多不同的層面。例如,安全性的控管,要做到什麼程度?是否要建立個人的 profiles?連線是否採取 session-oriented 的機制?系統可以提供多少人同時上線?還有,資料的品質,必須處理到什麼地步?

因而,這幾天幾乎又都是在重複做資料處理、資料轉換的工作。要給真實的使用者試用,資料就必須有相當的品質,不能含有「難以忍受」的錯誤。之前不是花了很多錢,建立了 metadata 來詮釋文件嗎?應用這些人工處理過的 metadata,應該比自動擷取的方法,有較好的資訊的品質吧。

但事情沒有這麼簡單。Metadata 既然是人工處理,就會有人為的疏失。舉個例子好了,「光緒十一年」竟然可以對應到西元 1866、1885、1886 年(1866 年應該是錯誤的)?還有,依日期欄位的規定,資料應該至少有「年份」的資訊,但為什麼可以看到「七日」、「五月二十三日」、甚至「署福建巡撫閩浙總督崔應階」這樣的資料呢?

在資訊處理的流程中,上游的資訊一旦品質不夠好,下游的處理就會事倍而功半。這時,就彰顯出傳統的 Waterfall(瀑布式)開發流程的缺點了。在瀑布式開發流程裡,每個開發階段都是明確的,上游必須經過嚴格的品質控管,才能將資料(或程式)轉給下一步的開發者。因此,下游不應該收到品質不夠好的東西。但實務上,我們也都知道,要保證上游資訊的品質,成本非常高;下游的處理者,就是會收到品質不夠好的半成品。

那麼,我們該怎麼辦呢?把責任推給撰寫 metadata 的人員,責怪她們不夠用心,並且等到她們將資料都修改好,才進行下一個開發步驟;還是把不夠好的系統丟給使用者,讓使用者自己去過濾篩選資料,並說明「自己只是中介者、只負責程式開發」呢?

因為兩邊都無法接受,我就只能在中間階段的處理中,盡量加上錯誤篩檢的機制。這樣一來,當然就會消耗許多寶貴的時間了。

我想,在方向上,項老師是對的:系統終究必須讓 real users 測試。然而,沒有經過良好的規劃,以為 prototype 與 pre-β「感覺起來差不多」,其實是很大的失誤。系統開發人員,還真是「苦命」啊!

而這下子,自己事情也變多了。至少,已經超過我原先的預期了(我原本只想做個 prototype,之後就由其他人接手)。我必須花時間思考一下,自己想將這個 pre-β 版本定位在何處。即使這個版本的使用說明是由別人負責的,即使這個版本只需做非常陽春的安全控管、連線控制、profile 管理、使用者介面調整、效能調校、或者系統品管與程式除錯,要考慮的事情都比單純的 prototype 複雜許多。

9 則留言:

mph 提到...

我只有一句話:你這苦命的蜥蜴。我老婆則是說:可憐的孩子。

被掛掉的阿尼 提到...

看來你們metadata的輸入程式只是把欄位拉一拉, 而沒有堅持每個欄位要儘可能的verify(程式)的要求, 以為輸入後會verify(人工), 而包case的人又發現你們拿到資料就ok了, 也沒有再verify, 他們就懶得verify了
btw, 項老大可能沒想那麼多吧, 他搞不好只是想要歷史系的人進到prototype的設計裡.

被掛掉的阿尼 提到...
網誌管理員已經移除這則留言。
tu 提到...

當頭頭的人,或許就真的「只需要」說說意見、提供資源(不知道夠不夠就是了)吧?

我想,手頭的 metadata,應該是沒有經過多少品管的驗證。或許,是因為當初並沒有慘痛的「資料處理」經驗或教訓吧。

只是,下游的人一旦使用了,上下游關聯鏈牽扯到的人就會增加。現在更動 metadata 結構設計、或者相關檢驗流程,或許為時未晚;但真要弄出個「好用的系統」,有專案經驗的人,多半都只能搖頭苦笑吧~

htliao 提到...

雖然我的技術沒你們好,但是這種輸入資料的經驗,我應該是比你們多的多...畢竟,這13,4年來,我做的就是這種永無止境防止USER敲錯資料的工作....(嘆)
永遠把USER當成最粗心的,所有你認為不可能發生的錯誤都會發生,空白檢查,資料範圍檢查,日期檢查,欄位交叉檢查,想的到的都要做啦.不然,像你,現在面臨麻煩的後處理,而我,一個不小心跑進來的資料就會讓我半夜被叫起來處理問題....
不過你的問題好像又不太一樣,你們是用類似OCR的東西去把資料讀進來再分析分類到欄位裡是嗎?而且還是外包的,這就扯到廠商的良心和驗收的問題囉.我上次見識過一個廠商,他只照他收的規格去轉資料,而且絕不去質疑規格上衝突的地方,(是的,那主辦人規格開的也有問題,不過連我也不敢說我開的規格絕不會錯)轉完是根本連瞄一眼都不瞄的,連檢查一下自己有沒有弄錯,比如該放日期的放到數字以致日期變的很好笑,或者資料範圍有沒有OVER,例如,要轉,1,2,3.結果出現9,他都不看的,他的理由也很簡單,"因為我不懂業務",我很想跟他說,這根本不是業務,是你的程式品質,不過反正我也不是該案的主辦人,廠商也不理我.主辦人也沒有意見(這又扯到下一個問題了,主辦人沒有業務能力),最後,這案子FAIL了,廠商當然平安無事的拿到錢, 聽說還有下一階段,...我...等著瞧.不要叫我扛,我就沒意見.
在驗證資料的時候,除了邏輯上的驗證,有時候,熟悉的人會很容易看到"怪怪"資料,所以,能有一個熟悉業務的人來看資料,絕對大有助益.

lcat 提到...

門外看事都會把事情看得太簡單 :P

tu 提到...

廖說的「所有你認為不可能發生的事,都會發生」,可是集十來年經驗的金科玉律呢。

記得我在 Maryland 時,暑假曾經參與過一個建教合作的案子(目的就是寫寫程式賺些外快啦)。當初的 PM 也是信誓旦旦地保證,輸入絕對會用 Tab 分隔每一個欄位。

但是啊,測試的資料的確是用 Tab 分隔了,但「想當然爾」地,當與實際使用者、實際系統銜接時,狀況就完全不同了... 據說,當初的 PM,為此被 K 了數個月呢(我那時已經回國了)。

被掛掉的阿尼 提到...

呵, 在cmm裡, 除了要有流程外, 還有流程的每一步驟都要有專人velidata & verify呢 (一個是確認跟spec一不一樣, 一個是確認跟原先想的一不一樣)

tu 提到...

阿尼說的,應該就是 validation 和 verification 吧?