論壇文章
【特別企劃】邁向品質卓越化的關鍵平台
不管你是開發人員或是使用者,你一定聽過以下對話:
『在我機器上是好的,只有你的機器不能跑嗎?印象中,這個功能以前跑出來就是這個結果哦。昨天還好好的,那支功能很久沒有人去動了。這問題我之前就改好了,你的版本是對的嗎?』

今年1月Facebook出現約50分鐘大規模當機事件,網路上有不少陰謀論,甚至有駭客宣稱是他們所為。後來開發團隊證實原本為了修復自動化設定驗證系統的錯誤,卻反而造成系統更嚴重錯誤,使系統進入無窮迴圈,最後不得不將系統下線緊急修復。即使是Facebook進行程式修改時,仍難避免遭遇「改了一個Bug卻冒出更多Bug」的問題。難怪資深開發人員常對新進人員耳提面命:「系統品質就像古董花瓶一樣一碰就碎, 程式能不動就不要動。」

但我們處在持續變動的環境,需求變更、資料累積、換使用者、修法、作業環境升級等,即使系統已進入維護階段,也須配合環境變化進行優化或升級,換句話說,系統從一直處在非穩定狀態。既然變動是不可避免,那麼我們就該面對改變,擁抱改變。

衝擊評估工作

有賴相依性挖掘工具

當系統需要修改開發團隊進行衝擊評估(Impact analysis),確定是否可行、會改到多少程式或資料表、有多少程式會用到、會不會影響到其它程式?過去評估工作是依資深工程師自身豐富經驗判斷,但如果團隊中沒有資深工程師,或剛接手其它團隊開發的程式,在沒有經驗的情況下,評估工作只能”用猜的”,而這卻是最貼近大多數開發團隊的處境。其實衝擊評估不用賭運氣或瞎猜,透過相依性挖掘工具可以主動提供程式間及與資料表之間的關係,同時也可知道是呼叫或被呼叫的關係等資訊,幫助開發團隊了解程式之間的相依性。

冰凍三尺非一日之寒

系統品質也不是一天變壞

程式開發與維運的過程中,系統品質就像人體健康一樣,需要定期進行健檢與監控,才不會在開發過程中一直複製相同錯誤而不自知。一般開發團隊測試方式大多為:程式完成→ 工程師檢查程式品質(Code review會議)→ 逐一測試→ 程式修改→ 再次重複上述檢查動作。試想,如果有個平台可以把上述作業自動化,依檢查規則集進行靜態掃描(如:程式複雜度、巢狀結構深度、相似度、命名規則、資安弱點等),並將錄製好的測試程式進行動態迴歸測試,省下原本要不斷重複測試的人力寫測試案例,進而達到程式品質的目標。

從消極治療到積極預防

如在靜態掃描中檢查出弱點可以進一步報告相關的經驗,甚至有sample code提供參考,就能減少摸索時間。如問題是第一次遇到,解決問題後也能分享處理經驗,甚至有些處理經驗可歸納成程式撰寫或系統設計的best practice,讓開發團隊從消極的問題處理升級到積極的問題預防。

建立軟體品質平台 

朝品質卓越化邁進

邁向品質卓越化的過程中,我們建構一個讓數字說話,經驗傳承的平台,此平台能達到:

自動挖掘系統內部相依關係:

協助開發人員進行異動衝擊評估,避免誤判複雜度與相依性導致系統錯誤。

採用較經濟、方便的方式取得品質指標:

有數字有真相,藉由品質指標了解目前系統的健康狀況。

持續紀錄品質趨勢掌握系統的健康狀況:

當系統品質惡化時可以採取必要改善措施。

將資源花在刀口上:

除依問題嚴重度來排定處理的優先順序外,也可讓開發人員的時間從重複性的工作中釋放出來,做更有價值的開發與測試工作。

方便的累積知識,快速的複製成功經驗:

讓開發團隊不斷累積經驗快速成長,朝卓越品質的目標前進。