第一节 信息系统的设计
系统设计阶段的主要内容包括新总体结构设计、代码设计、数据库设计、输入设计、输出设计等等。
一、系统的总体结构设计
系统的总体结构设计是要根据系统分析的实际情况来对新系统形式和可利用的资源进行大致设计。它是一种宏观的、总体上的设计和规划。
1.子系统划分
子系统划分就是将实际对象按其管理要求、环境条件和开发工作的方便程度,将其划分为若干个相互独立的子系统。但是应当注意,目前对于卫生组织的划分还没有一套为世人所公认的经典化方法。在实际系统开发过程中,除了一些成型的方法以外,还有大量的艺术成分在内,其中就包含了个人长期积累的工作经验、个人的习惯、对问题的不同理解等。尽管如此,人们在长期的实践中还是摸索出了一套子系统的划分方法。这些方法虽然不太成熟,但已为广大开发人员在实际开发时所采用了。
(1)子系统划分的原则:在系统划分的过程中,为了便于日后系统开发和系统运行,划分时应遵循以下几个原则。
●子系统要具有相对独立性。子系统的划分必须使得子系统内部功能、信息等各方面的凝聚性较好,实际中,总希望每个子系统或模块相对独立,尽量减少各种不必要的数据调用和控制联系,并将联系比较密切、功能近似的模块相对集中,这样对于以后的搜索、调试、维护都有好处。
●要使子系统之间数据的依赖性尽量小。子系统之间的联系要尽量减少,这样接口会比较简单、明确。一个内部联系紧密的子系统对外部的联系往往比较少,所以划分时应将联系较多者列入子系统内部。
●子系统划分的结果应使数据冗余较小。如果忽视这个问题,则可能会使相关功能的数据分布到各个不同的子系统中,需要调用大量的原始数据,需要保存和传递大量的中间结果,需要重复进行大量的计算工作。于是,整个系统中的程序结构紊乱,数据冗余,不但给软件编制工作带来很大的困难,而且系统的工作效率也会大大降低。
●子系统的设置应考虑今后管理发展的需要。为了适应现代管理的发展,在新系统的研制过程中应设法调整或改造老系统的缺陷。同时利用一定的预测技术考虑今后业务和管理发展的要求。只有这样才能使系统实现后,不但能够更准确、更合理地完成目前系统的业务,而且还可以支持更高层次、更深一步的管理决策。
●子系统的划分应便于系统分阶段地实现。信息系统的开发是一项投资大、工期长的工程,它的实现一般都要分期分步进行,所以子系统的划分应能适应这种分阶段的实施。
●子系统的划分应考虑到各类资源的充分利用。一个适当的系统划分应该既考虑有利于各种设备资源在开发过程中的安全使用,又考虑各类信息资源的合理分布和充分使用。例如对于网络资源就需要认真考虑,减少系统在某一时间段内对网络资源的过分依赖,同样,系统划分也需要平均地使用输入、输出、通讯等设备,以减轻这些设备的使用压力。
(2)子系统划分的方法。目前系统划分的方法主要有:按功能划分、按业务处理顺序划分、按数据拟合程度划分、按业务处理过程划分、按业务处理的时间关系划分和按业务展开的地域环境条件划分。这几种划分方法的比较如表9 1所示。
表9 1 各种系统划分方法比较
(续表)
这里的指标是针对一般情况而言的。在实际应用中,仍应以具体系统分析的结果确定,不能绝对地去评价某个划分方法的好坏。
2.网络的设计
网络设计就是如何将初步规划中的各个子系统在企业组织内部用局域网连接起来,以及今后系统如何与外部系统相连接的问题。实际上,信息系统开发过程中的网络设计不是去开发一个计算机网络,而是根据实际情况的需要,利用已有的网络技术来规划、配置和选用一个网络产品。
将现代通讯技术与计算机数据处理技术相连接形成网络信息系统,这是当今信息系统发展的一个重要标志。它对于最大限度地发挥信息系统的综合优势和资源共享都非常重要。
在确定了系统的划分后,就可以考虑各子系统的设备(主要是计算机和网络设备)配置问题,以及如何将这些分布的设备和任务、功能、数据资源等集中统一管理的问题。因此在网络设计时,就要确定网络和设备配置时应考虑的问题和指标的选择。
(1)设备选配的依据。确定网络和计算机设备配置的原则最重要的,一是应完全根据系统调查和系统分析的结果来考虑硬件配置和系统结构,二是一定要考虑到实现上的可能性和技术上的可靠性。因此,确定设备配置时要考虑的有:
●根据实际业务需要考虑这个管理岗位是否要亏本计算机设备,如打印机、多媒体设备等。
●根据实际业务性质决定这个管理岗位是否需要配置终端设备,还是配备一台具有处理功能的计算机。
●根据现场办公室的物理位置分析和数据通讯要求决定是否需要与网络连接及连接的方式。
●根据调查估计的数据容量确定网络服务器或主存储器的最低下限容量,一般是以估计数据总容量的3~5倍作为网络服务器的下限配置容量。
●根据实际业务要求和用户对软件工具的掌握程度来确定新系统拟采用的软件工具。
●根据实际业务要求确定计算机及外部设备的性能指标。
(2)网络选择的指标:设计网络需要考虑多个技术指标。
●网络的类型。这是建立模拟网还是建立数字网的问题。所谓模拟网就是网络上传输的是模拟信号,电话网就是模拟网络。电话网是目前最普及的网络。所谓数字网就是网络上传输的是数字信号。数字信号是非连续的离散的信号。计算机中的信号就是数字信号。如果在模拟网上传输数字信号,就需要在通讯的两端加装调制解调器MODEM。利用电话网传输计算机信号,其好处是方便、快捷、容易、投资少;缺点是没有系统管理程序,数据传输的速度有限。虽然建立数字网来传输计算机信号可以做到传输速度快、传输容量大,但其建网的投资要高于建立电话网的,而且工程也比较大,但可以有系统管理程序,还可以实现分布式数据库管理系统,使用方便,可靠性高。
●网络的属性指标。主要有以下3项指标:
网络所使用的数据通讯频带一般有基带和宽带两种,如果是考虑多媒体信息传输时或其他用途时,则要考虑选用宽带网;
网络的传输范围一般有局域网和广域网两种,对于组织内部的信息系统而言,只要考虑本系统选用的局域网以及如何通过广域网与其他系统相连的方式即可;
网络用途,一般有专用网和公共网两种。
●传输介质和速率指标。网络数据的传输速度有相当一部分是由传输介质决定的。目前常用的有同轴电缆、双绞线、光纤等几种。
●网络结构。这是指网络的拓扑结构,即网络的物理连接方式。目前有总线型、环型、星型、树型、网型等几种。
●网络的协议。协议是指网络内部数据传递关系的一种事先约定。每一个类型的网络都有严格的协议,网络上传递数据的每一步操作都必须严格地按协议操作。不同网络之间的数据传输必须通过一个转换系统来沟通两个不同协议之间的约定。
●网络管理软件。网络管理软件是决定网络功能好坏的关键,一般网络管理软件包括:分布式数据库系统、网络运行管理系统、文件管理系统、网络协议以及网络安全保密系统等等。
●网络的访问规则。网络的访问规则是指网络控制器如何询问网络上各工作站或节点有无通讯请求的一种形式。常用的有轮询、令牌、总线传送、载波侦听、多点送取、碰撞检测方法等等。
●通讯方式。这是指网络内数据传输的方式。常用的有广播方式、点对点方式、通过服务器传送方式等。
●网络配件指标。这里主要考虑通讯的接口、网关、集线器、路由器等等。
(3)软硬件选择指标:在满足实际业务需要的前提下,只要资金许可,就应优先购置技术成熟、性能优越、售后服务可靠的产品。
在硬件方面,要考虑技术是否成熟、维修是否方便、新老设备是否兼容、日后扩充是否方便等等。当然不能忽视了主机的结构、处理速度、性价比、内存容量、I/O通道数、系统的读写/存储周期等指标。
在软件方面,主要考虑以下几个问题:
●操作系统。
●数据库系统。
●程序设计语言,第四代程序生成语言。
●各种分析与测试工具。
●应用系统开发。
●图形软件。
●各种应用软件包。
考虑软件指标必须与系统开发所采用的战略和方法结合起来。在信息系统开发过程中,开发方法以及相应软件工具的选择对系统开发是否顺利都是至关重要的。
3.系统处理流程
在确定了子系统的划分和系统的设备配置之后,还必须根据系统分析方案大体勾画出设计者关于每个子系统内部计算机处理流程的草图,以此作为后续设计详细模块调用关系、模块处理功能以及数据和业务在新系统的计算机内部处理过程的基础。计算机处理流程的设计既不是对具体处理或管理分析模型细节的描述,也不是对调用关系或具体功能的描述,它只是设计者在系统详细设计过程中,对信息在计算机内部处理过程的大致想法。系统处理流程的设计不是固定不变的,常常会随着后续的设计过程而不断地调整和改变。
二、代码设计
代码就是以数字或字符(包括汉字)来代表各种实体。代码设计就是给每个物理实体一个编号或一个标识,如会计科目代码、在校学生的学号等等。设计出一个好的代码方案对于系统的开发工作是一件极为有利的事情。它可以使很多机器处理变得十分方便,而且还把一些现阶段计算机很难处理的工作变成很简单的处理。
1.代码设计的目的
(1)唯一性:在现实世界中,有很多事物如果不加标识,用计算机处理就会显得十分困难。但如果能将原来不确定的实体唯一的圆心标识,则处理就会变得相对简单得多。这就是代码设计的首要任务。
(2)规范化:在满足唯一性的前提下,要注意代码的规范化问题。例如产品代码,可以如图9 1所示来设计。XX XX XXX XXX(3)可识别化:在现实生活中,有些问题内容比较产产产产复杂,很难用一些精确的指标来唯一识别。这时代码品品品品的设计就肩负着帮助机器识别事物的任务。例如,效类系规序别列格号率一般是用文字描述的,且各人的描述也不尽相同,这
图9 1 产品代码设计样机器是无法辨识的。这时只能依靠代码,依靠建立一整套经济效益的指标体系,在此基础上通过代码来识别。
(4)标准化:信息系统所用的代码应尽量标准化。在实际工作中,应该尽量采用国家或行业的代码体系标准。
2.代码分类的原则
所谓代码分类,就是将所要处理的对象要求科学地、合理地分门别类。准确的分类是系统处理工作标准化、系列化、合理化的基础和保证。
一个良好的分类既要保证处理问题的需要,又要保证科学管理的需要。因此,分类时要遵循以下几点。
(1)必须保证有足够的容量和足以包括规定范围内的所有对象,也包括未来的实体对象。如果容量不够,将不便于以后的变化和扩充,随着环境的变化这种分类很快就会失去生命力。
(2)按属性系统化。分类必须遵循一定的规律。应当按照处理对象的各种具体属性系统地进行。
(3)分类要有一定的柔性。所谓柔性是指在一定情况下分类结构对于增设或变更处理对象的可容纳程度。柔性好的系统在一般情况下增加分类不会破坏其体系结构。
3.代码的种类
代码就是对实体的编码。目前常用的编码归纳起来有下述几种形式。
(1)顺序编码:这是按照某种顺序形式编码。如根据先来后到的次序编码等。这种编码的优点是简单,易追加,但缺点非常明显,就是可识别性差。
(2)组码编码:这是对自特定号码开始至另一特定号码为止的一定对象群使用连续数字来编码。例如,目前上海公交的号码线路为:
01~199,常规公交线路;
200~299,高峰时段公交线路。
组码编码的特点是能够表示对象的分类体系,而且码的位数少,但不太适合于计算机的处理,一般用于需要分级而位数又有限的场合。
(3)群码编码:这是将代码中的不同位来代表不同的类别。如:
1xxx,最高位代表是材料大类,1材料;
11xx,次高位表示材料大类下的中类,11金属材料;
111x,第三位表示金属材料下的小类,111带钢;
1111,第四位表示钢材下的一群小类,1111钢板。
群码编码的特点是每位(或者是若干位)必定代表特定的一群项目,其构成非常自然,也容易分类,容易追加,容易记忆,而且位数不多。这种编码一般用于对分类要求比较高的场合。
(4)实数编码:这是把对象本身所表示的全部或部分的数字编入代码中。例如我国居民身份证的号码目前有15位和18位两种。其中在18位的编码中,从第7位到14位就是身份证持有人的出生年月日。这就是实数码。
实数码编码的特点是不需要记忆代码的含义,代码所表示的就是实际意义的数据。其缺点就是使用倍数较多,特别是当实数码的倍数不固定时,计算机处理就会比较困难。
(5)字符编码:这是以字符形式(如英语、拼音字母、中文等)实施对对象的编码。
字符编码的特点是编码所占的倍数比较少,而所表示的对象种类比较多,且有助于记忆。其缺点是增加了计算机进行分类处理的难度,且校对也不容易。
(6)混合编码:这是以数字编码与字符编码相混合的一种编码形式。混合编码在种类管理中是比较常用的,如GB XXXX XX表示的是国家标准的某类编码,我国的汽车牌照编码还是中文+英语字母+数字的编码。
混合编码的特点是容易记忆,容易使用,容易表述对象的系列性,其缺点是不易校对。
4.代码的校验
代码必须校验。当输入一旦有错的数据记录时,可通过代码检索找到它进行修改。但是当代码出现错误时,这个数据记录就会消失在文件之中,而且要找到它会十分困难。当系统在处理过程中一旦触动到它,该错误代码的记录就会随机地冒出来,并造成一些难以预见的后果,如同计算机的病毒一样。因此,代码必须校验。
代码的校验可以在原代码的基础上增设校验位来实现,也可以采取加权取余的方法来校验,甚至可以采用有一定技术要求的校验方法来实现(具体方法请参阅有关的书籍,本书从略)。不论采取哪一种校验方法,应该遵循的原则是占用资源少、速度快、效率高。
三、数据库设计
信息系统的主要任务是通过大量的数据获得管理所需要的信息,这就要求必须有效地存储和高效地管理大量的数据。因此,建立一个良好的数据结构和数据库,使整个系统都可以迅速、方便、准确地调用和管理所需要的数据,是衡量信息系统开发工作好坏的主要指标之一。
一个好的数据结构和数据库应该能充分反映业务发展变化的状况,充分满足组织机构的各级管理要求,同时还应该使得后继系统的开发变得更加方便、快捷,系统的开销减小,易于管理和维护。
数据结构的组织和数据库文件的设计就是要根据数据的不同用途、使用要求、统计渠道、案例保密性等等来决定数据的整体组织形式、结构、类别、载体、方式、保密等级等一系列的问题。
1.规范化地重组数据结构
要规范相关的数据结构,首先需要创建实体关系(E R)图。在创建过程中,可以遵循下述步骤。
(1)定义实体。回顾DFD图,并列出已收集到数据的人、地点、组织、事物或事件,确保定义的全部数据已保存。例如,租车公司的人员包括客户和员工;地点包括租车地和返还地;事物包括车辆、租车合同和客户预单;事件将包括预订车辆、执行租车合同和返还车辆。客户的偏爱和租车历史信息也应保存在数据库中。
(2)定义两个或多个实体间有意义的事件或活动。这个任务要求分析企业的运行情况,并定义实体和实体间关系的性质。例如,一名客户可多次预订,一个地点可以有多种车辆供出租。
(3)分析相互间活动的性质。该活动涉及实体的一个还是多个例子?模式总是一样的,还是依赖于某些因素?例如,考虑客户与预订之间的关系,有且只有一个客户可以有一个、多个或没有预订,但每一个预订必须有且只有一个客户。同样,一个地点可以有一辆车、多辆车或没有车,但每一辆车必须有且只有一个存放地点。
(4)画E R图。可以手工画E R图或使用一个CASE工具,仔细地研究这个图以保证所有的实体和关系都准确地表示出来。如果使用属性符号,要保证符号能正确标识每一个关系的性质。
理解了数据库元素包括实体和它们之间的关系之后,就能开始设计记录和建立数据库了,设计时需要对记录进行规范化处理。
对于原始的数据记录往往存在着数据冗余、修改异常、插入困难、删除不合理的情况。根据数据库的理论可以对其进行规范化的处理。规范化是确定和纠正表设计中固有的问题并降低其复杂性的过程。表设计定义了字段并确定了主关键字和表中所有记录。对初始数据库进行规范化工作,就是优化整个表设计,使得它简单、有弹性并没有数据冗余。
在数据库的相关课程中,我们已经学习了对数据记录规范化的处理。典型的规范化过程包括3个阶段:第一范式、第二范式和第三范式。这3个范式构成了逐步优化的过程。
●第一范式(1NF)。如果一条记录中不包括重复字段,它就是第一范式(1NF)。重复字段是一个或一组数据项在单条记录中出现若干次。
●第二范式(2NF)。在第二范式中运用了函数依赖的概念。如果一个表设计是符合第一范式的,并且所有非主关键字字段都完全依赖于整个主关键字,它就是第二范式(2NF),即第二范式不存在部分依赖。如果1NF中有一个字段只依赖于组合主关键字的一个字段,那么这条记录就符合2NF。符合1NF的且以单个字段为主关键字记录自然符合2NF。
●第三范式(3NF)。如果一条记录是2NF并且没有非关键字段依赖于另一个非关键字段,则它就是第三范式(3NF)。请注意:非关键字段不是主关键字的候选关键字。
下面以图9 2所示的E R图为例来说明规范化的处理过程。通过调查,学生实体的初始数据表包括学号、学生姓名、总学分、积点、导师号、导师姓名,以及学生所选的每一门课程的课程号、课程名和成绩等一些属性项。
图9 2E R图
这里有3个实体:导师、学生和课程。
学生(学号,学生姓名,总学分,积点,导师号,导师姓名,(课程号,课程名,成绩));导师(导师号,导师姓名);
课程(课程号,课程名,学分);其中,导师和课程记录已符合3NF。然而学生记录是非规范化的,因为它包含重复字段组(课程号,课程名,成绩),如表9 2所示。
将学生记录转换成1NF,需要扩张主关键字以包含重复组的关键字,然后移走重复组,产生:
学生(学号,学生姓名,总学分,积点,导师号,导师姓名,课程号,课程名,成绩)。
表9 3给出了符合1NF的学生记录实例。
表9 2 学生记录
表9 3 学生记录实例
在本例中,记录中的任意字段都依赖于主关键字的一部分,如学生姓名、总学分、积点、导师号、导师姓名都只和学号有关系,和课程号没有关系;而课程名只取决于课程号,和学生号没有关系。只有成绩取决于整个主关键字。
为主关键字中的每个字段和字段组合建立记录,然后与适当的关键字组合产生下面的表设计:
学生(学号,学生姓名,总学分,积点,导师号,导师姓名);
课程X(课程号,课程名);
成绩(学号,课程号,成绩)。
原来的学生记录已经被转换成符合2NF的3条记录。课程X记录和原始的课程记录有相同的关键字,将课程X记录与课程记录合并成1条课程记录,其中包含两个记录的全部字段。在这个例子中,课程X记录中的所有字段原始的课程记录中都存在,这样可以保留原始课程记录并丢弃课程X记录。如表9 4~表9 6所示。
表9 4 学生记录
(续表)
在这3个表中,课程和成绩记录是符合3NF的,但学生记录不符合3NF,因为导师姓名字段依赖于非主关键字字段导师号。将学生记录转换成符合3NF,需要从学生记录中移出导师姓名,将它与导师号组成新的记录导师X(导师号,导师姓名)。然而,新的导师X记录与原始的导师记录完全一样,所以并不需要新的记录。表9 7~表9 10给出了符合3NF的学生、导师、课程和成绩记录的样本数据。
表9 7 学生记录
表9 8 导师记录
表9 9 课程记录
表9 10 成绩记录
最后,将所有实体设计为符合3NF的4条记录:
学生(学号,学生姓名,总学分,积点,导师号);
导师(导师号,导师姓名);
课程(课程号,课程名,学分);
成绩(学号,课程号,成绩)。
现在有4个实体:学生、导师、课程和成绩。图9 3给出了规范化后的完整的E R图。从此图中可以看到,学生和课程之间的M∶N关系被转变成学生和成绩之间的1∶M的关系及课程和成绩之间的1∶M的关系。
图9 3 规范化后的完整的E R图
作为系统分析员,在实际工作中将会遇到更加复杂的设计。因此作为一个系统分析员,应该知道除了3NF格式外,还有其他的范式存在,只是在大部分管理信息系统中很少用到。
2.数据库的设计
数据库的设计由多个步骤实现。
(1)需求分析:需求分析是数据库设计的起点和基础,也是其他设计阶段的依据。其主要任务是对信息系统所要处理的对象(组织、企业、部门等)进行全面的了解,收集用户对系统的信息需求、处理要求、安全性和完整性要求,并以数据流图和数据字典等书面形式确定下来。
实际上需求分析主要解决了这么几个问题:一是调查未来系统所涉及的用户的当前职能、业务活动及其流程;二是确定用户对未来系统的各种要求,包括信息要求、处理要求、安全性和完整性要求;三是深入分析用户的业务处理,用数据流图(DFD)表达整个系统的数据的流向和对数据进行的处理,描述数据与处理间的关系;四是分析系统数据,产生数据字典,以描述数据流图中涉及的各数据元素、数据结构、数据流、数据存储和处理等。
需求分析的工作在系统分析阶段已经完成,在系统设计阶段,主要完成数据库的概念结构设计、逻辑结构设计和物理设计。
(2)概念结构设计:在进行概念结构的设计时,要做的工作不是直接将需求分析后得到的数据存储格式转换成数据库管理系统(DBMS)能处理的数据库模式,而是将需求分析得到的用户需求抽象为反映用户观点的概念模型。概念模型的主要特点是:
●能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据库的处理要求,它是现实世界的一个真实模型。
●概念模式不含具体数据库管理系统所附加的技术细节,容易被用户理解和接受,这样就可以更好地反映用户对信息的需求。
●当应用环境和用户的需求发生变化时,容易对概念模型进行修改。
●易于向关系、网状和层次等其他模型转换。
描述概念模型的有力工具是E R图,利用E R图设计概念结构的步骤包括:局部E R图的设计和全局E R图的设计。
局部E R图的设计过程如图9 4所示。首先,根据需求分析所产生的文档(数据流程图和数据字典)确定每一局部结构的范围,然后分别设计每一局部结构的E R图,直到所有的局部E R图都设计完为止。这一部分的难点在于如何从众多的数据对象中抽取实体和属性,如何确定一个对象到底是实体还是属性。
全局E R图的设计过程见图9 5。首先依次取出局部E R图,对它们进行合并,直至所有的局部E R都合并完为止。
在合并的过程中,需要检查并消除局部E R图间的几类冲突:
●属性冲突:包括属性域的冲突和属性取值单位的冲突。属性域的冲突是指同一属性在不同的局部E R图中有着不同的数据类型、取值范围或取值集合。例如,有的局部E R图中的数据类型是长度为2的字符串,而在另一局部E R
图9 4 局部的E R图
图9 5 全局的E R图
图中,同样的数据类型是长度为1的整数。属性取值单位的冲突是指同一属性在不同的局部E R图中具有不同的单位。例如,产品的数量单位,有的局部E R图使用“箱”,而有的使用“打”。
●命名冲突:包括同名异义和异名同义两种。同名异义是指具有不同意义的对象在不同的局部E R图中却使用了相同的名字。而异名同义是指具有同一意义的对象在不同的局部E R图中却使用了不同的名字。
●结构冲突:既指同一对象在不同的局部E R图中具有不同的抽象,也指同一实体在不同的局部E R图中包含不同的属性个数和排列次序,又指实体间的联系在不同的局部E R图中具有不同的类型。
消除冲突可能需要借助于管理上的一些方法,如上述冲突中的前两类冲突主要通过行政协商手段来解决,而第三类冲突必须根据实际的应用进行调整。
完成了局部E R图的合并之后,检查合并后的E R图中有无冗余数据和冗余关系,如有则根据实际情况消除冗余。当然,有时为了提高系统的效率,也可以保留一些冗余。
(3)逻辑结构设计:逻辑结构设计的任务是根据概念结构设计的结果和需求分析阶段得到的数据的完整性要求与安全性要求,再综合考虑所选择的具体数据库管理系统的特点,设计整个数据库的逻辑结构(即一组数据表),包括各数据表的名称、每张表中各字段的名称、数据类型、取值范围、完整性约束条件、安全性要求等内容。
对逻辑结构的设计过程是:首先根据前面的设计结果和具体的DBMS产品的特点,将全局E R图转换成一个初始的数据库逻辑结构。然后,对其中的每一个数据表进行规范化设计。
(4)物理设计:数据库的物理设计是指为给定的一个逻辑数据模型选择最适合应用环境的物理结构。关系数据库的物理结构主要是指数据的存取方法和存储结构。
数据库的物理设计分为两个部分,首先是确定数据库的物理结构,然后是对所设计的物理结构进行评价。
为确定数据库的物理结构,设计人员必须做到:详细了解给定的DBMS的功能和特点,特别是该DBMS所提供的物理环境和功能;熟悉应用环境,了解所设计的应用系统中各部分的重要程度、处理频率、对响应时间的要求,并把它们作为物理设计过程中平衡时间和空间效率的依据;了解外存设备的特性,如分块原则、块因子大小的规定、设备的I/O特性等等。
一般来说,物理设计的内容包括如下几个方面:
●确定数据的存储结构。主要是考虑存取时间、空间效率和维护代价间的平衡。如在引入冗余数据以加快存取速度时应兼顾系统的空间效率。
●选择合适的存取路径。例如,确定应该为哪些关系模式建立索引,索引关键字是什么等等。
●确定数据的存放位置。例如,确定数据存放在一个磁盘上还是多个磁盘上,什么数据应存放在高速存储器上,什么应存放在低速存储器上等等。
●确定存取分布。许多数据库管理系统都提供了一些存储分配参数供设计者使用。例如,缓冲区的大小和个数、块的长度、块的大小等等。设计者必须规定其中的一些参数的设置。
由于在物理设计过程中需考虑的因素很多,包括时间和空间效率、维护代价和用户的要求等等,对这些因素进行权衡后,可能会产生多种物理设计方案。因此需要对各种可能的设计方案进行评价。评价的重点是系统的时间和空间效率,并从多个方案中选出较优的物理结构。
(5)数据库实施:数据库实施的主要任务就是根据数据库逻辑结构设计和物理设计的结果,在实际的计算机系统中建立数据库的结构、载入数据、测试程序、对数据库应用系统进行试运行等等。
建立数据库就是利用选定的数据库管理系统所提供的命令,建立数据库的模式、外模式和内模式,然后装入数据。装入的数据可以是模拟数据,也可以是实际的原始数据。
在建库和数据装入的同时可进行的工作是应用程序的编制和调试。而在程序调试的过程中,经常有可能会破坏数据库中的数据,因此在装入原始数据时,一般应先装入少部分的、适合程序调试的数据。
在所有的程序模块都通过了调试以后,就需要将它们联合起来进行调试。这一过程就是数据库的试运行。在此运行过程中,不仅要测试程序的各功能是否正确,而且还应考察系统的性能是否符合用户的需要。如果有问题,如不符合用户的需求等,就应认真地分析形成这些问题的原因。如果问题是由应用程序引起的,则应修改应用程序的源代码。如果是由数据库结构引起的,就应回到前面的数据库设计步骤去修改物理结构,有时可能还要修改逻辑结构。另外,在数据库的试运行过程中,还需要注意对数据库中的数据进行备份。这是因为,在试运行阶段,系统是很不稳定的,容易给数据库中的数据造成破坏。同时,还应注意在整个系统基本运行正常以前,不要将所有的原始数据装入到数据库中。
(6)数据库的运行和维护:经过了数据库的试运行以后,系统的性能能够达到用户的要求,而且系统已处于一个比较稳定的状态。这时就可以将系统正式投入运行了。因此在数据库系统投入运行以后,主要的维护工作包括几个方面:一是数据库的转储和恢复;二是数据库的安全性和完整性控制;三是数据库性能的监督、分析和改进;四是数据库的重组织与重构造,这是因为在数据库系统运行的过程中,经常会对数据库进行插入、删除和修改等的更新操作。这些操作会使数据库的物理存储变坏,从而影响数据的存取效率和系统的性能。例如,逻辑上属于同一记录型或同一关系的数据被分散到了不同的文件或文件的多个碎片上,就会降低数据的存取效率。这时就要对数据库进行重组织,即按原设计要求重新安排数据的存储位置、清除垃圾、减少指针链等等,以提高数据的存取效率和系统性能。
3.数据资源的分布和安全保密
在进行数据库设计时,需要考虑数据资源的分布和安全保密的问题。当然,对单机系统则可以不考虑这个问题。如果是网络上运行管理信息系统,那就必须考虑这个问题了。
(1)数据资源分布:在网络环境下,数据库的设计必须考虑整个数据资源在网络各节点上的分配问题。考虑数据资源分配的原则是:同一子系统的数据尽量放在本子系统所使用的机器上,只有需要公用的数据和最后统计汇总类数据才放在服务器上。如果不考虑这一原则,将会造成整个网络系统数据通讯紧张,从而降低子系统运行效率。
(2)数据的安全保密:一般的数据库管理系统都提供了用户自己定义数据安全保密的功能。充分利用这一功能对确保一个系统的正常运行是非常重要的。因为系统一旦建成,网络将会将四面八方的各个部门连成一片,如果无安全保密的措施,谁都可以在任意一个机器终端上随意地修改和删除数据,这对系统将会带来致命的后果。
在数据库中定义安全保密的方法一般有:
●如果数据库管理系统提供的安全保密功能有8级,那么原则上所有文件都定义为4级,个别优先级别高的办公室可定义高于4级的级别,反之亦然。
●统计文件和数据录入文件一般只对本部门的某台计算机定义为可写方式,对其他的计算机则定义为只读方式。
●财务等保密文件一般只对财务部门的机器定义为可读、可写、可修改、可删除方式,对其他计算机则定义为只读方式,而且在读取数据之前需要进行身份权限的认证,只有级别相同或是级别较高者才能读取。
四、输入设计
输入设计包括定义数据获取、数据进入、数据输入方法。数据获取是源数据确认和记录的过程;数据进入是将源数据转换成计算机可读取形式的过程;数据输入是计算机可读取的数据实际进入系统的过程。
在输入设计中有4个主要的目标:选择最适当的输入媒介和方法;开发有效的输入程序;减少输入量;减少输入错误。
据统计,大多数的问题是在数据获取和进入时发生的。输入设计就是要便于使用获取的数据源文档、有高效的输入程序以及减少输入量,这些都是能确保输入数据的质量和减少数据输入的瓶颈的方法。
1.输入方法
数据的输入方法有批输入方法和联机输入方法。批输入方法是数据进入是在一段时间内完成的,这个时间段可能是几小时、几天、几周甚至更长。联机输入方法是数据直接进入系统,立即就被处理了。联机输入方法的主要优点是即时可以检查数据的合法性和有效性。使用联机输入还是使用批输入取决于系统的类型和企业的需要。
虽然联机输入通常要比批输入更理想,获取数据要比批输入更快、更准确,更少的人为干预。但这种方法也确实存在着一些缺点。例如,人工联机数据输入比批输入慢,输入的成本高,因为联机数据输入是在事务发生时完成的,也许还要占用比较多的机时。
除了以上两种方法,另外一个输入方法是源数据自动化法,这种方法使用直接输入设备将批输入法和联机输入法结合在一起。源数据自动化法的常见情形有:销售终端采用条形码扫描仪或磁性扫描仪输入信用卡上的数据、自动取款机ATM读取银行卡上的数据、员工使用磁卡记录上下班时间、医院使用条形码或IC卡收集病人的相关数据等等。
数据直接进入系统在近几年发展很快,因为它减少了人工的输入。同时可以做到将源数据输入自动化,并可利用现代的通信技术。例如,通过互联网使组织机构能够在全球范围内管理经营数据。
2.开发高效的数据输入程序
假设每次订单到达时,一个人接受并记下订单的日期,第二个人检查每个项目,然后批准这个订单。虽然将数据记录从一个人传给另一个人的时间仅需要几秒钟,但是有成百上千的订单需要处理时,总的时间花费将是巨大的。另外,如果只有一个人有权限能批准这个订单,那么当这个人不在现场时就会发生数据被延迟了。
另外必须注意输入数据过程中潜在的瓶颈。例如,只让一个人检查输入数据资料时就可能会形成输入的瓶颈。好的输入设计还要求对订单的数量进行合理的估计,如果经常发生输入延迟,那么就必须改变数据获取程序,或者让两个人共同享有批准订单的权力或者是每个人批准一定数量的订单。
3.减少数据的输入量
在输入过程中,发生数据输入错误的概率与数据量有关。当数据量增加时,错误的数量也增加,所以减少数据量,也就减少了错误的数据。要减少输入量,必须减少每个事务输入数据项的数目和规模。如果遵循了某些规则可能会适当地减少数据量:
●只输入必要的数据,只输入系统需要的数据项。
●不要输入能从系统文件中检索到或可用其他数据计算出的数据。例如,金额可以根据单价和数量的计算得到,就不必输入金额数据项。
●不输入常量。如果一批工作表具有相同的年份,那么在批处理中年份只需输入一次。对一些联机输入,日期可通过当前系统日期自动检索到。
●使用代码。代码通常比它们所代表的数据要短,因此使用代码的优点就是减少输入。
研究数据量是很重要的,因为所有的数据项都是在系统分析阶段指定的。在系统设计阶段,必须确定什么时候以及怎样输入这些数据项。如果要从系统的有关文件中检索出详细的信息,就要考虑通过什么途径去检索这些信息。
联机输入允许操作员在输入数据时输入实体的编码,这样就可立即看到系统中检索到的实体信息。联机数据输入常常可以让操作员避免输入错误的数据。
4.减少输入错误
减少输入错误可以提高数据质量。如前所述,减少输入错误的有效方法就是减少输入数据量,例如输入某个部门的人数,可以输入相关部门的编号,然后到相关的主文件中检索或由计算得到,而不是由操作员输入的,这就可以避免输入的人数错误。如果要输入员工的工号,可以采用在下拉列表中选择姓名,只要姓名是唯一的,就能检索出员工的编号。
理想的输入设计会减少输入错误,例如,良好的屏幕设计就有助于减少错误。但是也不可否认,即使是最好的输入设计和程序,也会存在一些数据错误。因此在程序中可以考虑采用一定的技术方法来减少输入错误。
(1)顺序检查:这种方法适用于当数据以事先决定的顺序进行输入的情况。例如,订单必须按订单号顺序进行输入,那么,非顺序的订单号就表示有错误;如果事务数据必须按日期顺序输入,那么非顺序日期的事务数据就表明输入有错误。
(2)存在性检查:主要用于对非空字段的检查,即检查必须输入的数据项。如果输入一条记录时该字段为空值的记录,则存在性检查就会报错。
(3)数据类型检查:确保数据项与所要求的数据类型一致。例如,数字型的字段必须只能输入数值数据。
(4)范围检查:验证数据项的值在最小值与最大值之间。如一个员工每周的工作时间必须在0至40个小时之内,因为我国实行5天工作制,超过40小时,则超过部分为加班工时。当检查涉及最大值或最小值中的一个,而不是全部时,称为限制性检查。如工资的数量要比0大,但不必指定最大值,这就是限制性检查。
(5)合理性检查:辨别那些有疑问但不一定是错误的值。例如,工资的输入值为0.50元和500 000 000.00元通过简单的限制性检查查不出错,但这两个值都可能是错误的。同样,年龄值为120岁可以通过0~150范围的检查,但这个数值需要进一步核实,即进行合理性检验。
(6)有效性检验:主要用于必须有某个值的数据项。例如,一个工资管理系统中员工主文件包含120名员工,那么当输入的一个人员编号与文件中的任何一个记录的编号值都不匹配时,则输入的人员编号一定是无效的。另外,一个有效性检验的例子就是验证一个新的人员编号不能与现有员工主文件中已存在的人员编号重复。
(7)联合检验:主要用于确保两个或多个字段相一致或合理。即便所有的字段都通过了各自的有效性检验,但这些字段的值结合在一起也可能不一致或不合理。例如,如果教学工作量表上的学生人数为80,而规模系数为1.8,但这个系数仅仅适用于学生人数大于100的情况,那么此工作量表上的学生人数和规模系数结合在一起就是无效的。
(8)批控制:用于检验批输入。批控制可以检验数据项,如记录数和数字型字段的总和。例如,在输入一批订单表之前,输入员可能统计订单总数和订货量的总和,人工计算的总和将作为控制总数。当这批订单输入订单系统时,系统还会统计这两个总数,那么就可以将系统统计出来的总数与控制总数进行比较。如果总数不匹配,那么数据输入或人工计算有差错。和有效性检验不同,批控制并不确定具体的错误,但可以发现在输入的这批订单中有一个或多个订单输入有误或遗漏。控制总数本身并没有意义,只是为了进行比较。
5.输入界面设计
输入界面主要是输入屏幕的设计。所有屏幕显示的目的都是为了提交信息及各种数据(包括辅助数据)的输入。屏幕显示的一些设计规则适用于数据输入和用户界面屏幕,这些规则有:
●屏幕显示应该做到整洁、美观和有条理,使人一目了然。
●在屏幕上的信息应按一个有意义的、合乎逻辑的顺序显示。
●屏幕显示应该是一致的,所有标题、提示信息和说明要使用一致的术语,格式尽量做到统一。
●提示信息应该是具体的、易于理解的,词语应是文明礼貌用语。
●提示信息应该保留在屏幕上一段指定的时间长度,比如10秒,使操作人员能看清楚。但是如果操作人员很熟悉系统,可能又会觉得10秒钟太长了。所以一个比较好的方法就是显示的信息一直到操作人员进入下一个动作为止。
●特殊效果如颜色、闪光、高亮度、反白显示和声音等应有限制地使用,关键是应该吸引人的注意力。注意:太多的声光效果反而会干扰用户。
●对于过长时间的处理或延迟给出的提示信息,提醒用户处理的预期延迟和完成处理所需要的时间。
●输入屏幕设计应该文档化以利于程序员以后使用,屏幕设计完就应该获得批准,不能等到完成所有的屏幕设计才提交给用户,要确保所有设计的一致性,因此如果用户不喜欢某一屏幕,可以对其他的屏幕做相似的改动。屏幕设计不必给最终用户看,而应该用屏幕模拟模仿用户所看到的形式,理想的屏幕模拟是用户检验和评价的依据。
(1)数据输入屏幕设计:屏幕设计应该清晰,易于使用,支持用户所喜欢的数据处理方式。对用户友好的屏幕设计可以提高劳动生产率,并可改变用户对待信息系统的态度。
数据输入的传统方法是填写屏幕表格,用户在字段域输入数据,然后移到下一个字段域。因此在进行数据输入屏幕设计时要注意几点规则:
●限制用户对输入数据的屏幕随意定位。
●为每一个字段提供一个描述性的说明,如提示用户在哪里输入,输入什么数据,包括所要求的字段大小。
●如果字段值必须以指定的格式输入的话,就给出这种格式的样式。
●每一个字段都要求有一个结束的按键,如按Enter键或Tab键一般表示字段输入结束。
●无需用户输入的数据,如日期字段中的“年”、“月”、“日”,还有性别、职称等;又如无需用户为数字型字段输入第一位的零或为字母型字段输入前面的空格;再比如无需用户键入小数后面的零。
●将缺省值显示出来,因此用户只需按Enter键接受建议的值,如果缺省值不合适,用户可以对它进行更改。有些字段值也可以使用缺省值。例如,记录按日期顺序输入,则可将第一个业务中的日期作为缺省的日期被使用,直到出现新日期为止。
●为有限个合法的字段值显示一个可接受值的下拉列表。用户可在合法值列表中选择一个,自动完成输入。
●在没有确认输入当前记录时,能提供一种退出数据输入屏幕的方式。同样在数据输入后,应有一系列提示信息窗口,包括输入数据有错时提醒用户,并允许改正输入错误。
●屏幕表格设计要与原始表格一致,以符合用户的习惯,便于用户输入。同时为用户提供一种按标准顺序或按用户选定的顺序在表格的各字段间移动的方法。例如,用TAB键将插入点移到下一个字段。
●带有菜单和快捷工具栏的屏幕提供了一种有力地、灵活地搜索指定记录或指定字段的方法。
(2)过程控制屏幕设计:在许多联机信息系统处理过程中,用户可使用处理控制屏幕或对话屏幕来输入命令或要求。常见的过程控制屏幕设计是菜单屏幕和提示符式屏幕。
菜单屏幕显示一系列处理选项并允许用户可通过输入选项号、键入光标移动功能键或使用其他输入设备(如鼠标或触摸屏)来选择选项。因为过程控制使用一个或多个菜单,所以这种屏幕设计是一个菜单驱动的系统。
菜单方法有易于理解、提供一个逻辑的选择次序等几个优点,但是如果是多层菜单则可能会引起混淆。从用户的角度来说,菜单设计必须反映逻辑分组,但不要求菜单层次与系统内部的处理逻辑一致。
提示符的过程控制就要求用户为显示在屏幕上的提示符响应,即在提示符后键入一个命令作为回答。结构化查询语言(SQL)是一个比较流行的命令语言。
与菜单相比,命令语言提示符能为用户提供更多对系统过程的控制,但是用户需要熟悉相关的操作命令。当用户不熟悉这些命令时就需要对用户进行相关的培训。
(3)图形用户界面:目前大多数屏幕设计都使用图形用户界面GUI(Graphic User Interface)。图形用户界面使用图形,如窗口、菜单和列表框,以允许用户和系统进行交流,微软的Windows和Apple Macintosh操作系统是GUI的例子。使用GUI程序的一个主要优点就是在不同的应用程序中界面都是相似的,因此易于学习和使用系统。当然系统内所有的应用程序应该都有相似的GUI。
在GUI环境中,过程控制屏幕和数据输入屏幕之间没有很明显的区别。相反,在单一的屏幕内窗口按用户的要求进行显示、更改或删除,这些窗口可以包括控制选项、数据输入选项或两者均有。为使图形界面在使用时更加方便,GUI允许一次可打开几个程序,数据可在程序间传递,因为GUI在数据输入中的使用同在过程控制中的使用是一样的,因此,它们必须遵循在前面所提到的数据输入屏幕设计规则。
(4)帮助屏幕的设计:在系统的操作过程中,即使是最有经验的用户有时也需要帮助。联机帮助屏幕用来显示菜单选项、程序、功能键、概念和格式等信息,一般用户可以通过单击命令按钮、工具条按钮、菜单命令或按一个指定的键来求得帮助。
帮助信息可用两种方式来提供:及时提示性帮助窗口或用户选择帮助菜单,及时提示性帮助窗口为运行中的任务提供即时的帮助。及时提示性帮助窗口是了解当前任务信息的一个快速方法。当用户要求帮助的时候,可通过菜单或子菜单进行正确的选择,就能看到一个所需要的信息屏幕。
菜单屏幕、提示符式屏幕和图形用户界面的设计规则也同样适用于帮助菜单屏幕。另外,当设计及时提示性帮助窗口时,还应注意:
●为用户返回帮助的原点处提供一个直接的路径。
●给每个帮助窗口确定一个标题。
●帮助信息应简洁,易于理解。
●提交一个吸引人的屏幕,帮助屏幕应该清晰,使帮助信息易于阅读。
●提供适宜的例子。
●使用超级链接将相关的帮助主题链接起来。
●要显示负责为用户提供帮助的人或部门的地址、电话或E-mail地址。
许多信息系统既提供及时提示性帮助窗口又提供用户选择帮助,大多数软件包的帮助屏幕也包括一个超文本功能,超文本允许用户单击帮助文本中选中的术语的链接,然后系统显示关于此术语的额外信息,超文本是一系列链接,允许用户操纵多个帮助主题。超文本具有用户友好的特征,提高了帮助系统的功能。
6.输入控制
输入控制包括必要的措施以确保输入的数据是正确的、完备的和安全的,在输入设计的每个阶段都要强调输入控制。实际上,系统中的每条信息都应该能追溯到产生它的输入数据。这就意味着必须提供一个审计跟踪痕迹,记录所有数据的来源及输入日期。除了记录最初的来源外,审计痕迹还必须以跟踪到数据怎样或什么时候被存取、更改,以及被谁更改或存取的。所有这些操作必须记在审计跟踪文件中,并仔细监控。
企业必须建立起处理源数据文档的管理制度,以确保数据在进入系统之前不会丢失,而且在整个组织中都应该严格遵守这个制度。所有来自组织外的源文档,当接受它们时,都应该做记录。当源文档在各部门之间传递时,应该是有顺序的。如为了防止数据重复进入系统,源文档应该贴上标签,或当它通过数据输入过程时作一个标记。
五、输出设计
相对于输入方式来说,输出方式的设计要简单得多。输出设计要充分利用现有的设备资源输出对管理和系统运行两方面都最有效的信息。
实际上,输出可以有中间输出和最终输出。中间输出是指各系统之间的数据传递。最终输出是通过各输出设备向用户输出的一类信息。这里我们重点讨论最终输出的设计。
最终输出的方式主要是报表输出和图形输出,究竟采用哪种输出形式必须要根据系统运行的特点和业务处理的要求来决定。一般而言,对于基层管理,应以报表方式给出详细的数据记录,而对于高层管理或者综合的管理部门,则就以图形或图表方式输出为主,以给出比例或综合发展的趋势等信息。
1.报表生成器设计
报表是一般信息系统中用得最多的信息输出工具。对一个组织机构而言,输出的报表的种类往往都有几十种甚至百多种,而且报表的内容和格式往往会根据管理的要求进行适当的调整。这样庞大的工作量对系统开发会形成一个很大的压力。因此在实际的开发过程中,常常是在确定了报表的种类和格式之后,开发出一个报表处理的程序模块,由它来产生、处理和打印系统中需要输出的报表。
报表处理模块的原理如图9 6所示。左分支是定义一个报表格式。用它可以定义系统中各种需要打印输出的报表格式。定义完成以后,报表的格式以一个记录的方式保存在报表格式文件中。右分支是报表的打印部分。首先将已经定义的报表显示出来供用户进行选择,然后根据用户的选择,报表程序将定义好的报表格式和相应的数据合并在一起进行打印输出。
图9 6 报表处理模块
2.图形方式
目前,要让计算机生成图形并加以输出应该是非常容易的,因为可以用来进行绘制各类统计分析图形的软件已经很多了,常用的高级程序设计语言如C语言等,还有比较流行的软件编程工具,如Lotus、Excel等。可以说大部分的软件或是编程工具都提供了作图工具或是图形函数,利用这些软件或工具就可以产生出所需要的图形。
但是,利用程序设计语言或是编程工具来绘制信息系统的图形,对开发者是有一定要求的,需要开发者有一定的技术基础,而且开发的工作量也比较大。例如,如果一个数据库管理系统中没有制作图表的功能,当管理层需要使用图表输出时,就需要将数据库中处理完的数据记录传送到作图软件中。这种传送有的可以借助于一些相关的软件来完成,例如Microsoft的ODBC(Open DataBase Connectivity开放式数据库连接)就可以完成各不同数据库中数据格式的转换。如果没有这种转换的软件,有两种方法来解决:一是将数据库中的数据文件转换成标准的ASCII文件,再由作图软件来读取;二是由程序设计设计人员进行开发。前者的作图效率低下,后者的技术比较复杂,要求也比较高。当然最好的方法就是选择那些带有各种图表制作和分析功能的数据库管理系统。
3.输出的控制
输出控制的目的就是为了保证输出的信息正确、完整和安全。高效的输出控制对每个组织机构都是必要的。输出控制可以通过以下几方面来体现。
(1)输出的正确性和完整性:输出必须正确和完整,如果在处理或输出的过程中,数据失去了正确性,这种情况应该及时发现和改正。应该采取几个步骤来保证输出的正确和完整。
例如,每个报表都应该有一个合适的标题、打印日期和报表中数据发生的时段;报表的页数应按次序编号;报表的结尾应该标示;控制汇总和记录计数应该被打印并与输出汇总和计数相一致;随机地抽查报表的正确性和完整性;记录所有的处理错误和中断,以便分析和修正。
处理输出错误有一些专门的措施。如定期复查错误报表,分析出错的原因。为了维护系统的完整性,应该打印错误控制汇总和记录统计数,然后将它们与错误改正后重新输入的汇总进行比较。也应该建立一个独立的错误文件来标识那些不正确和被重新输入的记录。
(2)输出的安全性:输出安全可以保护个人或组织机构的隐私,并且保护组织的数据财产,以免被窃或被非法获取。为了保证输出安全,必须执行几个重要的任务。首先,保证仅生成报表所需的信息。报表应该被分发到已获授权的人手中。所有的敏感数据应该被存放在安全的地方。所有的机密报表每页都应该贴上标签,不能随意放置,还要定期销毁或切碎敏感报表、过期报表和输出图表。保证空白支票有专门的安全处理方法并放在安全的地方。银行支票应该有规律地存放以便检查,及时发现丢失的部分。最后,在一个安全的、远离图表储藏地点的地方存放签名印章。
在多数组织机构中,信息系统部门负责几乎所有的安全控制措施。系统的开发人员必须在其工作的所有阶段注意安全问题。
六、处理过程设计
处理过程的设计将详细地涉及具体业务处理的步骤,这是下一步编程实现系统的基础。这一步不但要设计出一个个功能模块和它们之间的连接方式,而且还要具体地设计出每个模块内部的功能和处理过程。
在处理过程设计中,需要用到一些工具,有些工具我们在系统分析时就已经学习过了,而在设计时还需要用到其他一些图示工具,如层次模块结构图等。
1.层次模块结构图
层次模块结构图(或称结构图structure chart)是由W·斯蒂文等人于20世纪70年代从结构化设计的角度提出的一种工具。它的基本做法是将系统划分为若干子系统,子系统下再划分为若干个模块,大模块内再分小模块。模块是指具备输入输出、逻辑功能、运行程序和内部数据4种属性的一组程序。
层次模块结构图主要关心的是模块的外部属性,即上下级模块、同级之间的数据传递和调用关系,而并不关心模块的内部。换言之就是只关心它是什么,它能够解决什么问题,而不关心它是如何去做的。
(1)模块结构的图形表示:图9 7给出了模块之间的联系。图(d)中的P是
图9 7 模块结构图形
标志参数。
(2)结构设计:根据图9 7所示的几种基本结构关系来设计一个实际系统是一项复杂的工作。随着设计系统的增大,其结构的复杂性也迅速上升,当然难度也相应增大。为了确保系统设计工作的顺利进行,需要注意设计的原则和规律。
●结构设计的原则:所划分的模块其内部的凝聚性(cohesion,也叫耦合性)要好,即模块具有独立性,模块之间的联系要少;模块之间的联结性(coupling,也叫聚合性)只能存在上下级之间的调用关系,不能有同级之间的横向联系;整个系统呈树状结构,不允许有网状结构或交叉调用关系出现;所有模块都必须严格地分类编码并建立归档文件。
●模块的联结方式:按模块和数据流程联结;按模块特征相联结;按控制关系相联结;公共联结;内容联结。最后两种联结现在已经基本不用了。这几种联结方式的比较如表9 11所示。
表9 11 几种模块的联结方式
(3)功能模块划分:对于比较好的设计系统来说,模块一般都比较小,它往往都是在某一管理业务的某一局部中有某一单独功能,所以在结构化系统设计中,模块一般都是按功能划分的,通常也就称之为功能模块。
功能模块的划分能够较好地满足上述所有的原则,而且还能够最大限度地减少重复劳动,增大系统的可维护性和提高开发工作的效率。
2.模块内部处理逻辑
模块内部的处理逻辑可以有多种方法来加以描述。如果一些处理第一号较为复杂的模块,若用自然语言描述会十分困难,并且对同一段文字描述,不同的人可能产生不同的理解。如果这个环节处理不好,将会给后续编程工作造成混乱。目前用于描述模块内部处理过程主要有结构化英语、决策树、决策表和算法描述语言等几种方法。在系统分析章节,我们已经学习和讨论了。这几种方法各有其长处和不同的适用范围。在实际应用中究竟用哪一种方法,需要视具体情况和设计者的习惯而定。
七、系统设计报告
系统设计阶段的最终结果是系统设计报告。系统设计报告是下一步系统实施的基础,这主要应包含如下内容:
(1)系统总体结构图(包括总体结构图、子系统结构图、计算机流程图等)。
(2)系统设备配置方案(包括系统设备的配置、设备在各工作岗位的分布情况说明、主机、网络和各工作点的联系情况等)。
(3)系统分类编码方案(主要是分类方案、编码和校对方式等)。
(4)数据库结构图(如数据库的结构、各数据表内部结构、数据字典等)。
(5)输入、输出设计方案。
(6)系统的模块层次图。
(7)系统详细设计方案说明书。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。