基本流程:實現的流程
整體框圖:劃分爲多少模塊,模塊間如何協作
時序圖:不通類協作的時機與方法
1. 確定要實現哪些功能,一個一個列出;
有功能點纔有目標,不然亂作一通
2. 蒐集資料,分析實現這些功能的方法,給出流程,給出方案,分析可行性
較詳細的原理和可行性分析
3. 確定方案對外提供的接口
接口方便同步開發,多人團隊可以有接口可用
1)完成任務,是否需要外部數據,也就是是否要輸入參數
- void done_work(int num)
- void done_work(int num)
- void done_work(int num, int *out)
- void done_work()
3.1接口的定義
提供接口給外部使用
內部實現需要的關鍵函數接口,內部使用
3.2 接口直接的關係
接口需要發送處理後的信息,因此需要提供錯誤值,入參
- void send_result(int result);
4. 模塊內部的設計
1)設計內部交互的數據格式
2)設計自己用的關鍵函數
a)C++
完成模塊間交互信息的要求,對類的內部進行設計,需要哪些成員函數來實現.
b)C
設計函數接口,或函數指針接口
4)畫出序列圖,搭好整個框架,以此框架爲模板,編碼(函數實現放空)
5)實現內部函數
舉例:
完成自動登陸
1) 如果不知道怎麼做,或者思路到一半卡殼了,甚至完全沒思路就要做分析了。
2) 首先,明確要完成的功能——完成用戶名密碼自動登陸。
3) 然後,需要用到的資源、數據、信息——用戶名,密碼
簡單講,就是完成登陸的函數是否需要輸入參數 int done_work(int num, void *data);
4) 能否在同一個進程或線程內完成操作,如果完成登陸操作不在同一個進程或線程,那就涉及到多進程或多線程。
單進程或單線程則結束。
5) 那需要傳遞數據了,使用共享內存或者管道之類的。
6) 同步:傳遞數據的時候是否需要同步,不然接收方都不知道數據來了沒,發送方也不知道發送方不知道何時可以發送數據
-
發送方 接收方
-
———— ————
-
- <- 準備好了
-
發送數據 -> -
-
- 處理好了
- - <- 發送結果
a) DLL可能被系統加載,你還是可以跟DLL通信的
b)實現類的時候,並不是只實現接口函數,完全可以定義私有函數完成諸如a)的功能
end)
8) 多程通信
設置事件等同步異步方式, 不能只考慮通信的雙方都存在的情況,
要是其中一方不存在,啓動後是否會受影響
A B
A =
= B
=============================================
TIPS
=============================================
5.
需求時刻在變!!!你不能夠把所有的情況都考慮到,但是你能夠考慮到基本的情況,也就是必須提供的
設計的時候,並不能一次性定下所有的策略,比如加密用RC4或RSA等,但是基礎的數據大部分是可以確定的。
-
1. 加密數據及認證的時候,可以保留字段
-
struct client_managercenter_datastu {
-
int magic;
-
int length;
-
void *data;
-
int reverse[4]; //保留字段,用於認證加密
- }
1)做架構設計時,只關注模塊的輸入與輸出,至於模塊內部如何處理,不用理會
2)確定模塊間的通信方式,TCP或者IPC
7. 針對IP,端口等默認的消息,
設計成由一個配置中心統一管理且可配置,需要數據則從該配置中心獲取
8. 消息的規則
8.1.數據接收方定義信息的內容。
8.2. 消息應是一個問題,或者一個命令,但不能兩者皆有。
1)問題類消息:要求對象提供一些信息,所以總是有迴應。問題類消息不改變對象的屬性。
例子:現在幾點?你有幾個孩子?
2)命令類消息:告訴對象執行某個操作,不需要回應。命令改變對象的屬性
例子:電腦關機
//待討論
3)通知:消息給對象,對象不返回數據也不執行操作。
4)問題類消息不能是多個問題的集合,或者多個命令的集合,或者問題和命令的集合,或1個命令
5) 合併多餘的消息
認證請求->認證響應(成功或失敗)->端口請求->端口響應(port)
認證請求->認證響應(成功+有效port 或 失敗+無效port)
8.3協作過程中(通過socket)傳遞命令和數據
結構體轉爲字節流
9. 圖表
軟件結構體,展現系統或模塊內由哪些組件組成
序列圖,組件是交互的順序與操作
10.一個工作無法直接做完,需要分步完成,則引入狀態state
比如更新後,需要重啓完成更新,最後校驗:UPDATE_BEGIN, UPDATE_REBOOT_CHECK,UPDATE_FINISH
11. 設計交互協議時,不能夠使用寬字節
-
struct protocol {
-
WCHAR magic[32];//error
-
int major;
-
int minor;
- }
相關熱門文章
給主人留下些什麼吧!~~
評論熱議