第五节 模块设计

从总的工作步骤来说,模块设计应该在总体设计完成后才能进行。但是在实际工作中,二者的界限很难明确地划分。例如,在考虑文件的实现方式时,必然会相应地考虑有关的模块用什么方式实现。当然,如果总体方案要求模块的处理方式改变,模块就应该服从全局,进行必要的修改。从这个意义上讲,模块设计是在总体设计完成之后才能正式开始,在此之前只是初步考虑。

模块设计的第一个问题就是确定手工处理和计算机处理的分工与配合。我们前面曾提到,至少在目前阶段,在管理中的计算机应用系统总是两种处理方式相结合的人机系统,不能认为计算机应用系统的每一项工作都应该由计算机来完成。事实上,在应用系统中有些工作是用计算机处理合适,有些工作则是由手工处理合适,并不是一切工作都是用计算机处理合适。

我们试对比一下计算机处理与手工处理的不同特点。在处理的速度上, 计算机比手工快得多,在计算的准确度上,计算机比手工准确得多,在信息存储和记忆的能力上,计算机也比手工强得多。然而,在处理的灵活性上, 计算机就不如手工了,手工处理可以凭借人的智慧和科学知识及至处理一些事先没有预料到的特殊情况,而计算机则必须事先估计到井准备好处理方案,才能处理一些错误及例外情况。手工处理可以处理模糊信息,而计算机在目前情况下则很难。当客观情况发生变化需要修改处理方法时,手工处理就比较容易适应并作出某些改变,而计算机的处理方法则不容易改动,改不好还会出现严重的错误。即使是对同一问题,计算机处理与手工处理也是各有所长、各有所短。例如查错功能,对于一些统计表格中各种复杂的平衡关系,用计算机来核查可以做得又快又好,用手工复核则计算量大得无法胜任, 而且容易算错,对于合理性检验,则手工处理比计算机处理要好得多。这些不同特点的根本点在于计算机终究是一台无生命的机器,它只是按人们事先规定好的程序工作。

因此,我们在考虑系统中各个模块的设计时,需要考虑的不是要哪个不要哪个的问题,而是如何发扬两方面的长处,互相配合,以达到全系统的最优。

除了完全手工方式的模块外,都涉及计算机,因而都需要考虑硬件,软件的要求。对于硬件,以下三方面因素要考虑。

  1. 考虑每一个模块对硬件的要求。对于管理中的应用系统来说,首先要考虑的是对容量的要求,郎对数据量的估计。事实上,每一个模块所涉及的数据包括三类:必须进入内存的,必须放在随机存储设备上的,可以放在顺序存储设备上或脱机存储的。如果不进行这样区分,把所有数据都称作为对磁盘甚至内存的存储需求,是不对的。常见的问题是把可以脱机存储的数据量也加在磁盘的需求量上,由于磁盘的价格较贵,这样做会造成很大的浪费。另外,内存的容量应该包括操作系统、编译系统或其他服务软件、自己的应用程序、数据空间四部分。前两部分由系统提供,可以很快估算出来。自己的应用程序所占的空间也不难查出,一般可以用类比的方法,根据程序的复杂程度估计。用户允许使用的数据空间是由机器本身及程序设计语言所限定的、通过程序设计的技巧是可以控制数据所占的内存数量的。经验表明,

    内存空间不够,常常是由于把可以放在磁盘上的信息,不适应地都搬到内存

里来而造成的。例如,把排序问题完全放在内存里做,就会出现这种情况。尽管现在计算机的内存越来越大,在使用时仍应注意节省。

  1. 在硬件方面要考虑的第二个因素是速度的要求。在科技计算中,由于运算步骤多,速度问题常常是需要放在第一位考虑的,这主要是指主机运算时间。在数据处理工作中,情况略有不同。数据处理的运算一般不太复杂,

    在需要处理的数据不是很大的时候,对于速度的要求并不突出。但是这并不是说,速度因素可以不考虑,当数据量急剧增加时,速度的问题也就会更加突出。这正是某些系统不能实际应用,只能表演的原因。这里所面对的速度问题主要并不是主机运算速度,而是外围设备的速度;具体地说,主要是磁盘的读写时间和打印机的输出速度。此外,也和操作系统、文件组织等软件问题有密切关系。在微型机范围内,由于主机类型较少,没有多少选择的余地,所以,对计算机提出的速度要求也就是对外围设备和软件的要求。对于大型机,情况是有所不同的。在模块设计中,应该对于大批量输出的速度以及对处理的响应时间,提出具体的指标,以便首先从配置外围设备上提供基础,然后再从软件技术上设法提高效率。认为计算机运算非常快,不必专门考虑速度是不对的。

  2. 还要考虑的是输入输出的要求,除了上面已经提到的速度要求之外,还有方式、质量等要求。例如,在

    I 类和 D 类中,是否需要录入汉字, 采用什么方式录入;在 O 类中,输出数据的精度、格式有何要求等等。这些要求直接影响设备的选择。如显示终端的分辨率应要求多高,打印机的档次如何选择等等。

对于软件要求主要有以下四个方面。

  1. 对操作系统的要求。前面已经提到,系统在使用者面前表现出来的速度或效率,与操作系统有很大关系。一般来说,如果对速度要求较高或对于某些业务要求快速响应,则应考虑实时操作系统;如果时间要求不高,而外围设备很多,许多不同类型的用户需要共享各类资源,则应考虑分时操作系统。与机器一样,操作系统也是各有所长,各有一定的服务对象的,必须根据实际使用情况的需要而定。在选择操作系统时,要考虑的因素包括:功能、使用方式、安全保密、系统开销、速度、与其他软件的关系(能支持哪些软件)、价格。有时,在一些多种用途的关系中,购置若干不同的操作系统,以便根据实际使用的需要而随时替换,对于提高设备的利用率是有利的,

    当然,这就增加了软件的开支。

  2. 对程序设计语言的要求。多数的应用程序都是需要用高级语言编写的,因此需要根据应用的实际情况和模块的实际情况采用适当的语言。从整个系统来说,不一定要用统一的语言,各种不同语言之间相互调用子程序一般都是可以的(个别语言有一些困难,如

    RPG,BASIC,但也可以通过一些较深入的技巧加以解决)。为了使系统易读易改易于移植,一般来说,用比较通用的高级语言编写程序是比较合适的,只是在对效率有特别要求的地方才使用依赖于机器的特殊语言或汇编语言。

  3. 数据库管理系统和应用软件包。如果系统中用到数据库技术,那么就需要配备数据库管理系统。从实质上讲,数据库管理系统是用一批事先编好的程序,为使用者自动处理大量数据间的组织和管理工作,如拉链、排队等问题。因此,如果需要处理的对象的数据结构比较复杂,使用数据库是合适的,可以节省软件编制的时间和精力。如果处理的数据比较简单,只是用

到数据库管理系统的少量功能,那就不必使用数据库。因为数据库管理系统不但要花钱购置,而且要占用相当大的存储容量和降低处理速度,在这种情况下,采取索引文件的方式反而效果更好。另外,在统计、排序、预测、规划等方面的大量常用算法,目前都已形成一些专用的应用软件包,我们可以也应该尽量使用已有的成果,避免不必要的重复劳动,提高系统研制的效率。当然,要注意根据需要购置,并且要花一定的开发理解和使用的功夫。

  1. 常用的服务软件,如文本编辑(EDITOR),文件复制,查错程序

(DEBUG)等,也是十分重要的。这些功能为我们调试程序、研制系统提供了工作环境。这个工作环境好,工作的进展就会顺利得多。这些也是在配置软件时应该考虑在内的。

总之,对于涉及计算机处理的模块,我们都要根据其设计要求,规定出对硬件和软件的要求。注意这里提出的只是要求,具体还应在可能的选择范围内综合考虑,另外,许多情况下,单位已有一些计算机资源,包括硬件、软件以及技术人员对某一型号计算机的知识,应该把这些资源充分利用起来,这在经济上常常是十分重要的。