软件工程-概要设计.doc_第1页
软件工程-概要设计.doc_第2页
软件工程-概要设计.doc_第3页
软件工程-概要设计.doc_第4页
软件工程-概要设计.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

概要设计4.1概要设计的基本概念 把一个产品分成几部分进行设计:软件模块的划分,数据结构和数据库的设计4.1.1概要设计的任务 分解系统、细化系统:把产品分解成零件 1 模块划分 2 决定每个模块的功能 3 决定模块之间的调用关系 4 决定要传递的参数 5 设计主要的数据结构,包括数据库设计 6 设计每个模块的测试计划4.1.2应该提交的文档 1 概要设计说明书 2 数据库、数据结构设计说明书 3 模块测试计划4.1.3结构化(SD)设计方法与结构化的分析相对应自顶向下的设计过程 逐层分解的方法:采用结构图的方法进行描述4.1.4描述方法表示反复调用模块A1、A2、A3a31a11AA1A2A3a12a22a21a32表示有条件地调用模块A2结构图:描述模块之间的关系结构表:用表描述各模块之间的调用关系、输入、输出数据流模块名输入输出A1a11a12A2a21a22A3a31a324.1.5模块划分标准 没有绝对的标准,但是有划分原则:每个模块相对独立。即:具有自己独特的功能,与上下模块有联系、但与同层的模块之间应该极少联系。模块之间的联系通过调用参数和返回值进行,各模块可以独立调试,全局变量尽量不用。数据文件、数据库文件要职责分明。例如,有的模块只能读文件,有的模块只能修改某些数据等。模块内的联系尽可能:块内联系较大、块外联系较少信息隐蔽信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,定义每一个模块时尽可能少地显露其内部的处理。信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。模块独立模块独立是指每个模块完成一个相对独立的子功能,并且与其他模块之间的联系简单。衡量模块独立程度的度量标准有两个:耦合和内聚。耦合是指模块之间联系的紧密程度。耦合度越高则模块的独立性越差。按耦合度从低到高依次有7种耦合方式。 非直接耦合(独立运行) 数据耦合(用参数表传递简单数据) 标记耦合(传递数据结构或者一部分) 控制耦合(传递的信息包括控制模块的信息) 外部耦合(模块与软件之外的环境有关) 公共耦合(多个模块引用同一全局的数据区) 内容耦合(访问内部数据,代码重叠或者多个入口)内聚是指模块内部各元素之间联系的紧密程度内聚度越低模块的独立性越差。按内聚度从低到高依次有7种内聚种类。 偶然内聚(模块完成的多个任务,任务之间的关系松散) 逻辑内聚(模块完成逻辑相关的一组任务) 瞬时内聚(模块的所有任务必须在同一时间间隔内执行) 过程内聚(模块的处理元素相关而且按照特定的次序执行) 通信内聚(模块的所有元素集中在一个数据结构区域上) 顺序内聚(模块的处理元素相关,必须顺序执行) 功能内聚(模块完成单一的功能,各个部分协调工作,而且不可缺少)4.2结构化设计的过程4.2.1 结构化程序设计的原则 结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。 1自顶向下:程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。 2逐步求精:对复杂问题,应设计一些子目标作为过渡,逐步细化。 3模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。 4限制使用goto语句 结构化程序设计方法的起源来自对GOTO语句的认识和争论。肯定的结论是,在块和进程的非正常出口处往往需要用GOTO语句,使用GOTO语句会使程序执行效率较高;在合成程序目标时,GOTO语句往往是有用的,如返回语句用GOTO。否定的结论是,GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与GOTO语句的数量呈反比,应该在所有高级程序设计语言中取消GOTO语句。取消GOTO语句后,程序易于理解、易于排错、容易维护,容易进行正确性证明。作为争论的结论,1974年Knuth发表了令人信服的总结,并证实了: (1)GOTO语句确实有害,应当尽量避免; (2)完全避免使用GOTO语句也并非是个明智的方法,有些地方使用GOTO语句,会使程序流程更清楚、效率更高。 (3)争论的焦点不应该放在是否取消GOTO语句上,而应该放在用什么样的程序结构上。其中最关键的是,应在以提高程序清晰性为目标的结构化方法中限制使用GOTO语句。 与结构化的分层数据流图一一对应4.2.2从数据流图导出初始结构图变换结构和事务结构变换型结构:可以从逻辑上划分成3个部分: 输入部分把输入A变换成所需要的B 加工部分把B加工成C 输出部分输出D输入加工输出ABCD具有3部分的数据流图称为变换型结构A3A2A1A事务分类事务型结构:具有事务加工的并行模块 事务进入后有事务分类的加工过程,然后分给不同的模块去处理对事务型的流图,用事务分析处理对变换型的流图,用变换分析处理变换分析 对变换型的结构图中的每个处理划为一个模块CCBDDCBABA变换系统输入加工输出D把C变D主加工把A变B接受输入输出加工第一层的结构:事务分析 首先确定事务的分类确定事务中心、输入、发送部分(有很多条出口的地方就是事务中心) 再将上述结构图中的三部分对应成三个模块:输入、分类、输出模块A2A3A11A事务分类输入X1X2X2 然后再细化机票订票号订票号要求订票航班票价操作员顾客航班维护票价维护订票处理库存客户信息出票处理订票文件票价输入: 加工: 输出:4.2.3开始结构图的步骤 1 确定数据流图是具有变换特征还是事务特征航空订票系统具有变换型特征,进行变换型分析把全面讲的航空数据流图改成上面讲的画法可以分成具有输入、主加工、输出的变换型结构图 2 确定主加工或事务中心 主加工:订票和出票 确定输入、输出部分A数据准备BAB航空订票系统订票、售票输出信息处理 3 根据对应的分析方法映射成对应的结构图,完成第一层的映射A:订票号、库存、票价B:客户订票信息4 完成第二层的分解:把数据流图中的每一个加工都映射成一个软件模块航班号输入订票信息票价订票信息 订票号数据准备航班维护票价维护输入订票号机票、修改库存订票处理票价、订票号、订票信息订票信息 订票号、修改库存客户信息订票、售票出票处理5 根据分层数据流图逐步细化每一个模块、直到每一模块都成为基本加工的航班信息输入航班维护把航班信息与机号,座位号对应 例:4.2.4上面所做的不一定符合程序设计的要求,应该作优化 1 模块大小 检查每一个模块的大小:一般10100行程序,在一张纸上为好 (事实上,如果语句行数大于30行,则程序的可读性马上下降) 对特别大的模块:进一步进行分割成若干个较小的模块 2 优化模块的扇入、扇出 扇入:调用本模块的模块数,即有多少个模块调用本模块 扇出:本模块调用其他模块数航班信息输入航班维护把航班信息转换成座位号扇出为2 例: 要求:高扇入、较低扇出 扇出大:说明模块复杂,可以增加中间层(一般不大于7) 如果一个模块D被多个模块调用,可起假名d,以简化结构图(用圆圈表示) 例如:B1AB2B3B4C1.1.1 D ddd 3 作用范围和控制范围概念:控制范围:以本模块为根接点的所有子树上的所有模块作用范围:一个模块中有个逻辑判断,受这个逻辑判断影响的所有模块作用范围 / 控制范围的原则;一般,作用范围总是要求落在其控制范围之内。不在控制范围内:模块之间联系增加,在别的模块中还要作重复判断当作用范围落在控制范围外时:进行模块调整(功能划分上的调整)4.3设计的其他工作数据库和数据结构的设计 数据库设计自有其一套设计方法:数据库原理需求 / 模块交叉表 为检查本设计是否把所有的用户要求都包含进来? 模块需求模块1模块2模块n需求1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论