- 論壇徽章:
- 0
|
稍微解釋一下,這是我個人對于現(xiàn)有編程模型的一個簡要概括,希望寫出來給大家看看,并且期待一些意見反饋。
6.2 主流編程模型分析
6.2.1 現(xiàn)有模型
* 數(shù)據(jù)流驅(qū)動
o 數(shù)據(jù)流驅(qū)動,基于模塊輸入輸出架構(gòu),每周期定時調(diào)用所有模塊
o 簡單直觀的編程,適合工業(yè)應(yīng)用
o 對于復(fù)雜邏輯序列事件編程復(fù)雜而且調(diào)試困難
o 應(yīng)用模型通;趩尉程分時,類似偽纖程,算法等價為為一棵定時器觸發(fā)跟節(jié)點的執(zhí)行樹
o 對于IO使用輪詢,中斷一般有底層驅(qū)動或者操作系統(tǒng)服務(wù)處理
o 作為一般的應(yīng)用情況,數(shù)據(jù)流驅(qū)動的程序可以是無限循環(huán)運行的
* 數(shù)據(jù)加算法
o 函數(shù)方式編程
o 實現(xiàn)代價換取最高的靈活性
o 作為馮諾依曼和圖靈機體系下的工作計算機里面,可以實現(xiàn)任何編程模型
o 純函數(shù)調(diào)用等價于一顆調(diào)用樹(除了setrun,setlong run,jump等特殊接口)
o 大部分情況編譯時確定執(zhí)行樹,也存在動態(tài)節(jié)點,可以通過函數(shù)指針和dll裝載實現(xiàn)
* 面向?qū)ο?br />
o 高階編程模型,通常向下兼容函數(shù)式編程
o 以類和對象為基礎(chǔ)通過方法(消息)交互,對象一般具有封裝,繼承,多態(tài)等特性
o 面向?qū)ο笸瑫r暗含了自指,元和衍生對象概念
o 衍生的編程概念包括事件處理
o 面向?qū)ο笫歉鼮楦唠A的設(shè)計模式的基礎(chǔ),包括用途,契約式設(shè)計,UML等
o 通常和運行環(huán)境和庫緊密相關(guān)
6.2.2 動態(tài)對象復(fù)雜應(yīng)用分析
* 操作系統(tǒng)管理進程
o 主要對象:操作系統(tǒng)和進程
o 操作系統(tǒng)負責(zé)創(chuàng)建銷毀進程,調(diào)度進程,改變進程狀態(tài),內(nèi)部維護有進程列表,指定/替換進程執(zhí)行內(nèi)容,但是不關(guān)心進程具體實現(xiàn)
o 進程通過系統(tǒng)調(diào)用和操作系統(tǒng)通信
o 進程通過父子關(guān)系,間接操作系統(tǒng)核心對象(管道,socket等等)和其他進程建立刪除連接,并交換信息
* 網(wǎng)絡(luò)服務(wù)守護任務(wù)
o 主要對象:守護進程和任務(wù)進程
o 守護進程接受客戶請求,管理任務(wù)進程,包括創(chuàng)建,銷毀,改變?nèi)蝿?wù)進程狀態(tài)
o 任務(wù)進程通過特定接口對象和客戶通信
o 任務(wù)間進程通常彼此獨立
* 多窗口GUI應(yīng)用
o 主要對象:窗口對象和消息循環(huán)
o 程序靜態(tài)或者動態(tài)創(chuàng)建窗口對象,由操作系統(tǒng)負責(zé)加入消息循環(huán)來響應(yīng)外部事件
o 窗口通過暴露接口變量和回調(diào)函數(shù)和后臺應(yīng)用邏輯通信
o 窗口可以動態(tài)建立和銷毀,窗口控件之間不直接耦合,但是可以通過后臺應(yīng)用邏輯聯(lián)合顯示信息
* 插件鏈條管理
o 一個典型的插件鏈條是媒體播放,包括demux,stream decoding, stream playback構(gòu)成
o 根據(jù)用戶配置和媒體文件不同,每播放一個文件,這個鏈條重置并重新建立
o 主程序根據(jù)不同的輸入配置載入合適的動態(tài)庫,并在過程中連接這些動態(tài)庫的輸入輸出構(gòu)成鏈條
o 當播放停止時,鏈條被解構(gòu)
6.2.3 程序模型升級更新分析
* 一般IT升級
o 部分升級和全部升級
+ 程序的動態(tài)加載庫升級
+ 程序包的完全升級
o 在線升級和線下升級
+ 程序運行時部分或者全部部分升級,可能對正在運行的軟件構(gòu)成影響,一般工業(yè)產(chǎn)品軟件環(huán)境簡單可以使用
+ 通常的做法是后臺下載整個程序包,被動等待或者主動進行重啟,下次重新啟動前進行升級
* 工業(yè)軟件升級
o 升級過程從屬于產(chǎn)品操作流程的一部分
o 一般過程是關(guān)閉機器,確認處于安全狀態(tài)下,升級軟件,重啟工業(yè)控制器,軟件運行正常后重新啟動機器
6.2.4 模型比較
數(shù)據(jù)流 數(shù)據(jù)加算法 面向?qū)ο?br />
執(zhí)行樹唯一 是 否 否
動態(tài)結(jié)構(gòu)對象管理 否 是 是
程序無限循環(huán) 是 否 否
程序入口 第一個順序執(zhí)行的模塊 指定函數(shù)名(main) 指定函數(shù)名(main)
6.3 現(xiàn)有編程開發(fā)過程
6.3.1 文本編程
* 開發(fā)更新過程
o 加入新的原代碼文件,更新項目組織文件
o 編譯運行調(diào)試
o 發(fā)布最終版本
* 版本系統(tǒng)協(xié)作
o 利用現(xiàn)有版本系統(tǒng)跟蹤文本文件改變,進行比較合并
o 利用版本系統(tǒng)進行自動編譯
6.3.2 圖形編程
* 系統(tǒng)架構(gòu)
o 純圖形編程
o 圖形編程作為程序跨架,可以與模塊共同工作
o 文本編程語言環(huán)境作為框架,圖形模塊編譯嵌入框架
* 開發(fā)更新過程
o 加入新的模塊,和現(xiàn)有系統(tǒng)模塊連接
o 編譯運行調(diào)試
o 發(fā)布最終版本,包括源代碼和編譯版本
* 版本系統(tǒng)協(xié)作
o 大系統(tǒng)分拆為組件,以組件文件級別進行更新
o 其修改無法直接比較,通過更改日志和文檔進行說明,可控性由個人負責(zé) |
|