2020 软件工程复习 -面向过程分析、设计

2020 软件工程 -面向过程分析、设计

1.结构化分析方法
是结构化方法在需求分析阶段的活动
是面向数据流(或者过程)的传统方法,它以数据流为中心构建系统的逻辑模型
在这里插入图片描述
2.结构化分析的逻辑模型
数据模型——实体关系图
行为模型——状态变迁图
功能模型——数据流图
在这里插入图片描述
实体关系图:
在这里插入图片描述
状态转换图:
在这里插入图片描述
3.数据流图(Data Flow Diagram,简称DFD)
描述输入数据流到输出数据流的变换(即加工)过程
用于对系统的功能建模
基本元素:
在这里插入图片描述
4.分层数据流图
秉承抽象与分解思想,采用自顶向下、逐层分解的方法对数据流图进行分层
顶层图:唯一的加工——软件系统,确定源或宿,确定数据流
在这里插入图片描述
0层图:确定加工,确定数据流,确定文件,确定源或宿
在这里插入图片描述
中间层图:将该加工看作一个小系统,采用画0层图的方法,画出该加工的子图
在这里插入图片描述
在这里插入图片描述
5.数据流图审查
检查图中是否存在错误或不合理的部分,保证数据流的一致性和完整性。
 父图与子图平衡:父图的输入输出要与子图的输入输出一致
 数据守恒:一个加工所有输出数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。
 局部文件:子图中的局部文件不能出现在父图中
 加工的输入数据流和输出数据流不同名:即使组成成份相同,仍取不同的名字,以表示它们是不同数据流;允许一个加工有多个相同的数据流分别流向多个不同的加工
6.数据字典
数据字典是对系统的数据项、数据结构、数据流、加工逻辑、数据存储以及外部实体进行定义和描述,是关于系统数据的信息的集合。
数据项:又叫数据元素,是数据的最小单位,包含:名称、编号、别名、简称、长度、取值范围等。
在这里插入图片描述
数据结构:重点描述数据之间的关系,由若干数据项或数据项和其他数据结构组成。
在这里插入图片描述
数据流:由一个或一组固定的数据项组成。

在这里插入图片描述
加工逻辑:数据流图中最底层的加工逻辑进行说明
在这里插入图片描述
数据存储:只描述数据的逻辑存储结构,不涉及物理存储。
在这里插入图片描述
外部实体:描述系统之外的人、物、部门以及其他系统的相关信息。
在这里插入图片描述
7.加工逻辑的描述方法
基本加工的说明描述的是一个基本加工应该做什么,描述方法有结构化语言、判定树、判定表
四、结构化设计
1.软件设计的目标和任务
目标:
在这里插入图片描述
任务:
在这里插入图片描述
2.软件设计的基本原则
模块化、抽象、逐步求精、信息隐蔽
2.1 模块化
模块具有4 个基本属性:接口、功能、逻辑、状态
模块化:解决一个复杂问题时,自顶向下逐层把软件划分成若干模块的过程
目的:为了降低软件的复杂性
模块化的作用:结构清晰,可靠性高,可修改性,降低复杂度、便于分工
模块化的目标:模块独立性
模块独立性概括了系统分解时要遵守的准则
衡量模块独立性的两个准则
 内聚:模块内部各成分之间的联系,也称块内联系或模块强度
 耦合:一个模块与其它模块之间的联系,也称为块间联系
模块的独立性高:块内联系强、块间联系弱
七种内聚情况:
在这里插入图片描述
 偶然性内聚:块内各组成成分在功能上是互不相关的。
 逻辑性内聚:把几种相关、相似功能组合在一起,每次被调用时,由传递给模块的参数来确定该模块应完成哪一种功能。
 时间性内聚:如果一个模块所包含的任务必须在同一“时间”内完成,则这个模块的块内联系称为时间性内聚。
 过程性内聚:当一个模块中包含的一组任务必需按照某一特定的次序执行时,就称为过程性内聚模块。
 通信性内聚:模块内部的各个成分都使用同一种输入数据,或者产生同一个输出数据。它们靠公用数据而联系在一起,故称为通信性内聚。
 顺序性内聚:如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行,通常一个处理元素的输出数据作为下一个处理元素的输入数据,则成为顺序性内聚。
 功能性内聚:所有成分结合在一起,用于完成一个单一的功能。
模块化设计的准则:“一个模块一个功能”
耦合:
在这里插入图片描述
 非直接耦合:如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合,这种耦合的模块独立性最强。
 数据耦合:如果一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。
 特征耦合(标记耦合):如果一组模块通过参数表传递记录信息,就是标记耦合。事实上,这组模块共享了某一数据结构的子结构,而不是简单变量。
 控制耦合:如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
 外部耦合:若允许一组模块访问同一个全局变量,可称它们为外部耦合。外部耦合与公共耦合的区别在于在外部耦合中不存在依赖于一个数据结构内部各项的物理安排。
 公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据区、共享的通信区、内存的公共覆盖区、任何介质上的文件、物理设备等。
 内容耦合:如果一个模块直接访问另一个模块的内部数据;或者一个模块不通过正常入口转到另一模块内部;或者两个模块有一部分程序代码重叠;或者一个模块有多个入口,则两个模块之间就发生了内容耦合。
模块独立性的意义
在设计软件时应追求尽可能高内聚低耦合的系统
 将对这类系统中任一模块的设计、测试和维护相对独立
 由于模块间联系较少,错误在模块间传播的可能性也随之变小
 模块间的耦合程度直接影响系统的可理解性、可测试性、可靠性和可维护性
2.2 抽象
抽象:忽略细节,分层理解问题,自顶向下层层细化,包括对过程、数据和控制的抽象。 过程抽象:一个命名的指令序列,具有特定和有限的功能。
数据抽象:命名的数据集合,描述一个数据对象。
控制抽象:隐含了不必说明的内部细节的程序控制机制。
抽象是实现模块化的手段之一。
2.3 求精
自顶向下的设计策略
设计的求精过程与需求分析的划分类似,只是考虑的细节层次不同。
求精实际是一个详细描述的过程。
抽象与求精是互补的概念。
2.4 信息隐藏
信息隐藏:在设计和确定模块时,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不可访问的。 每个客户只能通过接口来了解该模块,而所有的实现都隐藏起来。
隐藏就是有效的模块化可以通过定义一组独立模块来实现。
“信息隐藏”,更准确地描述应是“细节隐藏”,因为隐藏的不是信息,而是实现的细节。
3.结构化软件设计任务
结构化分析的结果:软件设计文档
在这里插入图片描述
4. 结构化设计的主要内容
概要设计
 设计软件系统的体系结构(也即软件系统的模块结构)与接口
 主要任务是将数据流图映射为软件系统结构图
详细设计:
 对概要设计的每一个模块进行数据设计和过程设计
5.结构化概要设计:系统结构图
在这里插入图片描述
表现形式:用矩形框来表示模块;用带箭头的连线表示模块间的调用关系
在这里插入图片描述
模块间调用关系:简单调用、选择调用、循环调用
简单调用
选择调用
循环调用
6.两种典型的数据流及其设计
 变换型数据流图
特征:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。
组成:由输入、变换中心和输出三部分组成
 事务型数据流图
特征:数据沿输入通路到达一个加工T,这个加工根据输入数据的类型在若干个动作序列中选出一个来执行。
加工T 称为事务中心,它完成以下任务:接收输入数据(输入数据又称为事务);分析每个事务以确定它的类型;根据事务类型选取一条动作路径。 7.变换型数据流对应的设计:变化分析
变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图映射成为一个预定义的程序结构模板。
变换分析的步骤:对DFD 图(数据流图)的分析和划分;进行第一级分解,设计顶层和第一层模块;第二级分解,设计中、下层模块。
第二级分解就是把数据流图中的每个加工映射成软件结构中的一个适当的模块。
8.事务型数据流对应的设计:事务分析
事务分析:由事务型数据流图映射为软件结构的过程。 9.模块分解中的启发式规则
 改进软件结构以提高模块独立性
 模块的大小要适当
 深度、宽度、扇出和扇入都应适当
扇出 = 一个模块直接调用/控制的模块数。
扇入 = 直接调用该模块的模块数。在不破坏独立性的前提下,fan-in 大的比较好。
在这里插入图片描述
在这里插入图片描述
尽可能减少高扇出结构,随着深度增大扇入
 模块的作用域应在控制域之内
模块的作用域定义为受该模块内一个判定影响的所有模块的集合。
模块的控制域是指这个模块本身以及所有直接或间接从属于它的模块的集合。
在这里插入图片描述
 力争降低模块接口的复杂程度
 设计单入口单出口的模块
 模块功能应该可预测,避免对模块施加过多限制
10.详细设计
详细设计就要对软件结构中的每一个模块确定使用的算法或块内数据结构,并用某种选定的表达工具给出清晰的描述。
详细设计的表达工具:程序流程图,盒图,PAD图,PDL,IPO图 程序流程图:
程序流程图
盒图:
盒图
PAD图:
在这里插入图片描述
PDL:
过程设计语言(PDL,Process Design Language)是一个笼统的名字,由许多种不同的过程设计语言。过程设计语言用于描述模块中算法和加工的具体细节,以便在开发人员之间比较精确的进行交流。
IPO图:
IPO(Input-Process-Output)图就是用来表述每个模块的输入,输出和数据加工的重要工具。
IPO

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值