實驗室在星期三,舉行了一場從早到晚的會議。
原本項老師是希望讓所有的實驗室成員,各自報告其進度與展望。可是老師一開口談 THDL,就花了一個半小時。接下來學妹和我說明彼此對 THDL 的一些想法,又花了差不多兩小時。
我的投影片內容應該不算多。比較起爭議的是在於,我覺得「系統整合」是一項吃力又不討好的工作(學術價值低、必須遷就現實環境的限制、還必須顧及上下游的支援),因此需要採用「軟體工程」的觀念與做法。
然而,項老師還是從「理論」的角度去看系統 -- 他似乎以為,只要有好的理論,系統就有好的基礎,於是「自然」就能夠有好的實作。殊不知,對於一個頗具複雜性的系統而言,這個「自然」一點也不自然。若希望 THDL 在長久的研究發展後有一套不錯的實用系統,就應該特別的關注系統開發的一些問題;否則弄出來的東西,必然無法應付實際面的各類複雜問題、必然是會出狀況(尤其是在系統維護 -- 包含系統升級與擴充 -- 方面)。
雖然自己對於軟體工程,懂的也實在不多,但最近已能 appreciate 其認知的觀點與許多對應的做法(我還是會對其中許多「假科學」的作法持保留的態度,但這些並不妨礙軟體工程的重要性)。軟體工程並不能給你一個「最好的標準答案」,但是它會告訴你一些軟體的特質、以及開發軟體所不能忽略的事情,而我們也必須從中選擇、嘗試、尋找最符合自己(團對)的開發方式。
我猜想,一個人能夠開發出一套好軟體,或許也是因為他自己就已經「有自己的一套軟體工程思維」,有自己對待寫程式、模組化、除錯、乃至於後續維護的看法與做法。但是,當研究的時程拉長、開發的人數增加,在流動的人員之間,就應該有較為一致的軟體工程角度,才能順利地進行系統開發與維護。
沒有能夠說服項老師,是預料中事。然而,沒有能夠讓他更加認同「系統整合」的重要性,則多少表示自己的報告「還是沒有能夠切入要害」。不過,我還是覺得,只要有努力嘗試,就會有希望。
3 則留言:
.....好的理論.....好的基礎.....好的實作.....
一個可能的麻煩是這些"好的"不見得是一樣的. 拿系統來談可能太複雜, 先以簡單一些的來看, 例如判斷一個演算法好不好, 判斷一個design pattern 好不好, 和判斷一個UI design好不好, 可能就已經有不小的差別. 而光是演算法這個層級, 可能又有 "非常優美 (好的?)的演算法" 但是卻難以實作(資源限制), 或是難以除錯, 或是難以維護 (後繼者不見得看得懂, 想改個東西都無從下手).
而以上這些"好的", 還未必包含對於使用者需求有"好的"掌握. 問題的本質與需求的樣貌, 經常處於沒有太多交集的狀態. 如果目的主要在於交換, 那麼對於所謂"好的" 的判斷, 又會有更多不同的看法.
另外還有很多東西, 根本就沒有"好的"理論, 可是大家還是拼命做 (IR算不算?) 一些搜尋引擎的"實作"也已經很好(與理論相距不遠), 但是搜出來的結果也未盡滿意.
軟工感覺上比較像是"方法論", 並非在陳述"真理". 所以若把項老大原本比較接近 If A then B的句型換成是: 我們可以在許多成功的實作案例中看到好的理論基礎是其共通的要素 .... 也許再轉換個幾次, 就可以變成軟工中的某句話.
至於一堆"好的"混到一點點"壞的"會變什麼? 有可能是一粒老鼠屎壞了一鍋粥.
理論和現實的差異,有時要說有多大,就有多大...
什麼是「好的理論」就已經無法定義與量化,因此也無法將「好的理論或基礎」很自然地延伸到「好的設計與實作」。
頗有趣的一點是,除了理論基礎之外,項老師似乎也很在意「方法論」。不過,他的「方法論」到底是什麼意涵,我卻也只是模模糊糊地說不清楚。
回到現實。我想,重點或許應該是:在研究方面,仍然讓大家有足夠發揮想像的空間;而在實際方面,則必須了解現實的限制,慎選設計、實作、以及團隊溝通合作的方式吧。
我覺得項老師是想要先有一個抽象架構去表達歷史資訊, 或許像hl7 v3裡的rim那麼樣的東西, 可是蜥蜴想先定義歷史學家到底是看到哪些東西. 之前在un/cefact時, 他們引用ebxml的方法論想建立國際電子商務的需求, 可是各工作組卻不見得能弄清楚它的core component和實際上訊息的關係.
可能真的像hl7先歷經由下往上的過程, 再重新規劃一個抽象架構會好一些.
張貼留言