全程测试,从需求到设计到代码

去年,我们要让软件开发团队管理上台阶。

  我们由于处于企业管理软件开发领域,而对日外包大部分接的单子都是管理软件之类的单子,但是人家的项目管理、进度、质量都比我们好,如果他们再配合管理咨询公司作为合作伙伴,再加上大规模的服务呼叫中心,像我们之类岂有出路?

  于是我们就想到了引入对日外包的开发过程管理。

  大家一想起对日外包,就想到了大量的文档和大量的代码工人,想到了详细设计说明书甚至到函数级、伪代码级。

  要不要引入的时候,我们内部也做了争论。觉得对日外包,人家接的单子额比国内客户大,所以也能招聘大规模的员工,而且对日外包,日本人是很理性的看待项目周期的(国内客户要求一个月开发完上线),而且日本人都做了半年到一年的调研和设计分析(国内调研几乎只是一个上午,坐在一起瞎聊,根本不成方法)。所以对日外包不适合咱们。咱们没有钱招聘一定数量的人(即使我们只需要普通员工,而不是人才,我们也没多余的钱),当然我们也无法分离那么多专职的项目管理、开发、测试、文档、配置管理岗位。我们的客户对于软件的认知决定了我们无法在调研、设计上下太多功夫(单子额就那么大,客户认为软件就值那么多钱,当然无须对软件生产各个环节进行重视)。

  不过,我还是坚持进行引入。是骡子是马,咱们拉出来遛遛。还没遛,就说不行。这不是小时候的小马过河了么?

  引了进来,合作伙伴给我们派了一位质量控制部的人员。

  一入手,发现有个很关键的问题,方法的源头。

  因为对日外包,都是接单生产,主要是编码、测试,保证生产进度和质量要求。但编码之前的所有环节,对日外包公司并不清楚。他们只知道拿人家给的设计书开始coding,设计书怎么来的,前面环节产生过哪些文档,不清楚。

  幸亏我们过去有系统的调研方法,从调研描述现状、然后分析优化的组织结构、工作流程、考核报表、岗位职责四大块来描述需求。客户优化后的流程、工具中包含手工纸张信息、EXCEL信息、软件信息。

把这些转变为软件中的功能、权限、报表也一气呵成。组织结构和岗位职责决定了功能点和功能权限、工作流程决定了软件流程、工作流程中使用的纸张信息、EXCEL信息、软件信息就是数据输入,报表就是数据输出。这就是一个企业管理软件的四大块:组织权限、输入、处理流程、输出。

  所以说,企业管理软件的开发是有方法和规律的,比较容易,就连最难的调研和需求管理也有方法。所以企业管理软件的开发,现在主要集中在大规模开发团队的组织、任务调度、人员培训(大规模的开发,必然需要的是一般素质的人员,而非高级人才,否则不可能有那么多资金来实现大规模开发)、大规模开发团队的质量和进度(人多了,各个层次各个水平的人都有,理解都不同,如何保证质量和进度是很关键的,否则很容易项目预算失控。一般素质的人多了,对于管理的要求是很高的,很容易成为乌合之众,只消耗不产出)。我特羡慕KFC,不管我们在大江南北哪里,迟到的KFC是一样的口味和品质,享受的服务和环境也差不多,这很难。那么多店,而且都是授权店而非自主经营店,那么多一般员工,而且员工流失和临时员工也非常多,居然能保证一样,管理水平实在了得。所以我经常学习KFC和丰田,如何使一般员工大规模配合工作。

  对于企业管理软件开发过程中的文档,我们一般有需求分析说明书,其编写格式和思路,和我们的需求调研方法一致,也就是说,我们的需求调研的结果,落实到纸面,就有需求分析说明书,另外还有一份需求调研报告,是偏向于项目过程叙述的。

  需求分析说明书回来,研发部内部会进行大家一起学习理解,然后讨论。

  讨论主要由:需求调研人、业务组组长、测试组组长来参加。一个个的过流程。因为在需求调研期间,去的只是调研人,可能有想不全的地方。如果这样就直接进行开发,无疑会有很多漏洞。这样给开发、测试,都带来了返工修改,给项目管理也带来了项目进度、任务分配的调整,计划的打乱也间接影响了质量管理

  根据大家讨论补充后的需求分析说明书,就比较容易得到我们下面环节的文档。

  首先我们会出功能点文档。

  我们会把需求分析说明书中的业务功能都列出来清单,属于组织结构建立、组织角色、权限分配、登陆验证、基础数据维护之类的都归类到系统功能中。系统管理,各个企业管理软件差不多,我们又有公共的系统管理模块,就不需要重新发明轮子了。所以,我们主要重点是分析业务功能。

  根据需求分析说明书中的每个流程,都先提出来成为一个功能点。然后针对现在整理出来的功能点,再一个个对照流程,如果这个流程复杂,就拆分,把这个功能点拆成几个复杂性和预估工作量差不多的功能点。经过这样的拆分,就形成了最终的功能点文档。

  而功能点之间,根据上述方法的拆分,就形成了功能群。

  功能点就成为功能权限控制的最小单位。功能群就成了软件菜单中的一项。几个相关联的功能群就成为了一个业务子系统。

就这样的方法,使子系统-功能菜单-功能点(可能是某个功能窗口上的功能按钮)三级分开,与组织结构-员工-角色-用户-权限结合。一个软件,未来会成为什么样子,大框架就出来了。

  做功能点清单,就类似于跑马圈地,这个项目到底多大,我先把项目边界框起来,而不要让这个项目无边无界,那自然也不会有可落实的项目进度和项目管理。知道了项目最大做到多大,就能决定是亏是赚,是做还是不做,能不能做了,有可用的时间和人力来做否。

  然后,我们会根据功能点清单,为每一个功能进行优先级的标示。我们通常会把优先级分为三级。这就意味着一个项目,大致分为三个阶段。一级是必须要做的,即使延期也要做,必须调度多加人手多加班也要完成。一级做完后,如果有时间,就把二级完成。如果时间超期,有适度的尽量去完成二级,可以延期,但也要根据预算和时间。如果适当延期也无法完成,我们会给客户去上线实施,变实施边并行开发,使实施团队和开发团队进行并行工作。所以,二级也是重要的功能。三级就是如果时间用完,三级的功能就要舍弃掉不开发。

  一般是,按功能的重要性来划分优先级,我们在之前已经讲过,我们调研需求的时候,就把常用业务和异常业务分开,把每天做的业务,和每周、每月、每季、每年做的业务分开。几个结合特别紧密的,互相关联的,我们也会把他们划分在同一个优先级,需要单独开发的基础数据维护界面,我们也会放在同一个优先级。这样,只要我们项目到期,或者我们迫于竞争突变,我们会随时推出一个可以完整使用的系统。虽然这个系统可能功能简陋,但可以完整处理整个常用业务流程,而不会造成中断,无法处理下去。

  很多开发团队,开发的方法是先字典功能,然后是业务功能,然后是报表。这种开发方法就导致了很多业务系统,客户上线使用了,光输入数据,没有输出,业务系统成了一个闷葫芦,用户得不到使用价值,可能只是减轻了工作量,加快了工作效率,提高了部门间的自动配合。更有甚者,业务功能开发了一半,到处都是断路,走不下去,无法成为一个完整的系统,就是个半成品,上不上下不下,无法适应竞争变化。

原文地址:https://www.cnblogs.com/younggun/p/1748742.html