设想的用户交互流程
?
1.?????? 一開始,顯示整個工程的狀況
這一步具體有很多工作要做,最終目標是能夠讓用戶快速分辨出工程由幾個模塊組成,哪些模塊屬于高層模塊,哪些屬于底層模塊,分辨出每個模塊中比較重要的類。還有每個類在程序里面的實際影響范圍。
具體的設想在下一步進行,當前重點考慮類內部的設計。
?
2.?????? 用戶選出感興趣的模塊,進而挑選感興趣的類。
假設挑選了下面這個類。
3.?????? 用戶第一眼,應該能夠分辨出這個類最主要的成員。包括處理核心計算的1-2個函數,最重要的3-4個變量。其余函數、變量以不顯眼的形式(例如灰色或淡色的節點)展示,這樣用戶可以看出一些額外的信息,例如這個類是函數多,還是變量多。最主要的函數,其相關的調用關系也以顯眼的邊畫出。我認為可以借助城市不同等級道路的表示方式。
?
當前函數的效果如下面左圖,而函數加變量的效果為下面右圖。主要問題是所有的函數、變量都顯得同等重要,無法分出主次,連接邊太過亂。
?
4.?????? 為了讓用戶對類的工作方式有進一步了解,需要以某種形式展示類的數據流圖。
?
首先需要分出數據入口和出口。初步的方法可以檢查類的公有成員函數(因為這部分成員才與外部發生數據交換,先不考慮友元、靜態函數等特殊情況),若函數設置了類內部的變量,認為其為數據入口,若函數設置了傳入的變量,或者返回內部變量,認為其為數據出口。可以以一些簡單的圖標展示,例如下圖的箭頭(下圖僅僅根據函數的set和get前綴標注了相應的函數)。但是這些圖標默認必須是隱藏的,只有在用戶打開開關時才顯示,以防一開始分散用戶的注意力。
?
然后可以指出一些重要的數據流向。例如,用戶指定幾個入口,幾個出口,系統找出幾個可能的數據流。下圖中用戶指定setSelectedEntity為入口,getSelectedEdges為出口,系統計算出可能的數據流。即通過setSelectedEntity->updateSelectedRendering->getSelectedEdges 這樣的函數調用順序,有可能(不保證完全準確)把輸入的entity數據轉換成輸出的selectedEdges數據。
?
5.?????? 用戶還可以通過交互,從核心函數開始,逐步了解類的其余部分。例如通過選定其中一個函數,知道與其相關的函數和變量。
來自為知筆記(Wiz)
轉載于:https://www.cnblogs.com/dydx/p/4534834.html
總結
- 上一篇: Java日志性能那些事
- 下一篇: UML学习笔记(4)——类图之间的关系