软件工程 | 结构化范型
2023-06-02 20:44:33 11 举报
AI智能生成
内容参考自:软件工程导论-第6版 by 张海藩 牟永敏
作者其他创作
大纲/内容
1968年
开发与维护
1.概念
1.开发成本和进度的估计常常不准确
2.用户对已完成的软件不满意
3.质量往往靠不住
4.软件常常是不可维护的
5.通常没有适当的文档
6.软件成本逐年上升
7.生产率跟不上发展速度
2.典型表现
1.它是逻辑产品
2.规模庞大
3.生命周期是一个漫长的过程
4.没有完整的软件配置
3.危机的原因
1.对计算机软件要有正确的认识
2.软件开发是一个组织严密、各类人员共同协作的工程项目
3.推广使用在实践中的经验
4.开发和使用更好的工具
4.消除危机的途径
1.软件危机
1.关注大型程序的构造
2.中心课题是控制复杂性
3.软件经常变化
4.开发软件的效率非常重要
5.和谐的合作是开发软件的关键
6.软件必须有效的支持他的用户
7.一种文化背景替另一种文化背景的人创造产品
本质特征
1.用分阶段的生命周期计划严格管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应能清楚的审查
6.开发小组的人员应该少而精
7.承认不断改进软件工程实践的必要性
软件工程的基本原理
1.传统方法学(结构化范型)
1.对象
2.类
3.继承
4.消息
2.面向对象方法学
软件工程方法学
2.软件工程
1.问题定义
2.可行性研究
3.需求分析
1.软件定义
1.总体设计(概要设计)
2.详细设计(模块设计)
1.系统设计
1.编码和单元测试
2.综合测试
2.系统实现
2.软件开发
3.软件维护
3.软件生命周期
1.需求分析
2.规格说明
3.设计
4.编码
5.综合测试
6.维护
瀑布模型
快速原型模型
增量模型
适用性:大规模软件项目
螺旋模型
面向对象的一个软件过程
喷泉模型
1.最佳实践
2.RUP软件开发生命周期
Rational统一过程
敏捷过程与极限编程
微软过程
4.软件过程
软件工程概述
1.经济可行性
2.技术可行性
3.操作可行性
1.可行性研究的任务
1.复查系统规模和目标
2.研究目前正在使用的系统
3.导出新系统的高层逻辑模型
4.进一步定义问题
5.导出和评价供选择的解法
6.推荐行动方针
7.草拟开发计划
8.书写文档提交复审
2.可行性研究的过程
概念:描绘物理系统的工具,描绘数据在系统各部件之间的流动
3.系统流程图
概念:描绘信息流和数据从输入到输出之间的变换
1.源点和终点
2.处理
3.数据存储
4.数据流
成分
1.交流信息的工具
2.分析和设计的工具
用途
4.数据流图(DFD)
1.数据流
2.数据元素
4.处理
1.消除误解
2.开发数据库的第一步
3.分析阶段的工具
5.数据字典(DD)
1.代码行技术
2.任务分解技术
3.自动估计成本技术
成本估计
1.货币的时间价值
2.投资回收期
3.纯收入
4.投资回收率
分析的方法
6.成本效益分析
可行性研究
1.功能需求
2.性能需求
3.可靠性与可用性需求
4.出错处理需求
5.接口需求
6.约束
7.逆向需求
8.将来可能提出的方案
1.确定系统的综合要求
1.层次方框图
2.Warnier图
3.数据字典
4.数据流图
数据模型
1.数据流图
2.E-R图
3.状态转换图
4.数据字典
5.主要处理算法
逻辑模型
2.分析系统的数据要求
1.需求分析的任务
1.正式访谈
2.非正式访谈
1.访谈
2.面向数据流自顶向下求精
3.简易的应用规格说明技术
1.第四代技术
2.可重用的软件构件
3.形式化规格说明和原型环境
4.快速建立软件原型
2.获取需求的方法
E-R
1.数据模型
数据流图,数据字典
2.功能模型
状态转换图
3.行为模型
3.分析建模
2.属性
3.联系
4.实体-联系图(E-R)
一共五个范式,一般用第三范式
5.数据规范化
6.状态转换图
2.IPO图
3.Warnier图
7.其他图形工具
1.一致性
2.完整性
3.有效性
1.哪些方面验证需求的正确性
1.验证需求的一致性
2.验证需求的现实性
3.验证需求的完整性和有效性
2.验证需求的方法
3.用于需求分析的软件工具
8.验证软件需求
需求分析
概念:形式化的规格说明语言
1.较容易发现错误
2.减少了模糊性和不一致性
3.开发者可以严格的验证规格说明的正确性
4.比较容易学会编写Z规格说明
5.降低 软件开发费用
6.可以依据Z规格说明用自然语言重写规格说明
优点
Z语言
形式化说明技术
系统设计
结构设计
1.设想供选择的方案
2.选取合理的方案
3.推荐最佳方案
4.功能分解
5.设计软件结构
6.设计数据库(第一步是DD)
7.制定测试计划
8.书写文档
9.审查和复查
设计步骤
设计过程
2.优点
1.模块化
2.抽象
3.逐步求精
4.信息隐藏和局部化
功能内聚
顺序内聚
1.高内聚
通信内聚
过程内聚
2.中内聚
时间内聚
逻辑内聚
偶然内聚
3.低内聚
内聚(高)
1.非直接耦合
2.数据耦合
3.控制耦合
4.特征耦合
5.公共环境耦合
6.内容耦合
耦合(低)
5.模块独立
设计原理
1.改进软件结构提高模块独立性
2.模块规模应当适中
3.深度,宽度,扇出和扇入应当适当
4.模块的作用域应在控制域之内
5.力争降低模块接口的复杂度
6.设计单入口单出口的模块
7.模块功能应该可以预测
启发规则
1.层次图和HIPO图
2.结构图
描绘软件结构的图形工具
概念:把信息流映射成软件结构
1.变换流
2.事务流
面向数据流的设计方法
总体设计
概念:详细设计的结果最终决定了程序代码的质量
1.控制结构
2.选择结构
3.循环结构
经典的结构程序设计
4.DO-CASE
5.DO-UNTIL
扩展的结构程序设计
6.LEAVE(或BREAK)
修正的结构程序设计
结构程序设计
1.系统响应时间
2.用户帮助设施
3.出错信息处理
4.命令交互
1.设计问题
2.设计过程
1.一般交互指南
2.信息显示指南
3.数据输入指南
3.设计指南
人机界面设计
1.程序流程图
2.盒图(N-S图)
3.PAD图
4.判定表
5.判定树
6.过程设计语言(PDL)
过程设计工具
1.顺序结构
2.选项结构
3.重复结构
1.Jackson图
2.改进的Jackson图
数据结构导出程序结构
3.Jackson方法
面向数据结构的设计方法
1.流图
1.E-N+2
1.P+1
3.线性无关的区域数
2.计算环形复杂度的方法
McCabe方法
Halstead方法
程序复杂度的定量度量
详细设计
1.机器语言
2.汇编语言
3.高级语言
1.选择程序设计语言
1.程序内部文档
2.数据说明
3.语句构造
4.输入输出
时间效率
空间效率
5.效率
编码风格
编码
1.目标
2.软件测试的准则
白盒测试
黑盒测试
3.测试方法
1.模块测试
2.子系统测试
3.系统测试
4.验收测试
5.平行运行
4.测试步骤
软件测试基础
1.模块接口
2.局部数据结构
3.重要的执行通路
4.出错处理通路
5.边界条件
测试重点
1.人工审查
存根程序
驱动程序
2.计算机测试
代码审查
单元测试
1.非渐增测试
需要存根程序
1.自顶向下集成
需要驱动程序
2.自底向上集成
2.渐增式测试
1.全部功能的代表性用例
2.受修改影响的功能的附加测试
3.被修改过的软件成分的测试
回归测试
集成测试
功能性测试(黑盒测试)
1.测试范围
1.数据
2.程序
3.文档
2.软件配置复查
α和β测试
确认测试
1.语句覆盖
2.判定覆盖
3.条件覆盖
4.判定/条件覆盖
5.条件组合覆盖
6.点覆盖
7.边覆盖
8.路径覆盖
逻辑覆盖
1.基本路径测试
2.条件测试
3.循环测试
控制结构测试
白盒测试技术
1.等价划分
2.边界值分析
3.错误推测
黑盒测试技术
1.蛮干法
2.回溯法
1.对分查找法
2.归纳法
3.演绎法
3.原因排除法
调试的途径
调试
软件可靠性与可用性的区别
实现
1.适应性维护
2.完善性维护(大部分)
3.改正性维护
4.预防性维护
软件维护的定义
1.结构化维护
2.非结构化维护
软件维护的特点
1.维护组织
2.维护报告
3.维护的事件流
4.保存维护记录
5.评价维护活动
软件维护的过程
1.可理解性
2.可测试性
3.可修改性
4.可移植性
5.可重用性
影响可维护性的因素
1.用户文档
2.系统文档
文档
软件的可维护性
1.库存目录分析
2.文档重构
3.逆向工程
4.代码重构
5.数据重构
6.正向工程
软件再工程过程
维护
结构化范型
0 条评论
回复 删除
下一页