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

下载本文档

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

文档简介

软件工程 第三章软件项目的概要设计 软件设计的任务1 软件设计的原则3 面向数据流的设计方法4 概要设计文档5 Power Designer数据库建模6 概要设计的过程2 3.1 软件设计的任务 3.1 软件设计的任务 在软件需求分析阶段,已经搞清楚了软件“做什么 ”的问题,并把这些需求通过规格说明书描述了出 来,这也是目标系统的逻辑模型。进入设计阶段 ,要把软件“做什么”的逻辑模型变换为“怎么做” 的物理模型,着手实现软件的需求,所以软件设 计是一个把软件需求转换为软件表示的过程。最 初这种表示只是描述了软件的总的体系结构,称 为软件概要设计或结构设计。 3.1 软件设计的任务 v 软件设计是将用户需求转化为软件系统的重要环节,是后继 开发步骤以及软件维护工作的基础。如果没有设计,只能建 立一个不稳定的系统。 3.1 软件设计的任务 v 一、从技术的角度分析软件设计,其主要任务包括: 数据设计:侧重于数据结构的定义。 系统结构设计:定义软件系统各主要成分之间的关系。 过程设计:把结构成份转换成软件的过程性描述。在后期的编码过 程,将根据这种描述,生成源程序代码。 v 二、从工程管理的角度分析软件设计,其主要任务包括: 概要设计(总体设计):将软件需求转化为数据结构和软件的系统 结构; 详细设计(过程设计):通过对结构表示进行细化,得到软件的详 细数据结构和算法。 3.1软件设计的任务 3.1软件设计的任务 v 体系结构设计 v 体系结构就如同人的骨架。如果某个家伙的骨架是猴子,那 么无论怎样喂养和美容,他始终都是猴子,不会成为人。 v 模块设计 v 模块就如同人的器官,具有特定的功能。人体中最出色的模 块设计之一是手,手只有几种动作,却能做无限多的事情。 人体中最糟糕的模块设计之一是嘴巴,嘴巴将最有价值但毫 无相干的几种功能如吃饭、说话混为一体,使之无法并行处 理,真乃人类之不幸。 3.1软件设计的任务 v 用户界面设计 v 用户界面就如同人的外表,最容易让人一见钟情或一见恶心。象人 类追求心灵美和外表美那样,软件系统也追求(内在的)功能强大 和(外表的)界面友好。但随着生活节奏的加快,人们已少有兴趣 去品味深藏不露的内在美。如果把Unix系统比作是健壮的汉子和妇 人,那么Windows系统就象妩媚的小白脸和狐狸精。想不到 Windows系统竟然能兴风作浪,占去大半市场。 v 数据结构与算法设计 v 数据结构与算法就如同人的血脉和神经,它让器官具有生命并能发 挥功能。数据结构与算法分布在体系结构和模块中,它将协调系统 的各个功能。人的耳朵和嘴巴虽然是相对独立的器官,但如果耳朵 失聪了,嘴巴就只能发出“啊”“呜”的声音,等于丧失了说话的 功能,可人们却又能用手势代替说话。人体的数据结构与算法设计 真是十分神奇并且十分可笑。 3.2概要设计的过程 v一、设计系统方案 需求分析阶段得出的数据流图是总体设计的出发点,数据流 图中的某些处理可以逻辑地归并在一个边界内作为一组,另 一些处理可以放在另一个边界内作为另一组,这些边界通常 意味着某种实现策略。 设想供选择的方案的通常方法是,设想把数据流图中的处理分 组的各种可能的方法,抛弃在技术上行不通的分组方法,余下 的分组方法代表可能的实现策略。 在总体设计的这个步骤中分析员仅仅一个边界一个边界地设 想并且列出供选择的方案,并不评价这些方案。 3.2概要设计的过程 v二、选取合理的方案 从可供选择的方案中,选取低成本、中成本、高成本三种方 案。并对每个合理的方案,准备下列四份材料: (1)系统流程图 (2)组成系统的物理元素清单 (3)成本/效益分析 (4)实现这个系统的进度计划 v三、确定最佳方案 v 分析员应该综合分析对比各种合理方案的利弊,推荐一个最佳的 方案 ,并且为推荐的方案制定详细的实现计划。用户与专家审查 分析员推荐的方案,提交审批后进入软件结构设计。 3.2概要设计的过程 v四、系统功能分解 软件结构设计,首先要把复杂的功能进一步分解成简 单的功能,遵循模块划分独立性原则,做到模块功能 单一,与外部联系很弱。功能的分解导致对数据流图 的进一步细化,并选用相应的图形工具来描述。 v五、软件结构设计 功能分解后,用层次图、结构图来描述模块组成的层 次系统,即反应软件的结构。 3.1 概要设计的任务与过程 设计软件结构 v 为了实现目标系统,最终必须设计出组成这个系统的所有程序和数据 库(文件),对于程序,则首先进行结构设计,具体为: (1)采用某种设计方法,将一个复杂的系统按功能划分成模块。 (2)确定每个模块的功能。 (3)确定模块之间的调用关系。 (4)确定模块之间的接口,即模块之间传递的信息。 (5)评价模块结构的质量。 软件结构的设计是以模块为基础的,在需求分析阶段,已经把系统 分成层次结构。设计阶段,以需求分析的结果为依据,从实现的角度 进一步划分为模块,并组成模块的层次结构。 3.2概要设计的过程 v六、数据库设计、文件结构设计 根据系统要求,确定系统的数据结构,文件结构。对 需要使用数据库的领域,再根据系统数据要求做数据 库的设计。 数据库设计主要涉及如下几方面: 数据库模式设计:物理数据库设计 数据库的子模式:用户的数据视图 完整性设计 安全性设计 设计优化 3.1 概要设计的任务与步骤 v数据库设计 概念设计:在数据分析的基础上,采用自底向上的方法从用户角 度进行视图设计,一般用ER模型来表示的概念模型。 逻辑设计:ER模型是独立于数据库管理系统的,要结合具体的 DBMS来建立数据库的逻辑结构。对于关系型DBMS来说将概念结 构转换为数据模式、子模式并进行规范,给出数据结构的定义,即 定义所含的数据项、类型、长度及它们之间的层次或相互关系的表 格等等。 物理设计。设计数据模式的一些物理细节,如数据项存储要求、 存取方式、索引的建立。 3.2概要设计的过程 v 七、制定测试计划 为保证软件的可测试性,需要考虑软件的测试问题。这个阶 段的测试计划为根据I/O功能做的黑盒测试计划。 v 八、书写文档 系统说明:系统构成方案、物理元素清单、成本/效益分析 、软件结构、模块接口等 用户手册 测试计划:测试策略、测试方案、预期结果、测试进度 详细的项目开发实现计划:系统目标、概要设计、数据设计 、处理方式设计、运行设计和出错设计等 数据库设计说明与设计结果 3.2 概要设计的过程 九、审查与复审 对设计部分是否完整地实现了需求中规定 的功能、性能等要求,设计方案的可行性, 关键的处理及内外部接口定义正确性、有效 性,各部分之间的一致性等等都一一进行评 审。 3.3 软件设计的原则 v一、模块化 v 把复杂的问题分解成许 多容易解决的小问题, 原来的问题也就容易解 决了,这就是模块化提 出的依据。模块化可以 使一个复杂的大型程序 能被人的智力所管理, 也使设计出的软件的可 读性和可理解性大大增 强,测试和调试更为容 易进行,有助于提高软 件的可靠性。 3.3软件设计的原则 v二、抽象与逐步求精 v 由于人类思维能力的限制,如果每次考虑太多的因素,就不可能做出 精确的思维。处理复杂系统的有效方法就是用层次的方式构造和分析 它。一个复杂的系统首先可以用一些高级的抽象概念构造和理解,这 些高级概念又可以用一些较低级的概念构造和理解,如此进行下去, 直至低层次的具体元素。 v 软件工程过程的每一步都是对软件解法的抽象层次的一次精化,逐步 求精与抽象是紧密联系的,随着软件开发工程的进展,在软件结构每 一层的模块中,表示了对软件层次的一次精化,层次结构的下一层是 对上一层的求精,在软件结构的底层模块,完成对数据的一个具体处 理,用自顶向下由抽象到具体的方式分配控制,简化了软件的设计和 实现。 3.3软件设计的原则 v三、信息隐蔽和局部化 v 信息隐蔽原理:每一个模块的实现细节对于其他模块来说是隐蔽的,模块中 所包含的信息不允许其他不需要这些信息的模块调用。 v 局部化的概念与信息隐蔽密切相关,局部化是指把一些关系密切的软件元素 物理的放的彼此靠近,通过局部化有助于实现信息隐蔽。 v四、模块独立性 v 模块独立性指软件中每个模块只涉及软件要求的具体子功能,而与软件的其 他模块的接口是简单的。模块独立的概念是模块化、抽象、信息隐蔽和局部 化的直接结果。模块的独立程度由两个定性标准度量: v 耦合:对软件内各个模块之间的互连程度的度量,用于衡量模块间互相 依赖的紧密程度。 v 内聚:用于衡量一个模块内各元素之间彼此结合的紧密程度。 3.3软件设计的原则 v1、耦合 v 1)非直接耦合:两个模块中的每一个都能独立工作而不需要另一个模块 存在,模块之间没有直接关系,它们之间的联系完全通过主模块之间的 控制和调用来实现,耦合程度最低。 v 2)数据耦合:两个模块之间通过数据参数(非控制参数、公共数据结 构或外部变量)来交换输入、输出信息。数据耦合属于松散耦合,模块 间独立性比较强,软件程序结构中至少存在该类耦合。 开发票 计算水费 数量 金额 单价 非直接耦合数据耦合 3.3软件设计的原则 v 3)标记耦合:一组模块通过共享参数记录表传递信息,由于传递的 是一个记录结构,需要各个模块都要清楚记录的详细结构,并按照结 构对记录进行操作。此外,当被调用的模块可以使用的数据多于它确 实需要的数据时,导致数据访问可能失控。 计算水电费 计算水费计算电费 住户情况 水费 电费 住户情况 计算水电费 计算水费计算电费 本月 用水 量 本月 用电量 水费 电费 解决特征耦合转换为数据耦合 3.3软件设计的原则 v4)控制耦合 v 一个模块通过传送开关、标志、名字等控制信息,明显地 控制选择另一模块的功能,即调用模块向被调用模块传递 的信息控制了被调用模块的内部逻辑。 3.3软件设计的原则 v控制耦合 A 计算平均分 或最高分 B 平均/最高 (控制信号) 成绩 读入分数 输出结果 计算平均分计算最高分 平均/最高? B 3.3软件设计的原则 v去除模块间控制耦合转换数据耦合 u将被调用模块内的判定上移到调用模块中进行 u被调用模块分解成若干单一功能模块 A 计算平均分 B1 平均成绩最高成绩 计算最高分 B2 3.3软件设计的原则 v5)外部耦合 v一组模块都访问同一全局简单变量而不是同 一全局数据结构,而且不是通过参数表传递 该全局变量的信息,则称之为外部耦合。 v外部耦合引起的问题类似于公共耦合,区别 在于在外部耦合中不存在依赖于一个数据结 构内部各项的物理安排。 3.3软件设计的原则 v6)公共耦合 v 若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公 共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存 的公共覆盖区等。这种耦合会引起下列问题: 公共数据区 CB 模块A、B、C间存在错综复杂的联系 u所有公共耦合模块都与某 一个公共数据环境内部各项 的物理安排有关,若修改某 个数据的大小,将会影响到 所有的模块。 u无法控制各模块对公共数 据的存取,严重影响软件模 块可靠性和适应性。 u公共数据名的使用,明显 降低了程序的可读性。 3.3软件设计的原则 v7)内容耦合 v 如果出现以下情形,两个模块之间就发生了内容耦合: 一个模块访问另一个模块的内部数据。 一个模块不通过正常入口转到另一个模块的内部。 两个模块有一部分代码重叠(只可能出现在汇编程序中)。 一个模块有多个入口(这意味着一个模块有几种功能)。 一模块直接访问另一模块 的内部信息 (程序代码或 数据) AB A B 模块代码重叠 Entry1 Entry1 多入口模块 3.3软件设计的原则 模块化的原则 v 模块化设计的最终目标,是希望建立模块间耦合尽可能松 散的系统。 v 在这样一个系统中,我们设计、编码、测试和维护其中任 何一个模块,就不需要对系统中其他模块有很多的了解。 v 此外,由于模块间联系简单,发生在某一处的错误传播到 整个系统的可能性很小。 3.3软件设计的原则 v2、内聚性 v 内聚性标志一个模块内各个元素彼此结合的紧密程度。 v 模块内的高内聚往往意味着模块间的松耦合。内聚和耦合都是模块化 设计的有力工具,但是实践表明内聚更重要,应该把更多注意力集中 到提高模块的内聚程度上。 v 分类 低内聚:偶然内聚 逻辑内聚 时间内聚 中内聚:过程内聚 通信内聚 高内聚:顺序内聚 功能内聚 3.3软件设计的原则 v1)偶然内聚 v 当模块内各部分之间没有联系,或者即使有联系,这种联 系也很松散,则称这种模块为偶然内聚,它是内聚程度最 低的模块。 v 这种模块有如下缺点: 首先是不易修改和维护。 其次是这种模块的内容不易理解,很难描述它所完成的功能,增 加了程序的模糊性。 3.3软件设计的原则 v 2)逻辑内聚 v 这种模块把几种相关的功能组合在一起,每次调用时,由传送给 模块的判定参数来确定该模块应执行哪一种功能。这种模块是单 入口多功能模块。类似的有错误处理模块。它接收出错信号,对 不同类型的错误打印出不同的出错信息。逻辑内聚模块比巧合内 聚模块的内聚程度要高 。 v 逻辑内聚的缺点 它所执行的不是一种功能,而是执行若干功能中的一种,因此它不易修改。 另外,当调用时需要进行控制参数的传递,这就增加了模块间的耦合程度。 而将未用的部分也调入内存,这就降低了系统的效率。 3.3软件设计的原则 ABC EFG ABC EFG A1B1C1 EFG模块内部逻辑 E、F、G逻辑 功能相似,组 成新模块EFG 缺点:增强了耦合程度(控制耦合) 不易修改,效率低 公用代码段 公用代码段 3.3软件设计的原则 v 3)时间内聚 v 这种模块大多为多功能模块,但模块的各个功能的 执行与时间有关,通常要求所有功能必须在同一时 间段内执行。 v 如初始化系统模块、系统结束模块、紧急故障处理 模块等。初始化模块要为所有变量赋初值,对所有 介质上的文件置初态,初始化寄存器和栈等,因此 要求在程序开始执行的最初一段时间内,模块中所 有功能全部执行一遍。 3.3软件设计的原则 v 4)过程内聚 v 如果一个模块内的处理是相关的,而且必须以特定次序执行,则称这 个模块为过程内聚模块。 v 使用流程图做为工具设计程序的时候,常常通过流程图来确定模块划 分。把流程图中的某一部分划出组成模块,就得到过程内聚模块。 v 例如,我们把流程图中的循环部分、判定部分、计算部分分成三个模 块,这三个模块都是过程内聚模块。 读入 成绩单 审查 成绩单 统计 成绩 打印 成绩 读入并审查成绩单统计并打印成绩单 3.3软件设计的原则 v 5)通信内聚 v 如果一个模块内各功能部分都使用了相同的输入数据,或 产生了相同的输出数据,则称之为通信内聚模块。 3.3软件设计的原则 v6) 顺序内聚 v 如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必 须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输 入数据) 计算退休时间 输入出生日期计算年龄计算退休时间输出退休时间 出生日期 出生日期 年龄年龄 退休时间 退休时间 3.3软件设计的原则 v 7)功能内聚 v 一个模块中各个部分都是完成某一具体功能必不可少的组 成部分,或者说该模块中所有部分都是为了完成一项具体 功能而协同工作,紧密联系,不可分割的。则称该模块为 功能内聚模块。功能内聚模块的优点是它们容易修改和维 护,因为它们的功能是明确的,模块间的耦合是简单的。 tan( )函数New,弹出如图所示对话框,选择CDM模型(即概念数据模 型)建立模型。 3.6 PowerDesigner数据库建模 v 创建新实体 3.6 PowerDesigner数据库建模 v输入实体的名称、代码、描述等信息 3.6 PowerDesigner数据库建模 v添加实体属性 3.6 PowerDesigner数据库建模 3.6 PowerDesigner数据库建模 v实体属性的属性对话框 3.6 PowerDesigner数据库建模 参数说明 Minimum属性可接受的最小数 Maximum 属性可接受的最大数 Default属性不赋值时,系统提供的默认值 Unit单位,如公里、吨、元 Format属性的数据显示格式 Lowercase属性的赋值全部变为小写字母 Uppercase属性的赋值全部变为大写字母 Cannot modify该属性一旦赋值不能再修改 List Of Values属性赋值列表,除列表中的值,不能有其他的值 Label属性列表值的标签 3.6 PowerDesigner数据库建模 v设置标识符: 标识符是实体中一个或多个属性的集合,可用来唯一标识实体 中的一个实例。要强调的是,CDM中的标识符等价于PDM中的 主键或候选键。 每个实体都必须至少有一个标识符。如果实体只有一个标识符 ,则它为实体的主标识符。如果实体有多个标识符,则其中一 个被指定为主标识符,其余的标识符就是次标识符了。 3.6 PowerDesigner数据库建模 3.6 PowerDesigner数据库建模 3.6 PowerDesigner数据库建模 在 实 体 中 添 加 数 据 项 3.6 PowerDesigner数据库建模 vAdd a DataItem 与 Reuse a DataItem的区别在于: nAdd a DataItem 情况下,选择一个已经存在的数据项, 系统会自动复制所

温馨提示

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

评论

0/150

提交评论