第05章 系统设计

上传人:我*** 文档编号:137615941 上传时间:2020-07-10 格式:PPT 页数:136 大小:850.50KB
返回 下载 相关 举报
第05章 系统设计_第1页
第1页 / 共136页
第05章 系统设计_第2页
第2页 / 共136页
第05章 系统设计_第3页
第3页 / 共136页
第05章 系统设计_第4页
第4页 / 共136页
第05章 系统设计_第5页
第5页 / 共136页
点击查看更多>>
资源描述

《第05章 系统设计》由会员分享,可在线阅读,更多相关《第05章 系统设计(136页珍藏版)》请在金锄头文库上搜索。

1、第五章 系统设计,本章内容,第一节 系统设计的任务要求 第二节 结构化设计的基本概念 第三节 从数据流图导出结构图 第四节 一体化设计方法 第五节 代码设计 第六节 输出设计 第七节 输入设计 第八节 数据库设计 第九节 计算机处理过程的设计 第十节 技术系统的设计 第十一节 系统设计说明书,转换,从分析到设计,现实领域的各种需求 系统的逻辑模型,计算机领域的具体实现,根据需求设计系统物理模型,第一节 系统设计的任务要求,通俗地说,设计就是要回答“怎么做” 完成技术实现方案的制定,即信息系统的物理模型 一个逻辑模型,可以提出多个物理模型 根据物理模型进行实施,得到最终的物理系统,一、系统设计的

2、目标,设计系统之前,先看看评价信息系统的标准,这些标准对任何设计方法都适用: 信息系统的功能:是否满足用户的需求 系统的效率:响应时间、操作的方便性 系统的可靠性:抗干扰能力、故障恢复 系统的工作质量:准确性、使用效果 系统的可变更性:修改和维护的难易程度 系统的经济性:系统收益与支出比,信息系统的可变更性,变化是不变的真理。 统计表示:在信息系统的整个生命周期中,系统维护成本占总成本的80%左右。 因此,可变更性是衡量信息系统设计的重要指标。,如何提高系统变更性,结构简单 系统各组成元素分工明确,易于理解 元素之间的关系清晰简洁 变动灵活 谨防软件维护中的“水波效应” 使系统各组成元素内部的

3、改变容易实现,改动对其它部分的影响尽量减少 提前考虑将来最易出现的扩展和变更 设计方法:结构化设计技术和面向对象设计技术,二、系统设计的内容,一般划分为两部分: 总体设计 也称概要设计 明确软件的体系结构(也称架构architecture)、组成元素及其结构(structure) 架构表示抽象的框架模式,结构则是指具体元素及其关系 详细设计 各项具体细节,设计硬件软件的各个方面,结构化方法的总体设计主要包括: 将系统划分成程序模块; 决定每个模块的功能; 决定模块的调用关系; 决定模块的界面(接口),即调用时传入的信息(函数参数),以及返回的信息(返回值)。 简单地说,就是绘制模块结构图,(1

4、)结构化方法的总体设计,(2)面向对象方法的总体设计,面向对象方法的总体设计主要包括: 识别系统中的对象,设计类; 决定每个类的属性和操作(功能); 决定对象之间的协作关系; 将类划分为组件,决定组件的依赖关系。,(3)详细设计,包括 代码设计 输入设计 输出设计 人机交互设计(用户界面设计) 模块处理过程详细设计/类及用例的详细设计 数据库设计 技术系统的设计,第二节 结构化设计的基本概念,结构化:自上至下,逐步分解求精 结构化设计:模块化,模块化,因为根据经验: 对于问题1(P1)和问题2(P2) 若: C(P1)C(P2) 则 :E(P1)E(P2) 有规律显示: C(P1+P2)C(P

5、1)+C(P2) 则:E(P1+P2)E(P1)+E(P2) C表示复杂度,E表示需要的工作量,模块化设计方法,使用结构化设计方法一定程度上能够简化系统结构,使系统容易修改和理解。 具体做法: 把整个软件划分为部分,其中每一部分的功能简单明确,即程序模块(可以是子过程或函数) 划分模块的工作按层次进行,上层模块调用下层模块 每一个模块应尽可能独立 模块间的调用接口要阐明(模块名称、输入数据、输出数据),接口成本 /集成成本,成本 /工作量,模块数量,单元模块成本,软件总成本,模块数量和软件成本,粒度太大,单个模块复杂度升高、维护困难 粒度太小,管理与运行成本升高 试想一下:每个经理管理协调多少

6、个下级合适?,一、模块,模块(Module)一词使用很广泛。通常对应于用一个名字就可以调用的一段程序语句(子程序或函数) 模块具有输入和输出、逻辑功能、运行程序、内部数据四种属性。,计算工资,模块的图形表示方法,模块的函数接口表示,double caculateSalary(),二、结构图,结构图(Structured Chart)描述系统的模块结构及模块间的联系 结构图中的主要成分有: 模块:用长方形表示 调用:从一个模块指向另一模块的箭头表示前一个模块调用后一个模块。有循环调用和条件调用 数据:用带圆圈的小箭头表示从一个模块传递给另一模块的数据(有实义) 控制信息:带涂黑圆圈的小箭头表示一

7、个模块传送给另一模块的控制信息,主调模块,被调模块,被调模块,主调模块,被调模块,被调模块,循环调用,条件调用,1、结构图无严格的模块调用顺序,但一般习惯从左至右 2、因为约定遵从从上向下的调用,调用关系也可以不使用箭头,而直接使用直线 3、模块间传递的信息如果出现在数据字典中,则视为数据,否则为控制信息,结构图的画法,一个完整的结构图,三、模块的联系,为了衡量模块的相对独立性,提出了模块间的耦合(Coupling)与模块的内聚(Cohesion)两个标准 耦合:模块和模块之间的联系程度 内聚:模块内部各元素之间的联系程度 设计目标: 模块内的联系越紧越好 模块间的联系越少越好,四、模块的耦合

8、,double calculateAvg() double total, average, valueMAX; total = sum(value); average=total/MAX; return(average); calculeteAvg和sum两个模块之间存在联系,影响耦合度的因素,如果使用模块A需要了解模块B,那么A和B是耦合的。影响模块间耦合程度有三方面的因素: 联系方式模块间通过什么方式联系 来往信息的作用模块间来往信息作什么用 数量模块间来往信息的多少。,混合 控制 数据,用过程 直接引用 语句调用,少,多,数量,方式,作用,0,离坐标原点越远,耦合程度越高,(1)联系方式

9、,直接引用:一个模块直接存取另一个模块的某些信息,例如全程变量、FORTRAN的common量、语言的extern量、共享的通信区等 。也称为公共环境耦合(common environment coupling) 降低这种耦合程度的办法是使数据局部化,即使用局部变量 过程语句调用:一个模块调用另一个模块,所有数据来往都以参数或返回值方式传递并使用,(2)来往信息的作用,模块间的来往信息可以作数据用,也可以作控制信息用,A,取平均成绩 或最高成绩,平均/最高 B,(a)控制耦合,成绩,取最高成绩,取平均成绩,A,平均成绩,最高成绩,(b)数据耦合,(3)来往信息的数量,模块间传递的信息量越大,它

10、们之间的耦合程度越高。 一个模块最好只了解它确实需要使用的数据,而完全不知道其他数据的存在(独立性好),减低耦合的设计原则,结构化设计要求模块间的耦合程度尽可能小。 为此应: 用过程语句调用其它模块 模块间的参数作数据用 模块间的参数尽可能少,五、模块的内聚,double CalculateAvg() int n; double total, average, value; scanf(“input value:”, 模块内部各元素(变量、语句)之间存在联系,内聚的好处,模块的内聚反映模块内部联系的紧密程度。 一个模块只需要做好一件事情,不要过分关心其它任务。 高内聚性的好处是可以提高程序的可

11、靠性。 有一个调查表明,50的强内聚性子程序是没有错误的,而只有 18的弱内聚性子程序才是无错的,弱内聚性子程序的出错机会要比强内聚性出错机会高 6 倍,而修正成本则要高 19 倍。摘自代码大全,内聚的类型,模块的内聚可以分以下七类: 、偶然内聚(coincidental cohesion) 、逻辑内聚(Logical cohesion) 、时间内聚(temporal cohesion) 、步骤内聚(procedural cohesion) 、通信内聚(communicational cohesion) 、顺序内聚(Sequential cohesion) 、功能内聚(functional_c

12、ohesion),当同一个子程序中的操作之间无任何联系时,为偶然内聚性,也叫作“无内聚性”。 比如只是为了将程序中某几处凑巧相同的一些语句组合起来形成的一个模块:,P,Q,R,S,(1)偶然内聚,B=A; read(Cardfile); D=C;,T,将几个逻辑上相似的功能放在一个模块中,比如常见的出错处理模块,工作模块发现错误后,调用错误处理模块,将错误号作为控制参数传入,然后出错处理模块根据不同的错误号执行相应的操作,(2)逻辑内聚,将在有限时间单元内处理的成分组合为同一模块 比如在程序初始化时所作的处理: m_Medirecno = psPerson.Medirecno txtMedir

13、ecno = psPerson.Medirecno txtTel = psPerson.Tel txtContact = psPerson.Contact txtAddr = psPerson.Addr txtMedirecno.Enabled = False,可视化程序设计中在窗口打开时初始化窗口中得控件内容,如列表框的项目、文本框或单选钮的缺省取值 还比如:C+的构造函数、析构函数,(3)时间内聚,(4)步骤内聚,当子程序中的操作是按某一特定过程结构进行的,就是步骤内聚。 例如:用户想按一定的顺序打印告,子程序设计成是用于按顺序打印销售收入、开支、雇员电话表的。 步骤内聚在时间内聚的基础上

14、增加了次序的约束,模块划分示例,PREP,PLANLOOP,STMRO (主模块),TYPDECID,准备好的矩阵指示标记,准备好的矩阵指示标记,矩阵指示标记,部分结果、标签等,模块PERP是一个初始化模块,属时间内聚。 模块PLANLOOP和TYPDECID都属于步骤内聚。前者的元素用于控制主循环,后者的元素负责主循环的整个判定执行过程,绘制划分后的模块图,当模块内的成分引用共同的数据,而不存在其他联系时,称为通信内聚,修改库存,购货单,开发货单,库存,A、销售模块,B 、产生留退名单模块,期末不及格统计,累计不及格统计,(5)通信内聚,模块中某个成分的输出是另一成分的输入。 比如显示期末成

15、绩通知:,(6)顺序内聚,(6)顺序内聚,顺序内聚有较强的内聚性 是步骤内聚和通信内聚的结合 例如:一个模块用于计算高于平均分的人数,步骤是先循环累计总分,然后计算得到平均分,最后循环统计高于平均分的人数 有步骤的先后,而且前一个步骤的结果要用于后一步骤的运算中 但仍然不是最高的内聚类型,(7)功能内聚,一个模块包括并且仅仅包括为完成一个具体任务所需要的所有成分,称为功能内聚。 功能内聚性是最强也是最好的一种内聚 例如:打印职工名单,PrintStaffList() 例如:计算平均分,CalculateAvg() 仅用一个动宾词组能明确指出这个模块的所有功能。,内聚的评分,耦合和内聚的概念是S

16、tevens等人提出的, 是测量一个模块化系统好坏的标志。 按他们的观点, 给上述七种内聚评分如下: 功能内聚分 顺序内聚分 通信内聚分 步骤内聚分 时间内聚分 逻辑内聚分 偶然内聚分 可以给一个软件的所有模块打分,最后计算平均分,作为软件结构质量评价的参考,耦合和内聚的关系,二者就像连体兄弟,存在紧密相关的关系: 模块内的高内聚往往意味着模块间的松耦合 反之,低内聚一般会带来紧耦合,六、作用范围与控制范围,一个判断的作用范围是所有这样的模块的集合,这些模块内含有依赖于这个判断结果的处理。或称影响范围。 一个模块的控制范围是指它本身及其所有下属模块的集合。,D 计算总工资,C 计算职工工资,B 计算临时工工资,A 计算工资,模块A的控制范围是: A、B、C、D,假如判断x出现在模块A中,并且仅在A中使用了x,则该判断的作用范围是:A, 而B、C、D不受影响,判断的设计原则,设计原

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号