导图社区 813软件工程-总体设计
用于考研813软件工程或期末串知识点,总体设计与详细设计的关系是全局和局部的关系,二者衔接的工具是软件结构图
编辑于2023-06-14 16:14:43 辽宁用于813软件工程和期末复习串知识点,可行性研究是进行了一次大大简化了的系统分析和设计的过程,也是在较高层次上以较为抽象的方式进行的系统分析和设计的过程。
用于813软件工程和期末复习串知识点,对象是封装了数据结构以及可以被施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务。
用于813软件工程和期末复习串知识点,软件工程是一门指导软件开发和维护的工程型学科,它采用了工科的概念、技术、原理、方法,把经历时间考验的的管理技术和当前能用到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它。
社区模板帮助中心,点此进入>>
用于813软件工程和期末复习串知识点,可行性研究是进行了一次大大简化了的系统分析和设计的过程,也是在较高层次上以较为抽象的方式进行的系统分析和设计的过程。
用于813软件工程和期末复习串知识点,对象是封装了数据结构以及可以被施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务。
用于813软件工程和期末复习串知识点,软件工程是一门指导软件开发和维护的工程型学科,它采用了工科的概念、技术、原理、方法,把经历时间考验的的管理技术和当前能用到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它。
总体设计
描绘软件结构的图形工具
层次图
用来描绘软件的层次结构
一个矩形框代表一个模块,方框间的连线表示调用关系
适合自顶向下设计软件的过程中使用
HIPO图
IBM公司发明的,“层次图加输入/处理/输入图”的缩写
结构图
描绘软件结构的图形工具。一个方块代表一个模块,框内注明模块的名字或主要功能。方框间的箭头表示模块的调用关系。尾部是空心圆的箭头表示数据。实心圆表示的传递的是控制信息。
简介
总体设计与详细设计的关系是全局和局部的关系,二者衔接的工具是软件结构图
详细设计之前先进行总体设计的必要性:站在全局的高度上,花较少的成本,从抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳的方案和合理的软件结构,从而用较低的成本开发出较高质量的软件系统
设计原理
模块化
模块
模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表他。
模块化
把程序分为独立命名,独立访问的模块,每个模块完成一个子功能,再把这些模块集合成一个整体,就能满足用户的需求。
优点
1、软件结构清晰,容易设计、阅读、理解
2、容易测试、调试,提高软件的可靠性
3、变动只涉及少数几个模块,提高软件的修改性
4、有助于组织管理
抽象
把相似的地方集中概括起来,暂时忽略他们之间的差异,就是抽象
抽象就是抽出事物的本质,而暂时不考虑他们的细节。
逐步求精
定义
为了集中精力解决主要问题而尽量推迟对问题细节的考虑
优点
能让开发人员集中精力到主要的问题上,细节以后再考虑
信息隐藏和局部化
信息隐藏
应该使得一个模块内包含的信息对于不需要这个信息的模块是不能访问的
局部化
把一切关系密切的软件元素物理的放的很近。
优点
在修改期间由于疏忽引入的错误就很少传播到软件的其他部分。
模块独立
模块的独立是模块化、抽象、信息隐藏和局部化的直接结果,功能独立,而且和其他模块之间没有过多的相互作用的模块就是模块独立。
优点
1、有效的模块化的软件容易开发。几个人一起开发同一个软件的时候,这个优点尤其凸显。
2、独立的模块更容易测试和维护。错误传播较小。
定性标准度量
耦合
定义
耦合是对一个软件结构内不同模块之间互联程度的度量。
松散耦合的优点
研究、测试、维护时不用过多考虑其他的模块。
错误传播较小。
影响
耦合程度影响系统的可理解性、可测实性、可靠性、可维护性
分类
数据耦合
模块间通过参数传递数据,系统中至少要存在数据耦合,可以只有数据耦合
控制耦合(开关量)
模块间传递控制信息
特征耦合
把整个数据结构当成参数传递给别的模块,而只使用被调用模块中的其中一部分数据元素。
环境耦合
两个或多个模块通过一个公共数据环境相互作用。
内容耦合
一个模块访问另一个模块的内部数据
一个模块不通过正常入口而转到另一个模块的内部
两各模块间有一部分程序代码重叠
一个模块有多个入口(一个模块有多种功能)
尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合,完全不用内容耦合。(耦合程度从低到高:数控特公内)
内聚
定义
一个模块内各个元素彼此紧密结合的程度
分类
偶然内聚
一个模块完成一组任务,关系松散,就是把语句多处出现的地方结合成一个模块以节省内存空间,这个模块就是偶然内聚的。
逻辑内聚
如果一个模块完成的任务在逻辑上是相似的,那就是逻辑内聚
时间内聚
一个模块中的任务在同一时间执行
过程内聚
一个模块间处理的元素是相关的,通过特定的次序执行
通信内聚
一个模块间所有元素使用一个输入,产生一个输出数据
顺序内聚
按照顺序执行,而且上一个模块的输出是下一个模块的输入
功能内聚
模块内所有元素属于一个整体,完成一个单一的功能
设计过程
系统设计阶段
确定系统的具体实现方案
结构设计阶段
确定软件结构
步骤
1、设想供选择的方案
需求分析阶段得到的数据流图是很好的出发点
抛弃技术上行不通的办法,剩下的就是可能实现的策略
2、选取合理的方案
筛选出三种方案
低成本
中等成本
高成本
每个方案的资料
1、系统流程图
2、组成系统的物理元素清单
3、成本/效益分析
4、实现这个系统的进度计划
3、推荐最佳方案
综合分析利弊,选出一个最佳方案
4、功能分解
结构设计阶段
确定程序由哪些模块组成,以及模块之间的关系。是总体设计阶段的任务
过程设计阶段
确定每个模块的处理过程。详细设计阶段的任务
5、设计软件结构
通常一个模块完成一个子功能,形成良好的层次系统,顶层模块调用下层模块来实现完整的功能,软件结构可以用层次图或结构图来描绘。
6、设计数据库
7、制定测试计划
总体设计阶段就已经有测试计划了
8、书写文档
1、系统说明
2、用户手册
3、测试计划
4、详细的事先计划
5、数据库设计结果
9、审查和复查
开发者进行技术审查
用户进行管理角度的复审
启发原则(经验分析)
1、改进软件结构提高模块独立性
使用高内聚低耦合
2、模块规模要适中
过大的模块分解不充分
过小的模块开销太大
3、深度、宽度、扇出、扇入都应当适当
深度是软件结构中控制的层数,表示系统的大小和复杂程度
宽度是软件结构内同一个层次上的模块总数的最大值,宽度越大系统越复杂
扇出是一个模块直接控制的模块数目,扇出过大意味着程序复杂,需要调用下面的 模块,扇出过小也不好,平均扇出是3到4最好,上限是5-9。扇出过大需要添加中间层次的控制模块。
扇入表示有多少个模块调用它,扇入越大越好。
总结
顶层高扇出,中层低扇出,底层高扇入
4、模块的作用域应该在控制域之内
模块的作用域
模块内判定影响的所有模块的集合
模块的控制域
这个模块本身以及所有直接或间接从属于它的模块的集合
5、力争降低模块接口的复杂程度
模块接口复杂是软件发生错误的主要原因
6、设计单入口单出口的模块
7、模块功能应该可以预测
模块功能要能够预测,也要防止模块功能过于局限
面向数据流的设计方法(SD)
变换流
信息沿着通路进入系统,同时由外部形式变换成内部形式,进入的信息通过变换中心,经过加工处理后再沿输出通路变换成外部形式离开系统。
事务流
“以事务为中心”,事务进入通路的事务中心,从中在若干个动作序列中选出一个来执行、
任务
1、接收事务
2、分析每个事务以及它的类型
3、根据事务类型选取一条活动通路。
变换分析
变换分析是一系列设计步骤的总称,通过这些步骤把具有变换流特点的数据流图按照预先设定的模式映射成软件结构。