當前位置:編程學習大全網 - 編程語言 - 如何軟件系統設計(軟件系統設計流程)

如何軟件系統設計(軟件系統設計流程)

壹、善用UML工具

用例圖

用於需求分析階段,從用戶角度描述系統功能。

用例圖

靜態圖:類圖、對象圖、包圖

靜態圖

交互圖-時序圖(註重時間)

常用組合片段:選項(Opt)、循環(Loop)、並行(Par)、抉擇(Alt)、中斷(Break)

時序圖

交互圖-協作圖(註重對象)

協作圖

行為圖-狀態圖(註重狀態)

狀態圖

行為圖-活動圖(註重活動)

活動圖

實現圖-組件圖

組件圖

實現圖-部署圖

部署圖

二、遵從設計原則

設計模式基礎

單壹職責:壹個類只負責壹個職能;

裏氏轉換:在子類中不應重寫、重載父類的方法,子類要能替代父類;

接口隔離:不依賴不需要的接口,拆分大接口;

迪米特法則:壹個對象應該對其他對象保持最少的了解(低耦合);

開放封閉:對擴展開放,對修改關閉;

依賴倒置:抽象不應該依賴細節,細節應該依賴抽象,即針對接口編程,所有依賴關系都終止於抽象類或接口,不要對實現編程。

設計模式

創建型

工廠方法(FactoryMethod)、抽象工廠(AbstractFactory)、建造者(Builder)、單例(Singleton)、原型(Prototype)。

結構型

組合(Composite)、代理(Proxy)、外觀(Facade)、適配器(Adapter)、裝飾(Decorator)、橋接(Bridge)、享元(Flyweight)。

行為型

策略(Strategy)、模板方法(Temple

Method)、觀察者(Observer)、狀態(State)、備忘錄(Memento)、叠代器(Iterator)、命令(Command)、責任鏈(Chain

Of)、中介者(Mediator)、訪問者(Visitor)、解釋器(Interpreter)。

分布式設計原則

高可用

降級、限流(漏桶-平滑、令牌桶-可突發、環形隊列滑動窗口)、切流、熔斷、回流、可回流、超時、隔離(線程、讀寫、資源、熱點、爬蟲)、負載均衡。

高並發

無狀態、拆分、服務化、隊列、數據異構(異構->原子化->聚合->緩存)、緩存、並發化(Future、Callback、CompletableFuture)、池化。

業務設計

防重、冪等、規則引擎、狀態機、審計、審批。

分布式理論

CAP:壹致性、可用性、分區容錯性(三選二);

BASE:基本可用、軟狀態、最終壹致性;

ACID:原子性、壹致性、隔離性、持久性。

壹致性原則

XA協議:準備->提交(具有阻塞、協調者單點、腦裂等缺點);

XA三段協議:詢問->準備->提交;

TCC:try->confirm/try->cancel鎖定->確認/釋放;

最終壹致性:查詢、補償、定期校對、可靠消息、緩存壹致性。

超時處理

原則:誰超時誰處理,即接口調用超時,查詢補償;接口調用成功後,接口內部服務超時須自己補償。

兩狀態同步接口(OK/ERR):接口調用超時,調用方查詢補償;接口內部服務超時,內部快速失敗沖正;

三狀態同步接口(OK/ING/ERR):接口調用超時,調用方查詢補償;接口內部服務超時,返回處理中,內部查詢補償到成功,調用方輪詢;

異步接口:接口調用超時,調用方查詢補償;接口內部服務超時,內部查詢補償到成功,回調通知;接口回調通知超時,指數補償回調;

消息隊列:生產者發送超時,持久化可靠發送冪等消費;消費者消費超時,消息處理完偏移量增加。

緩存

緩存分片:客戶端分片(redic)、代理分片、集群分片(壹致性Hash);

緩存穿透:緩存空值、有效Key判斷;

緩存並發:分布式鎖、本地鎖、軟過期(業務過期);

緩存雪崩:錯峰失效。

三、畫好架構圖

41視圖

場景視圖:參與者與功能用例關系,用例圖表示;

邏輯視圖:功能拆解後的組件邊界及關系,組件圖和類圖表示;

物理視圖:軟件與硬件映射關系,部署圖表示;

處理流程圖:各組件流程與數據交互,時序圖和流程圖表示;

開發視圖:模塊劃分及包組成,包圖表示。

C4視圖

語境圖:梳理待建設系統用戶和高層次依賴,在中間畫出自己的系統,周圍是用戶與其它交互系統。

C4語境圖

容器圖:展開語境圖待建設系統,用框圖表示,可包含名稱、技術選擇、職責、框圖間交互,明確外部系統邊界。

C4容器圖

組件圖:展開某個容器,描述其內部模塊組件組成、關系。

C4組件圖

類圖:同UML靜態圖,此處不再展開。

  • 上一篇:如何選擇適合自己的編程語言?
  • 下一篇:linux環境下python怎樣操作mysql數據庫
  • copyright 2024編程學習大全網