zoukankan      html  css  js  c++  java
  • 设想的用户交互流程


     

    1.       一开始,显示整个工程的状况

    这一步具体有很多工作要做,最终目标是能够让用户快速分辨出工程由几个模块组成,哪些模块属于高层模块,哪些属于底层模块,分辨出每个模块中比较重要的类。还有每个类在程序里面的实际影响范围。

    具体的设想在下一步进行,当前重点考虑类内部的设计。

     

    2.       用户选出感兴趣的模块,进而挑选感兴趣的类。

    假设挑选了下面这个类。

    3.       用户第一眼,应该能够分辨出这个类最主要的成员。包括处理核心计算的1-2个函数,最重要的3-4个变量。其余函数、变量以不显眼的形式(例如灰色或淡色的节点)展示,这样用户可以看出一些额外的信息,例如这个类是函数多,还是变量多。最主要的函数,其相关的调用关系也以显眼的边画出。我认为可以借助城市不同等级道路的表示方式。

     

    当前函数的效果如下面左图,而函数加变量的效果为下面右图。主要问题是所有的函数、变量都显得同等重要,无法分出主次,连接边太过乱。


     

    4.       为了让用户对类的工作方式有进一步了解,需要以某种形式展示类的数据流图。

     

    首先需要分出数据入口和出口。初步的方法可以检查类的公有成员函数(因为这部分成员才与外部发生数据交换,先不考虑友元、静态函数等特殊情况),若函数设置了类内部的变量,认为其为数据入口,若函数设置了传入的变量,或者返回内部变量,认为其为数据出口。可以以一些简单的图标展示,例如下图的箭头(下图仅仅根据函数的setget前缀标注了相应的函数)。但是这些图标默认必须是隐藏的,只有在用户打开开关时才显示,以防一开始分散用户的注意力。

     

    然后可以指出一些重要的数据流向。例如,用户指定几个入口,几个出口,系统找出几个可能的数据流。下图中用户指定setSelectedEntity为入口,getSelectedEdges为出口,系统计算出可能的数据流。即通过setSelectedEntity->updateSelectedRendering->getSelectedEdges 这样的函数调用顺序,有可能(不保证完全准确)把输入的entity数据转换成输出的selectedEdges数据。


     

    5.       用户还可以通过交互,从核心函数开始,逐步了解类的其余部分。例如通过选定其中一个函数,知道与其相关的函数和变量。







  • 相关阅读:
    运行一个内核模块
    ubuntu下解析udt数据包
    在脚本中使用export导出变量值
    安卓手机已保存WiFi密码查看助手(开源)
    hashmap先按照value从大到小排序,value相等时按照key从小到大排序
    python画柱状图并且输出到html文件
    匀速圆周运动向心加速度推导
    简单证明圆锥体积为三分之一圆柱
    排列组合的一些公式及推导(非常详细易懂)
    相同字符串问题_题解
  • 原文地址:https://www.cnblogs.com/dydx/p/4534834.html
Copyright © 2011-2022 走看看