- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[软件工程导论第五版素材第五章
第5章 总体设计
5.1设计过程
1. 设想供选择的方案
2. 选取合理的方案
3. 推荐最佳方案
4. 功能分解
5. 设计软件结构
6. 设计数据库
7. 制定测试计划
8. 书写文档
9. 审查和复审
5.2设计原理
5.2.1模块化
图5.1模块化和软件成本
5.2.2抽象
5.2.3逐步求精
5.2.4信息隐藏和局部化
5.2.5模块独立
1. 耦合
2. 内聚
5.3启发规则
1. 改进软件结构提高模块独立性
2. 模块规模应该适中
3. 深度、宽度、扇出和扇入都应适当
4. 模块的作用域应该在控制域之内
图5.2模块的作用域和控制域
5. 力争降低模块接口的复杂程度
6. 设计单入口单出口的模块
7. 模块功能应该可以预测
5.4描绘软件结构的图形工具
5.4.1层次图和HIPO图
图5.3正文加工系统的层次图
图5.4带编号的层次图(H图)
5.4.2结构图
图5.5结构图的例子——产生最佳解的一般结构
图5.6判定为真时调用A,为假时调用B
图5.7模块M循环调用模块A、B、C
5.5面向数据流的设计方法
5.5.1概念
1. 变换流
2. 事务流
图5.8变换流
图5.9事务流
3. 设计过程
图5.10面向数据流方法的设计过程
5.5.2变换分析
1. 例子
2. 设计步骤
图5.11数字仪表板系统的数据流图
图5.12具有边界的数据流图
图5.13第一级分解的方法
图5.14数字仪表板系统的第一级分解
图5.15第二级分解的方法
图5.16未经精化的输入结构
图5.17未经精化的变换结构
图5.18未经精化的输出结构
图5.19精化后的数字仪表板系统的软件结构
5.5.3事务分析
图5.20事务分析的映射方法
5.5.4设计优化
5.6小结
习题5
1. 为每种类型的模块耦合举一个具体例子。
2. 为每种类型的模块内聚举一个具体例子。
3. 用面向数据流的方法设计下列系统的软件结构。
(1) 储蓄系统(参见习题2第2题)。
(2) 机票预订系统(参见习题2第3题)。
(3) 患者监护系统(参见习题2第4题)。
4. 美国某大学共有200名教师,校方与教师工会刚刚签订一项协议。按照协议,所有年工资超过$26 000(含$26 000)的教师工资将保持不变,年工资少于$26 000的教师将增加工资,所增加的工资数按下述方法计算:给每个由此教师所赡养的人(包括教师本人)每年补助$100,此外,教师有一年工龄每年再多补助$50,但是,增加后的年工资总额不能多于$26 000。
教师的工资档案储存在行政办公室的磁带上,档案中有目前的年工资、赡养的人数、雇用日期等信息。需要写一个程序计算并印出每名教师的原有工资和调整后的新工资。要求:
(1) 画出此系统的数据流图。
(2) 写出需求说明。
(3) 设计上述的工资调整程序(要求用HIPO图描绘设计结果),设计时分别采用下述两种算法,并比较这两种算法的优缺点:
(a) 搜索工资档案数据,找出年工资少于$26 000的人,计算新工资,校核是否超过$26 000,储存新工资,印出新旧工资对照表;
(b) 把工资档案数据按工资从最低到最高的次序排序,当工资数额超过$26 000时即停止排序,计算新工资,校核是否超过限额,储存新工资,印出结果。
(4) 所画出的数据流图适用于哪种算法?
5. 下面将给出两个人玩的扑克牌游戏的一种玩法,试设计一个模拟程序,它的基本功能是:
(1) 发两手牌(利用随机数产生器)。
(2) 确定赢者和赢牌的类型。
(3) 模拟N次游戏,计算每种类型牌赢或平局的概率。要求用HIPO图描绘设计结果并且画出高层控制流程图。
扑克牌游戏规则如下:
(1) 有两个人玩,分别称为A和B。
(2) 一副扑克牌有52张牌,4 种花色(方块、梅花、红桃和黑桃),每种花色的牌的点数按升
序排列有2,3,4,…,10,J,Q,K,A等13种。
(3) 给每个人发3张牌,牌面向上(即,亮牌),赢者立即可以确定。
(4) 最高等级的一手牌称为同花,即3张牌均为同一种花色,最大的同花牌是同一种花色的
Q、K、A。
(5) 第二等级的牌称为顺子,即点数连续的3张牌,最大的顺子是花色不同的Q、K、A。
(6) 第三等级的牌是同点,即点数相同的3张牌,最大的同点是A、A、A。
(7) 第四等级的牌是对子,即3张牌中有两张点数相同,最大的对子是A、A、K。
(8) 第五等级的牌是杂牌,即除去上列4等之外的任何一手牌,最大的杂牌是不同花色的A、K、J。
(9) 若两人的牌类型不同,则等级高者胜;若等级相同,则点数高者胜;若点数也相同,则为平局。
1
数据结构(C++版)
11
软件工程导论(第五
文档评论(0)