⑷参照静态数据结构、数据流图、用例描述获得数据流向设计图。
这一独创的制品具有与UML时序图异曲同工的效果。但如此表达更符合程序员的编码习惯,更有利于实现从伪代码到真实代码的转化。至于设计范围,主要依据用例描述来确定。以下是“中心日初始化”这一子功能级别用例的数据流向设计实例:
“中心日初始化”数据流向
查询系统运行控制表
if有记录
{
定位到工作日期最晚的一条记录
if工作状态<>0<日终>
{
退出日初始化处理
}
手工选择工作日期××××-××-××
判断该日的记录是否已经存在
if存在
{
提示并退出日初处理
}
判断该日是否小于库中的最大日期
if小于
{
提示并退出日初处理
}
在系统运行控制表写入一条记录(手工选择工作日期××××-××-××工作状态1<日初>;工作场次1;是否平帐0<未清算>)
清空业务库表:网点日提出票据表、网点日提入票据表、网点日提入错误票据表、网点磁盘日待提入票据表、网点磁盘日提入登记表、网点日清算表、清算行日清算表、管辖行日清算表、清算帐户日清算表
更新网点状态权限表所有记录的网点日对帐标记为0<未对帐>,提入流水号为1
更新网点统计监控表所有记录的提出笔数、清分笔数、提入笔数、出错笔数为0;场次为1;通信状态为0<断开>
行号表是否需更新:
从版本控制表中查询>当前行号表版本号的记录,如果有记录,依次判断该记录的生效日期是否到期
if有到期记录
{
备份当前行号表到备份行号表
更新行号表
更新网点状态权限表、网点统计监控表
修改系统运行控制表的当前行号表版本号
}
在系统运行控制表中修改记录(工作日期××××-××-××工作状态2<日间>;工作场次1;是否平帐0<未清算>)
}
else
{
手工选择工作日期××××-××-××
在系统运行控制表写入一条记录(手工选择工作日期××××-××-××工作状态2<日间>;工作场次1;是否平帐0<未清算>)
}
在数据流向设计中,总的设计方式是参照流程顺序和时间顺序。其中,横线部分是此制品涉及到的数据库表。对相应库表的重要改动内容也同时记录在旁边,状态字段的内容改动其含义记录在“<>”中。
可见,通过上述各环节的分析设计工作,系统的制品已大大突破了UML所定义的制品范围。虽然这其中所完成的基本界面原型设计、界面流程图等制品尚未加以罗列,事实上其存在与制作对于系统的透彻分析是很有必要的。
3.2.3太原同城系统的简单化和目标明确化实践
当然,太原同城系统的开发实践还注意了“简化工作过程”与“明确最终目标”这两项AM精神的贯彻。比如,建造制品时对UML明确定义的部分制品的舍弃、在类图的制作过程中仅着重核心类的建模、在各阶段建模过程中注意点到为止,使制品量与其对开发的指导价值相匹配……等等,都体现了简单化的用意。而所有这一切,其实都是为完成最终目标――目标软件本身而服务的。
笔者认为,这两方面的实践虽然相对更加哲学化、抽象化一些,但在开发过程控制中依旧要始终加以留意,使之真正起到指导思想的作用。
4.总结
综上所述,对于统一过程而言,敏捷建模是在保持统一过程原有基本优点的前提下,加强这一重量级软件过程敏捷程度的有效途径。相信,会有越来越多的统一过程软件开发实践将受益于对敏捷建模精髓的汲取,而太原同城系统开发的成功实践就是其中一个很好的例子。