软件工程基础复习_5

第5章概要设计,

概要设计的基本目的是回答,"概括的说系统应该如何实现"这个问题,因此概要设计有时候称为初步设计或总体设计,概要设计的关键就是确定软件的总体结构,及确定软件系统的组成分,以及各组成成分之间的相互关系,
概要设计的方法有结构化方法和面向对象方法,

5.1软件设计的基本原理,

  • 抽象与求精,
    抽象是一种常用的思考和解决问题的方式,分为过程抽象,数据抽象,过程抽象是指具有特定功能的一个命名的指令集,数据抽象则是描述数据对象的一个命名的数据集合,抽象控制包含了一种程序控制机制,而无需刻画其内部细节,
    求精最初提出的是一种自顶向下设计策略,其主要思想是,将某个宏观功能不断分解,逐步确定过程细节,直至用程序设计语言描述的算法实现为止,
  • 模块化和信息隐藏,
    软件应该分解成可单独命名的且可访问的部件,这些部件称为模块,
    信息隐藏是指模块中所包含的信息,对不需要这些信息的其他模块是不可访问的,隐藏定义并加强了对模块内部访问的约束,有助于分离模块的实现者和使用者,
  • 模块独立性,
    模块的功能独立性可以使得模块既容易开发又容易维护,模块独立性的基本含义是,每一个模块只完成功能需求中的一个特定的子功能,而且从程序结构的其他部分来看,这一模块只具有一个简单的接口,
    模块独立性有两个定性的度量标准,内聚度,耦合度,我们追求的是:高内聚低耦合,
    内聚度
    内聚度是指模块内部各成分联系紧密的程度,通常内聚度越高,模块的独立性就越强,
    内聚度,总共有7种类型,分别是,
    偶然内聚,模块内部各成分在功能上不相关或关系松散,缺点是模块不易理解,不易维护,不易复用,
    逻辑内聚,模块完成多个逻辑上相近或相关的功能,并且每次只调用模块中的一个功能,缺点是为了执行不同的功能需要传递控制台信息,
    时间内聚,模块完成多个具有时间相关性的功能,
    过程内聚,模块完成多个,需要按一定的步骤,依次完成的功能,内聚度会比时间内聚高一些,
    通信内聚,模块完成多个,需要按一定的步骤依次完成的功能,并且这些功能的完成都依赖于相同的公用数据,
    信息内聚,模块完成多个功能,而且每一个功能都有各自的入口点和独立的代码,但功能都依赖于同样的数据结构,
    功能内聚,模块只完成一个单一的功能,或者只实现一个单一的目标,这样的模块很容易复用和维护,
    耦合度
    耦合式模块之间相互关联紧密的程度,一般而言,模块的耦合度越低,模块的独立性越强,
    耦合度也分为7种类型,分别是,
    内容耦合,两个模块中一个模块直接引用另一个模块的内容,一般出现在用低级语言编写的程序中,使模块不易于复用,
    公共耦合,两个模块都能够存取同一公共数据环境,公共耦合又分为松散公共耦合和紧密公共耦合,松散公共耦合指的是,一个模块读数据,另一个模块写数据,紧密公共耦合指的是,两个模块都对数据结构进行读写,公共耦合有很多缺点,如难以理解难以维护等等,
    外部耦合,一组模块访问同一单一类型全局变量或全局数据,
    控制耦合,一个模块传递控制信息给另外一个模块,显示的控制另外一个模块的逻辑,控制偶合通常与逻辑内聚有关,会使模块难以复用,
    标记耦合,在函数或过程调用时传递的参数是结构变量,但是被调用模块是操纵参数中的一部分数据,容易导致对数据的非法存取等,
    数据耦合,所有的参数都是简单变量,或者即使有结构变量被调用模块也需要该结构的所有数据,
    非直接耦合,两个模块都不需要另一个模块的存在,且能独立的工作,

5.2面向数据流图的软件结构设计,

面向数据流图的软件结构设计是一种结构化的设计方法,其过程如下,

  • 首先研究分析和审查数据流图,确保数据流图符合实际,必要时还可以进一步精化数据流图,
  • 确定数据流图的类型,判断其是变换型数据流或者事务型数据流,
  • 依据数据流的类型,采用变换分析法或事物分析法,导出系统初始的软件结构,
  • 依据软件设计原理和一些优化策略改进系统的最初软件结构,形成最终的软件结构,
    软件工程基础复习_5_第1张图片
  • 软件结构图,
    软件结构图的主要内容有,模块,模块间的调用关系,模块之间传递的信息,
    在软件结构图中模块共有6种类型,传入模块,传出模块,变换模块,协调模块,源模块, 漏模块
    软件结构图中的模块用方框来表示并用名字标识该方框,
    模块之间的调用关系主要有三种,顺序调用,选择调用,循环调用,
    顺序调用用箭头表示,选择调用用菱形加箭头表示,循环调用用环形箭头和箭头表示,
    模块传递的信息用代名称的短尾箭头来表示,箭头方向代表信息传递的方向,数据用带空心的圆圈,控制用带实心的圆圈,
  • 数据流变换分析法,
    数据流变换分析法是一种将变换型数据流图映射为变换型软件结构图的设计方法,
    变换型数据流图一般呈线形状,大致由三部分组成,传入路径,变换中心,传出路径,
    变换型软件结构图则大致由4部分模型组成,输入模块,中心加工模块,输出模块,主控模块,
  • 事务分析法,
    事务分析法是将事务型数据流图映射为事务型软件结构图的系统设计方法,
    事务型数据流图一般呈辐射状,由三部分组成,即至少一条接收路径,一个事务中心,若干条动作路径,
    事务型软件结构图大部分由4个模块构成,事物接受模块,事务调度模块,事物处理模块,总控模块,
  • 软件结构图的改进,
    在改进软件结构图时应记住,一个不能工作的最佳设计是毫无价值的,模块改进的基本原则有如下几条,
    模块大小适中,
    模块的扇入扇出合理,扇入指本模块调用其他模块的数量,扇出指其他模块调用本模块,经验表明,上层模块一般调用的模块数会比较多,下层模块被调用的次数会比较多,
    模块的作用域应在控制域,模块的作用域是指模块中判定的作用范围,他是指所有受这个判定影响的模块,模块的控制域是指的,模块本身及其直接或间接调用的模块,

5.3面向Idef0图的软件结构设计,

这是一种结构化的设计方法,

  • HIPO图,
    HIPO图由h图和Ipo图组成,H图表示层次图,用来描述软件系统模块的层次结构,用一个矩形框代表一个模块,用矩形框之间的连线代表模块之间的调用关系,
    软件工程基础复习_5_第2张图片
    Ipo图主要用来对h图中的每个模块进行详细描述,根据设计的需要,对Ipo图进行改进,用来描述模块输入,输出数据处理功能及模块间的调用情况,
    软件工程基础复习_5_第3张图片
  • 设计步骤,
    找出该层IDEF0图的父图,搞清父、子图之间的输入/输出关系和控制关系;
    以父图中的活动为上层模块,活动分解得到的子图中的活动做为直接调用的下层模块,画出系统的单层结构图;
    根据IDEF0图各个活动的输入/输出数据、控制信息等,确定模块的接口;
    综合所有层次的结构图,使可得到系统初始的层次图;
    通过反复理解全部IDEF0图的内容和含义,对系统初始
    的层次图进行必要的调整、修改、分解或合并,形成最终的层次图。

5.4类设计原则,

单一职责原则,

单一职责原则指的是,一个类应该仅有一个因其他变化的原因,如果一个类的职责过多会导致设计脆弱,分离职责可能会导致不必要的设计复杂性,

开闭原则,

一个软件设计应当对拓展是开放的,但是对修改是封闭的,

里氏替换原则,

里氏替换原则要求子类型必须能够去掉其父类型,

依赖倒置原则,

依赖倒置原则要求高层不应依赖于低层 , 抽象不应依赖于细节,

接口隔离原则,

使用多个专门的接口比使用单一的总接口要好,

组装复用原则,

组装复用原则是,在新的对象里尽量使用已有的类对应的对象,并通过委派达到复用已有功能的目的,

5.5面对对象设计,

面对对象设计是在对象建模的基础进行逐渐扩充的过程,对象建模的过程是以问题域为中心求解空间的过程,

  • 问题域部分设计,
    在oOA模型中没有考虑与实现有关的问题,在oOA模型中,有许多方面可以直接不加修改的,作为面对对象设计的问题与部分,
  • 人机交互部分设计,
    设计人机交互部分时,首先考虑的是人,其次是任务,然后才是有关工具,设计包括以下几个步骤,
    给用户分类,可以按技能水平,可以按组织进行分类,可以按不同的成员进行分类,
    用户及其任务脚本描述,描述不同的用户的各个信息,
    命令层设计,先确定初始的命令层,随后进行细化,包括排列命令,进行整体一部分组合,命令层宽度与深度对比,减少操作步骤,
    详细交互设计的准则有,一致性,及时提供反馈信息,提供撤销命令,减少用户记忆负担,易学易用,
    人机交互部分的类的设计,人机交互的形式多种多样,有对话菜单,窗口,按钮,图符,表格,命令,行语言等等,
  • 任务管理部分设计,
    任务管理部分的设计主要是标识一些对象和类,则处理并发中断调度以及其他有关特定平台的一些问题,
    确定事件驱动型任务,事件驱动型任务由事件触发,这些任务可能与其他组件进行通讯,
    确定时钟驱动型任务,始终驱动型任务按特定的时间间隔被触发,这类系统主要与其他组件进行周期性的通讯,
    其他活动,识别优先任务和关键任务,识别任务协调者,审查各个任务,定义各个任务,
  • 数据管理部分设计,
    数据管理部分的对象和类用来对系统生成的永久数据进行访问和管理,
    设置数据管理部分可以将特定的数据管理技术从问题与部分分离开来,有利于系统的维护啊,
  • 面对对象设计的启发式规则,
    简单性,可理解性,内聚性(包括单个方法的,封装在内中的数据和方法,整个内层次结构),将设计的易变性降到最低,

5.6该要设计文档规范及其复审

概要设计的文档应包括,软件系统的基本处理流程,软件结构,模块划分,功能分配,接口设计,进行设计,数据结构设计,出错设计等等,
概要设计文档复审,目的是早期发现设计中存在的错误,参与者除了开发人员,还必须要有用户的代表和有关领域的专家,内容的重点在软件体系的总体结构模块划分,内外接口和人机界面,方式有正式复审和非正式复审,

第5章的内容就尼玛离谱哇,这么多

你可能感兴趣的:(复习)