軟件架構的十大錯誤
作者 Niclas Nilsson譯者 郭曉剛 發布于 2007年10月17日 上午10時49分
IASA成員Eoin Woods發表了一篇文章講述他所認為的十大軟件架構錯誤——常常要碰得頭破血流才會得到的一些教訓。這十大錯誤簡要總結如下:
- 不能界定項目范圍。“在這種情況發生時,一個簡單的出差登記系統結果變成內建了完整的花費報銷管理系統,項目費用、時間跨度和質量都留下不可避免的爛攤子……除了簡單的登錄真的不需要安全措施了?用戶登錄系統后真的不能夠執行任何系統操作嗎?”
- 網撒得不夠寬。“我們都曾經犯過的一個錯誤是,只關注系統所有利益相關者中的一兩方——通常受讓人(為系統出錢的人)和最終用戶得到了全部的關注。”
- 只關注功能。“……除非系統表現出了全面的高質量(諸如性能、安全、可維護性等等),否則不太可能成功。”
- 用方框和線條來描述。“[一個無所不包的]巨大的Visio圖無法成為有效的架構描述,有兩個原因:第一,它試圖在單一表示中呈現太多信息;第二,沒人真正清楚地知道你畫的各種符號到底表示什么意思。”
- 忘了需要培養的過程。“在建造系統的時候常常需要小心的事物包括:開發者和測試者沒法真正理解設計,他們不熱衷或者沒時間學習技術,以及還沒有很好的工具支持的新技術,或者新技術會強迫人們以新的不熟悉的方式工作。”
- 平臺定義不精確。“光用‘需要Unix和Oracle’來描述你的平臺是不足夠的。你需要精確地說明每一部分具體的版本和配置,才能保證得到你所需的平臺。不然如果有人好心為平臺的某一部分升級了一個庫,就可能導致某些東西停止運作。精確定義平臺你才能在部署中避免這樣的情形。”
- 對性能和伸縮能力想當然。“及早開始考慮性能和伸縮性,構建性能模型嘗試預測關鍵的性能指標并定位瓶頸,在設計逐漸成型的同時投入到一些實際的驗證性工作中去。這會幫助你提高對設計中不存在嚴重性能和伸縮性缺陷的信心。”
- 自己發明安全技術。“多年來許多系統所犯的一個錯誤是試圖加入自己發明的安全技術來提高系統安全性。比如定制的加密算法,開發者自己編寫的審核系統,甚至完全DIY的訪問控制系統。自家開發的安全方案基本上都是不明智的。雖然很多人都以為自己可以馬上搞出一些聰明的安全技術,但通常都只是自作聰明。”
- 沒有災難恢復。“要想得到資源來實現系統的災難恢復機制,其關鍵在于在若干真實的場景中,具體衡量系統不可用所導致的損失。如果你還能估算這些場景發生的概率,你就可以用這兩組數據去說服人們災難恢復的重要性,并獲得合理的預算去實現它。”
- 沒有撤退計劃。“確保無論在系統部署或升級的過程中發生任何事,你都有一份書面的、經過審查的、一致同意的撤退計劃,允許你將整個環境恢復到部署之前的狀態。”
Eoin Woods是UBS Investment Bank的軟件及企業架構師。
查看英文原文:Top Ten Software Architecture Mistakes