開源程式碼的設計

各位前輩好, 若想要開發出一套可以給別人隨意拖曳著vi自行設計程序流程(類似一般行列式的語言), 又不想開放blockdiagram是怎麼寫的, 要用哪一種方式最合適呢?

系統架構是訂為QMH, 預計想要寫出只開放A區域是可以讓別人自由修改

目前想到的方法是先將系統, 初始化, CLOSE與其他不想開放的subvi變為library形式

其他的人機與開放區塊還沒有比較明確的想法…

問起來很簡單的問題,其實這個超級吃設計。
首先你需要定義整體開放範疇在哪邊,也就是可以讓user作業的區塊有多大,這看起來沒什麼,但是會關係到user怎麼傳遞資料,這又會跟人機介面的開發扯上關係。

除非本身你會設計架構,不然單純使用QMH就我的經驗來說應該會有很多問題。主要在於QMH的方法無法有效封裝,同時也無法有效防止使用者改變系統結構。如果以現成的架構來說的話,最好的就是透過Actor Framework來實作。系統殼層你自己寫,寫完之後封裝成PPL,同時預留資料通道來做資料流擴充,如規劃DVR讓使用者走,最後可以讓使用者編輯的部分就全部讓他透過繼承實作,這樣就可以達到系統與功能分離的目標,自然就可以封裝該封裝的程式碼,同時對使用者的修改需求開放。

如果會設計架構又不想走物件導向的話,那麼基本上建議將系統殼層直接封裝成PPL,同時透過動態呼叫方式規劃使用者功能載入的邏輯。人機介面上則是保留一個refernece通道讓使用者可以傳遞control reference,這樣才能在多個UI之間能夠有個好的控制方式。資料面上就是吃FGV+DVR的方法實作出named DVR,方便使用者跨殼層透過資料流來傳遞資料。

簡單說,資料如何傳遞,介面如何更新,流程如何同步。這幾點在未封裝的程式碼下都有機會透過使用者自行修改來達成功能,但一旦系統封裝起來之後,怎麼設這些就考驗設計者的架構能力了。

1個讚

感謝老師認真的回覆我的問題.
我的確也花了一些時間在評估設計的架構中, 至於Actor Framework的架構目前還未接觸過. 不知道老師您下一次的Actor Framework授課時間是甚麼時候?