大型MIS软件开发的几点体会
北京开思软件技术有限公司 石宏峰
大型MIS软件的开发工作是一项复杂而艰巨的系统工程,它涉及到软件工程、数据库设计、应用业务、项目控制、人员管理和计算机技术等多种知识和经验,因此任何一项大型MIS软件的开发成功都是一件极不容易的事。虽然当今的软件工程理论和数据库设计理论为我们提供了多种系统开发的方法和手段,但在实际开发工作中经常遇到的情况却是:做出来的系统不符合要求,需要大量修改;开发工作进度难以控制,工期一拖再拖;甚至有些通过了验收的项目也难逃在实际使用过程中搁浅而被束之高阁的厄运。在这里笔者姑且不对造成这种情况的原因和当前一些项目验收中存在的问题进行分析,而是就避免这些问题发生的一些做法与从事软件开发工作的同行进行一下探讨。
在多年的开发工作中,笔者主持过许多类型管理系统的设计、开发和项目管理工作,包括:学籍和考试管理、汽车租赁管理、图书馆管理、公路管理、MRPⅡ和ERP管理等。在这些项目的系统调研、总体设计、模块设计、编程、测试和项目管理工作中,我深切体会到,要想高效率、高质量地完成项目开发工作,应努力做好下面的几项工作。
一、制定开发规范
MIS软件,特别是大型的MIS软件是一项浩大的工程,需要十几个人、几十个人甚至几百个人合作开发几个月、十几个月甚至几年。要保证系统的协调性、统一性和连续性,就需要在开发之前制定严格、详细的开发规范。
开发规范的内容主要包括:系统设计规范、程序开发规范和项目管理规范等。系统设计规范规定字段、数据库、程序和文档的命名规则,应用界面的标准和风格,各类报表的输出格式等。程序开发规范对应用程序进行分类,如可将程序分成代码维护类、业务处理类、业务查询类和统计报表类等。并给出各类应用程序的标准程序流程,有必要时可编制出标准程序。项目管理规范规定项目组中各类开发人员的职责和权力,开发过程中各类问题(如设计问题、程序问题等)的处理规范和修改规则,开发工作的总体进度安排和奖惩措施等。
开发规范的制定需要花费一定的时间和精力,但是"磨刀不误砍柴功",它相当于把今后开发过程中开发人员都要遇到的问题提前做了一个考虑。有了开发规范,在后续的开发过程中,设计人员就不必每次考虑如何为一个字段命名,编程人员也不必去想某个程序的结构和布局应当怎样,测试人员也有了判断程序对错的标准。
开发规范在项目开发工作中起着事前约定的作用,需要所有开发人员共同遵守。它约束开发人员的行为和设计、编程风格,使不同子系统和模块的设计、编程人员达成默契,以便形成整个系统的和谐步调和统一风格,也便于今后的系统维护和扩展工作。
二、合理的人员构成与管理
开发项目的成功需要有一个好的开发组。高效的开发小组要有一个合理的人员构成。一般开发组应包括项目负责人、系统分析员、系统设计员、程序员和测试人员等。开发组的人员要分层次,下层人员要服从上层人员的领导。
项目组要有一个项目负责人,他对整个项目有控制和决定权,对项目开发的成败负责。软件开发中遇到问题的答案往往不止一个,因此需要有人对这些问题有决定权,避免扯皮。大型项目的负责人应有丰富的项目管理经验和数据库设计经验,另外还需对用户的实际业务有较全面和深入的理解。
系统分析员协助项目负责人进行系统分析工作,并负责某一方面的具体设计工作;系统设计员帮助系统分析员进行模块设计;程序员按照模块设计进行编程;测试人员直接受项目负责人领导,为整个项目的质量把关。所有项目组人员都应对用户的实际业务有不同程度的了解,这样有助于系统的开发工作和系统最后的成功。
三、严格控制开发进度
项目进度管理是软件开发中最难以做好的一项工作。编程工作本身是一个难以量化的工作,再加上开发过程中对设计的修改等因素,使得项目开发工作经常不能按预计的时间完成。
为了管理好项目进度,首先要制定一个可行的项目进度计划。一开始,项目进度计划只能根据项目的内容、工作量和参加人员进行大致地估算,包括系统分析和设计时间,编程、测试时间和文档制作时间,估算时应根据业务复杂程度加入一些缓冲时间。系统分析、设计完成后,根据程序清单可估算出每个程序的编程时间(根据程序类型和复杂程度),并在此基础上估算这种程序量下的测试、文档制作和缓冲时间,经过这样估算再做出的进度计划已经可以做到相当准确和细致了。实际上项目进度计划是一个由粗到细且不断调整的计划。
每周要将项目进度情况与项目进度计划进行对比。对于拖延的工作如无充份理由,则应督促有关人员加班或提高工作效率赶上进度;如有正常理由,在无法追回的情况下可以修改进度计划,申请延期。
项目进度管理一定要细致和严格,像设计、编程这种难以量化的工作是很难笼统地去控制进度的。
四、系统设计要超越业务
软件设计的好坏直接关系到项目开发的成败。在设计之前一定要对用户的业务做系统的调研,深入、全面地了解用户业务。在调查时要注意以下几点:
1.有时某个部门的业务由几个业务人员分管,调查时不能只听一个人的叙述。
2.要详细了解一个部门与其他业务部门的业务关系。
3.要了解当前业务的难点,在设计时着重解决。
4.用户不可能一次将所有业务描述清楚,所以调查要由浅入深,分多次进行。
5.调研要以我为主,围绕主题提出问题,不要陷入用户的琐碎业务中。
6.要注意收集原始凭证、报表和文字资料。
在根据调研结果做设计的时候,不要过于迷信一些教科书上介绍的数据库设计方法。在多年的实践中,我发现许多方法不但没用而且还增加工作量,在业务关系比较复杂的情况下,一些数据库设计方法是根本不能推导出设计结果的。而且直接根据收集资料和现行业务去推导数据库结构的做法也是不可取的。这是因为:
1.用户描述的业务可能不是一个好的管理方法。
2.用户描述的各部门间的业务数据传递仍是手工做法。
3.用户描述的业务不是规律性的业务流程,因此会经常发生改变。
4.用户描述的业务不适合于用计算机去实现。
5.用户的输出表格为固定的内容,不能适应业务的变化和扩展。
所以在系统设计时要超越当前的业务,抽象出业务中的管理思想和规律性的东西。为了适应
计算机管理,有时也要改变用户的业务流程,这时要与用户协商,让其理解这种改变的意义。另
外设计还应留有可扩展的余地。
五、程序设计要实用
MIS软件最终的目的是要用户使用。因此在程序设计时必须立足于操作简单、实用,并真正能为用户解决实际的业务问题。不能因为怕编程麻烦而将程序功能设计得过于简陋。
为方便用户使用,应用程序中起码应具有下面这些功能:
1.提示功能。屏幕上的代码信息(如客户代码、科目代码等)要有提示操作,使用户不必记忆很多的代码。
2.操作确认。对于一些不可恢复的操作(如记录删除等)应有操作确认,避免误操作。
3.数据校验。对于一些有限制条件的输入信息,可以自动校验其正确性,避免错误数据进入系统。
4.错误恢复。用户无意中进行了错误操作,应能有相应的处理程序挽回错误。
5.缺省赋值。对于一些常用信息可以设置缺省值,使用户不必每次都输入这些信息。
6.记录复制。用户可以复制一条或多条已存在的记录,并可修改复制结果,形成新的记录。
六、测 试
测试是保证程序质量的一项重要工作。但测试只能证明程序有错,而不能证明程序无错。所以任何软件系统都不能保证内部没有错误。为了确保软件系统的安全与可靠性,一方面要加大测试力度,另一方面要抓住测试重点。
从测试的角度来说,可将MIS软件的程序分为两类:修改数据库类和信息输出类。前一类主要是业务处理程序,是测试重点。对于前一类程序还可以进一步细分为:基础数据采集程序和数据处理统计程序。数据采集程序主要记录原始凭证信息(如发票、凭证、入/出库单等),数据处理统计程序是对数据采集程序记录下来的数据继续做加工。这两类程序中基础数据采集程序又是测试的重点。
以上是笔者在以往的MIS软件开发过程中总结出的几点经验,希望能给从事相关工作的同行们提供一点帮助。