软件工程总体设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

10
模块独立(一)


定义:是指每个模块完成一个相对独立的特定子功能, 并且和其他模块之间的关系很简单。 优点: 容易设计和开发。功能分割相对独立,可以简化 接口,并且便于分工合作开发。 独立的模块比较容易测试和维护。 度量标准: 耦合:衡量不同模块彼此间互相依赖(连接)的紧 密程度。 内聚:衡量一个模块内部各个元素彼此结合的紧 密程度。
9
信息隐藏与局部化



定义:划分模块时,使得一个模块内包含的信息(过程和 数据)对于不需要这些信息的模块来说,是不能访问的。 即隐藏每个模块所包含的私有信息。 所谓局部化是指把一些关系密切的软件元素物理地 放得彼此靠近。局部化有助于实现信息隐藏。 应用:在模块中,隐藏的是模块的实现细节;模块之间 的交互是为了完成系统功能而必须交换的信息。 优点:易修改。
8
逐步求精

定义:是一种自顶向下的设计策略:通过逐步分解 对功能的宏观陈述而开发出层次结构,直至最终得 出用程序设计语言表达的程序。 实质:求精就是细化的过程。 求精与抽象的关系:互补性:抽象使设计者说明过 程和数据,但却忽略低层的细节;逐步求精则帮助 设计者在设计过程中逐步揭示出低层的细节。
8. 书写文档


பைடு நூலகம்

9. 审查和复审


技术审查--系统开发方 管理复审--系统使用者
4
5.2 设计原理
模块化 抽象 逐步求精 信息隐藏和局部化 模块独立

5
模块化(一)



定义:是指能够相对独立的实现一定功能的程序代码。 简单的讲,模块化就是把程序划分成独立命名且可独 立访问的模块,每个模块完成一个子功能,把这些模 块集成起来构成一个整体,可以完成指定的功能满足 用户的需求。“复杂的问题分解成许多容易解决的小 问题”。 表现形式:过程、函数、子程序、宏;面向对象方法 学中的对象、对象内的方法。 优点: 软件结构清晰,便于设计、交流 容易测试、调试,有助于提高软件的可靠性 提高软件的可修改性 有助于软件开发项目的组织与管理
11
模块独立(二):耦合分类




数据耦合:两个模块间通过参数交换的信息仅是必须的 数据。 控制耦合:传递的交换信息中有控制信息,有时这种控 制信息以数据的形式出现。 特征耦合:整个数据结构作为参数传递而被调用的模块 只需要使用其中的一部分数据元素。即:被调用的模块 可以使用的数据多于它确实需要的数据,这将导致对数 据的访问失去控制。 公共环境耦合:两个或多个模块通过一个公共数据环境 相互作用。公共环境可以是全程变量、共享的通信区、 内存的公共覆盖区、存储介质上的文件、物理设备等。 内容耦合:下列情况之一 一个模块访问另一个模块的内部数据 一个模块不通过正常入口而转到另一个模块的内部 两个模块有一部分程序代码重叠 一个模块有多个入口(这意味着一个模块有几种功能)
综合分析、对比各种合理方案的利弊,推荐一个最佳的方案, 并为推荐的最佳方案制定一个详细的实现计划。 用户和有关人员评审所推荐的最佳方案。
3. 推荐最佳方案

2
典型的总体设计过程(二)
4. 功能分解

确定系统有哪些模块构成,以及这些模块之间的关 系。 对于复杂的功能或模块,结合数据流图,进一步分 解。 系统软件是由实现各个子功能的模块构成,软件结 构是指模块组成的层次关系。 软件结构用层次图或结构图表示。 数据流图细化到适当的层次,可以映射出软件结构。 结合需求分析阶段所确定的系统数据需求,进一步 设计数据库。
12
模块独立(二)(续) 耦合应用原则
6
模块化(二)

缺点:当模块数目增加时每个模块的规模将减小, 开发单个模块需要的成本(工作量)减少了;但是, 随着模块数目增加,设计模块间接口所需要的工作 量将增加,并且在模块交互时易发生错误。 图5.1 模块化和软件成本
7
抽象


定义:是指抽出事物的本质特性并加以描述,但是不考 虑它们的细节。 应用:一个复杂系统可以用一些高级的抽象概念构造和 理解,这些高级概念又可以用一些较低级的概念构造和 理解,如此进行下去,直至最低层次的具体元素。 软件工程过程的每一步都是对软件解法的抽象层次 的一次精化。在可行性研究阶段,软件作为系统的一个 完整部件;在需求分析期间,软件解法是使用在问题环 境内熟悉的方式描述;当由总体设计向详细设计过渡时, 抽象的程度随之减少;最后,当源程序实现,即达到抽 象的最低层。 抽象与模块化的关系:软件结构顶层的模块,控制系统 的主要功能并且影响全局;在软件结构底层的模块,完 成对数据的一个具体处理,用自顶向下由抽象到具体的 方式分配控制,简化软件的设计和实现,提高软件的可 理解性和可测试性,并且使软件更容易维护。
3
5. 设计软件结构



6. 设计数据库
典型的总体设计过程(三)
7. 制定测试计划

开发早期考虑并制定测试计划,有助于在设计时注意提高软件的可测 试性。 系统说明:主要包括用系统流程图描绘的系统构成方案,组成系统的 物理元素清单,成本/效益分析;对最佳方案的概括描述,精化的数 据流图,用层次图或结构图描绘的软件结构,用IPO图或其他工具简 要描述的各个模块的算法,模块间的接口关系,以及需求、功能和模 块三者之间的交叉参照关系等。 用户手册:根据总体设计阶段的结果,更正在需求分析阶段产生的用 户手册。 测试计划:包括测试策略,测试方案,预期的测试结果,测试进度计 划等。 详细的实现计划 数据库设计结构
5.1 设计过程
系统设计阶段:确定系统的具 体实现方案 结构设计阶段:确定软件结构

1
典型的总体设计过程(一)
1. 设想供选择的方案

综合考虑各种可能的实现方案,并且力求从中选出最佳方案。 需求分析阶段得到的数据流图是极好的出发点。
2. 选取合理的方案


参考需求分析阶段确定的工程规模和目标,从可选方案中选择 若干个合理的方案,通常至少选择低成本、中等成本、高成本 三种方案。 对于每种方案应准备:系统流程图、组成系统的物理元素清单、 成本/效益分析、实现系统的进度计划。
相关文档
最新文档