收藏 分享(赏)

软件工程--概要设计.doc

上传人:eukav 文档编号:5152627 上传时间:2019-02-10 格式:DOC 页数:7 大小:156.50KB
下载 相关 举报
软件工程--概要设计.doc_第1页
第1页 / 共7页
软件工程--概要设计.doc_第2页
第2页 / 共7页
软件工程--概要设计.doc_第3页
第3页 / 共7页
软件工程--概要设计.doc_第4页
第4页 / 共7页
软件工程--概要设计.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、概要设计4.1 概 要 设 计 的 基 本 概 念把一个产品分成几部分进行设计:软件模块的划分,数据结构和数据库的设计4.1.1 概要设计的任务分解系统、细化系统:把产品分解成零件1 模块划分2 决定每个模块的功能3 决定模块之间的调用关系4 决定要传递的参数5 设计主要的数据结构,包括数据库设计6 设计每个模块的测试计划4.1.2 应该提交的文档1 概要设计说明书2 数据库、数据结构设计说明书3 模块测试计划4.1.3 结 构 化 ( SD) 设 计 方 法与结构化的分析相对应自顶向下的设计过程逐层分解的方法:采用结构图的方法进行描述4.1.4 描述方法结构图:描述模块之间的关系结构表:用表

2、描述各模块之间的调用关系、输入、输出数据流表示反复调用模块 A1、A2、A3a31a11AA1 A2 A3a12a22a21a32表示有条件地调用模块 A2模块名 输入 输出A1 a11 a12A2 a21 a22A3 a31 a324.1.5 模块划分标准没有绝对的标准,但是有划分原则:每个模块相对独立。即:具有自己独特的功能,与上下模块有联系、但与同层的模块之间应该极少联系。模块之间的联系通过调用参数和返回值进行,各模块可以独立调试,全局变量尽量不用。数据文件、数据库文件要职责分明。例如,有的模块只能读文件,有的模块只能修改某些数据等。模块内的联系尽可能:块内联系较大、块外联系较少信息隐蔽

3、信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,定义每一个模块时尽可能少地显露其内部的处理。信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。模块独立模块独立是指每个模块完成一个相对独立的子功能,并且与其他模块之间的联系简单。衡量模块独立程度的度量标准有两个:耦合和内聚。耦合是指模块之间联系的紧密程度。耦合度越高则模块的独立性越差。按耦合度从低到高依次有 7 种耦合方式。非直接耦合(独立运行)数据耦合(用参数表传递简单数据)标记耦合(传递数据结构或者一部分)控制耦合(传递的信息包括控制模块的信息)外部耦合(模块与软件之外的环境有关)

4、公共耦合(多个模块引用同一全局的数据区)内容耦合(访问内部数据,代码重叠或者多个入口)内聚是指模块内部各元素之间联系的紧密程度内聚度越低模块的独立性越差。按内聚度从低到高依次有 7 种内聚种类。偶然内聚(模块完成的多个任务,任务之间的关系松散)逻辑内聚(模块完成逻辑相关的一组任务)瞬时内聚(模块的所有任务必须在同一时间间隔内执行)过程内聚(模块的处理元素相关而且按照特定的次序执行)通信内聚(模块的所有元素集中在一个数据结构区域上)顺序内聚(模块的处理元素相关,必须顺序执行)功能内聚(模块完成单一的功能,各个部分协调工作,而且不可缺少)4.2 结 构 化 设 计 的 过 程4.2.1 结构化程序

5、设计的原则 结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto 语句。 1自顶向下:程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。 2逐步求精:对复杂问题,应设计一些子目标作为过渡,逐步细化。 3模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。 4限制使用 goto 语句 结构化程序设计方法的起源来自对 GOTO 语句的认识和争论。肯定的结论是,在块和进程的非正常

6、出口处往往需要用 GOTO 语句,使用 GOTO 语句会使程序执行效率较高;在合成程序目标时,GOTO 语句往往是有用的,如返回语句用 GOTO。否定的结论是,GOTO 语句是有害的,是造成程序混乱的祸根,程序的质量与 GOTO 语句的数量呈反比,应该在所有高级程序设计语言中取消 GOTO 语句。取消 GOTO 语句后,程序易于理解、易于排错、容易维护,容易进行正确性证明。作为争论的结论,1974 年 Knuth 发表了令人信服的总结,并证实了: (1)GOTO 语句确实有害,应当尽量避免; (2)完全避免使用 GOTO 语句也并非是个明智的方法,有些地方使用 GOTO 语句,会使程序流程更清

7、楚、效率更高。 (3)争论的焦点不应该放在是否取消 GOTO 语句上,而应该放在用什么样的程序结构上。其中最关键的是,应在以提高程序清晰性为目标的结构化方法中限制使用 GOTO 语句。 与结构化的分层数据流图一一对应4.2.2 从数据流图导出初始结构图变换结构和事务结构变换型结构:可以从逻辑上划分成 3 个部分:输入部分把输入 A 变换成所需要的 B加工部分把 B 加工成 C输出部分输出 D具有 3 部分的数据流图称为变换型结构事务型结构:具有事务加工的并行模块事务进入后有事务分类的加工过程,然后分给不同的模块去处理对事务型的流图,用事务分析处理对变换型的流图,用变换分析处理变换分析对变换型的

8、结构图中的每个处理划为一个模块第一层的结构:事务分析首先确定事务的分类确定事务中心、输入、发送部分(有很多条出口的地方就是事务中心)再将上述结构图中的三部分对应成三个模块:输入、分类、输出模块然后再细化输入 加工 输出A BC DA3A2A1A 事务分类CCB DDCBABA变换系统输入加工输出 D把 C 变 D主加工把 A 变 B接受输入输出加工A2A3A11A事务分类输入 X1 X2 X2输入: 加工: 输出:4.2.3 开始结构图的步骤1 确定数据流图是具有变换特征还是事务特征航空订票系统具有变换型特征,进行变换型分析把全面讲的航空数据流图改成上面讲的画法可以分成具有输入、主加工、输出的

9、变换型结构图2 确定主加工或事务中心主加工:订票和出票确定输入、输出部分3 根据对应的分析方法映射成对应的结构图,完成第一层的映射A:订票号、库存、票价B:客户订票信息4 完成第二层的分解:把数据流图中的每一个加工都映射成一个软件模块5 根据分层数据流图逐步细化每一个模块、直到每一模块都成为基本加工的机票订票号订票号要求订票航班票价操作员 顾客航班维护票价维护订票处理库存 客户信息出票处理订票文件票价A数据准备BA B航空订票系统订票、售票 输出信息处理航班号输入订票信息票价订票信息 订票号数据准备航班维护 票价维护输入订票号机票、修改库存订票处理票价、订票号、订票信息订票信息 订票号、修改库

10、存客户信息订票、售票出票处理例:4.2.4上面所做的不一定符合程序设计的要求,应该作优化1 模块大小检查每一个模块的大小:一般 10100 行程序,在一张纸上为好(事实上,如果语句行数大于 30 行,则程序的可读性马上下降)对特别大的模块:进一步进行分割成若干个较小的模块2 优化模块的扇入、扇出扇入:调用本模块的模块数,即有多少个模块调用本模块扇出:本模块调用其他模块数例:要求:高扇入、较低扇出扇出大:说明模块复杂,可以增加中间层(一般不大于 7)如果一个模块 D 被多个模块调用,可起假名 d,以简化结构图(用圆圈表示)例如:3 作用范围和控制范围概念:控制范围:以本模块为根接点的所有子树上的

11、所有模块作用范围:一个模块中有个逻辑判断,受这个逻辑判断影响的所有模块作用范围 / 控制范围的原则;一般,作用范围总是要求落在其控制范围之内。不在控制范围内:模块之间联系增加,在别的模块中还要作重复判断当作用范围落在控制范围外时:进行模块调整(功能划分上的调整)航班信息输入航班维护把航班信息与机号,座位号对应航班信息输入航班维护把航班信息转换成座位号扇出为 2B1AB2 B3 B4C1.1.1 Ddd d4.3 设 计 的 其 他 工 作数据库和数据结构的设计数据库设计自有其一套设计方法:数据库原理需求 / 模块交叉表为检查本设计是否把所有的用户要求都包含进来?需求 模块 1 模块 2 模块 n需求 1 需求 m 即:某功能是通过哪些模块实现的?如果某个功能没有模块调用,则功能遗漏测试计划需求分析时讲的测试计划是针对某个功能的概要设计时讲的测试计划是针对某个模块的即:各个模块如何测试概要设计回顾概要设计:确定多少模块?模块之间的关系?请专家进行评审编写概要设计报告概要设计已经把产品分成各个零件,而每个零件如何实现则属于详细设计的任务模块

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 软件工程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报