第7章结构化系统设计课件.ppt
《第7章结构化系统设计课件.ppt》由会员分享,可在线阅读,更多相关《第7章结构化系统设计课件.ppt(209页珍藏版)》请在三一办公上搜索。
1、第7章 结构化系统设计,7.1 系统设计的任务要求 7.2 结构化设计的基本概念 7.3 从数据流图导出结构图 7.4 一体化设计方法7.5 代码设计 7.6 输出设计 7.7 输入设计,7.8 人机对话设计 7.9 计算机处理过程的设计 7.10 计算机系统的选择 7.11 系统设计说明书 习题7,7.1 系统设计的任务要求,系统分析阶段要回答的中心问题是系统“做什么”,即明确系统的功能。这个阶段的成果是系统的逻辑模型。系统设计要回答的中心问题是系统“怎么做”,即如何实现系统说明书规定的系统功能。这一阶段,要根据实际的技术条件、经济条件和社会条件,确定系统的实施方案,即确定系统的物理模型。,
2、7.1.1 系统设计的目标 根据一个逻辑模型,可以提出多个物理模型。我们怎样评价、选择这些物理模型呢?面向管理的信息系统,其优劣程度取决于它为管理工作提供信息服务的质量。具体讲,我们可以从以下六个方面来衡量。 1. 信息系统的功能 这当然是最根本的一条。它包括系统是否解决了用户希望解决的问题,是否有较强的数据校验功能,能否进行所需要的运算,能否提供符合用户需要的信息输出等等。,2. 系统的效率 这是与时间有关的指标。例如,联机处理系统的响应时间,即从发出要求到得到应答信号的时间,又如批处理系统的处理速度,即处理单个业务的平均时间等。在实时录入、成批处理的事务处理系统中,常用处理能力(标准时间内
3、处理的业务个数)来表示系统的工作效率。,影响系统效率的因素很多,包括系统的硬件及其组织结构、人机接口设计是否合理、计算机处理过程的设计质量等等。这里强调的是整个系统的效率,而不是某一部分的效率。例如,商场的收款系统,衡量其效率的标准是顾客等待时间的长短。它包括人的操作时间和计算机的运算时间。一般来讲,计算机的运算时间比人操作的时间要少得多。因此,人机界面设计是否便于操作,操作人员是否熟练,是这类系统至关重要的因素。,3. 系统的可靠性 系统的可靠性,指系统在运行过程中抵御各种干扰,保证系统正常工作的能力。它包括检查错误、纠正错误的能力及系统一旦发生故障后重新恢复、重新启动的能力。 系统在运行过
4、程中难免会遇到各种干扰。这些干扰有人为的,如病毒、无意的错误操作等;有自然的,如地震、火灾、突然停电等。提高系统的可靠性也有种种途径,例如可以选择可靠性较高的设备,采用硬件结构冗余设计(如双机结构),设置故障检测、恢复处理及各种安全措施等。,4. 系统的工作质量 系统的工作质量指系统提供的信息的准确程度,使用的方便性,输出表格的实用性和清晰性等。很明显,系统的工作质量直接影响系统的使用效果,因此,必须引起注意。同样,这里讲的工作质量是整个系统的工作质量,而不是某个部分的质量。管理信息系统是一个人机系统,除了程序正确之外,还要保证输入计算机的数据是正确无误的。即使输入是正确的,计算结果显示在屏幕
5、上也是正确的,但人还可能看错,如把“3”看成“8”。,这就要求设计人员在各个环节,如输入设计、输出设计、代码设计、人机接口设计等环节都要精心设计。设计时既要考虑应用的要求,还要考虑使用者的能力与心理的反应。,5. 系统的可变更性 系统的可变更性是指修改和维护系统的难易程度。系统实施过程中,需要测试、修改。系统交付使用之后,也会发现某些错误或不足之处。另外,随着系统环境的变化,用户会对系统提出某些新的要求。因此,系统的修改是否方便直接关系到系统生存期的长短。一个可变更性好的系统,维护相对容易,生命周期就长。,6. 系统的经济性 系统的经济性是指系统收益与支出之比。这是确定设计方案的一个重要因素。
6、 系统的效率、服务质量、可靠性、可变更性、经济性等指标是相互联系又彼此制约的,在一定程度上是相互矛盾的。例如,为了提高系统的可靠性,就要采取一些校验和控制措施,系统的效率就要受到一定的影响。但从另一个角度看,由于系统可靠性的提高,抗干扰能力强了,系统能不间断运行,中断时间的减少又提高了系统的效率。某些系统对可靠性要求很高,需要选取可靠性高的设备,甚至采用双机结构,这样系统成本要大幅度增加,经济性下降。,再如,为了增强系统的可变更性,采用模块化结构,系统的效率也会有所降低。这种彼此制约的关系说明,在系统设计时,应根据系统的具体情况有所侧重:对于可靠性要求高的系统,如涉及财务及某些高度机密的信息,
7、首先要保证系统可靠,不惜增加成本,在一定程度上可降低效率;对于实时性要求高的系统,如飞机订票系统,首先保证效率,不妨增加一些存储空间的开销。 但是,从系统开发的角度看,系统的可变更性是首先应考虑的因素。这是因为,无论对系统研制过程还是今后的运行,它都有直接的影响。据统计,在系统的整体生命周期中,各种经费开销所占比例如下:,研制占20%其中:分析与设计35%编写程序15%调试50%维护占80%,这里的维护包括排除开发阶段的错误,适应环境变化增加新的功能等工作。 由此可见,修改系统的经费开销占了整个经费的90%(20%50%80%),如果系统的可变更性好,就可以大大节约人力、财力,延长系统生命期。
8、事实上,一个信息系统不管事先怎样精心设计,系统投入运行后,总会进行某些修改或补充。这可能是经过一段时间后,发现某些地方效率还可以提高,或者还要增加某些可靠性措施,或者还要增加某些新的功能,或者对工作质量提出新的要求等等。,如果可变更性好,就比较容易满足这些要求。总而言之,可变更性好的系统,效率不高可以提高效率,质量不好可以改进质量,可靠性差可以加强可靠性。反之,可变更性差,修改不如重做,系统寿命自然就短。,从上面的分析可以看出:系统设计必须从保证系统的变更性入手,设计出一个易于理解,容易维护的系统。 为了分析具备什么特点的系统易于修改,必须先找出修改一个系统的困难来自何处。对系统的修改,往往是
9、对某一个模块或某个子系统的细节作一些变动,或者对子系统的组合关系作某些变动。更常见的是修改某一局部的数据结构或执行语句。这种修改的本身并不困难,困难在于找出需要修改的地方和这一修改对其他部分的影响。,我们知道,系统各个部分之间存在控制、调用、数据交换等种种联系。对某一局部的修改,可能直接或间接地影响到系统的其他部分。对A的修改波及B,而对B的修改又可以影响到C、E。人们把这种影响形象地叫做“水波效应”。因此对系统某一个局部的修改,必须十分小心地追踪这一修改所波及的各个部分。这是系统难于修改的主要原因。为了使系统容易修改和容易理解,需要注意以下几个问题:,(1) 把系统划分为这样一些部分,其中每
10、一部分的功能简单明确,内容简明易懂,易于修改。我们把这样的部分称为模块。即划分模块。 (2) 系统分成模块的工作按层次进行。首先,把整个系统看成一个模块,然后按功能分解成若干个第一层模块,这些模块互相配合,共同完成整个系统的功能。按功能再分解第一层的各个模块。依次下去,直到每个模块都十分简单。 (3) 每一个模块应尽可能独立,即应尽可能减少模块间的调用关系和数据交换关系。当然,系统中的模块不可能与其他模块没有联系,只是要求这种联系尽可能少。,(4) 模块间的关系要阐明,这样,在修改时可以追踪和控制。 总之,一个易于修改的系统应该由一些相对独立,功能单一的模块按照层次结构组成。这些模块之间不必要
11、的联系都已去掉,而且它们的功能及相互关系都已阐明。这就是结构化设计的基本思想。,7.1.2 系统设计的内容 系统设计阶段的任务是提出实施方案,该方案是这个阶段工作成果的体现。这个方案以书面的正式文件系统设计说明书提出,它被批准后将成为系统实现阶段的工作依据。 系统设计的基本任务大体上可以分为两个方面。 1. 把总任务分解成许多基本的、具体的任务 这些具体任务合理地组织起来构成总任务。总体设计的基本任务是:,(1) 将系统划分成模块; (2) 决定每个模块的功能; (3) 决定模块的调用关系; (4) 决定模块的界面,即模块间信息的传递。 总体设计是系统开发过程中关键的一步。系统的质量及一些整体
12、特性基本上是由这一步决定的。系统越大,总体设计的影响越大。认为各个局部都很好,组合起来就一定好的想法是不实际的。我们知道:整体大于部分之和。,2. 为各个具体任务选择适当的技术手段和处理方法 它包括: (1) 代码设计; (2) 数据库设计; (3) 输入设计; (4) 输出设计; (5) 人机对话设计; (6) 处理过程设计。,7.2 结构化设计的基本概念,7.2.1 模块 模块(module)一词使用很广泛,通常是指用一个名字就可以调用的一段程序语句。可以将它理解为类似“子程序”的概念,例如PASCAL程序设计中的函数、过程,FORTRAN程序设计中的函数和子程序。,图7.1 模块的表示方
13、法,模块具有输入和输出、逻辑功能、运行程序、内部数据程序代码四种属性。模块的输入、输出是模块与外部的信息交换。一个模块从它的调用者那里获得输入,把产生的结果再传递给调用者。模块的逻辑功能是指它能做什么事,它是如何把输入转换成输出的。输入、逻辑功能、输出构成一个模块的外部特性。内部数据和程序代码则是模块的内部特性,是看不见的。模块用程序代码完成它的逻辑功能。内部数据是仅供该模块本身引用的数据。 在总体设计阶段,我们主要关心模块的外部特性。模块的内部属性是以后要解决的问题。,模块用长方形表示。模块的名字写在长方形内,如图7.1所示。模块的名字由一个动词和一个作宾语的名词表示。模块的名字应恰如其分地
14、表达这一个模块的功能。,7.2.2 结构图 结构化设计采用结构图(structured chart)描述系统的模块结构及模块间的联系。图7.2是结构图的一个例子。,图7.2 结构图示例,结构图中的主要成分有: (1) 模块,用长方形表示。 (2) 调用,用从一个模块指向另一模块的箭头表示前一个模块调用后一个模块。箭尾的菱形表示有条件地调用,弧形箭头表示循环调用。 (3) 数据,用带圆圈的小箭头表示从一个模块传递给另一个模块的数据。 (4) 控制信息,用带小黑点的小箭头表示一个模块传送给另一个模块的控制信息。,结构图的层数称为深度。一个层次上的模块总数称为宽度。深度和宽度反映了系统的大小和复杂程
15、度。 结构图是系统设计阶段最主要的表达和交流工具。这种图应当简明易懂,既要便于设计人员表达自己的设想,又要便于编写程序的人员了解实现要求,还要便于和管理人员商讨。 模块结构图可以由数据流图转换而来。但是,结构图与数据流图有着本质的差别:数据流图着眼于数据流,反映系统的逻辑功能,即系统“做什么”;结构图着眼于控制,反映系统的物理模型,即怎样逐步实现系统的总功能。从时间上来说,数据流图在前,控制结构图在后。,数据流图是绘制结构图的依据。总体设计阶段的任务,就是要对数据流图规定的功能,设计一套实现办法。因此,绘制结构图的过程就是完成这个任务的过程。 结构图也不同于程序框图(flowchart)。后者
16、说明程序的步骤,即先做什么,再做什么。结构图描述各模块的“责任”(responsibility),如一个公司的组织机构图,就用来描述各个部门的隶属关系与职能。,7.2.3 模块间的联系 结构化设计的基本思想,就是把系统设计成由相对独立、功能单一的模块组成的层次结构。为了衡量模块的相对独立性,提出了模块间的耦合(coupling)与模块的内聚(cohesion)这两个概念。它们从不同侧面反映了模块的独立性。耦合反映模块之间连接的紧密程度,而内聚指一个模块内各元素彼此结合的紧密程度。如果所有模块的内聚都很强,模块之间的耦合自然就低,模块的独立性就强。反之亦然。 为了进一步说明这两个概念,我们先看一
17、段小程序:,Begin n:=0; total:=0.0; read (value); WHILE value=0.0 DOBegin n:=n+1 total:=total+value; readln(value)End;average:=total/n;writeln (n, ,average)End.,我们用箭头表示各程序行之间的联系。这种联系往往是程序的某个部分(这里是程序行)引用其他地方定义的数据时产生的,即程序中几个地方都引用了存储器中的同一位置。在一个大的程序中,这种联系是非常多的。因此把一个系统分解成许多模块时,分法不同,模块间的联系程度就不同。我们希望模块内联系越紧越好,模块
18、间联系越少越好。耦合、内聚这两个概念从不同的角度反映这种联系。,7.2.4 模块间的耦合 耦合是影响系统复杂程度的一个重要因素。若为了理解模块A,需要对模块B有所了解,则A、B之间就有联系。如果需要对B的理解越多,则A、B的连接就越紧密,我们就说它们耦合越紧。若程序员要修改紧耦合中的一个模块,很可能不得不修改另一个模块。因此,模块间的耦合程度对系统的可维护性、可靠性有强烈的影响。 影响模块间耦合程度的因素有三个: 联系方式:模块间通过什么方式联系;,来往信息的作用:模块间来往信息作什么用; 数量:模块间来往信息的多少。 这三个因素可用三维坐标表示,如图7.3所示,离坐标原点越远,耦合程度越高。
19、下面分别讨论。,图7.3 影响耦合的因素,1. 联系方式 如图7.3所示,联系方式有两种:“直接引用”和“用过程语句调用”。 直接引用是指一个模块直接存取另一个模块的某些信息。例如全程变量,FORTRAN的COMMON量,C语言的EXTERNAL量,或共享的通信区等。这种耦合也称为公共环境耦合(common environment coupling)。这种耦合的复杂性随耦合的模块个数的增加而显著上升。降低这种耦合程度的办法是局部化,也就是把一个公共区分成许多子区,使每个子区上耦合的模块数减少,如图7.4所示。,图7.4 用局部化方法降低耦合程度,用过程语句调用,是通过模块的名字调用整个模块,一
20、个模块只有一个入口,所有数据往来都以参数形式显式出现。采用这种联接方式,模块间耦合程度比较低。当然,两个模块共享数据很多时,参数传递也不方便。,2.来往信息的作用 模块间的来往信息可以作数据用,也可以作控制信息用。 若两个模块间传递的信息只作数据用,即一个模块提供的输出数据作另一个模块的输入数据,则这种耦合称为数据耦合(data coupling)。这种耦合当然是需要的。,如果两个模块间传递的信息作控制用,这种耦合称为控制耦合(controcoupling)。图7.5(a)中,模块A将参数“平均最高”传递给模块B,模块B按这个参数的值是“平均”还是“最高”去取相应成绩回送到A。这里的参数“平均
21、最高”实际上是一个开关量(尽管它本身可能是数据形式),控制模块B如何工作。这就是控制耦合。,图7.5 控制耦合,控制耦合给理解和修改带来不便:第一,需要理解开关量;第二,模块要设开关量,还要记住开关值是“平均”还是“最高”,以便数据从模块返回后作相应处理。其实,在系统设计中这种耦合是可以避免的。在这个例子中,只要将图7.5(a)改为图7.5(b)所示的形式就行了。图(b)中模块根据需要调用模块B1或B2。,3. 往来信息的数量 很明显,模块间传递的信息量越大,它们之间的耦合程度越高,因为正是这种传递关系造成了模块间的联系。一个模块只需了解它确实需要使用的数据,对其他数据的存在最好完全不知道。
22、总之,结构化设计要求模块间的耦合程度尽可能小,为此应遵循以下原则:,用过程语句调用其他模块; 模块间的参数作数据用; 模块间的参数尽可能少。 在用高级语言编程序时,只要注意消除开关量,减少共用变量,就可以大大降低模块间的耦合程度。,7.2.5 模块的内聚 模块的内聚反映模块内部联系的紧密程度。如果一个模块内部相关性很高,都是为了同一个功能,我们就说它的内聚程度高。模块的内聚可以分为七类,下面分别介绍。,1. 偶然内聚(coincidentacohesion) 如图7.6所示,模块P、Q、R、S都有某些共同的操作,为了节约空间,减少程序量,可把这些共同的操作抽出来,组成一个模块。实际上这些语句间
23、没有什么联系。这种联系就是偶然型的。在计算机内存小的时代,人们强调缩短程序长度,往往会引起这种情况。这种偶然性内聚的模块不便于修改。例如,若模块要将“B:A”改为“E:A”时,就不能直接改T,因为这一修改可能不适合其他模块。,图7.6 偶然内聚,2. 逻辑内聚(logicacohesion) 将几个逻辑上相似的功能放在一个模块中,模块内联系就是逻辑型内聚。如图7.5(a)中的模块“取平均成绩或最高成绩”就属这一类,它把“取平均成绩”和“取最高成绩”这两个相似的功能放在一起组成一个模块。这个模块的程序流程图如图7.7所示。它需要模块传递一个开关量,根据开关量判定执行哪一个分支。这样做的优点是节约
24、空间,缺点是修改困难。如果现在不仅要知道最高成绩是多少,而且还要打印出获得最高成绩的学生姓名。这一修改就很难适应“取平均成绩”的要求。,图7.7 逻辑内聚,3. 时间内聚(temporacohesion) 这是指与时间有关的联系,即把需要有限时间间隔内处理的成分放在同一模块内。例如一些初始化模块。这种模块的内聚程度比前两种稍高一些,但仍是一种低的内聚。 4. 步骤内聚(proceduracohesion) 模块内的元素属于同一个公共步骤单元,则称该内聚为步骤内聚。图7.8(a)是程序SIMPRO的流程图,虚线框给出划分模块的一个方案。这样划分模块得到的结构图如图7.8(b)所示。模块PERP属
25、时间内聚。模块PLANLOOP和TYPDECID都属于步骤内聚。前者的元素即主循环,后者的元素是主循环内的一个判定过程。,图7.8 步骤内聚,步骤内聚模块的内聚程度比时间内聚模块高。例如,PLANLOOP内各元素不仅满足时间内聚的条件,而且还有附加的步骤上的依赖关系。但步骤内聚的内聚程度仍不算高,往往导致模块间有相当紧的耦合。在SIMPRO程序中,生产情况模拟算法的处理元素同时出现在PLANLOOP和TYPDECID中。可以想象这两个模块会有较紧的耦合。当需要模拟修改时,可能需要同时研究这两个模块。,5. 通信内聚(communicationacohesion) 通信内聚是指模块内的成分引用共
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 系统 设计 课件
链接地址:https://www.31ppt.com/p-1822935.html