一:软件危机
包含的两个问题:
1.如何开发软件来满足日益增长的需求
2.如何维护数量不断庞大且复杂的已有软件
典型表现:
1.对软件的开发成本和进度常常估计不准
2.对已有的软件表现不满
3.成本逐渐提高
4.软件常常不可维护
5.软件的质量是不可靠的
6.软件缺少适当的文档资料
7.开发速率跟不上
产生的原因:
1.软件自身的特点造成的
2.开发与维护的方法不当
3.在软件开发的不同阶段进行修改付出的代价很不相同
一:软件工程
基本原理:
1.用分阶段的生命周期计划严格把控
2.坚持每个阶段进行评审
3.实行严格的产品控制
4.采用现代化程序设计技术
5.结果能清楚的审查
6.开发小组人员少而精
7.承认不断改进软件工程实践的必要性
软件工程方法学三要素:
- 方法
- 过程
- 工具
软件生命周期:
1.软件定义:问题定义->可行性研究->需求分析
2.软件开发:总体设计->详细设计->编码和单元测试(实现)->综合测试
3.软件运行维护
软件过程:
过程模型(生命周期模型):
-
瀑布流模型:使用最广泛的一种模型。具有顺序性、依赖性和可靠性的特点
-
快速原型模型:总功能的子集,快速构建原型
-
增量模型:较短时间内可提交完成部分工作的产品,有充足的时间适应和学习;适用于软件需求不明确,有风险的
-螺旋模型:更注重软件质量,重用;大型复杂的开发
- 喷泉模型:保证工作中得到的信息不会改变,面向对象技术
可行性研究
一:概念
技术可行性
经济可行性
操作可行性
社会可行性
二:步骤
三:系统流程图
image.png
四:数据流图
需求分析:”系统必须做什么“
总体设计:
功能模块间应该遵循 高内聚、低耦合
耦合
内聚:偶然内聚、顺序内聚、功能内聚、时间内聚、通信内聚。
描绘软件结构的图形工具
1.层次图:自顶向下
2.HIPO图:层次图/输入/处理/输出图 加编号
详细设计
结构化程序设计
3种基本的控制结构:顺序、选择、循环
使用结构化程序设计的好处:
1.开发出的程序结构层次清晰
2.不使用GOTO语句
3.控制结构有确定的逻辑模式
4.可重用的代码量大
5.程序的逻辑结构清晰,有利于程序正确性证明
过程设计的工具:
1.程序流程图:使用最广泛、最混乱
2.盒图(N-S)
3.PAD图(问题分析图)
编码和单元测试(实现)
软件测试方法:
白盒测试:结构测试
黑盒测试:功能测试
软件测试的步骤:
1.单元测试
2.子系统测试(将多个单元测试组装在一起)
3.系统测试(将子系统组装在一起)
4.验收测试(用户)
5.平行运行
网友评论