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