各种管理系统是软件开发经常遇到的任务。这玩意说难不难,说简单不简单。这种系统往往是“业务为王”。如何快速的“熟悉业务,吃透业务”是关键。有一个反面例子: 有个系统,一开始业务需求不细,上线了再加各种流程,再加各种数据,有个表从63个字段加到了138个字段。这种就是典型的泥潭。而且系统上线之后,再进行各种更改,也会给测试、更新、运维造成很多困扰。
那么如何开始分析呢?可以先抓两头:
- 分析数据源头。数据来自哪里?那些数据是人工录入的?那些数据是从设备上采集的?那些数据来自数据接口?每项数据有什么特点?数据吞吐量是多少?数据定义有没有相关的国家或者行业标准?如果有,就遵循。遵循这些标准,会减少遗漏。搞清数据间关系, 是一对一? 还是一对多 ?还是 多对多?确定每项数据的类型和格式。
- 分析各种数据统计报表。翻阅各种报表,整理每项统计数据涉及的流程和数据。这个需要和相关各部门的相关人员仔细讨论。可以先查看他们之前的系统、之前的纸质报表、之前的Excel表格。这个工作一定要细致,避免上线之后为了新增一个统计数据,而“加字段、改UI”。另外要记录下报表的格式。建议先用 Word Excel 等作出报表的样子,然后和客户落实好内容。
上面说的头和尾整理好,形成闭环,这个系统的分析的第一步就完成了。然后就开始梳理流程。搞起时序图来,那些是并行? 那些是串行 ?明确每个流程点的“上一步、下一步 、打回、 完结、 挂起”等。
接下来就是原型设计。可以使用原型设计工具。也可以使用效果图、流程图、时序图,也可以开发一个只有界面的空系统。有了这些,才能和客户进行有效的讨论。讨论每个页面的 显示、查询 、录入、查询条件等。 其实查询条件很重要,会直接影响索引的设计和表的设计。例如:在一个系统中查询“打回重填的申请单”,我们是加个标记位?还是到操作日志记录中,查找存在着打回操作的数据?这2种方式都可以满足功能需求,但是速度完全不一样。在这里需要确定每个细节。
然后就是确定角色、权限、字典、数据库设计等等。下一步开始设计测试案例,开发测试工具,模拟数据业务。可以参考NIST的EHR的评审。NIST的EHR的评审里描述了好几个完整的流程,每个流程 包含很多场景。例如:一个病人到门诊就诊时,将什么样的病人信息录入到系统。录入到系统后,这个病人能够在哪些页面中被哪些医生或者护士检索到? 这时系统中的那些报表、统计的数字会发生什么变化? 如: 当日就诊人数+1 ,当日营收变化,排队叫号变化,号源池变化,诊室状态变化,科室工作量变化。然后进行哪些操作(体格检查、检验、医嘱 。。。),系统中的那些内容会发生什么样的变化。设计这样的流程,把各模块的操作和变化都囊括进来。这些文档比写代码更重要。俺有个朋友开发了一个产品,被另外的公司收购了,对方公司不要代码,但是对各种文档要求很严,要求所有业务都要有完整的文档描述。俺这个朋友没办法,就找了2个人,化了半年的时间把文档补齐了。这个朋友最初是打算在上海找人补文档,但是上海的人工太贵,朋友就去洛杉矶找了2人写。