在軟體開發社群,對於文件尤其是關於軟體自身設計的文件的價值,爭論頗多。分歧一般集中於兩處,一處是「詳細的前期設計(big upform design)」的有效價值,另一處則是使設計文件和不斷變化的**庫保持同步的難易程度。
記錄軟體架構決策理由的文件,長期有用,又無須為之付出過多維護精力,具有很高的投資回**值。正如馬克·理查茲(markrichards)在《取捨的藝術》一篇(譯註1)中所說的,定義軟體架構,就是要在質量屬性、成本、時間以及其他各種因素之間,做出正確的權衡。此份文件應能向你自己、經理人員、開發人員及軟體的其他利益相關者,清楚闡明選擇某種解決方案,而非另外一種的原因,包括其中做出的權衡。有沒有打著減少硬體和許可費用的幌子,犧牲了系統的水平伸縮性(horizontal scalability)?雖然縮短了資料交換的整體響應時間,但資料加密是否足夠安全?
根據專案的不同,可以靈活選擇合適的文件格式記錄架構決策的方方面面,格式可以是文字、維基(wiki)或部落格(blog)形式的速記備忘錄,也可以使用更為正式的模板。無論使用何種形式和格式,些文件都應回答以下基本問題:「我們做了什麼決策?」「為什麼這樣決策?」有乙個稍次要的問題,經常有人會問到,因而也要記錄下來:「我們還考慮過哪些解決方案?為什麼沒有採用?」(事實上,有人經常會這樣問:「為什麼我這個方案不行?」)。此文件應該放在容易查詢,可被搜尋的地方,以備不時之需。
這類文件遲早會派上用場,比方說:
然而,從這種實踐中可獲得的最重要好處是:
建立這種文件,只需在相關主題的會議或討論中隨手做些速記備忘錄即可。無論選擇怎麼樣的格式,這類文件都物超所值。
譯註2:指架構師和團隊成員間不是進行「就事論事」的溝通,而是進行帶有人身攻擊性質的爭論,最終破壞團隊的健康。
決策支撐系統困惑記錄
這帶來的問題是,所有的js變數和記錄在隱藏域中的變數都丟失了!為了解決變數丟失的問題,又引入了cookie。思路如下 頁面第一次進來的時候,名稱為nodelastselected的cookie為空,觸發按鈕事件以後,設定該nodelastselected數值。下次再載入同一頁面時候,cookie已經...
決策樹學習記錄
4.1 基本流程 在介紹基本流程前,我們先來了解一下決策樹的概念,以及決策樹學習的目的。決策樹學習的目的 是為了產生一棵泛化能力強的樹,其流程遵守簡單直觀的 分而治之 的策略。對於決策過程,書上給出了乙個形象的例子 西瓜問題。對於該問題,明確要做的決策是 這是好瓜嗎?看圖4.1,決策過程中,我們會基...
機器學習實戰學習記錄 決策樹
決策樹中演算法採用的id3.劃分資料集基於 特徵。其中採用分類依據為資訊理論中的資訊增益和資訊熵 夏農熵 機器學習中夏農熵計算公式為 其中xi表示分類,p xi 表示xi分類的概率。首先,建立資料集及計算夏農熵 from math import log defcalcshannonent datas...