1、 信息系统分析是信息系统研制过程中的第一大阶段,称为信息系统的逻辑设计阶段,这一阶段的中心工作是为信息系统建立起逻辑模型,解决“做什么”的问题。本章所要介绍的信息系统设计也称为物理设计,它是信息系统研制和开发过程中,紧接系统分析之后的第二大阶段。本阶段要对前一阶段所建起的逻辑模型,来确定其实施方案。即是说,本阶段要解决“如何做”的问题。概言之,系统设计阶段的主要目的,是将系统分析阶段所提出的反映用户信息需求的系统逻辑方案,转换成可以实施的基于计算机与通信系统的物理方案。信息系统设计阶段的主要依据是已批准的系统分析报告,还有系统开发人员的知识与经验。信息系统设计阶段的主要内容包括计算机系统配置、
2、新系统总体结构框架设计、数据库设计、代码设计、用户界面设计、输入与输出设计、处理流程及模块功能的设计等。系统设计的结果是一系列的系统设计文件所组成的系统设计说明书或系统设计报告,它是包括安装硬件和编制软件程序在内的、物理地实现一个信息系统的重要基础。信息系统设计阶段的主要任务,是从信息系统的总体目标出发,根据其上一阶段(即系统分析阶段)对系统的逻辑功能的要求,并考虑到经济技术和运行环境等方面的条件,确定系统的总体结构和系统各组成部分的技术方案,合理选择计算机和通信软硬件设备,提出系统的实施计划,确保总体目标的实现。本阶段,还要尽可能地提高系统的可变更性、可靠性、工作质量及效率。我们将会看到,系
3、统物理设计时,必须从保证系统的可变更性入手,只有这样,才能保证以后的工作能顺利进行,才能保证研制出来的系统效率高、工作质量好、可靠性强、能适应外界环境的变化。做到了这些,信息系统才能满足领导及管理人员的需要,为管理工作提供有用的信息,发挥其应有的作用。实现这一目标,就需要使用结构化系统设计方法。结构化系统设计结构化系统设计 系统设计工作技术性强,涉及面广,且内容复杂,必须由科学的方法和设计工具指导,以便设计人员较容易地找到好的设计方案。目前有很多系统设计的方法,主要可以分为三大类:面向数据结构的设计方法、面向对象的分析与设计方法和结构化分析和设计方法。面向数据结构的设计方法以数据结构作为设计基
4、础,根据输入/输出数据结构导出程序的结构。Jackson方法是一种典型的面向数据结构的设计方法。尽管程序中实际使用中的数据结构有许多种,但这些数据结构中数据元素间的逻辑关系只有顺序、选择和重复3类。Jackson方法的设计步骤为:(1)分析并确定输入和输出数据的逻辑结构,并用Jackson图表示;(2)找出输入数据结构与输出数据结构间有对应关系的数据单元;(3)从描述数据结构的Jackson图导出描述程序结构的Jackson图。面向对象技术的出发点是使分析、设计和实现系统的方法同认识客观世界的过程尽可能地一致,也就是采用面向对象的概念对系统进行分析和建模,核心是对对象的分析和设计。通过对对象定
5、义属性,赋予操作即所谓的方法,把该对象在系统中活动特点描述出来,然后再通过消息将对象内、以及对象与对象之间的关系反映出来。目前,面向对象建模方法有很多种,但这些方法都在进一步的发展和完善中。OMT(Object Modeling Technology)法是目前相对来说最为成熟和实用的方法之一。它从三个方面对系统进行建模,每个模型从一个侧面反映系统的特性,三个模型分别是:对象模型、动态模型和功能模型。(1)对象模型:对象模型通过反映系统中的对象及对象之间的关系以及表示对象、类、属性和操作来表达一个被建模系统的静态结构,对象模型是OMT模型中最重要的一个部分,更贴近现实世界。(2)动态模型:动态模
6、型关心的是随着时间的变化,对象与对象之间关系的变化。对象与对象之间相互作用,导致它们的状态不断发生变化。一个事件是指一个单独对象对另一个对象的激励。(3)功能模型:功能模型确定什么事件发生。动态模型决定什么时候,什么条件下发生,对象模型定位该事件发生在哪个对象上。功能模型反映的是系统模块的输入值和输出值。但面向对象模型是一种非形式化的建模方法,对模型的分析缺乏有力的数学工具,而且其抽象性、准确性不够。具体系统设计工作中选择某一方法,要根据系统的特点来确定。针对信息系统而言,可以自己制定合适的分析设计方法,因为目前虽然有很多的方法,但孤立地使用某一种、照搬哪一种方法,都不太适合信息系统建设的要求
7、(至少在现阶段信息系统开发水平下是这样)。在信息系统设计的时候,要灵活应用各种分析方法。而结构化设计(Structured Design,SD)方法是应用最为广泛的一种方法,它可以同结构化分析和结构化程序设计前后衔接起来使用。这种方法从建立一个具有良好结构的系统的观点出发,基于把一个复杂的系统分解成相对独立的模块的原则,研究了将系统分解为不同模块的方法技术,分析系统分解时产生的各种影响,提出了评价结构质量的具体标准,给出从表达用户要求的数据流程图(DFD)导出模块结构图的规则。结构化系统设计思想是在1974年由美国的W.stevens等人首先提出的一种构想,这种设计思想在以后被人们逐步认识并逐
8、渐发展和不断完善,使之成为当代系统设计的基本思想。结构化系统设计方法规定了一系列关于模块的分解协调原则和技术,提出了结构化设计的基础是模块化,即将整个系统分解成相对独立的若干个模块。在分解成相对独立的模块后,对于各个模块,我们可以采用前面所述的两种结结构设计方法进行设计,即在总体分析时采用结构化的设计,在局部的设计中采用面向对象和面向数据结构结合的方法。通过对各模块的设计和模块之间关系的协调,来实现整个系统的功能。下面,在介绍结构化系统设计这个问题之前,我们先介绍一下有关的系统研制人员和系统可修改性问题。4.1.1 系统研制人员在系统分析阶段中,系统研制人员的主要任务是调查研究、了解情况,利用
9、结构系统分析的方法和工具从事系统分析,并利用这些方法和工具产生结构系统分析资料生成一份系统总体逻辑设计方案,提出系统应该具有的主要逻辑功能。而在系统设计阶段,系统研制人员则要考虑各种实际条件,在各种技术手段和实施方法中权衡利弊、仔细选择,进行精心设计,在保证实现逻辑模型的基础上,建立起系统的物理模型。实际上,从研制人员的角度讲,系统研制人员在系统分析阶段是系统分析员的角色,其作用主要是用户和系统设计阶段中的系统设计员之间联系的纽带。到了系统设计阶段,这时的系统研制人员就是系统设计员了。很明显,系统设计员就是上一阶段系统分析员和下一阶段系统实施中的程序设计员之间联系的桥梁。当系统分析员给出系统的
10、逻辑设计和功能目标并获得有关部门的批准或通过后,这就是系统分析报告或系统说明书。系统设计员的职责就是要以系统分析报告或系统说明书为纲领性文件,确定本信息系统应该由那些部分组成,如何将这些部分连接在一起,以符合确定了的系统逻辑功能的要求。在下一阶段即系统实施阶段里,系统研制人员就是程序设计员,其职责则是按系统设计员确定的设计方案去编写程序,来具体地实现这个方案。4.1.2 系统的可修改性系统的可修改性系统的可修改性也称系统的可变更性或系统的适应性,是系统的设计原则之一。系统设计即物理设计的若干目标中,应该把系统的可改变性放在首位。这个并不难理解,因为信息系统作为一个计算机应用软件系统,在其生命周
11、期里,总是处于动态变化过程之中的,而不是固定的、静止的。试想,在系统设计阶段,多少会存在一些未考虑、未预见到的问题和隐患,这些会导致在系统调试和运行初期,要进行大量的改错工作。随着系统运行时间的增长,改错工作会逐渐减少,但由于系统所处环境的不断变化,如机构调整或重组、业务变更或扩大、体制和政策的改革、产品推陈出新,以及计算机和外围设备的不断更新换代等,都会波及和反映到系统中来,都会对系统提出修改的要求。还有,企业领导及管理人员同样会随着时代的发展而不断地对系统提出一系列更加新颖、更高标准的要求。这些都要求系统能作不断的改进。上述种种原因,都要求我们设计开发出来的信息系统必需有良好的可修改性、可
12、变更性和对环境的适应性。即是说,系统应该易读、易于进行查错、改错,易于根据环境的变化和用户的要求,进行各种改变和改进。系统是否具有可修改性,对于系统开发和维护的影响很大。据统计,在系统从研制到运行维护的整个生命周期的各阶段,应用软件费用及人力投入大体分布如表4.1所示。从表4.1可见,系统研制开发占整个系统的20%,而调试或测试程序是这20%中的50%,即占整个系统的10%。调试程序和系统维护的各项工作都属于修改方面的内容,可见修改的费用和人力支出占全应用系统的90%。这就是说,提高系统可修改性对于节省开发和维护的人力、物力有着特殊的重要地位。也就是说,如果一个系统比较易于修改,则在研制工作的
13、后期和整个运行维护期间能大大节省人力物力,同时还能更好地为管理工作提供信息。如何使系统具有可修改性,是系统结构化设计要着重解决的问题。系统的可修改性与系统的结构有密切的关系。表4.1 费用投入分配 系统研制开发:20%其中,分析与设计 35%编程序 15%调试程序 50%系统维护:80%包括三种功能:改错 即排除错误 改变 即适应环境变化 改进 即增加新功能假设一个系统由A、B、C、D等若干部分组成,则组成的各部分之间一定存在信息交流。假设我们要修改部分A中的某些内容,这时不仅仅涉及A的某些部分,还有可能涉及由于A的改变而在信息交流过程中影响到B或C或D等部分,从而相应地要修改B或C或D中的内
14、容。一般把这样的由一部分修改波及到别的部分也得修改的影响称为波动效应,也形象地称为水波效应。对于复杂的大系统,组成系统的各部分之间错综复杂的联系,是造成修改工作难于进行的由于波动效应,很可能在改变系统中某一部分而引起对整个系统或系统大部分的修改主要原因。因而,我们必需想办法设计合理的物理结构,将波动效应降低到最低限度,以提高系统的可修改性,这就是结构化系统设计思想。4.1.3 结构化系统设计在信息系统设计阶段,系统研制人员即系统设计员,同系统分析阶段的系统分析员一样,也要使用一组标准工具和准则来完成他们的系统设计工作和表达工作的成果。即所谓结构化系统设计(Structured System D
15、esign)的思想。确切地说,系统设计员就是要解决用什么方法和工具、如何实现在系统分析阶段由系统分析员提出的系统逻辑要求问题,即根据系统分析资料来确定这个系统应该由哪些子系统的哪些模块组成,用什么方式把这些组成部分有机地连接在一起,即要确定好组成部分之间的接口,以构成一个最好的系统结构。结构化系统设计具有以下特点:(1)对于一个复杂的系统,使用分解的方法予以简化;(2)采用图形工具描述和表达;(3)有一组基本设计原则;(4)有一组基本设计策略;(5)有一组评价标准和质量优化技术。结构化信息系统设计的要点是:第一,系统按一定规则构造成相对独立的模块(M0dule)即所谓模块化。从逻辑上看,模块就
16、是处理功能,是结构化系统的基本元素。对每一个模块,在输入一定的信息之后,便可以进行加工处理并输出本模块的结果信息。从物理上看,模块是可以用一个名字来表示的一组程序。如FoxPro中的一个PRG文件、COBOL语言中的一个段或节、C语言中的一个函数段等。在结构化设计中,模块之间的联系应尽可能地减少,模块内的功能应尽量地简单明确,易于理解。第二,系统的模块化要讲究层次结构即自顶向下,逐步求精。按层次划分模块有两点必须做到:首先,把整个系统看作一个模块,然后把它按功能分解成若干第一层模块,让它们各自担负一定的局部功能,互相配合,来共同完成全系统的功能。接着,再对每一个第一层模块进一步分解成更为简单一
17、些的第二层模块。这种划分可以按功能继续下去,原则是:越下层模块,其功能越具体、越简单,直到一个具体的功能由一个模块来实现和完成为止。模块化简明的层次结构能使设计者易于思考,阅读者易于理解。要求设计者应首先设计顶层结构,然后逐层向下,不要过早地去解决低层次的细节问题。我们只要在设计中保证每个模块能正确地完成其自身的功能,尽量减少模块间的联系,就可以保证整个系统的正确性和可修改性。结构化系统设计一方面要将整个应用软件系统合理地划分成各种功能模块,另一方面又要正确地处理模块间与模块内部的联系,使整个系统具有良好的可用性、可读性和可修改性,易于调试和维护。这一方面的问题我们在后面的4.3节还要讨论。第
18、三,模块分解即上层模块分解为下层模块。有三种不同的结构形式:顺序、分支和循环结构。在模块划分中,理论证明,有且仅有这三种结构,无论多么复杂的系统,都可分解为这三种基本形式的组合;反之,在一个系统的组成中,绝不会存在这三种形式表示不出来的第四种形式。三种基本形式的结构图见图4.1。顺序控制顺序控制选择控制选择控制循环控制循环控制ABABA a.顺序结构 b.选择结构c.循环结构图4.1程序的三种基本结构注意:一个逻辑模型可以有多种可供选择的处理方式和技术手段,而且,由于不同的功能分解方法,可以得到不同的系统结构即物理模型或开发方案。实际上,对于我们开发者来说,也希望有多种不同的实施方案供选择、进
19、行权衡和比较,从而获取最优或最佳方案。如何衡量一个物理模型或实施方案,是系统研制人员对实施方案性能的考虑。首先,一个物理模型必须符合逻辑模型,也就是说,所考虑的物理模型必须能够完成逻辑模型所规定的任务,这是最起码的条件。而当几个物理模型都能完成逻辑模型所要求的任务时,可从以下几个方面进行评价和衡量。系统的功能在系统的逻辑模型中已经确定了,除功能之外的各点,即效率、工作质量、可靠性、适应性等,则依赖于物理模型的确定而确定。这几项应该是选择物理模型的标准。效率 一般说来,系统越大,总体结构设计对其影响就越大,各具体任务设计的影响相对越小。实际上,那种认为每一个局部都高效率,整体就自然达到高效率的想
20、法在系统研制中是不对的。由于全局组织不合理而造成巨大损失的事例,在各种工作领域中都是屡见不鲜的。对于信息系统这样同时涉及人员和机器的复杂系统,这一问题尤为突出。因此,我们应该把主要精力放在如何提高系统组织的合理性上,尽可能地减少重复的、不必要的处理和数据存储,纠正不合理的数据流程。在此前提下再考虑每一个具体工作环节上使用合理的工作方式及必要的技术手段。工作质量 应该根据系统的具体要求来确定。一般说来,机器所提供的条件是系统工作质量的基础,如高精度的数据类型、强功能的汉字处理系统、高挡次的文字处理和表格生成软件,以及数据管理系统、高级语言编译系统、文件系统等软件系统,都对信息系统的质量有影响。当
21、然,这些资源能否发挥其作用,还要看系统研制人员是否熟悉并充分立足于本系统的特点、针对本系统的需要而利用了这些资源。可靠性可靠性是指系统对错误情况或意外情况的发现、分类及处理三方面的功能。高可靠性的系统首先要能及时发现非法的输入数据或非法操作,并立即进行处理,不让它们接触或干扰系统的实质性部分,在发现错误的基础上,要会加以分类,判断属于那一种错误或非法操作,并能确定其严重程度;接着要求采取不同的处理方法进行处理,即或忽略、或跳过、或修正、或显示错误信息请求人工干预等。很明显,系统可靠性的合理设置,要求设计人员确切地掌握数据字典中所规定的输入数据的合理范围,同时,还应通过历史情况的积累,掌握各种错
22、误及意外情况的频繁程度,才能辅以良好的设计。适应性适应性是系统结构化设计的根本。系统在投入运行后,由于环境变化、目标或性质的修正等,促使系统必须要进行某种变更是不可避免的。系统的变更可以分为改错、改变和改进三类。系统刚开始运行,大量的工作是改错,因为不可能在系统投入运行之前,能完全排除掉各种隐患和错误,有一些错误要在运行过程中遇到适合的情况才暴露出来,这时就要改错。随着时间的推移,改错量将逐渐减少而外界条件的变化如企业产品的转产或变化、管理体制的变化或人员的变更、硬件与外设的更新换代以至整个经济形式的变化或大形势的改变等,都可能要求系统的处理功能需要进行某些修改,且问题会逐渐多起来,这就要作改
23、变。信息系统是社会经济组织的信息系统,由某些变化对系统引起的变更是确实存在的,因而系统的改变是客观存在的。而改进则是指信息系统运行之中,打开了领导和管理人员的眼界,从而会对系统提出新的要求如增加新的表格模式、增加新的分析或计算功能等。社会在发展,一切都不是静止的。这种环境之下的信息系统当然天生就要边用边改,而保证系统可以较方便地修改,是系统设计人员主要考虑的问题之一。4.2 计算机系统配置计算机系统配置信息系统是一个计算机应用系统,一个完整的计算机系统和网络系统当然就是信息系统的主要支撑环境。所以,计算机系统配置明显地是系统设计阶段的主要任务之一。我们的目标,是合理地配置计算机这一系统环境,使
24、我们用较少的投资代价获得交好的系统性能目标这一高效益。信息系统的设计本身就包括计算机系统流程图和程序流程图的确定、编码、输入输出设计和文件设计、程序设计等。而机器的购买、安装、程序调试、系统的切换以及系统的运行和维护等,则是在下一阶段系统实现或系统实施中进行的。4.2.1 计算机系统的选择前面总体规划阶段,通过初步调查,提出计算机系统的初步配置方案,那是一个逻辑配置,强调系统对计算机功能的要求,不涉及具体计算机参数如机型、机种、牌号等。到了本阶段,系统对计算机的要求已经清楚,这时的计算机机配置已经是物理的方案了,即设备的型号、数量、安装地点等,都已经具体化。合理配置系统的目的,就是要以较小的投
25、资来获得较好的系统性能。而计算机系统的选择,应满足当前和中长期目标的需要,保证实用性而又不失先进性。对计算机系统的功能要求就是信息系统的功能要求,如处理方式,汉字要求及上网要求等。容量要求则是根据信息系统的近期、中长期可能的数据处理量要求的内存、外存容量要求。性能要求主要是在满足用户时间性、精确度方面来确定计算机的运行速度、字长等指标。对机型的选择,不光是看广告和书面材料,重要的是进行实际考查,甚至是走访用户,了解实际运行情况和厂商售后服务态度。实际购买计算机时,要考虑先进性,即机器技术起点高、机型有发展前途、软硬件兼容性能好。同时,由于计算机不仅仅是一台主机,而是一个系统,主机功能要求终端设
26、备、外存设备、输入输出设备、数据收集设备以及通信设备的性能达到相互协调匹配(即配套性),使系统达到最大的结合能力,以满足生产任务管理的需要。所谓经济性是指不要盲目追求洋、大、全,而要选择相适应的计算机系统,使其达到最佳利用率。总结起来,计算机系统方案的选择,包括硬件和软件两方面的配置,一般应从以下几个方面进行。1.选择的依据计算机系统方案的提出,应主要考虑和依据系统的可行性报告、系统说明书和系统总体结构设计三个方面。2.性能要求对计算机系统的功能要求,实际上是对信息系统的功能要求,这一方面主要考虑的是数据处理能力即速度,还有系统的外设功能如文字、图形、声频、视频等多媒体处理能力。再就是通信功能
27、即数据的通信方式,是点对点通信还是网络通信。3容量要求主要是数据的存储能力即计算机存储空间的要求,根据所研制和要支持的信息系统的近期、将来甚至是若干年后发展规划所要求处理的可能的数据量,提出对计算机内存、外存的容量要求。4系统配置这一方面,应从计算机系统的软件和硬件两个方面来考虑。当我们优选硬件时,要注意软件必须与其兼容;反之,如果优选软件,则要考虑硬件必须与之配套。当然,还要注意这两方面的可扩充性。还有,要从用户和系统要求的实际出发,选定计算机系统的外部设备。5性能要求这一方面主要是强调计算机的运行速度、字长及与二者有关的指标要求。要根据用户提出的时间性、精确度等需求来确定。6通信要求研制的
28、信息系统在当今是离不开网络的,我们在方案中要考虑到计算机系统的通信能力及与网络的接口。7市场考虑计算机的选型,通常应考虑系统的升级情况和软件的支持情况,即系统应具有延续性,另外要考虑的是,当前优选机型的使用率及国情要求。8人员培训培训要求应以用户为主,要尽量满足他们的要求,作认真、全面的培训。完善的培训计划是系统有效运行的基本保证。9方案评价计算机系统方案的评价,主要依据以下各方面来考虑:首先,要考虑功能是否齐全,能否满足系统的所有要求;其次。要考虑今后的发展,包括配件是否齐全、软件是否丰富;再次,要考虑系统的开放性,兼容性要强,技术要先进,后援一定要可靠;最后,要考虑价格是否合理。系统的建设
29、必然受到政策、经济、投资、技术条件、通信等方面的限制,设备的选择当然也会受到这些方面的制约。10方案选择计算机系统的配置要准备几种方案,每种方案在性能、费用等方面进行比较说明,形成选择方案报告,供讨论和决策。需要指出的是:开发信息系统不应当把买机器放在第一位,因为只有在进行了系统分析以后,才知道要买什么样的计算机,买多少计算机。尤其对于大的系统,开发时间可能在三年或以上,而现代计算机一般5年换一次代,微机更快,一般3年换一次代。也可以说,同样的机器,三年之后的价格要比原来少一半!由此看来,信息系统从研制开始就买机器,实在划不来。4.2.2 网络设计当今的信息系统离不开网络。网络设计要考虑到系统
30、集成和结构化布线。要考虑通信和网络要求方面,包括用户终端数、通信量、速度和线路等。由于计算机网络技术发展迅速,信息系统网络化已经是必然的趋势。通过计算机网络来连接组织机构内的各个部门,使部门之间的信息传递和共享更加方便快捷,就能充分发挥信息系统再组织内部工作中的作用。随着Internet的不断普及,组织机构的内部网络与Internet的连接也将成为信息系统的重要组成部分。根据信息系统的需要,规划和设计网络时应考虑以下几个主要问题。1网络系统结构 有四种不同的网络系统结构或运行环境,它们影响到信息系统结构的设计。(1)工作站/文件服务器方式 这是局域网的基本工作方式,常见的网络系统的基本工作模式
31、都是如此,如Novell公司的Netware、Microsoft公司的Windows NT系统等,都属于本范畴。本方式的组成,是将若干台微机组成的工作站与一台或多台文件服务器通过网络设备连接在一起,使各工作站共享文件服务器上的文件设备。(2)主机/终端系统 主机/终端系统简称为主机系统。本系统在传统的信息系统(如金融行业中的信息系统)内使用较多。它是以一台主机为中心的多用户系统。在这种结构中,用户通过与主机相连的字符终端,在主机操作系统的管理下共享主机的内存、外存、CPU和I/O设备等资源。传统的主机/终端系统大多采用Unix系统,所有的应用程序均在主机上运行,终端仅相当于一个字符显示器和一个
32、键盘。随着图形界面的大量普及,传统的字符终端被淘汰,新型的基于Windows可见的终端系统在普遍地使用。当主机采用Windows NT操作系统时,终端一般通过Ethernet连接。与传统的字符型操作系统的工作方式一样,基于Windows的终端系统中,所有应用程序均在主机上运行。比如我国实达公司推出的升腾系列终端,就是这一类产品。很明显,这种系统中的主机负荷较重,需要采用高性能的计算机做主机,但系统的维护相应简单一些,所有的软件只需要在主机上安装配置即可。(3)Client/Server(客户/服务器)系统简称C/S系统,由工作站/文件服务器系统发展而来,不同的是,其处理功能不再全部在工作站上完
33、成,而是一部分任务被分配到应用服务器上。当一个用户需要服务时,工作站发出请求,由应用服务器执行相应的功能,并将结果返回工作站。此时的工作站变成了应用服务器的客户。应用服务器可以与文件服务器为同一台计算机,也可以是网上其他计算机,为客户机提供面向应用的服务。这类系统的典型代表是数据库服务器系统。工作站中运行的应用程序即客户不再直接访问数据库文件,当客户程序需要操作访问数据库时,向数据库服务器发出请求,由数据库服务器完成实际操作。这种方式使得网络上传输的数据量大大减少。(4)对等网络系统这是一种适合于小规模局域网的系统结构,它不存在专门的文件服务器。这种网络系统中的每一个工作站既可以起客户机的作用
34、,也可以起服务器的作用,为其他工作站提供服务。所以它的明显优点是系统建设费用低,无需专门的服务器,也无需专门的网络操作系统,常见的桌面操作系统如Windows XP可用作它的操作系统,使用也相对简单得多。但是,对网络系统结构存在网络完全性和保密性较差的缺点。2数据库访问方式信息系统一般要进行大量的数据库操作,选择不同的网络系统结构,所使用的数据库访问方式也不相同。(1)独立数据库独立数据库存储在运行应用程序的本地计算机上,由本地应用程序直接访问。所以这种数据库一般 不适合网络环境的数据库应用。(2)文件共享型数据库文件共享型数据库也称单层数据库应用。在更新数据库之前,通常需要锁定数据库以防多个
35、客户端同时更新数据库造成冲突。信息系统在关于网络建设时要注意这一点。(3)客户/服务器型数据库在访问数据库时,通过一些数据库访问接口向数据库提出请求,而不是由应用程序直接访问数据库文件,如Microsoft公司的ODBC就是这一类型的。(4)多层数据库应用系统这种数据库系统在逻辑上划分为几个部分,分别在不同的计算机上运行,这些计算机 既可以在局域网内,也可以在Internet上。采用这样的系统,在结构设计时,应注意将应用逻辑 从用户界面中分离出来,形成不同的模块。(5)基于Web的数据库基于Web的数据库即Browser/Server,简称为B/S,本质上时客户/服务器型或多层数据库体系结构,
36、只是用户界面不同:用户只需要通过Internet浏览器来完成操作。由于它无须在客户端安装特定的软件,所以系统容易维护。软件更新也只需在Web服务器上完成。基于Web的数据库模式事故信息系统发展的一个趋势,它采用的时基于Internet的开发技术,易于实现组织内部域Internet的一体化应用。3性能指标网络选型的技术性能指标,是指要考虑网络的吞吐能力,可扩充性和连接性,以及最大的作用距离、传递速度、响应时间和可靠性、维护性等。而网络选型锁应遵循的原则是标准化、主流性和实用性三方面。标准化原则是指所选网络产品必须是符合国际和我国标准的产品;主流性原则是说产品能得到国内外实力雄厚的厂家和大公司的支
37、持,确保软件较丰富的通用性软件,尤其是汉化的网络多用户数据库管理的系统。看来,信息系统中规划一个局域网时,首先必须考虑一个重要的因素就是网络的规模。以下几个方面时选择的参考:1)网络中的结点的数目。2)结点相互之间的距离。3)系统中使用的软件。4)对网络 其他的一些特殊要求。5)建立网络所需的费用。4.3 系统结构设计系统结构设计软件工程瀑布流开发模型将系统设计阶段分为两个阶段:总体设计和详细设计。总体设计又称为概要设计,它将系统划分为若干具有一定独立性的模块,定义模块之间的接口,因此也称为系统结构设计。详细设计阶段的目标则是得到各模块可直接用于编码的程序逻辑结构。4.3.1 系统结构设计的基
38、本原则系统结构设计的基本原则 1结构化设计的基本思想结构化设计的基本思想是将一个系统分为若干个彼此具有一定独立性,同时又有一定联系的组成部分,这些组成部分就是模块。对每一个系统,都可以按功能由顶向下逐层分解为多层次的、具有独立功能的许多模块,一直分解到每一个模块都能很容易实现为止。结构化方法集中体现了软件工程中的模块化原则,这样可以使系统开发工作量变小。但要注意,模块化是与模块独立性紧密相连的。模块之间联系过于密切时,虽然每个模块工作量减少,但模块之间接口将很复杂,这将使得接口工作量增大。模块的独立性可以通过模块的耦合性和模块的内聚性来度量。耦合是指模块之间的联系程度,内聚则是指模块内部软件成
39、分之间的联系程度。2.模块的耦合耦合性(Coupling)也称模块间的联系,表现了模块的外部特征,反映出模块之间连接的紧密程度。模块之间的耦合程度越低,说明模块的独立性就越好。常见耦合方式有以下七种。(1)非直接耦合指两个能彼此独立工作,没有直接的关系,仅通过主程序的开展控制和调用来实现,两者之间不能传递任何信息。这是一种理想的耦合。(2)数据耦合指两个模块之间通过数据交换实现相互间的联系。一个模块带参数调用另一个模块,被调用模块执行后返回一个参数给调用它的模块。传入和返回的参数都是单个的数据项。(3)标记耦合指一个模块调用另一个模块时,不是传送数据本身,而是传送存放数据的变量或文件名等标记符
40、号。这种耦合比数据耦合的出错机会更多,复杂程度也更高。比如,在C语言中,通过传递一个变量的地址给另一个模块,叫做指针参数传递,它就是一种标记耦合的形式,很明显,它的复杂程度大大高于值传递,出错的可能性也更大。(4)控制耦合如果一个模块调用另一个模块时,所传递的不是数据参数,而是一个控制变量,且它是用来控制被调用模块的功能,则称为控制耦合。通常,被调用的模块含有多种功能,由传递的控制变量决定调用哪一种功能。被调用的模块的逻辑控制的走向,受控于调用模块。控制耦合的耦合程度较高,增加了编程和理解的复杂性,例如:设模块A通过传递开关变量f 调用模块B,模块B被调用后返回变量x,见图4.2(a)。设模块
41、B包含有两种功能,见图4.2(b)。在这种情况下,在编制模块A的程序时,首先要理解开关变量f 的含义,同时在模块A中必须设置开关变量的值。模块A中还可能要根据不同的返回值进行不同的处理。这种复杂和麻烦,在设计时应尽量避免。绝大多数情况下,可以将控制耦合改变成如数据耦合之类的耦合,以避免这种耦合的出现。对于上例,我们可以用如下方法改控制耦合为数据耦合:将被调用模块B中的判断上移到模块A中;将被调用模块B中包含的两种功能分为两个模块。这样处理后,控制耦合就改变为数据耦合了,见图4.3。(5)外部耦合 指模块与外部环境之间的联系,如输入输出模块,只有在当需要的外部设备正常工作时,这些模块才能正常工作
42、。(6)公共模块指多个模块共享全局数据区,比如C语言中的共用外部变量就是公共模块的表现。公共耦合的耦合程度高,属于强耦合,在设计时应该避免使用。(7)共享耦合指一个模块直接访问另一个模块的内部信息程序、代码或内部数据。这是最不好的一种耦合形式,它对模块的独立性破坏最大。以上七种耦合方式的耦合强度由弱到强,模块间的接口方式也越来越复杂。模块间的耦合方式不可能都为非直接耦合,比较理想的是数据耦合。模块间仅仅是变量值的传递,则模块间发生相互影响的可能性较小,发生错误时查找也比较容易。3.模块内聚模块的内聚性(Cohesion)也叫内部凝聚性或模块内部紧凑性。常见的内聚方式有以下七种。(1)偶然内聚偶
43、然内聚是指模块中各软件成分之间不存在有意义的联系。有时若干个模块中存在若干相同的语句系列,程序员为了节省存储空间,就将它们抽取出来形成一个单独的模块。这些语句系列只有与调用它们的模块放在一起时才具有意义,这些语句系列本身相互之间并无有意义的联系,则这个新的模块是偶然内聚的。偶然内聚的可理解性差,难于修改,内聚程度最低,设计时应该尽量避免使用。(2)逻辑内聚逻辑内聚是指将几个逻辑上,功能上相似的模块合并,而形成一个新的模块,该模块包括有若干个在逻辑上具有相似功能的程序段,由传送给模块的参数来确定该模块完成哪一程序段的功能,如图4.4所示。图4.4(a)表示模块A、B、C分别调用模块D、E、F,模
44、块D、E、F逻辑相似,具有部分相同的代码段。图4.4(b)则表示将模块D、E、F合并为一个模块DEF后的内部结构,不同的代码段根据开关值判断执行哪一个代码段。合并后,模块A、B、C调用新的模块DEF的情况如图4.5所示。逻辑内聚属于低内聚,其缺点是不易修改。例如图4.4(b)中,当A、B、C中某模块需要改变公用代码段,而其他模块可能并不需要改变公用代码段。另外,逻辑内聚增强最模块之间的耦合强度,图4.5中模块A、B、C与新模块DEF之间由数据耦合变为控制耦合了。(3)时间内聚时间内聚也称瞬时内聚,指模块中的任务必须在同一时间段内进行。例如,为各种变量设置初值、打开文件等任务,经常在系统初始化时
45、进行,通常将这些在时间上必须同时进行的任务组合起来形成一个模块,这个模块就是时间内聚的。时间内聚也属于低内聚,模块内,各成分的时间关系在一过程度上反映了各成分的某些实质,它的可理解性和紧密程度比逻辑内聚要好。(4)过程内聚过程内聚是说模块内各成分是相关的,并且必须按照特定的次序执行。它属于中等程度的内聚,模块内各成分的联系紧密程度优于前面几种类型,比它们易于理解、易于维护。(5)通信内聚通信内聚指模块内各成分有共用的数据区,或者所有成分都使用相同的输入或产生相同的输出。这样的模块如果将它的软件成分分为多个模块,则这些模块之间的耦合方式是公共耦合。这种耦合是一种强耦合,模块之间的独立性很差,而通
46、信内聚模块中各软件成分之间的关系比较密切,因为它们使用或产生同一数据区中的相应数据,这就说明其功能是密切相关的,其可修改性和可理解性当然也较好。(6)顺序内聚顺序内聚是指在模块内,各成分的执行顺序以确定的顺序进行,一般说,前一功能成分的输出往往就是后一功能成分的输入,执行顺序不能改变,而且,这些成分是与同一功能密切相关的。(7)功能内聚这是内聚程度最好的方式。这种内聚是模块内包括并仅包括为完成某一功能所必需的所有成分。以上所列七种内聚方式,其内聚程度由低到高排列,前三种(偶然内聚、逻辑内聚、时间内聚)属于低内聚,接着的两种(过程内聚、通信内聚)为中等内聚,最后的两种(顺序内聚、功能内聚)属于高
47、内聚。注意,在划分模块时,应尽量设计高内聚低耦合的模块,最理想的是功能内聚和数据耦合。4.子系统划分我们知道,信息系统覆盖组织机构管理工作的各个方面,涉及不同的部门,而每个部门所要完成的工作一般都不相同。这样,系统设计通常首先要将系统按照管理要求以及环境条件等,划分成若干子系统。目前最常用的划分方法是按功能来划分,即按照相对独立的管理活动来建立各个职能子系统。对于一般的制造业,其子系统通常包括计划管理子系统、生产管理子系统、物质供应管理子系统、销售管理子系统、财务管理子系统、设备管理子系统、质量管理子系统、劳动人事管理子系统等。对于不同的组织机构,其管理功能要求也不尽相同,应根据系统分析的结果
48、来进行划分。而对于较小的系统,也可以按照组织机构的部门设置来进行划分,因为部门的设置,在一定程度上反映了管理功能的要求和分布。例如,一个工贸公司,其部门可以分为管理部门、业务部门、财务部门、单证储运部门。这样,我们可以将系统划分为综合管理子系统、业务管理子系统、财务子系统和单证储运子系统。当然,子系统的划分还可以按照业务的先后顺序、网络的分布或实际环境等来进行。不管怎样划分子系统,在划分过程中,一般应该遵循以下原则:子系统的设置,应考虑今后管理工作发展的需要。子系统要具有相对的独立性。子系统的划分,应便于系统的分阶段实现。子系统的划分,应使数据冗余较少。数据冗余的问题很重要,忽视这个问题,可能
49、会使得相关功能的数据分布到各个不同的子系统中,形成大量的中间结果需要保存和传递,大量的计算工作也将重复进行,从而使得程序结构紊乱。数据冗余,不仅会给软件的编写工作带来很大的困难,而且会使系统的工作效率大大降低。子系统的划分,要使子系统具有相对的独立性,要保证子系统有较强内聚性。应将那些联系比较紧密、功能比较近似的模块相对集中。子系统之间的联系应尽量减少,接口要简单明确。4.3.2 结构图结构图 结构图(Structured Chart)可以用来表达一个已经被分解的暗盒模块及其连接关系。结构图的全称是层次结构图,也叫控制结构图。美国W.Stevens、G.Myers和L.Constantine三
50、人于1974年联名在IBM System Journal杂志上发表的论文Structured Design(结构化设计)中第一次提出用于结构化设计的一种重要工具,这种工具能表达系统内各部分的组织结构和相互关系,解决了传统方法所不能解决的问题。结构图主要关心的是模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系。也就是说关心模块作什么,而并不关心它内部如何作的问题。结构图的图例符号如图4.6所示。表述模块间的联系的4种基本关系如图4.7所示。以下举一个例子来简介层次化模块结构图的画法:设系统功能为输入数据后反复进行业务处理,然后输出结果。业务处理中有一项“核对数据”功能,核对数据成功