架構內容 節選自《聞缺陷則喜》(此書可免費下載)

1.1     架構內容

1.1.1 取捨

品質、工期與成本三者之間是相互影響、相互制約。品質與工期影響著成本。成本又約束著品質和工期,工期影響著品質的提高。反過來品質的提高又促進了工期的縮短。讓公司虧錢是最大的罪過;工期的長短嚴重影響現金流,暫時虧損可以拉投資,沒現金流公司會倒閉。

體會:一,有時,要求高品質會讓成本翻倍,所以不如分兩階段,第二階段重寫,不留歷史包袱。二,不同經歷的開發人員側重於不同的品質要求,有的適合快,有的時候適合可維護性、可復用性。天下武功唯快不破,快是很大的優勢。90%的項目會失敗,項目早出生,早驗證,早止損。三,不同階段,品質要求不同。四,取捨和優先順序重要。

 

1.1.2 轉換成開發級需求和規則

尋找邊框用各級功能需求的區別

系統級功能需求

CAD插件可以自動識別邊框。

第一版

用戶級功能需求

邊框分三類,直線、多以線、塊。

開發級功能需求

邊框分三類

1,  line實體,4條line如果剛好可以組成正矩形,則是邊框。

2,  閉合的Polyline、Polyline2d實體的4條邊可以組成矩形,則是邊框。

3,  塊一定時邊框,邊框是包圍盒。

第二版

用戶級功能需求

用戶可以配置邊框種類,以提升速度和準確性。

開發級功能需求

尋找邊框時,增加參數邊框類型

有介面可以配置邊框類型。

邊框類型可以保存。

1.1.3 運行架構

關注的是應用程式運行中可能出現的一些問題。包括:一,並髮帶來的問題,比較常見的是「執行緒同步」、非同步、死鎖問題。二,生命周期管理,對象創建和銷毀。三,狀態的變化,如:登錄、註銷。四,業務流程。

控制流圖中不同執行緒(進程)直接或間接調用的模組可能需要加鎖,為了簡便,跨執行緒的數據、資源只有一個模組能直接訪問。

1.1.4 邏輯架構

模組拆分的四個方法:一,按所需技能拆分,如html做介面,C++內核。最常見的是分層細化,如:介面層、業務邏輯層、核心邏輯層、數據層、數據存取層。二,分塊,按功能細化。三,按通用專用細化。公司基礎庫,部門基礎庫等。四,通用機制的提取。如:某個框架要實現幾個介面。

可以用魯棒圖發現遺忘的職責,時序圖也能發現一些職責。

 

1.1.5 開發架構

一,開發技術選型,開發語言、工具。二,將邏輯職責拆分成程式單元。包括:a,自主編寫的源程式。b,外包的源程式。c,付費、免費的第三方庫、插件、框架。d,腳本、配置文件、註冊表。e,其它工具,比如安裝盤工具。f,系統工具、免費工具,已有工具。三,程式單元間關係,項目劃分、項目目錄結構,依賴關係。

混合編程是指使用兩種或兩種以上的程式設計語言來開發應用程式的過程。如:智勇三國二單機版,C++內核,介面以html對話框為殼,實質為js+html。網路版BS程式,後端C++,前端JS+HTML,通訊方式WebSocket。

1.1.6 數據架構

分散式是重點內容,但我沒經歷過,所以不涉及。

資料庫概念結構設計和 E-R圖

資料庫概念模型能真實、充分地反映現實世界,包括事物和事物之間的聯繫,能滿足用戶對數據的處理要求。

E-R圖提供了表示實體型、屬性和聯繫的方法。

1. 實體型用矩形表示,矩形框內寫明實體名。

2. 屬性用橢圓形,並用無向邊將其與相應的實體型聯繫起來。

3. 聯繫用棱形表示,菱形框內寫明聯繫名,並用無向邊分別於有關實體型連接起來,同時在無向邊旁標上聯繫的類型(1:1、1:n或m:n)。

如果一個聯繫具有屬性,則這些屬性也要用無向邊與該聯繫連接起來。

1.1.7 物理架構

涉及較少不班門弄斧了。