软件工程--第五章-- 总体设计
文章目录
- 设计原理
- 模块化
- ==模块独立性 (最重要的特性)==
- 抽象
- 逐步求精
- 启发式规则
- 图形工具
- 面向数据流的设计方法
- 概要设计说明书
系统的总体设计=概要设计/初步设计
这个阶段任务:划分出组成系统的物理元素——程序、文件、数据库、人工文档等;设计软件结构,系统之间的模块
总体设计主要由两个部分组成:系统设计阶段;结构设计阶段
步骤:
设计原理
模块化
含义:每个子模块实现一个子功能
依据:一个问题的复杂度 > 将其分解为若干子问题的复杂度
每个程序都有一个最适当的模块数量,使得系统开发成本最小。
模块独立性 (最重要的特性)
1.独立性很重要
模块独立程度可以由两个定性标准度量:耦合与内聚
2.耦合:指软件结构内不同模块彼此之间相互依赖(连接)的紧密程度。
分类:
- 数据耦合低耦合,
控制耦合 中耦合,增加系统复杂度,if数据冗余可以将模块分解之后用数据耦合来代替
公共耦合 问题:软件结构中存在大量的公用耦合时会给诊断错误带来困难
内容耦合:
ATT;
应追求尽可能松散耦合,避免强耦合,这样模块间的联系就越小,模块的独立性就越强,对模块的测试、维护就越容易
因此建议:尽量使用数据耦合,少用控制耦合,限制公用耦合,完全不用内容偶合。
3.内聚(对于一个模块内部)
功能内聚
顺序内聚
通信内聚
过程内聚
后面会调用前面的时间内聚
逻辑内聚
偶然内聚
如果一个模块由完成若干毫无关系的功能处理元素偶然组合在一起的,就叫偶然内聚。
偶然内聚是最差的一种内聚。
软件设计中应该:力求做到高内聚,尽量少用中内聚,不用低内聚
抽象
逐步求精
启发式规则
改进软件结构提高模块独立性
模块规模应该适中
深度、宽度、扇出和扇入都应适当
模块的作用域应该在控制域之内
作用域:受该模块内一个判定影响的所有模块的集合。
控制域:模块本身以及所有从属于它的模块的集合。力争降低模块接口的复杂度
设计单入口、单出口的模块
模块功能应该可以预测
图形工具
层次图
自顶向下的设计思想HIPO图
h是层次的意思
然后每一张图都是一个ipo
每一个都加编号
结构图
每一个方块代表一个模块
方框之间的连线表示调用模块的调用关系
箭头尾部表示传递的是:数据信息(空心圆) 控制信息(实心圆)
面向数据流的设计方法
信息流:
变换流—
具有较明确的输入、变换(或称主加工)和输出界面的数据流图称为变换型数据流图。
事务流—
存在一个事务中心(也就是数据处理、加工中心),它将输入分离成若干个发散的数据流,形成许多活动路径,并根据输入值选择其中一条路径
变换设计:
以变换为中心的设计
事务设计
为以事务为中心的设计。
概要设计说明书
该说明书是概要实际阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计提供基础
软件工程--第五章-- 总体设计相关推荐
- 软件工程-第五章-总体设计
软件工程-第五章-总体设计 5. 总体设计 5.1 设计过程 5.2 设计原理 5.2.1 模块化 5.2.2 抽象 5.2.3 逐步求精 5.2.4 信息隐藏和局部化 5.2.5 模块独立 5.3 ...
- 软件工程第五章——总体设计
总体设计的基本目的就是回答"概括地说,系统应该如何实现"这个问题,因此,总体设计又称为概要设计或初步设计. 总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序 ...
- 软件工程复试——五、总体设计
五.总体设计 总体设计又称为概要设计或初步设计.其基本目的就是回答"概括地说,系统应该如何实现"这个问题. 设计过程 总体设计过长一般分两个阶段组成:系统设计阶段,结构设计阶段. ...
- 软件工程导论第六版 第五章 总体设计知识点总结
目录 总体设计概述 目的 任务 设计过程 设计原理 什么是模块?什么是模块化? 模块化的优点 模块化和软件成本 逐步求精 什么是逐步求精? Miller法则 抽象 信息隐藏和局部化 什么是信息隐藏 信 ...
- 软件工程 | 第五章 详细设计与实现
软件工程 系列为本学期(2020春季)软件工程以及软件工程实践课程笔记整理~ 需求文档已经交了,设计文档还会远吗?从理论到实践,果然还有很多东西需要掌握 整理这部分笔记时想起了毕设学长的话,代码要让自 ...
- 软件工程导论 05章总体设计
1.典型的总体设计步骤: ①确定最佳方案 ②功能分解 ③体系结构设计 ④模块设计 ⑤数据结构与数据库设计 ⑥用户界面设计 ⑦设计完成设计文档 ⑧评审 总体设计的目的:概括地回答系统应该如何实现这个问题 ...
- 现代软件工程 第五章 【团队和流程】练习与讨论
团队模式和团队的开发模式有什么关系? 如果你领头开展一个全新的项目,你要怎么选择"合适"的团队模式? 不同的团队模式如何影响团队绩效的评估? 团队精神和集体主义的区别? 大 ...
- 软件工程——第五章(敏捷开发)
1.敏捷软件开发的宣言 "我们正在通过亲身实践以及帮助他人实践的方式来揭示更好的软件开发之路,通过这项工作,我们认识到: 个人和这些人之间的交流胜过了开发过程和工具 可运行的软件胜过了宽泛的 ...
- 软件工程第五章3(1)
转载于:https://www.cnblogs.com/sink1/p/4969810.html
最新文章
- tarjan算法不是很懂先mark一下。
- Vyond制作2D动画学习教程
- MYSQL 查询数据排序数据和分组数据
- git 设置有效目录_如何有效使用Git
- python包里面的dll是什么_如何使用Python中的DLL文件?
- 牛客练习赛3 E - 绝对半径2051
- 用了这么多年 curl,竟然不知道还有这种用法?!
- 【计算机就业-银行】校招想去银行该怎么准备
- 公司的计算机邮箱找不到了,找不到我现在的邮箱
- STC51-串口通信
- Android 应用开发 --- popupwindow
- spring boot 2使用Mybatis多表关联查询
- QTreeView样式
- 夏普Sharp MX-B401 一体机驱动
- gwt java_GWT中的Java 8支持
- vue中Uncaught (in promise) TypeError: Object(...) is not a function报错
- DB SQL mysql
- 【转】写给欲采访刘丁宁事件的媒体
- Shader——《真三国无双》城墙着火特效
- MinIO与java集成