2007年5月30日 星期三

A01 軟體是一項工程,計算機是一門科學

有許多人在收集好客戶需求後,就文思泉湧地在很短時間內寫出符合所有功能的程式。直接把想法落實為程式碼的方式,具有最快的開發速度;邊測試邊修正的特性,也可以保證系統有相當的穩定度。但,這是理想的方法嗎?

在教育部的網路國語字典裡,工程的解釋為“有一定計畫的工作進程”,科學的解釋是“以一定對象為研究範圍,依據實驗與邏輯推理,求得統一、確實的客觀規律和真理”。很明顯地,前面的說法並不符合這樣的定義。

直接開發的人之所以會這麼做,主要是因為快速;反正程式的修改又不具任何代價,想怎麼改就怎麼改,想怎麼搬就怎麼搬。這種想法拿來套用在興建蘇花高的話應是這樣:先建下去再說,功能達到優先嘛!建到一半發現地基鬆軟時再補強或繞道?對生態的影響也等建好再來觀察?這很明顯不是理想的方法呀。

這是我不偏好XP方法的原因,如果所有功能都邊寫邊改,在較大的系統裡常會發生前後不一致的現象。曾經有個API定義是應入null的值時去刪除集合中的鍵值,但直接開發的同事在使用時傳入空字串,接手的我除錯了兩個多小時才發現是這裡錯。方法無限制地抽出與合併,沒經過詳細評估又未留下詳細註解,到最後會連設計者都不知道他曾經做過了什麼。

我看的書很少,但是上過Sun的OO-226課程後,發現OOAD的思維與人生道理有很多相互對應的地方,同時慢慢明白設計方法與軟體工程的對應關係。我的理論基礎不深,多年以來也都是以實作派的方式做事,不過在這兩年的經驗裡,我卻發現把理論對應到實作的方式。

以OOAD為起點,慢慢地推廣視野到軟體工程,同時領略到不少人生的常理,也順便瞭解到處理事情的原則。這樣的收穫怎不令人欣喜?

沒有留言:

張貼留言