2009年3月20日星期五

CLTF Domain Analysis

一直没有踏下心来先对domain建模,就先凭感觉写了connection的代码。要对domain建模就需要了解需求,在工作中也日益发现 需求的复杂性。业务的复杂需求如何让domain model清晰的表现出来是个问题。entity之间的关系能够搞对看似简单,其实已不是件容易的事情了,再加上用户对业务规则貌似‘挑剔’的需求更使得 建模不容易。
就CLTF来说,我们希望这个软件能够:1,通过telnet协议telnet到某个设备,2,来执行设备上允许的各种命令,3,并对命令的结果正确与否作出判断。
下面展开来说:
  1. 希望这个软件能够同时telnet到任意多个设备。
  2. telnet到设备后能够提供一个UI来模拟终端界面,通过这个界面能够发出设备可识别的命令并显示执行结果。
  3. 能够把一系列的命令放在一个文本文件中,在CLTF中将这些命令发送到指定的设备上去运行。
  4. 使用正则表达式对命令结果的正确与否进行判断。
  5. 能够通过UI显示执行进度。
  6. 能够通过UI看到命令执行时信息。
  7. 命令执行时可以选在是否记录命令执行信息到日志文件。
  8. 能够清晰地标识出哪个命令失败了。

这8个需求比起前3个已经具体一些了,但还是远远不够。在这些简短语言的描述下,还掩藏着很多的变数,还有很多需求将随着对这些大粒度的需求的澄清而提出来。正是随着需求的逐渐细化,我们的domain才变得“复杂”起来。
希望这个软件能够同时telnet到任意多个设备。
  • 提供一个device视图,以图形化的方式显示用户定义了的设备。
  • 在这个视图里能够添加设备、删除设备、修改设备信息。
  • 用户点右击某个设备时弹出菜单中有一个“telnet连接”按钮,用户点击此按钮,在建立到该设备的一个telnet连接。

至此关于连接设备的需求清楚了么?没有!
‘图形化的方式显示’是怎样的显示?各个设备都是相同的小图片代表?设备信息包括哪些?显示给用户哪些?
允许用户在视图里添加设备,那么用户是在视图里右击出菜单添加,还是通过视图的action item添加?
根据以上问题,细化出新需求:
  • 设备信息包括:设备名称、IP、描述、以及一个与CLTF发生的连接数。
  • 系统提供若干代表不同设备的小图片,当创建某类设备时就使用某个图片形象化地表示该设备。
  • 以表格的方式显示设备,一行一个设备。
  • 点击表格的各个列头可以对设备进行排序。
  • 每行列表提供一个delete按钮来执行删除设备的动作。
  • 每行提供modiy按钮来执行修改设备信息的动作,修改后需要通过update按钮提交修改。